Dear ABAP Experts,
i have requirement that is using BDC recording file the Functional People wants to add records to the G/L Account group. The FI consultant gave the recording file, based on the recording file i developed a BDC program. This BDC program will work for single record. After creating single record system will ask for transport request .
REPORT ZDP_ACC_GRP.
TYPES: BEGIN OF TY_TAB,
KTOPL TYPE KTOPL,
KTOKS TYPE KTOKS,
TXT30 TYPE TXT30,
VONNR TYPE VONNR,
BISNR TYPE BISNR,
TRKORR TYPE TRKORR,
END OF TY_TAB.
data: lt_tab type table of ty_tab,
wa_tab type ty_tab.
data: begin of record,
* data element: KTOPL
KTOPL_01_001(004),
* data element: KTOKS
KTOKS_01_002(004),
* data element: TXT30_077T
TXT30_01_003(030),
* data element: VONNR_077S
VONNR_01_004(010),
* data element: BISNR_077S
BISNR_01_005(010),
* data element: TRKORR
TRKORR_006(020),
end of record.
* Batchinputdata of single transaction
DATA: BDCDATA type table of BDCDATA WITH HEADER LINE.
* messages of call transaction
DATA: MESSTAB type table of BDCMSGCOLL WITH HEADER LINE.
* error session opened (' ' or 'X')
DATA: E_GROUP_OPENED.
* message texts
TABLES: T100.
data:lv_file type string.
parameters: p_fname type IBIPPARMS-PATH.
at selection-screen on value-request for p_fname.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'P_FNAME'
IMPORTING
FILE_NAME = p_fname .
start-of-selection.
lv_file = p_fname.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = LV_FILE
* FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = LT_TAB
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17 .
LOop at lt_tab into wa_tab.
perform bdc_dynpro using 'SAPL0F09' '0020'.
perform bdc_field using 'BDC_CURSOR'
'V_T077S-TXT30(01)'.
perform bdc_field using 'BDC_OKCODE'
'=NEWL'.
perform bdc_dynpro using 'SAPL0F09' '0020'.
perform bdc_field using 'BDC_CURSOR'
'V_T077S-BISNR(01)'.
perform bdc_field using 'BDC_OKCODE'
'=SAVE'.
perform bdc_field using 'V_T077S-KTOPL(01)'
WA_TAB-KTOPL."record-KTOPL_01_001.
perform bdc_field using 'V_T077S-KTOKS(01)'
WA_TAB-KTOKS."record-KTOKS_01_002.
perform bdc_field using 'V_T077S-TXT30(01)'
WA_TAB-TXT30."record-TXT30_01_003.
perform bdc_field using 'V_T077S-VONNR(01)'
WA_TAB-VONNR."record-VONNR_01_004.
perform bdc_field using 'V_T077S-BISNR(01)'
WA_TAB-BISNR."record-BISNR_01_005.
perform bdc_dynpro using 'SAPLSTRD' '0300'.
perform bdc_field using 'BDC_CURSOR'
'KO008-TRKORR'.
perform bdc_field using 'BDC_OKCODE'
'=LOCK'.
perform bdc_field using 'KO008-TRKORR'
WA_TAB-TRKORR."record-TRKORR_006.
perform bdc_dynpro using 'SAPL0F09' '0020'.
perform bdc_field using 'BDC_CURSOR'
'V_T077S-KTOPL(02)'.
perform bdc_field using 'BDC_OKCODE'
'=BACK'.
perform bdc_dynpro using 'SAPL0F09' '0020'.
perform bdc_field using 'BDC_CURSOR'
'V_T077S-KTOPL(02)'.
perform bdc_field using 'BDC_OKCODE'
'=BACK'.
perform bdc_transaction using 'OBD4'.
ENDLOOP.
FORM BDC_TRANSACTION USING TCODE.
DATA: L_MSTRING(480).
DATA: L_SUBRC LIKE SY-SUBRC.
* batch input session
* call transaction using
REFRESH MESSTAB.
CALL TRANSACTION 'OBD4' USING BDCDATA
MODE 'A'" CTUMODE
UPDATE 'S'"CUPDATE
MESSAGES INTO MESSTAB.
L_SUBRC = SY-SUBRC.
LOOP AT MESSTAB.
SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
AND ARBGB = MESSTAB-MSGID
AND MSGNR = MESSTAB-MSGNR.
IF SY-SUBRC = 0.
L_MSTRING = T100-TEXT.
IF L_MSTRING CS '&1'.
REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ELSE.
REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ENDIF.
CONDENSE L_MSTRING.
WRITE: / MESSTAB-MSGTYP, L_MSTRING(250).
ELSE.
WRITE: / MESSTAB.
ENDIF.
ENDLOOP.
REFRESH BDCDATA.
ENDFORM.
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM.
But the FI consultant wants to add multiple records to 'G/L account group'.After adding records before saving the system need to ask transport request at the last.
How can I write code ...??
Please help me.