Sunteți pe pagina 1din 10

BDC table control is an area on the screen in which you can display data in tabular form.

You process it using a loop. Table controls are comparable to step loop tables. While a table control consists of a single definition row, step loop blocks may extend over more than one row. Table controls are more flexible than step loops, and are intended to replace them When you need to handle a scenario like 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 the screen Check this code,

PARAMETERS: file1 LIKE rlgrap-filename. ************************************************************************ *Internal Table Declarations ************************************************************************ DATA: BEGIN OF itab OCCURS 0, matnr(18) TYPE c, "MaterialNumber werks(4) TYPE c, "Plant vdatu(10) TYPE c, "Valid From Date bdatu(10) TYPE c, "Valid To Date lifnr(10) TYPE c, "Vendor Number ekorg(4) TYPE c, "Purchasing Organization feskz 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. "Workarea for ITAB DATA: n TYPE i, "Check count TYPE i. DATA: cnt(2), "Counter wa(15). "Workarea 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 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. 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-werks = '1000' OR itab-werks = '2000' OR itab-werks = '1008'. AT NEW werks. 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-werks. 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-ekorg. CONCATENATE 'RM06W-FESKZ(' cnt ')' INTO wa. PERFORM bdc_field USING wa itab-feskz. 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 werks. 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 THis is example to upload the Bank details of the Vendor which has the TC. REPORT zprataptable2 NO STANDARD PAGE HEADING LINE-SIZE 255. DATA : BEGIN OF itab OCCURS 0, i1 TYPE i, lifnr LIKE rf02k-lifnr, bukrs LIKE rf02k-bukrs, ekorg LIKE rf02k-ekorg, ktokk LIKE rf02k-ktokk, anred LIKE lfa1-anred, name1 LIKE lfa1-name1, sortl LIKE lfa1-sortl, land1 LIKE lfa1-land1, akont LIKE lfb1-akont, fdgrv LIKE lfb1-fdgrv, waers LIKE lfm1-waers, END OF itab. DATA : BEGIN OF jtab OCCURS 0, j1 TYPE i, banks LIKE lfbk-banks, bankl LIKE lfbk-bankl, bankn LIKE lfbk-bankn, 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.

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-bukrs. PERFORM bdc_field USING 'RF02K-EKORG' itab-ekorg. PERFORM bdc_field USING 'RF02K-KTOKK' itab-ktokk. 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-banks. CONCATENATE 'LFBK-BANKL(' cnt ')' INTO fdt. PERFORM bdc_field USING fdt jtab-bankl. CONCATENATE 'LFBK-BANKN(' cnt ')' INTO fdt. PERFORM bdc_field USING fdt jtab-bankn. 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-akont. 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 in sb 12000 1 in sb 13000 1 in sb 14000 1 in sb 15000 1 in sb 16000 1 in sb 17000 1 in sb 18000 1 in sb 19000 1 in sb 20000 1 in sb 21000 1 in sb 22000 2 in sb 21000 2 in sb 22000

RELATED POSTS BDC SESSION METHOD SAMPLE CODE BDC SAMPLE CODE CUSTOMER MASTER BDC AND LSMW COMARISION BDC PART 10 BDC PART 9 BDC PART 8 BDC PART 7 BDC PART 6 BDC PART 5 BDC PART 4 BDC PART 3 BDC PART 2 BDC PART 1 Support this blog with Your Google Vote here @ Labels: ABAP BDC COMPLETE

S-ar putea să vă placă și