You are on page 1of 31

BDC Example: Using Table Control in BDC Among beginners, using table control in BDC is always a puzzle.

Following is a sample code of handling table control in BDC. REPORT Y730_BDC5 . *HANDLING TABLE CONTROL IN BDC DATA : BEGIN OF IT_DUMMY OCCURS 0, DUMMY(100) TYPE C, END OF IT_DUMMY. DATA : BEGIN OF IT_XK01 OCCURS 0, LIFNR(10) TYPE C, BUKRS(4) TYPE C, EKORG(4) TYPE C, KTOKK(4) TYPE C, NAME1(30) TYPE C, SORTL(10) TYPE C, LAND1(3) TYPE C, SPRAS(2) TYPE C, AKONT(6) TYPE C, FDGRV(2) TYPE C, WAERS(3) TYPE C, END OF IT_XK01, BEGIN OF IT_BANK OCCURS 0, BANKS(3) TYPE C, BANKL(10) TYPE C, BANKN(10) TYPE C, KOINH(30) TYPE C, LIFNR(10) TYPE C, END OF IT_BANK. DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE, IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. CALL FUNCTION 'WS_UPLOAD' EXPORTING FILENAME FILETYPE TABLES DATA_TAB

= 'C:\VENDOR.TXT' = 'ASC' = IT_DUMMY.

LOOP AT IT_DUMMY. IF IT_DUMMY-DUMMY+0(2) = '11'. IT_XK01-LIFNR = IT_DUMMY-DUMMY+2(10). IT_XK01-BUKRS = IT_DUMMY-DUMMY+12(4). IT_XK01-EKORG = IT_DUMMY-DUMMY+16(4). IT_XK01-KTOKK = IT_DUMMY-DUMMY+20(4). IT_XK01-NAME1 = IT_DUMMY-DUMMY+24(30). IT_XK01-SORTL = IT_DUMMY-DUMMY+54(10). IT_XK01-LAND1 = IT_DUMMY-DUMMY+64(3). IT_XK01-SPRAS = IT_DUMMY-DUMMY+67(2). IT_XK01-AKONT = IT_DUMMY-DUMMY+69(6). IT_XK01-FDGRV = IT_DUMMY-DUMMY+75(2). IT_XK01-WAERS = IT_DUMMY-DUMMY+77(3). APPEND IT_XK01. ELSE. IT_BANK-BANKS = IT_DUMMY-DUMMY+2(3). IT_BANK-BANKL = IT_DUMMY-DUMMY+5(10). IT_BANK-BANKN = IT_DUMMY-DUMMY+15(10).

IT_BANK-KOINH = IT_DUMMY-DUMMY+25(30). IT_BANK-LIFNR = IT_DUMMY-DUMMY+55(10). APPEND IT_BANK. ENDIF. ENDLOOP. LOOP AT REFRESH perform perform IT_XK01. IT_BDCDATA. bdc_dynpro bdc_field

perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field

using 'SAPMF02K' '0100'. using 'BDC_CURSOR' 'RF02K-REF_LIFNR'. using 'BDC_OKCODE' '/00'. using 'RF02K-LIFNR' IT_XK01-LIFNR. using 'RF02K-BUKRS' IT_XK01-BUKRS. using 'RF02K-EKORG' IT_XK01-EKORG. using 'RF02K-KTOKK' IT_XK01-KTOKK. using 'SAPMF02K' '0110'. using 'BDC_CURSOR' 'LFA1-TELX1'. using 'BDC_OKCODE' '/00'. using 'LFA1-NAME1' IT_XK01-NAME1. using 'LFA1-SORTL' IT_XK01-SORTL. using 'LFA1-LAND1' IT_XK01-LAND1. using 'LFA1-SPRAS' IT_XK01-SPRAS. using 'SAPMF02K' '0120'. using 'BDC_CURSOR' 'LFA1-KUNNR'. using 'BDC_OKCODE' '/00'. using 'SAPMF02K' '0130'. using 'BDC_CURSOR' 'LFBK-KOINH(02)'. using 'BDC_OKCODE' '=ENTR'.

DATA : FNAM(20) TYPE C, IDX TYPE C. MOVE 1 TO IDX. LOOP AT IT_BANK WHERE LIFNR = IT_XK01-LIFNR. CONCATENATE 'LFBK-BANKS(' IDX ')' INTO FNAM. perform bdc_field using FNAM IT_BANK-BANKS. CONCATENATE 'LFBK-BANKL(' IDX ')' INTO FNAM. perform bdc_field using FNAM IT_BANK-BANKL. CONCATENATE 'LFBK-BANKN(' IDX ')' INTO FNAM. perform bdc_field using FNAM IT_BANK-BANKN.

CONCATENATE 'LFBK-KOINH(' IDX ')' INTO FNAM. perform bdc_field using FNAM IT_BANK-KOINH. IDX = IDX + 1. ENDLOOP. perform bdc_dynpro perform bdc_field using 'SAPMF02K' '0130'. using 'BDC_CURSOR' 'LFBK-BANKS(01)'. perform bdc_field using 'BDC_OKCODE' '=ENTR'. perform bdc_dynpro using 'SAPMF02K' '0210'. perform bdc_field using 'BDC_CURSOR' 'LFB1-FDGRV'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_field using 'LFB1-AKONT' IT_XK01-AKONT. perform bdc_field using 'LFB1-FDGRV' IT_XK01-FDGRV. perform bdc_dynpro using 'SAPMF02K' '0215'. perform bdc_field using 'BDC_CURSOR' 'LFB1-ZTERM'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_dynpro using 'SAPMF02K' '0220'. perform bdc_field using 'BDC_CURSOR' 'LFB5-MAHNA'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_dynpro using 'SAPMF02K' '0310'. perform bdc_field using 'BDC_CURSOR' 'LFM1-WAERS'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_field using 'LFM1-WAERS' IT_XK01-WAERS. perform bdc_dynpro using 'SAPMF02K' '0320'. perform bdc_field using 'BDC_CURSOR' 'WYT3-PARVW(01)'. perform bdc_field using 'BDC_OKCODE' '=ENTR'. perform bdc_dynpro using 'SAPLSPO1' '0300'. perform bdc_field using 'BDC_OKCODE' '=YES'. CALL TRANSACTION 'XK01' USING IT_BDCDATA MODE 'A' UPDATE 'S' MESSAGES INTO IT_BDCMSGCOLL. ENDLOOP. FORM BDC_DYNPRO USING PROG SCR. CLEAR IT_BDCDATA. IT_BDCDATA-PROGRAM = PROG. IT_BDCDATA-DYNPRO = SCR. IT_BDCDATA-DYNBEGIN = 'X'. APPEND IT_BDCDATA. ENDFORM. FORM BDC_FIELD USING FNAM FVAL.

CLEAR IT_BDCDATA. IT_BDCDATA-FNAM = FNAM. IT_BDCDATA-FVAL = FVAL. APPEND IT_BDCDATA. ENDFORM. Hope that would clear the matters for freshers. --------------------------------------BDC Example: Using Table Control in BDC Among beginners, using table control in BDC is always a puzzle. Following is a sample code of handling table control in BDC. REPORT Y730_BDC5 . *HANDLING TABLE CONTROL IN BDC DATA : BEGIN OF IT_DUMMY OCCURS 0, DUMMY(100) TYPE C, END OF IT_DUMMY. DATA : BEGIN OF IT_XK01 OCCURS 0, LIFNR(10) TYPE C, BUKRS(4) TYPE C, EKORG(4) TYPE C, KTOKK(4) TYPE C, NAME1(30) TYPE C, SORTL(10) TYPE C, LAND1(3) TYPE C, SPRAS(2) TYPE C, AKONT(6) TYPE C, FDGRV(2) TYPE C, WAERS(3) TYPE C, END OF IT_XK01, BEGIN OF IT_BANK OCCURS 0, BANKS(3) TYPE C, BANKL(10) TYPE C, BANKN(10) TYPE C, KOINH(30) TYPE C, LIFNR(10) TYPE C, END OF IT_BANK. DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE, IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. CALL FUNCTION 'WS_UPLOAD' EXPORTING FILENAME FILETYPE TABLES DATA_TAB

= 'C:\VENDOR.TXT' = 'ASC' = IT_DUMMY.

LOOP AT IT_DUMMY. IF IT_DUMMY-DUMMY+0(2) = '11'. IT_XK01-LIFNR = IT_DUMMY-DUMMY+2(10). IT_XK01-BUKRS = IT_DUMMY-DUMMY+12(4). IT_XK01-EKORG = IT_DUMMY-DUMMY+16(4). IT_XK01-KTOKK = IT_DUMMY-DUMMY+20(4). IT_XK01-NAME1 = IT_DUMMY-DUMMY+24(30). IT_XK01-SORTL = IT_DUMMY-DUMMY+54(10). IT_XK01-LAND1 = IT_DUMMY-DUMMY+64(3). IT_XK01-SPRAS = IT_DUMMY-DUMMY+67(2). IT_XK01-AKONT = IT_DUMMY-DUMMY+69(6).

IT_XK01-FDGRV = IT_XK01-WAERS = APPEND IT_XK01. ELSE. IT_BANK-BANKS = IT_BANK-BANKL = IT_BANK-BANKN = IT_BANK-KOINH = IT_BANK-LIFNR = APPEND IT_BANK. ENDIF. ENDLOOP. LOOP AT REFRESH perform perform IT_XK01. IT_BDCDATA. bdc_dynpro bdc_field

IT_DUMMY-DUMMY+75(2). IT_DUMMY-DUMMY+77(3). IT_DUMMY-DUMMY+2(3). IT_DUMMY-DUMMY+5(10). IT_DUMMY-DUMMY+15(10). IT_DUMMY-DUMMY+25(30). IT_DUMMY-DUMMY+55(10).

perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field perform bdc_dynpro perform bdc_field perform bdc_field

using 'SAPMF02K' '0100'. using 'BDC_CURSOR' 'RF02K-REF_LIFNR'. using 'BDC_OKCODE' '/00'. using 'RF02K-LIFNR' IT_XK01-LIFNR. using 'RF02K-BUKRS' IT_XK01-BUKRS. using 'RF02K-EKORG' IT_XK01-EKORG. using 'RF02K-KTOKK' IT_XK01-KTOKK. using 'SAPMF02K' '0110'. using 'BDC_CURSOR' 'LFA1-TELX1'. using 'BDC_OKCODE' '/00'. using 'LFA1-NAME1' IT_XK01-NAME1. using 'LFA1-SORTL' IT_XK01-SORTL. using 'LFA1-LAND1' IT_XK01-LAND1. using 'LFA1-SPRAS' IT_XK01-SPRAS. using 'SAPMF02K' '0120'. using 'BDC_CURSOR' 'LFA1-KUNNR'. using 'BDC_OKCODE' '/00'. using 'SAPMF02K' '0130'. using 'BDC_CURSOR' 'LFBK-KOINH(02)'. using 'BDC_OKCODE' '=ENTR'.

DATA : FNAM(20) TYPE C, IDX TYPE C. MOVE 1 TO IDX. LOOP AT IT_BANK WHERE LIFNR = IT_XK01-LIFNR. CONCATENATE 'LFBK-BANKS(' IDX ')' INTO FNAM. perform bdc_field using FNAM IT_BANK-BANKS. CONCATENATE 'LFBK-BANKL(' IDX ')' INTO FNAM.

perform bdc_field

using FNAM IT_BANK-BANKL.

CONCATENATE 'LFBK-BANKN(' IDX ')' INTO FNAM. perform bdc_field using FNAM IT_BANK-BANKN. CONCATENATE 'LFBK-KOINH(' IDX ')' INTO FNAM. perform bdc_field using FNAM IT_BANK-KOINH. IDX = IDX + 1. ENDLOOP. perform bdc_dynpro perform bdc_field using 'SAPMF02K' '0130'. using 'BDC_CURSOR' 'LFBK-BANKS(01)'. perform bdc_field using 'BDC_OKCODE' '=ENTR'. perform bdc_dynpro using 'SAPMF02K' '0210'. perform bdc_field using 'BDC_CURSOR' 'LFB1-FDGRV'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_field using 'LFB1-AKONT' IT_XK01-AKONT. perform bdc_field using 'LFB1-FDGRV' IT_XK01-FDGRV. perform bdc_dynpro using 'SAPMF02K' '0215'. perform bdc_field using 'BDC_CURSOR' 'LFB1-ZTERM'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_dynpro using 'SAPMF02K' '0220'. perform bdc_field using 'BDC_CURSOR' 'LFB5-MAHNA'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_dynpro using 'SAPMF02K' '0310'. perform bdc_field using 'BDC_CURSOR' 'LFM1-WAERS'. perform bdc_field using 'BDC_OKCODE' '/00'. perform bdc_field using 'LFM1-WAERS' IT_XK01-WAERS. perform bdc_dynpro using 'SAPMF02K' '0320'. perform bdc_field using 'BDC_CURSOR' 'WYT3-PARVW(01)'. perform bdc_field using 'BDC_OKCODE' '=ENTR'. perform bdc_dynpro using 'SAPLSPO1' '0300'. perform bdc_field using 'BDC_OKCODE' '=YES'. CALL TRANSACTION 'XK01' USING IT_BDCDATA MODE 'A' UPDATE 'S' MESSAGES INTO IT_BDCMSGCOLL. ENDLOOP. FORM BDC_DYNPRO USING PROG SCR. CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = PROG. IT_BDCDATA-DYNPRO = SCR. IT_BDCDATA-DYNBEGIN = 'X'. APPEND IT_BDCDATA. ENDFORM. FORM BDC_FIELD USING FNAM FVAL. CLEAR IT_BDCDATA. IT_BDCDATA-FNAM = FNAM. IT_BDCDATA-FVAL = FVAL. APPEND IT_BDCDATA. ENDFORM. Hope that would clear the matters for freshers. Fast Lin s: Get help for your ABAP problems Do you have a ABAP Question? ---------------------Written by Anon. Friday, 05 December 2008 An example abap program of handling Table Control during bdc programming. REPORT zmm_bdcp_purchaseorder b02 NO STANDARD PAGE HEADING LINE-SIZE 255. *----------------------------------------------------------------------* * Declaring internal tables * *----------------------------------------------------------------------* *-----Declaring line structure DATA : BEGIN OF it_dummy OCCURS 0, dummy(255) TYPE c, END OF it_dummy. *-----Internal table for line items DATA : BEGIN OF it_idata ematn(18), menge(13), netpr(11), wer s(4), ebelp(5), END OF it_idata. OCCURS 0, "Material Number. "Qyantity. "Net Price. "Plant. "Item Number.

*-----Deep structure for header data and line items DATA : BEGIN OF it_me21 OCCURS 0, lifnr(10), "Vendor A/c No. bsart(4), "A/c Type. bedat(8), "Date of creation of PO. e org(4), "Purchasing Organisation. e grp(3), "Purchasing Group. x_data LIKE TABLE OF it_idata, END OF it_me21. DATA : x_idata LIKE LINE OF it_idata. DATA : v_delimit VALUE ','.

DATA DATA DATA DATA DATA

: : : : :

v_indx(3) TYPE n. v_fnam(30) TYPE c. v_count TYPE n. v_ne TYPE i. v_ns TYPE i.

*include bdcrecx1. INCLUDE zmm_incl_purchaseorder b01. *----------------------------------------------------------------------* * Search help for file * *----------------------------------------------------------------------* AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. CALL FUNCTION 'F4_FILENAME' EXPORTING program_name = syst-cprog dynpro_number = syst-dynnr IMPORTING file_name = p_file. START-OF-SELECTION. *----------------------------------------------------------------------* * To upload the data into line structure * *----------------------------------------------------------------------* CALL FUNCTION 'WS_UPLOAD' EXPORTING filename = p_file filetype = 'DAT' TABLES data_tab = it_dummy. *----------------------------------------------------------------------* * Processing the data from line structure to internal tables * *----------------------------------------------------------------------* REFRESH:it_me21. CLEAR :it_me21. LOOP AT it_dummy. IF it_dummy-dummy+0(01) = 'H'. v_indx = v_indx + 1. CLEAR it_idata. REFRESH it_idata. CLEAR it_me21-x_data. REFRESH it_me21-x_data. SHIFT it_dummy. SPLIT it_dummy AT v_delimit INTO it_me21-lifnr it_me21-bsart it_me21-bedat it_me21-e org it_me21-e grp. APPEND it_me21. ELSEIF it_dummy-dummy+0(01) = 'L'. SHIFT it_dummy. SPLIT it_dummy AT v_delimit INTO it_idata-ematn

it_idata-menge it_idata-netpr it_idata-wer s it_idata-ebelp. APPEND it_idata TO it_me21-x_data. MODIFY it_me21 INDEX v_indx. ENDIF. ENDLOOP. *----------------------------------------------------------------------* * To open the group * *----------------------------------------------------------------------* PERFORM open_group. *----------------------------------------------------------------------* * To populate the bdcdata table for header data * *----------------------------------------------------------------------* LOOP AT it_me21. v_count = v_count + 1. REFRESH it_bdcdata. PERFORM subr_bdc_table USING:

PERFORM subr_bdc_table USING:

'X' 'SAPMM06E' '0120', ' ' 'BDC_CURSOR' 'RM06E-EBELP', ' ' 'BDC_OKCODE' '/00'.

MOVE 1 TO v_indx. *-----To populate the bdcdata table for line item data LOOP AT it_me21-x_data INTO x_idata. CONCATENATE 'EKPO-EMATN(' v_indx ')' INTO v_fnam. PERFORM subr_bdc_table USING ' ' v_fnam x_idata-ematn. CONCATENATE 'EKPO-MENGE(' v_indx ')' INTO v_fnam. PERFORM subr_bdc_table USING ' ' v_fnam x_idata-menge. CONCATENATE 'EKPO-NETPR(' v_indx ')' INTO v_fnam. PERFORM subr_bdc_table USING ' ' v_fnam x_idata-netpr. CONCATENATE 'EKPO-WERKS(' v_indx ')' INTO v_fnam. PERFORM subr_bdc_table USING ' ' v_fnam x_idata-wer s. v_indx = v_indx + 1. PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120', ' ' 'BDC_CURSOR' 'RM06E-EBELP', ' ' 'BDC_OKCODE' '/00'. ENDLOOP. PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120', ' ' 'BDC_CURSOR' 'RM06E-EBELP',

'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '

'SAPMM06E' 'BDC_CURSOR' 'BDC_OKCODE' 'EKKO-LIFNR' 'RM06E-BSART' 'RM06E-BEDAT' 'EKKO-EKORG' 'EKKO-EKGRP' 'RM06E-LPEIN'

'0100', 'EKKO-LIFNR', '/00', it_me21-lifnr, it_me21-bsart, it_me21-bedat, it_me21-e org, it_me21-e grp, 'T'.

' ' 'BDC_OKCODE' '=BU'. PERFORM bdc_transaction USING 'ME21'. ENDLOOP. PERFORM close_group. *----------------------------------------------------------------------* * End of selection event * *----------------------------------------------------------------------* END-OF-SELECTION. IF session NE 'X'. *-----To display the successful records WRITE :/10 text-001. "Sucess records WRITE :/10 SY-ULINE(20). SKIP. IF it_sucess IS INITIAL. WRITE :/ text-002. ELSE. WRITE :/ text-008, "Total number of Succesful records 35 v_ns. SKIP. WRITE:/ text-003, "Vendor Number 17 text-004, "Record number 30 text-005. "Message ENDIF. LOOP AT it_sucess. WRITE:/4 it_sucess-lifnr, 17 it_sucess-tabix CENTERED, 30 it_sucess-sucess_rec. ENDLOOP. SKIP. *-----To display the erroneous records WRITE:/10 WRITE:/10 SKIP. IF it_error WRITE:/ ELSE. WRITE:/ 35 SKIP. WRITE:/ 17 30 ENDIF. text-006. SY-ULINE(17). IS INITIAL. text-007. text-009, v_ne. text-003, text-004, text-005. "Error Records

"No error records "Total number of erroneous records "Vendor Number "Record number "Message

LOOP AT it_error. WRITE:/4 it_error-lifnr, 17 it_error-tabix CENTERED, 30 it_error-error_rec. ENDLOOP. REFRESH it_sucess.

REFRESH it_error. ENDIF. CODE IN INCLUDE. *----------------------------------------------------------------------* * Include ZMM_INCL_PURCHASEORDERKB01 *----------------------------------------------------------------------* DATA: DATA: DATA: it_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. it_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. E_GROUP_OPENED.

*-----Internal table to store sucess records DATA:BEGIN OF it_sucess OCCURS 0, msgtyp(1) TYPE c, lifnr LIKE e o-lifnr, tabix LIKE sy-tabix, sucess_rec(125), END OF it_sucess. DATA: g_mess(125) type c. *-----Internal table to store error records DATA:BEGIN OF it_error OCCURS 0, msgtyp(1) TYPE c, lifnr LIKE e o-lifnr, tabix LIKE sy-tabix, error_rec(125), END OF it_error. *----------------------------------------------------------------------* * Selection screen *----------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF LINE. PARAMETERS session RADIOBUTTON GROUP ctu. "create session SELECTION-SCREEN COMMENT 3(20) text-s07 FOR FIELD session. SELECTION-SCREEN POSITION 45. PARAMETERS ctu RADIOBUTTON GROUP ctu. "call transaction SELECTION-SCREEN COMMENT 48(20) text-s08 FOR FIELD ctu. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 3(20) text-s01 FOR FIELD group. SELECTION-SCREEN POSITION 25. PARAMETERS group(12). "group name of session SELECTION-SCREEN COMMENT 48(20) text-s05 FOR FIELD ctumode. SELECTION-SCREEN POSITION 70. PARAMETERS ctumode LIKE ctu_params-dismode DEFAULT 'N'. "A: show all dynpros "E: show dynpro on error only "N: do not display dynpro SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 48(20) text-s06 FOR FIELD cupdate.

SELECTION-SCREEN POSITION 70. PARAMETERS cupdate LIKE ctu_params-updmode DEFAULT 'L'. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 3(20) text-s03 FOR FIELD eep. SELECTION-SCREEN POSITION 25. PARAMETERS: eep AS CHECKBOX. "' ' = delete session if finished "'X' = eep session if finished SELECTION-SCREEN COMMENT 48(20) text-s09 FOR FIELD e_group. SELECTION-SCREEN POSITION 70. PARAMETERS e_group(12). "group name of error-session SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 51(17) text-s03 FOR FIELD e_ eep. SELECTION-SCREEN POSITION 70. PARAMETERS: e_ eep AS CHECKBOX. "' ' = delete session if finished "'X' = eep session if finished SELECTION-SCREEN END OF LINE. PARAMETERS:p_file LIKE rlgrap-filename. *----------------------------------------------------------------------* * at selection screen * *----------------------------------------------------------------------* AT SELECTION-SCREEN. * group and user must be filled for create session IF SESSION = 'X' AND GROUP = SPACE. "OR USER = SPACE. MESSAGE E613(MS). ENDIF. *----------------------------------------------------------------------* * create batchinput session * *----------------------------------------------------------------------* FORM OPEN_GROUP. IF SESSION = 'X'. SKIP. WRITE: /(20) 'Create group'(I01), GROUP. SKIP. *----open batchinput group CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT GROUP = GROUP USER = sy-uname. WRITE:/(30) 'BDC_OPEN_GROUP'(I02), (12) 'returncode:'(I05), SY-SUBRC. ENDIF. ENDFORM. "OPEN_GROUP *----------------------------------------------------------------------* * end batchinput session * *----------------------------------------------------------------------*

FORM CLOSE_GROUP. IF SESSION = 'X'. *------close batchinput group CALL FUNCTION 'BDC_CLOSE_GROUP'. WRITE: /(30) 'BDC_CLOSE_GROUP'(I04), (12) 'returncode:'(I05), SY-SUBRC. ELSE. IF E_GROUP_OPENED = 'X'. CALL FUNCTION 'BDC_CLOSE_GROUP'. WRITE: /. WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06). ENDIF. ENDIF. ENDFORM. "CLOSE_GROUP *----------------------------------------------------------------------* * Start new transaction according to parameters * *----------------------------------------------------------------------* FORM BDC_TRANSACTION USING TCODE TYPE ANY. DATA: L_SUBRC LIKE SY-SUBRC. *------batch input session IF SESSION = 'X'. CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = TCODE TABLES DYNPROTAB = it_BDCDATA. WRITE: / 'BDC_INSERT'(I03), TCODE, 'returncode:'(I05), SY-SUBRC, 'RECORD:', SY-INDEX. ELSE. REFRESH it_MESSTAB. CALL TRANSACTION TCODE USING it_BDCDATA MODE CTUMODE UPDATE CUPDATE MESSAGES INTO it_MESSTAB. L_SUBRC = SY-SUBRC. WRITE: / 'CALL_TRANSACTION', TCODE, 'returncode:'(I05), L_SUBRC, 'RECORD:', SY-INDEX. ENDIF. *----------------------------------------------------------------------* * Message handling for Call Transaction * *----------------------------------------------------------------------* perform subr_mess_hand using g_mess.

*-----Erzeugen fehlermappe IF L_SUBRC <> 0 AND E_GROUP <> SPACE. IF E_GROUP_OPENED = ' '. CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT GROUP = E_GROUP USER = sy-uname KEEP = E_KEEP. E_GROUP_OPENED = 'X'. ENDIF. CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = TCODE TABLES DYNPROTAB = it_BDCDATA. ENDIF. REFRESH it_BDCDATA. ENDFORM. "BDC_TRANSACTION

*----------------------------------------------------------------------* * Form subr_bdc_table * *----------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_0220 text * * -->P_0221 text * * -->P_0222 text * *----------------------------------------------------------------------* FORM subr_bdc_table USING VALUE(P_0220) TYPE ANY VALUE(P_0221) TYPE ANY VALUE(P_0222) TYPE ANY.

CLEAR it_bdcdata. IF P_0220 = ' '. CLEAR it_bdcdata. it_bdcdata-fnam it_bdcdata-fval APPEND it_bdcdata. ELSE. it_bdcdata-dynbegin it_bdcdata-program it_bdcdata-dynpro APPEND it_bdcdata. ENDIF. ENDFORM.

= P_0221. = P_0222. = P_0220. = P_0221. = P_0222.

" subr_bdc_table

*----------------------------------------------------------------------* * Form subr_mess_hand * *----------------------------------------------------------------------* * text * *----------------------------------------------------------------------* * -->P_G_MESS text * *----------------------------------------------------------------------*

FORM subr_mess_hand USING P_G_MESS TYPE ANY. LOOP AT IT_MESSTAB. CALL FUNCTION 'FORMAT_MESSAGE' EXPORTING ID = it_messtab-msgid LANG = it_messtab-msgspra NO = it_messtab-msgnr v1 = it_messtab-msgv1 v2 = it_messtab-msgv2 IMPORTING MSG = P_G_MESS EXCEPTIONS OTHERS = 0. CASE it_messtab-msgtyp. when 'E'. it_error-error_rec it_error-lifnr it_error-tabix APPEND IT_ERROR. when 'S'. it_sucess-sucess_rec it_sucess-lifnr it_sucess-tabix APPEND IT_SUCESS. endcase. ENDLOOP. Describe table it_sucess lines v_ns. Describe table it_error lines v_ne. ENDFORM. ----------------------Written by Anon. Friday, 05 December 2008 An example abap program of handling Table Control during bdc programming. REPORT zmm_bdcp_purchaseorder b02 NO STANDARD PAGE HEADING LINE-SIZE 255. *----------------------------------------------------------------------* * Declaring internal tables * *----------------------------------------------------------------------* *-----Declaring line structure DATA : BEGIN OF it_dummy OCCURS 0, dummy(255) TYPE c, END OF it_dummy. *-----Internal table for line items DATA : BEGIN OF it_idata OCCURS 0, ematn(18), "Material Number. menge(13), "Qyantity. " subr_mess_hand

= P_G_MESS. = it_me21-lifnr. = v_count. = P_G_MESS. = it_me21-lifnr. = v_count.

netpr(11), "Net Price. wer s(4), "Plant. ebelp(5), "Item Number. END OF it_idata. *-----Deep structure for header data and line items DATA : BEGIN OF it_me21 OCCURS 0, lifnr(10), "Vendor A/c No. bsart(4), "A/c Type. bedat(8), "Date of creation of PO. e org(4), "Purchasing Organisation. e grp(3), "Purchasing Group. x_data LIKE TABLE OF it_idata, END OF it_me21. DATA DATA DATA DATA DATA DATA DATA : : : : : : : x_idata LIKE LINE OF it_idata. v_delimit VALUE ','. v_indx(3) TYPE n. v_fnam(30) TYPE c. v_count TYPE n. v_ne TYPE i. v_ns TYPE i.

*include bdcrecx1. INCLUDE zmm_incl_purchaseorder b01. *----------------------------------------------------------------------* * Search help for file * *----------------------------------------------------------------------* AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. CALL FUNCTION 'F4_FILENAME' EXPORTING program_name = syst-cprog dynpro_number = syst-dynnr IMPORTING file_name = p_file. START-OF-SELECTION. *----------------------------------------------------------------------* * To upload the data into line structure * *----------------------------------------------------------------------* CALL FUNCTION 'WS_UPLOAD' EXPORTING filename = p_file filetype = 'DAT' TABLES data_tab = it_dummy. *----------------------------------------------------------------------* * Processing the data from line structure to internal tables * *----------------------------------------------------------------------* REFRESH:it_me21. CLEAR :it_me21.

LOOP AT it_dummy. IF it_dummy-dummy+0(01) = 'H'. v_indx = v_indx + 1. CLEAR it_idata. REFRESH it_idata. CLEAR it_me21-x_data. REFRESH it_me21-x_data. SHIFT it_dummy. SPLIT it_dummy AT v_delimit INTO it_me21-lifnr it_me21-bsart it_me21-bedat it_me21-e org it_me21-e grp. APPEND it_me21. ELSEIF it_dummy-dummy+0(01) = 'L'. SHIFT it_dummy. SPLIT it_dummy AT v_delimit INTO it_idata-ematn it_idata-menge it_idata-netpr it_idata-wer s it_idata-ebelp. APPEND it_idata TO it_me21-x_data. MODIFY it_me21 INDEX v_indx. ENDIF. ENDLOOP. *----------------------------------------------------------------------* * To open the group * *----------------------------------------------------------------------* PERFORM open_group. *----------------------------------------------------------------------* * To populate the bdcdata table for header data * *----------------------------------------------------------------------* LOOP AT it_me21. v_count = v_count + 1. REFRESH it_bdcdata. PERFORM subr_bdc_table USING:

PERFORM subr_bdc_table USING:

'X' 'SAPMM06E' '0120', ' ' 'BDC_CURSOR' 'RM06E-EBELP', ' ' 'BDC_OKCODE' '/00'.

MOVE 1 TO v_indx. *-----To populate the bdcdata table for line item data

'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '

'SAPMM06E' 'BDC_CURSOR' 'BDC_OKCODE' 'EKKO-LIFNR' 'RM06E-BSART' 'RM06E-BEDAT' 'EKKO-EKORG' 'EKKO-EKGRP' 'RM06E-LPEIN'

'0100', 'EKKO-LIFNR', '/00', it_me21-lifnr, it_me21-bsart, it_me21-bedat, it_me21-e org, it_me21-e grp, 'T'.

LOOP AT it_me21-x_data INTO x_idata. CONCATENATE 'EKPO-EMATN(' v_indx ')' INTO v_fnam. PERFORM subr_bdc_table USING ' ' v_fnam x_idata-ematn. CONCATENATE 'EKPO-MENGE(' v_indx ')' INTO v_fnam. PERFORM subr_bdc_table USING ' ' v_fnam x_idata-menge. CONCATENATE 'EKPO-NETPR(' v_indx ')' INTO v_fnam. PERFORM subr_bdc_table USING ' ' v_fnam x_idata-netpr. CONCATENATE 'EKPO-WERKS(' v_indx ')' INTO v_fnam. PERFORM subr_bdc_table USING ' ' v_fnam x_idata-wer s. v_indx = v_indx + 1. PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120', ' ' 'BDC_CURSOR' 'RM06E-EBELP', ' ' 'BDC_OKCODE' '/00'. ENDLOOP. PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120', ' ' 'BDC_CURSOR' 'RM06E-EBELP', ' ' 'BDC_OKCODE' '=BU'.

PERFORM bdc_transaction USING 'ME21'. ENDLOOP. PERFORM close_group. *----------------------------------------------------------------------* * End of selection event * *----------------------------------------------------------------------* END-OF-SELECTION. IF session NE 'X'. *-----To display the successful records WRITE :/10 text-001. "Sucess records WRITE :/10 SY-ULINE(20). SKIP. IF it_sucess IS INITIAL. WRITE :/ text-002. ELSE. WRITE :/ text-008, "Total number of Succesful records 35 v_ns. SKIP. WRITE:/ text-003, "Vendor Number 17 text-004, "Record number 30 text-005. "Message ENDIF. LOOP AT it_sucess. WRITE:/4 it_sucess-lifnr, 17 it_sucess-tabix CENTERED, 30 it_sucess-sucess_rec. ENDLOOP. SKIP. *-----To display the erroneous records WRITE:/10 WRITE:/10 SKIP. text-006. SY-ULINE(17). "Error Records

IF it_error WRITE:/ ELSE. WRITE:/ 35 SKIP. WRITE:/ 17 30 ENDIF.

IS INITIAL. text-007. text-009, v_ne. text-003, text-004, text-005.

"No error records "Total number of erroneous records "Vendor Number "Record number "Message

LOOP AT it_error. WRITE:/4 it_error-lifnr, 17 it_error-tabix CENTERED, 30 it_error-error_rec. ENDLOOP. REFRESH it_sucess. REFRESH it_error. ENDIF. CODE IN INCLUDE. *----------------------------------------------------------------------* * Include ZMM_INCL_PURCHASEORDERKB01 *----------------------------------------------------------------------* DATA: DATA: DATA: it_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. it_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. E_GROUP_OPENED.

*-----Internal table to store sucess records DATA:BEGIN OF it_sucess OCCURS 0, msgtyp(1) TYPE c, lifnr LIKE e o-lifnr, tabix LIKE sy-tabix, sucess_rec(125), END OF it_sucess. DATA: g_mess(125) type c. *-----Internal table to store error records DATA:BEGIN OF it_error OCCURS 0, msgtyp(1) TYPE c, lifnr LIKE e o-lifnr, tabix LIKE sy-tabix, error_rec(125), END OF it_error. *----------------------------------------------------------------------* * Selection screen *----------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF LINE. PARAMETERS session RADIOBUTTON GROUP ctu. "create session SELECTION-SCREEN COMMENT 3(20) text-s07 FOR FIELD session. SELECTION-SCREEN POSITION 45.

PARAMETERS ctu RADIOBUTTON GROUP ctu. "call transaction SELECTION-SCREEN COMMENT 48(20) text-s08 FOR FIELD ctu. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 3(20) text-s01 FOR FIELD group. SELECTION-SCREEN POSITION 25. PARAMETERS group(12). "group name of session SELECTION-SCREEN COMMENT 48(20) text-s05 FOR FIELD ctumode. SELECTION-SCREEN POSITION 70. PARAMETERS ctumode LIKE ctu_params-dismode DEFAULT 'N'. "A: show all dynpros "E: show dynpro on error only "N: do not display dynpro SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 48(20) text-s06 FOR FIELD cupdate. SELECTION-SCREEN POSITION 70. PARAMETERS cupdate LIKE ctu_params-updmode DEFAULT 'L'. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 3(20) text-s03 FOR FIELD eep. SELECTION-SCREEN POSITION 25. PARAMETERS: eep AS CHECKBOX. "' ' = delete session if finished "'X' = eep session if finished SELECTION-SCREEN COMMENT 48(20) text-s09 FOR FIELD e_group. SELECTION-SCREEN POSITION 70. PARAMETERS e_group(12). "group name of error-session SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 51(17) text-s03 FOR FIELD e_ eep. SELECTION-SCREEN POSITION 70. PARAMETERS: e_ eep AS CHECKBOX. "' ' = delete session if finished "'X' = eep session if finished SELECTION-SCREEN END OF LINE. PARAMETERS:p_file LIKE rlgrap-filename. *----------------------------------------------------------------------* * at selection screen * *----------------------------------------------------------------------* AT SELECTION-SCREEN. * group and user must be filled for create session IF SESSION = 'X' AND GROUP = SPACE. "OR USER = SPACE. MESSAGE E613(MS). ENDIF. *----------------------------------------------------------------------* * create batchinput session * *----------------------------------------------------------------------* FORM OPEN_GROUP. IF SESSION = 'X'. SKIP.

WRITE: /(20) 'Create group'(I01), GROUP. SKIP. *----open batchinput group CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT GROUP = GROUP USER = sy-uname. WRITE:/(30) 'BDC_OPEN_GROUP'(I02), (12) 'returncode:'(I05), SY-SUBRC. ENDIF. ENDFORM. "OPEN_GROUP *----------------------------------------------------------------------* * end batchinput session * *----------------------------------------------------------------------* FORM CLOSE_GROUP. IF SESSION = 'X'. *------close batchinput group CALL FUNCTION 'BDC_CLOSE_GROUP'. WRITE: /(30) 'BDC_CLOSE_GROUP'(I04), (12) 'returncode:'(I05), SY-SUBRC. ELSE. IF E_GROUP_OPENED = 'X'. CALL FUNCTION 'BDC_CLOSE_GROUP'. WRITE: /. WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06). ENDIF. ENDIF. ENDFORM. "CLOSE_GROUP *----------------------------------------------------------------------* * Start new transaction according to parameters * *----------------------------------------------------------------------* FORM BDC_TRANSACTION USING TCODE TYPE ANY. DATA: L_SUBRC LIKE SY-SUBRC. *------batch input session IF SESSION = 'X'. CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = TCODE TABLES DYNPROTAB = it_BDCDATA. WRITE: / 'BDC_INSERT'(I03), TCODE, 'returncode:'(I05), SY-SUBRC, 'RECORD:', SY-INDEX. ELSE. REFRESH it_MESSTAB.

CALL TRANSACTION TCODE USING it_BDCDATA MODE CTUMODE UPDATE CUPDATE MESSAGES INTO it_MESSTAB. L_SUBRC = SY-SUBRC. WRITE: / 'CALL_TRANSACTION', TCODE, 'returncode:'(I05), L_SUBRC, 'RECORD:', SY-INDEX. ENDIF. *----------------------------------------------------------------------* * Message handling for Call Transaction * *----------------------------------------------------------------------* perform subr_mess_hand using g_mess. *-----Erzeugen fehlermappe IF L_SUBRC <> 0 AND E_GROUP <> SPACE. IF E_GROUP_OPENED = ' '. CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT GROUP = E_GROUP USER = sy-uname KEEP = E_KEEP. E_GROUP_OPENED = 'X'. ENDIF. CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = TCODE TABLES DYNPROTAB = it_BDCDATA. ENDIF. REFRESH it_BDCDATA. ENDFORM. "BDC_TRANSACTION

*----------------------------------------------------------------------* * Form subr_bdc_table * *----------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_0220 text * * -->P_0221 text * * -->P_0222 text * *----------------------------------------------------------------------* FORM subr_bdc_table USING VALUE(P_0220) TYPE ANY VALUE(P_0221) TYPE ANY VALUE(P_0222) TYPE ANY.

CLEAR it_bdcdata. IF P_0220 = ' '. CLEAR it_bdcdata. it_bdcdata-fnam it_bdcdata-fval

= P_0221. = P_0222.

APPEND it_bdcdata. ELSE. it_bdcdata-dynbegin = P_0220. it_bdcdata-program = P_0221. it_bdcdata-dynpro = P_0222. APPEND it_bdcdata. ENDIF. ENDFORM. " subr_bdc_table

*----------------------------------------------------------------------* * Form subr_mess_hand * *----------------------------------------------------------------------* * text * *----------------------------------------------------------------------* * -->P_G_MESS text * *----------------------------------------------------------------------* FORM subr_mess_hand USING P_G_MESS TYPE ANY. LOOP AT IT_MESSTAB. CALL FUNCTION 'FORMAT_MESSAGE' EXPORTING ID = it_messtab-msgid LANG = it_messtab-msgspra NO = it_messtab-msgnr v1 = it_messtab-msgv1 v2 = it_messtab-msgv2 IMPORTING MSG = P_G_MESS EXCEPTIONS OTHERS = 0. CASE it_messtab-msgtyp. when 'E'. it_error-error_rec it_error-lifnr it_error-tabix APPEND IT_ERROR. when 'S'. it_sucess-sucess_rec it_sucess-lifnr it_sucess-tabix APPEND IT_SUCESS. endcase. ENDLOOP. Describe table it_sucess lines v_ns. Describe table it_error lines v_ne. ENDFORM. " subr_mess_hand

= P_G_MESS. = it_me21-lifnr. = v_count. = P_G_MESS. = it_me21-lifnr. = v_count.

-----------------BDC table control is an area on the screen in which you can display data in tabu lar form. You process it using a loop. Table controls are comparable to step loo p tables. While a table control consists of a single definition row, step loop b loc s may extend over more than one row. Table controls are more flexible than s tep loops, and are intended to replace them

When you need to handle a scenario li e in sales order,it may contain more than one material,if you have more than one material We have to use table control,it will have number of columns and number of rows. Table controls allow you to enter, display, and modify tabular data easily on th e screen Chec this code, PARAMETERS: file1 LIKE rlgrap-filename. ************************************************************************ *Internal Table Declarations ************************************************************************ DATA: BEGIN OF itab OCCURS 0, matnr(18) TYPE c, "MaterialNumber wer s(4) TYPE c, "Plant vdatu(10) TYPE c, "Valid From Date bdatu(10) TYPE c, "Valid To Date lifnr(10) TYPE c, "Vendor Number e org(4) TYPE c, "Purchasing Organization fes z TYPE c, "Fixed autet TYPE c, "MRP Indicator END OF itab. DATA: bdcdata LIKE TABLE OF bdcdata WITH HEADER LINE. ************************************************************************ *VARIABLES Declarations ************************************************************************ DATA: wa1 LIKE LINE OF itab. "Wor area for ITAB DATA: n TYPE i, "Chec count TYPE i. DATA: cnt(2), "Counter wa(15). "Wor area to hold concatenatedvalue DATA v_msg(100). DATA: flag. DATA: file TYPE string. ************************************************************************ *Initialization event ************************************************************************ INITIALIZATION. ************************************************************************ *At-selection-screen event ************************************************************************ *To provide Input help for file name AT SELECTION-SCREEN ON VALUE-REQUEST FOR file1. CALL FUNCTION 'F4_FILENAME' EXPORTING program_name = syst-cprog

dynpro_number = syst-dynnr IMPORTING file_name = file1. *********************************************************************** *START-OF-SELECTION EVENT *********************************************************************** START-OF-SELECTION. MOVE file1 TO file. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = file filetype = 'ASC' has_field_separator = 'X' TABLES data_tab = itab EXCEPTIONS file_open_error = 1 file_read_error = 2 no_batch = 3 gui_refuse_filetransfer = 4 invalid_type = 5 no_authority = 6 un nown_error = 7 bad_data_format = 8 header_not_allowed = 9 separator_not_allowed = 10 header_too_long = 11 un nown_dp_error = 12 access_denied = 13 dp_out_of_memory = 14 dis _full = 15 dp_timeout = 16 OTHERS = 17. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. *To populate BDCDATA and start data transfer LOOP AT itab . * To validate Plant range IF itab-wer s = '1000' OR itab-wer s = '2000' OR itab-wer s = '1008'. AT NEW wer s. CLEAR: n. cnt = 1. PERFORM bdc_dynpro USING 'SAPLMEOR' '0200'. PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-MATNR'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'EORD-MATNR' itab-matnr. PERFORM bdc_field USING 'EORD-WERKS' itab-wer s. PERFORM bdc_dynpro USING 'SAPLMEOR' '0205'. CONCATENATE 'EORD-EKORG(' cnt ')' INTO wa. PERFORM bdc_field USING 'BDC_CURSOR' wa. PERFORM bdc_field USING 'BDC_OKCODE' '=BU'. ENDAT. IF n = 12. READ TABLE bdcdata WITH KEY fval = '=BU'. bdcdata-fval = '=NS'. MODIFY bdcdata INDEX sy-tabix TRANSPORTING fval. PERFORM bdc_dynpro USING 'SAPLMEOR' '0205'. PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-VDATU(01)'. PERFORM bdc_field USING 'BDC_OKCODE' '=BU'. cnt = 2. n = 2. ENDIF.

CONCATENATE 'EORD-VDATU(' cnt ')' INTO wa. PERFORM bdc_field USING wa itab-vdatu. CONCATENATE 'EORD-BDATU(' cnt ')' INTO wa. PERFORM bdc_field USING wa itab-bdatu. CONCATENATE 'EORD-LIFNR(' cnt ')' INTO wa. PERFORM bdc_field USING wa itab-lifnr. CONCATENATE 'EORD-EKORG(' cnt ')' INTO wa. PERFORM bdc_field USING wa itab-e org. CONCATENATE 'RM06W-FESKZ(' cnt ')' INTO wa. PERFORM bdc_field USING wa itab-fes z. CONCATENATE 'EORD-AUTET(' cnt ')' INTO wa. PERFORM bdc_field USING wa itab-autet. IF n <> 12.

n = cnt. ENDIF. cnt = cnt + 1. AT END OF wer s. CALL TRANSACTION 'ME01' USING bdcdata UPDATE 'S' MODE 'A'. CLEAR:bdcdata,bdcdata[]. CALL FUNCTION 'FORMAT_MESSAGE' EXPORTING id = sy-msgid lang = 'EN' no = sy-msgno v1 = sy-msgv1 v2 = sy-msgv2 v3 = sy-msgv3 v4 = sy-msgv4 IMPORTING msg = v_msg. WRITE:/ v_msg. CLEAR: bdcdata,bdcdata[],flag. ENDAT. ENDIF. ENDLOOP. *----------------------------------------------------------------------* * Start new screen * *----------------------------------------------------------------------* FORM bdc_dynpro USING program dynpro. CLEAR bdcdata. bdcdata-program = program. bdcdata-dynpro = dynpro. bdcdata-dynbegin = 'X'. APPEND bdcdata. ENDFORM. *----------------------------------------------------------------------* * Insert field values *----------------------------------------------------------------------* FORM bdc_field USING fnam fval. IF NOT fval IS INITIAL. CLEAR bdcdata. bdcdata-fnam = fnam. bdcdata-fval = fval. APPEND bdcdata. ENDIF. CLEAR wa.

ENDFORM. Sample code 2

REPORT zprataptable2 NO STANDARD PAGE HEADING LINE-SIZE 255. DATA : BEGIN OF itab OCCURS 0, i1 TYPE i, lifnr LIKE rf02 -lifnr, bu rs LIKE rf02 -bu rs, e org LIKE rf02 -e org, to LIKE rf02 - to , anred LIKE lfa1-anred, name1 LIKE lfa1-name1, sortl LIKE lfa1-sortl, land1 LIKE lfa1-land1, a ont LIKE lfb1-a ont, fdgrv LIKE lfb1-fdgrv, waers LIKE lfm1-waers, END OF itab. DATA : BEGIN OF jtab OCCURS 0, j1 TYPE i, ban s LIKE lfb -ban s, ban l LIKE lfb -ban l, ban n LIKE lfb -ban n, END OF jtab. DATA : cnt(4) TYPE n. DATA : fdt(20) TYPE c. DATA : c TYPE i.

INCLUDE bdcrecx1. START-OF-SELECTION. CALL FUNCTION 'WS_UPLOAD' EXPORTING filename = 'C:\first1.txt' filetype = 'DAT' TABLES data_tab = itab. CALL FUNCTION 'WS_UPLOAD' EXPORTING filename = 'C:\second.txt' filetype = 'DAT' TABLES data_tab = jtab.

LOOP AT itab.

THis is example to upload the Ban

details of the Vendor which has the TC.

PERFORM bdc_dynpro USING 'SAPMF02K' '0100'. PERFORM bdc_field USING 'BDC_CURSOR' 'RF02K-KTOKK'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'RF02K-LIFNR' itab-lifnr. PERFORM bdc_field USING 'RF02K-BUKRS' itab-bu rs. PERFORM bdc_field USING 'RF02K-EKORG' itab-e org. PERFORM bdc_field USING 'RF02K-KTOKK' itab- to . PERFORM bdc_dynpro USING 'SAPMF02K' '0110'. PERFORM bdc_field USING 'BDC_CURSOR' 'LFA1-LAND1'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'LFA1-ANRED' itab-anred. PERFORM bdc_field USING 'LFA1-NAME1' itab-name1. PERFORM bdc_field USING 'LFA1-SORTL' itab-sortl. PERFORM bdc_field USING 'LFA1-LAND1' itab-land1. PERFORM bdc_dynpro USING 'SAPMF02K' '0120'. PERFORM bdc_field USING 'BDC_CURSOR' 'LFA1-KUNNR'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_dynpro USING 'SAPMF02K' '0130'. PERFORM bdc_field USING 'BDC_CURSOR' 'LFBK-BANKN(01)'. PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'. cnt = 0. LOOP AT jtab WHERE j1 = itab-i1. cnt = cnt + 1. CONCATENATE 'LFBK-BANKS(' cnt ')' INTO fdt. PERFORM bdc_field USING fdt jtab-ban s. CONCATENATE 'LFBK-BANKL(' cnt ')' INTO fdt. PERFORM bdc_field USING fdt jtab-ban l. CONCATENATE 'LFBK-BANKN(' cnt ')' INTO fdt. PERFORM bdc_field USING fdt jtab-ban n. IF cnt = 5. cnt = 0. PERFORM bdc_dynpro USING 'SAPMF02K' '0130'. PERFORM bdc_field USING 'BDC_CURSOR' 'LFBK-BANKS(01)'. PERFORM bdc_field USING 'BDC_OKCODE' '=P+'. PERFORM bdc_dynpro USING 'SAPMF02K' '0130'. PERFORM bdc_field USING 'BDC_CURSOR' 'LFBK-BANKN(02)'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'. ENDIF. ENDLOOP. PERFORM bdc_dynpro USING 'SAPMF02K' '0130'. PERFORM bdc_field USING 'BDC_CURSOR' 'LFBK-BANKS(01)'. PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'. PERFORM bdc_dynpro USING 'SAPMF02K' '0210'. PERFORM bdc_field USING 'BDC_CURSOR' 'LFB1-FDGRV'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'LFB1-AKONT' itab-a ont. PERFORM bdc_field USING 'LFB1-FDGRV' itab-fdgrv. PERFORM bdc_dynpro USING 'SAPMF02K' '0215'. PERFORM bdc_field USING 'BDC_CURSOR' 'LFB1-ZTERM'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_dynpro USING 'SAPMF02K' '0220'. PERFORM bdc_field USING 'BDC_CURSOR' 'LFB5-MAHNA'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_dynpro USING 'SAPMF02K' '0310'. PERFORM bdc_field USING 'BDC_CURSOR' 'LFM1-WAERS'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'LFM1-WAERS' itab-waers. PERFORM bdc_dynpro USING 'SAPMF02K' '0320'. PERFORM bdc_field USING 'BDC_CURSOR' 'RF02K-LIFNR'. PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'. PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'. PERFORM bdc_field USING 'BDC_OKCODE' '=YES'. PERFORM bdc_transaction USING 'XK01'. ENDLOOP. PERFORM close_group.

Header file: 1 63190 0001 0001 0001 mr bal188 b in 31000 a1 inr 2 63191 0001 0001 0001 mr bal189 b in 31000 a1 inr TC file: 1 in sb 11000

1 1 1 1 1 1 1 1 1 1 1 2 2

in in in in in in in in in in in in in

sb sb sb sb sb sb sb sb sb sb sb sb sb

12000 13000 14000 15000 16000 17000 18000 19000 20000 21000 22000 21000 22000

You might also like