Via Content in SCN
1 Scope:
From the Functional Specs it was derived that Business required reporting on the AP Line Item Data, Transaction Figures and Payment history along with some Vendor Master Data.The following standard DataSources were identified which could address the basic extraction need.
- 0FI_AP_4: Vendors: Line Items with Delta Extrcation
- 0FI_AP_6: Vendor Sales Figures via Delta Extraction
- 0FI_AP_7: Vendor SGL Sales Figures using Delta Extraction
- ZFI_AP_4: Vendors: Line Items (Parked Documents)
2 R/3 DataSource Customizations:
2.1 Applicable SAP Notes
Customizations were carried out based on the following SAP Notes.- Note 410797 - FI line item extraction transfer to new DataSources:
- Note 410799 - Enhancement of line item extraction FI-GL, FI-CIS, FI-CIS
- Note 551044 - Detaching the extractors for the InfoSources 0FI_xx_4.pdf
- Note 991429 - Minute Based extraction enhancement for 0FI_xx_4 extractors
- Note 1012874 - FAQ extractors 0FI_AP_* 0FI_AR_* 0FI_GL_* (except 10)
- Note 411758 - Extracting noted item
2.2 0FI_AP_4 Customization
0FI_AP_4 extracts data from the table BSIK (Open Items) and BSAK (Cleared Items). As per Note 410799, the Structure CI_BSIK was created to include the additional fields. The structure gets automatically included in the main structure DTFIAP_3. Since the source of data for these additional fields were not from BSIK/BSAK, we had to write ABAP code to bring in the data by implementing the BTE 00005121. The function module ZBWFI_FILL_CI_00005021 was created to be invoked by the BTE for this purpose. The module holds the necessary ABAP Code for data extraction for the additional fields. An entry was made in the table TPS31 for the BTE 00005021. The function group ZBWFI4 [BW FI: Functions to fill FI_XX_4 CI flds] was created and used.Limitations: The following FI Document Types are not extracted by 0FI_AP_4 DataSource – Parked Documents & Noted Items. Noted Items can be extracted by further implementing SAP Note 411758.
2.3 0FI_AP_6 Customization
0FI_AP_6 extracts data from the table LFC1 [Vendor master (transaction figures)]. No customization was requested.2.4 0FI_AP_7 Customization
0FI_AP_7 extracts data from the table LFC3 [Vendor master (special G/L transaction figures)]. No customization was requested.2.5 ZFI_AP_4 Creation
For Parked documents extraction from SAP, we have created the DataSource ZFI_AP_4 to extract the data from ECC. This is based on a Database view ZVBSEGK. To accommodate the additional fields an Append Structure ZAZOXDAE0290 was created for the Extract Structure ZOXDAE0290 from the interface of RSA6. The data for the additional fields are sourced from various tables by implementing the code in CMOD.2.6 Settings in R/3
Following are the settings that are maintained in R/3 for the Extraction to work properly.Table: TPS31 | |||
PROCS | LAND | APPLK | FUNCT |
5010
| FBW4_WRITE_CHANGE_QUEUE | ||
5010
| FI-C | FDM_COLL_WRITE_CHANGE_QUEUE | |
5010
| UKM | UKM_EVENT_5010 | |
5011
| BWFIP_WRITE_AEDAT_POINTER | ||
5012
| BWFI2P_WRITE_AEDA2_POINTER | ||
5013
| BWFI3P_WRITE_AEDA3_POINTER | ||
5021
| ZBWFI_FILL_CI_00005021 | ||
5022
| ZBWFI_FILL_CI_00005022 |
*** Recording of the changed line items must be started a reasonable amount of time before the first data request in update mode initialization of the data method. For this purpose, add the entry in table TPS31 using transaction SM30.
Table: BWOM_SETTINGS | ||||
MANDT | OLTPSOURCE | PARAM_NAME | PARAM_VALUE | Format/Values |
BWFILOWLIM | 19910101 | YYYYMMDD | ||
BWFINEXT | X | <space> or X | ||
BWFINSAF | 3600 | <seconds> | ||
BWFIOVERLA | <space> or X | |||
BWFISAFETY | 1 | <Days> | ||
BWFITIMBOR | 020000 | <Time> | ||
DELTIMEST | 60 | <Days> | ||
ORGSYSONLY | <space> or X |
More details about the settings are available at the following URL.
Financial Accounting: Procedure for Line Item Extraction
2.7 R/3 Tables used
The following R/3 tables were used for the FI-AP extraction.
Data Tables
| |
BSIK | Accounting: Secondary Index for Vendors |
BSAK | Accounting: Secondary Index for Vendors (Cleared Items) |
LFA1 | Vendor Master (General Section) |
LFB1 | Vendor Master (Company Code) |
LFB5 | Vendor master (dunning data) |
LFM1 | Vendor master record purchasing organization data |
LFM2 | Vendor Master Record: Purchasing Data |
LFBK | Vendor Master (Bank Details) |
EKKO | Purchasing Document Header |
EKPO | Purchasing Document Item |
Config Tables
| |
BWFI_AEDAT | List of changed documents with the change date and the document number which helps in the delta extraction. The number of days the data stored here depends on the setting in the bwom_settings table.The 0FI_*_4 extractors use this table for registering change data. |
BWFI_AEDA2 | This is the BW FI: Log Table for Changed Transaction Figures The 0FI_*_6, 0FI_*_7 extractors use this table for registering change data. |
BWFI_AEDA3 | This is the BW FI: Log Table for Changed Credit Management Data The 0FI_AP_8, 0FI _AP_9, 0FI_AP_10 extractors use this table for registering change data. |
BWOM_SETTINGS | Settings for the delta extraction each entry in the table signifies a special purpose.This table parameters are common to all the datasource extractors. Parameters: BWFILOWLIM, BWFISAFETY, BWFIOVERLA, ORGSYSONLY, DELTIMEST, BWFIT IMBOR, BWFINEXT, BWFINSAF |
BWOM2_TIMEST | Stores the delta extraction date and timestamp for reference from where the next delta extraction for the specific datasource to begin. |
ROOSPRMSF | Stores the selections for the specific datasources under specific source and destination systems. |
TP S31 | This table contains the Process BTE: Alternative Function Modules from SAP. The function modules for the various BTEs are mapped in this table. |
TPS01 | This table contains the description of the BTEs. |
3 B/W Customization:
3.1 InfoProviders
The following InfoProviders were created i n BW to hold the data for FI-AP3.2 Data Flows
The various data flows are as below.0FI_AP_7
3.3 Roles for FI-AP
The following roles have been created to cater to different user groups- BW-INFO-PROVIDER-FIAP
- BW-POWER-USER-FIAP
- BW-END-USER-FIAP
3.4 Process Chain
To load the FI-AP data from SAP, a process chain has been created for the same which runs as part of the Meta Chains on a daily basis. It is basicall y run twice daily except on Sundays.4 Appendix
4.1 Routines used in Transformations
- RSDS 0FI_AP_4 PAE050 -> ODSO ZFIAP_O3
- 0REF_DOC
- 0POSTXT
- ZFIAPLK
- ZTXTLG_1
- ZTXTLG_2
- ZTXTLG_3
- ZTXTLG_4
- ZTXTLG_5
- RSDS ZFI_AP_4 PAE050 -> ODSO ZFIAP_O4
- 0REF_DOC
- 0POSTXT
4.2 Source Code for ZBWFI_FILL_CI_00005021
FUNCTION ZBWFI_FILL_CI_00005021.*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_OLTPSOURCE) TYPE SBIWA_S_INTERFACE-ISOURCE
*" CHANGING
*" REFERENCE(C_STRUCTURE)
*"----------------------------------------------------------------------
DATA: BEGIN OF WA_KNB5,
BUSAB TYPE BUSAB_MA,
END OF WA_KNB5,
BEGIN OF WA_ KNVP,
PERNR TYPE PERNR_D,
END OF WA_KNVP,
BEGIN OF WA_T014,
WAERS TYPE WAERS,
END OF WA_T014,
BEGIN OF WA_T001,
KTOP2 TYPE KTOP2,
END OF WA_T001.
DATA: THEAD LIKE THEAD.
DATA: BEGIN OF TLINETAB OCCURS 100. "table to process comments
INCLUDE STRUCTURE TLINE.
DATA: END OF TLINETAB.
DATA: C_KEY TYPE THEAD-TDNAME,
I_LINE TYPE I.
CASE I_OLTPSOURCE.
WHEN '0FI_AR_4'. "Customers: Line Items with Delta Extraction
FIELD-SYMBOLS: <FS_DTFIAR_3> TYPE DTFIAR_3.
ASSIGN C_STRUCTURE TO <FS_DTFIAR_3>.
"Details from KNA1:General Data in Customer Master
SELECT SINGLE KONZS KUKLA NIELS BRAN1
INTO CORRESPONDING FIELDS OF <FS_DTFIAR_3>
FROM KNA1
WHERE KUNNR = < FS_DTFIAR_3>-KUNNR.
"Details from KNB1:Customer Master (Company Code)
SELECT SINGLE BUSAB
INTO CORRESPONDING FIELDS OF <FS_DTFIAR_3>
FROM KNB1
WHERE KUNNR = <FS_DTFIAR_3>-KUNNR
AND BUKRS = <FS_DTFIAR_3>-BUKRS.
"Details from KNB5:Customer master (dunning data)
SELECT SINGLE BUSAB
INTO CORRESPONDING FIELDS OF WA_KNB5
FROM KNB5
WHERE KUNNR = <FS_DTFIAR_3>-KUNNR
AND BUKRS = <FS_DTFIAR_3>-BUKRS
AND MABER = <FS_DTFIAR_3>-MABER.
IF SY-SUBRC EQ 0.
<FS_DTFIAR_3>-BUSAB_D = WA_KNB5-BUSAB.
ENDIF.
"Details from KNVV:Customer Master Sales Data
SELECT SINGLE VKORG VTWEG SPART BZIRK
INTO CORRESPONDING F IELDS OF <FS_DTFIAR_3>
FROM KNVV
WHERE KUNNR = <FS_DTFIAR_3>-KUNNR.
"Sales Engineer from KNVP:Customer Master Partner Functions
SELECT SINGLE PERNR
INTO CORRESPONDING FIELDS OF <FS_DTFIAR_3>
FROM KNVP
WHERE KUNNR = <FS_DTFIAR_3>-KUNNR
AND VKORG = <FS_DTFIAR_3>-VKORG
AND VTWEG = <FS_DTFIAR_3>-VTWEG
AND SPART = <FS_DTFIAR_3>-SPART
AND PARVW = 'SA'.
"Sales Manager from KNVP:Customer Master Partner Functions
SELECT SINGLE PERNR
INTO CORRESPONDING FIELDS OF WA_KNVP
FROM KNVP
WHERE KUNNR = <FS_DTFIAR_3>-KUNNR
AND VKORG = <FS_DTFIAR_3>-VKORG
AND VTWEG = <FS_DTFIAR_3>-VTWEG
� � AND SPART = <FS_DTFIAR_3>-SPART
AND PARVW = 'SM'.
IF SY-SUBRC EQ 0.
<FS_DTFIAR_3>-PERNR_M = WA_KNVP-PERNR.
ENDIF.
"Details from KNKK:Customer master credit management: Control area data
SELECT SINGLE KLIMK SKFOR NXTRV CTLPC CASHD
INTO CORRESPONDING FIELDS OF <FS_DTFIAR_3>
FROM KNKK
WHERE KUNNR = <FS_DTFIAR_3>-KUNNR
AND KKBER = <FS_DTFIAR_3>-KKBER.
"Currency Key for KNKK from T014:Credit control areas
SELECT SINGLE WAERS
INTO CORRESPONDING FIELDS OF WA_T014
FROM T014
WHERE KKBER = <FS_DTFIAR_3>-KKBER.
IF SY-SUBRC EQ 0.
<FS_DTFIAR_3>-WAERS_CM = WA_T014-WAERS.
ENDIF.
"Sold-To-Part y from VBRK:Billing Document: Header Data
SELECT SINGLE VKORG VTWEG SPART BZIRK KUNAG
INTO CORRESPONDING FIELDS OF <FS_DTFIAR_3>
FROM VBRK
WHERE VBELN = <FS_DTFIAR_3>-VBELN.
WHEN '0FI_AP_4'. "Vendors: Line Items with Delta Extrcation
FIELD-SYMBOLS: <FS_DTFIAP_3> TYPE DTFIAP_3.
ASSIGN C_STRUCTURE TO <FS_DTFIAP_3>.
"Details from EKPO:Purchasing Document Item
SELECT SINGLE MENGE MEINS
INTO CORRESPONDING FIELDS OF <FS_DTFIAP_3>
FROM EKPO
WHERE EBELN = <FS_DTFIAP_3>-EBELN
AND EBELP = <FS_DTFIAP_3>-EBELP.
"Details from BKPF:Accounting Document Header
SELECT SINGLE PPNAM USNAM
INTO CORRESPONDING FIELDS OF <FS_DTFIAP_3>
FROM BKPF
WHERE BUKRS = <FS_DTFIAP_3>-BUKRS
AND BELNR = <FS_DTFIAP_3>-BELNR
AND GJAHR = <FS_DTFIAP_3>-FISCPER+0(4).
"Read Long Text
C_KEY+0(4) = <FS_DTFIAP_3>-BUKRS.
C_KEY+4(10) = <FS_DTFIAP_3>-BELNR.
C_KEY+14(4) = <FS_DTFIAP_3>-FISCPER+0(4).
C_KEY+18(3) = <FS_DTFIAP_3>-BUZEI.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = '0001'
language = sy-langu
object = 'DOC_ITEM'
name = C_KEY
IMPORTING
header = thead
TABLES
lines = tlinetab
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
others = 8.
IF SY-SUBRC = 0.
I_LINE = 0.
LOOP AT TLINETAB.
IF I_LINE EQ 0.
<FS_DTFIAP_3>-LGTXT = TLINETAB-TDLINE.
ELSE.
CONCATENATE <FS_DTFIAP_3>-LGTXT TLINETAB-TDLINE INTO <FS_DTFIAP_3>-LGTXT SEPARATED BY SPACE.
ENDIF.
ADD 1 TO I_LI NE.
ENDLOOP.
ENDIF.
WHEN '0FI_GL_4'. "Customers: Line Items with Delta Extraction
FIELD-SYMBOLS: <FS_DTFIGL_4> TYPE DTFIGL_4.
ASSIGN C_STRUCTURE TO <FS_DTFIGL_4>.
"Details from SKA1:G/L Account Master (Chart of Accounts)
SELECT SINGLE XBILK GVTYP
INTO CORRESPONDING FIELDS OF <FS_DTFIGL_4>
FROM SKA1
WHERE SAKNR = <FS_DTFIGL_4>-HKONT
AND KTOPL = <FS_DTFIGL_4>-KTOPL.
"Read Alt GL Account from SKB1:G/L account master (company code)
SELECT SINGLE ALTKT
INTO CORRESPONDING FIELDS OF <FS_DTFIGL_4>
FROM SKB1
WHERE BUKRS = <FS_DTFIGL_4>-BUKRS
AND SAKNR = <FS_DTFIGL_4>-HKONT.
IF <FS_DTFIGL_4>-ALTKT IS NOT INITIAL.
"Read corresponding Chart of Account for Alt GL Account from T001
SELECT SINGLE KTOP2
INTO CORRESPONDING FIELDS OF WA_T001
FROM T001
WHERE BUKRS = <FS_DTFIGL_4>-BUKRS.
IF SY-SUBRC EQ 0.
<FS_DTFIGL_4>-ZKTOPL = WA_T001-KTOP2.
ENDIF.
ENDIF.
WHEN OTHERS.
ENDCASE.
UNASSIGN <FS_DTFIAR_3>.
UNASSIGN <FS_DTFIAP_3>.
UNASSIGN <FS_DTFIGL_4>.
ENDFUNCTION.
4.3 Source Code for ZBWFI_FILL_CI_00005022
FUNCTION ZBWFI_FILL_CI_00005022.*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_OLTPSOURCE) TYPE SBIW A_S_INTERFACE-ISOURCE
*" CHANGING
*" REFERENCE(C_STRUCTURE)
*"----------------------------------------------------------------------
DATA: BEGIN OF WA_T001,
KTOP2 TYPE KTOP2,
END OF WA_T001.
CASE I_OLTPSOURCE.
WHEN '0FI_AR_6'. "Customer Sales Figures via Delta Extraction
FIELD-SYMBOLS: <FS_DTFIAR_1> TYPE DTFIAR_1.
ASSIGN C_STRUCTURE TO <FS_DTFIAR_1>.
"Details from KNA1:General Data in Customer Master
SELECT SINGLE NIELS
INTO CORRESPONDING FIELDS OF <FS_DTFIAR_1>
FROM KNA1
WHERE KUNNR = <FS_DTFIAR_1>-KUNNR.
"Details from KNB1:Customer Master (Company Code)
SELECT SINGLE AKONT
INTO CORRESPONDING FIELDS OF <FS_DTFIAR_1>
FROM KNB1
WHERE KUNNR = <FS_DTFIAR_1>-K UNNR
AND BUKRS = <FS_DTFIAR_1>-BUKRS.
"Details from KNVV:Customer Master Sales Data
SELECT SINGLE BZIRK
INTO CORRESPONDING FIELDS OF <FS_DTFIAR_1>
FROM KNVV
WHERE KUNNR = <FS_DTFIAR_1>-KUNNR.
"Details from T001:Company Codes
SELECT SINGLE KTOPL
INTO CORRESPONDING FIELDS OF <FS_DTFIAR_1>
FROM T001
WHERE BUKRS = <FS_DTFIAR_1>-BUKRS.
WHEN '0FI_GL_6'. "General Ledger Sales Figures via Delta Extraction
FIELD-SYMBOLS: <FS_DTFIGL_1> TYPE DTFIGL_1.
ASSIGN C_STRUCTURE TO <FS_DTFIGL_1>.
"Read Alt GL Account from SKB1:G/L account master (company code)
SELECT SINGLE ALTKT
INTO CORRESPONDING FIELDS OF <FS_DTFIGL_1>
FROM SKB1< br> WHERE BUKRS = <FS_DTFIGL_1>-BUKRS
AND SAKNR = <FS_DTFIGL_1>-SAKNR.
IF <FS_DTFIGL_1>-ALTKT IS NOT INITIAL.
"Read corresponding Chart of Account for Alt GL Account from T001
SELECT SINGLE KTOP2
INTO CORRESPONDING FIELDS OF WA_T001
FROM T001
WHERE BUKRS = <FS_DTFIGL_1>-BUKRS.
IF SY-SUBRC EQ 0.
<FS_DTFIGL_1>-ZKTOPL = WA_T001-KTOP2.
ENDIF.
ENDIF.
WHEN OTHERS.
ENDCASE.
UNASSIGN <FS_DTFIAR_1>.
UNASSIGN <FS_DTFIGL_1>.
ENDFUNCTION.
4.4 Source Code for ZFI_AP_4 in CMOD
Include: ZXRSAU01-----------------
WHEN 'ZFI_AP_4'.
PERFOR M enhance_ZFI_AP_4 TABLES c_t_data.
Include: ZXRSAF02
-----------------
*...enhance_ZFI_AP_4:Enhancements for FIAP: Parked Documents
FORM enhance_zfi_ap_4 TABLES c_t_data STRUCTURE zoxdae0290.
DATA: i_zfiap4 TYPE TABLE OF zoxdae0290 WITH HEADER LINE.
DATA: BEGIN OF ls_faede.
INCLUDE STRUCTURE faede.
DATA: END OF ls_faede.
* STATICS: R_FISCPER TYPE BWFI_T_FISCPER.
LOOP AT c_t_data INTO i_zfiap4.
*...check for fiscper selection........................................*
i_zfiap4-fiscper(4) = i_zfiap4-gjahr.
i_zfiap4-fiscper+4(1) = '0'.
i_zfiap4-fiscper+5(2) = i_zfiap4-monat.
* CHECK i_ZFIAP4-FISCPER IN R_FISCPER.
*...setting constants........................................*
i_zfiap4-uposz = '0001'.
i_zfiap4-statusps = 'D'.
i_zfiap4-koart = 'K'.
i_zfiap4-augdt = '00000000'.
*...amount fields........... ...........................................*
CASE i_zfiap4-shkzg.
WHEN 'S'.
i_zfiap4-dmsol = i_zfiap4-dmbtr.
i_zfiap4-dmshb = i_zfiap4-dmbtr.
i_zfiap4-wrsol = i_zfiap4-wrbtr.
i_zfiap4-wrshb = i_zfiap4-wrbtr.
WHEN 'H'.
i_zfiap4-dmhab = i_zfiap4-dmbtr.
i_zfiap4-dmshb = i_zfiap4-dmbtr * -1.
i_zfiap4-wrhab = i_zfiap4-wrbtr.
i_zfiap4-wrshb = i_zfiap4-wrbtr * -1.
ENDCASE.
*...negative posting
IF i_zfiap4-xnegp = 'X'.
CASE i_zfiap4-shkzg.
WHEN 'S'.
i_zfiap4-dmhab = i_zfiap4-dmbtr * -1.
i_zfiap4-wrhab = i_zfiap4-wrbtr * -1.
CLEAR: i_zfiap4-dmsol,
i_zfiap4-wrsol.
WHEN 'H'.
i_zfiap4-dmsol = i_zfiap4-dmbtr * -1. i_zfiap4-wrsol = i_zfiap4-wrbtr * -1.
CLEAR: i_zfiap4-dmhab,
i_zfiap4-wrhab.
ENDCASE.
ENDIF.
*...Due Date Calculations
IF ( i_zfiap4-zfbdt IS INITIAL ).
MOVE i_zfiap4-bldat TO i_zfiap4-zfbdt.
ENDIF.
MOVE-CORRESPONDING i_zfiap4 TO ls_faede.
CALL FUNCTION 'DETERMINE_DUE_DATE'
EXPORTING
i_faede = ls_faede
IMPORTING
e_faede = ls_faede
EXCEPTIONS
OTHERS = 1.
MOVE: ls_faede-netdt TO i_zfiap4-netdt,
ls_faede-sk1dt TO i_zfiap4-sk1dt,
ls_faede-sk2dt TO i_zfiap4-sk2dt.
*...Details from BKPF:Accounting Document Header
SELECT SINGLE usnam
INTO i_zfiap4-ppnam
FROM vbkpf
WHERE bukrs = i_zfiap4-bukr s
AND belnr = i_zfiap4-belnr
AND gjahr = i_zfiap4-gjahr.
IF sy-subrc EQ 0.
MODIFY c_t_data FROM i_zfiap4.
ENDIF.
CLEAR i_zfiap4.
ENDLOOP.
ENDFORM. "enhance_ZFI_AP_4
*...enhance_ZFI_AP_4:Enhancements for FIAP: Parked Documents