‎2007 Jul 29 11:00 AM
hi experts,
i wrote a code for handling table control in bdc when i excute this the table control screen is not triggering it comes out after entering general data. anybody plz help this regarding
thanks®ards,
k.rajesh.
here iam psating the code .
LOOP AT IT INTO WA.
clear bdcdata_wa.
bdcdata_wa-program = 'SAPMF02D'.
bdcdata_wa-dynpro = '0100'.
bdcdata_wa-dynbegin = 'X'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_CURSOR'.
bdcdata_wa-FVAL = 'RF02D-KTOKD'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_OKCODE'.
bdcdata_wa-FVAL = '/00'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'RF02D-KUNNR'.
bdcdata_wa-FVAL = WA-KUNNR.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'RF02D-KTOKD'.
bdcdata_wa-FVAL = WA-KTOKD.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-program = 'SAPMF02D'.
bdcdata_wa-dynpro = '0110'.
bdcdata_wa-dynbegin = 'X'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_CURSOR'.
bdcdata_wa-FVAL = 'KNA1-SPRAS'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_OKCODE'.
bdcdata_wa-FVAL = '=UPDA'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'KNA1-NAME1'.
bdcdata_wa-FVAL = WA-NAME1.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'KNA1-SORTL'.
bdcdata_wa-FVAL = WA-SORTL.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'KNA1-STRAS'.
bdcdata_wa-FVAL = WA-STRAS.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'KNA1-LAND1'.
bdcdata_wa-FVAL = WA-LAND1.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'KNA1-SPRAS'.
bdcdata_wa-FVAL = 'EN'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-program = 'SAPMF02D'.
bdcdata_wa-dynpro = '0120'.
bdcdata_wa-dynbegin = 'X'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_CURSOR'.
bdcdata_wa-FVAL = 'KNA1-LIFNR'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_OKCODE'.
bdcdata_wa-FVAL = '/00'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-program = 'SAPMF02D'.
bdcdata_wa-dynpro = '0125'.
bdcdata_wa-dynbegin = 'X'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_CURSOR'.
bdcdata_wa-FVAL = 'KNA1-NIELS'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_OKCODE'.
bdcdata_wa-FVAL = '/00'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-program = 'SAPMF02D'.
bdcdata_wa-dynpro = '0130'.
bdcdata_wa-dynbegin = 'X'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_CURSOR'.
bdcdata_wa-FVAL = 'KNBK-KOINH(01)'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_OKCODE'.
bdcdata_wa-FVAL = '=BANK'.
APPEND BDCDATA_WA TO BDCDATA_IT.
COUNTER = 0.
LOOP AT IT1 INTO WA1 WHERE KUNNR = WA-KUNNR.
COUNTER = COUNTER + 1.
clear bdcdata_wa.
CONCATENATE 'KNBK-BANKS(' COUNTER ')' INTO FNAM .
bdcdata_wa-FNAM = FNAM .
bdcdata_wa-FVAL = WA1-banks .
APPEND BDCDATA_WA TO BDCDATA_IT.
CLEAR FNAM.
clear bdcdata_wa.
CONCATENATE 'KNBK-BANKL(' COUNTER ')' INTO FNAM .
bdcdata_wa-FNAM = FNAM .
bdcdata_wa-FVAL = WA1-bankl .
APPEND BDCDATA_WA TO BDCDATA_IT.
CLEAR FNAM.
clear bdcdata_wa.
CONCATENATE 'KNBK-BANKN(' COUNTER ')' INTO FNAM .
bdcdata_wa-FNAM = FNAM .
bdcdata_wa-FVAL = WA1-bankn.
APPEND BDCDATA_WA TO BDCDATA_IT.
CLEAR FNAM.
clear bdcdata_wa.
CONCATENATE 'KNBK-BANKL(' COUNTER ')' INTO FNAM .
bdcdata_wa-FNAM = FNAM .
bdcdata_wa-FVAL = WA1-koinh.
APPEND BDCDATA_WA TO BDCDATA_IT.
CLEAR FNAM.
ENDLOOP.
clear bdcdata_wa.
bdcdata_wa-program = 'SAPLBANK'.
bdcdata_wa-dynpro = '0100'.
bdcdata_wa-dynbegin = 'X'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_CURSOR'.
bdcdata_wa-FVAL = 'BNKA-BANKA'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_OKCODE'.
bdcdata_wa-FVAL = '=ENTR'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BNKA-BANKA'.
bdcdata_wa-FVAL = WA1-bank.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-program = 'SAPMF02D'.
bdcdata_wa-dynpro = '0130'.
bdcdata_wa-dynbegin = 'X'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_CURSOR'.
bdcdata_wa-FVAL = 'KNBK-BANKS(01)'.
APPEND BDCDATA_WA TO BDCDATA_IT.
clear bdcdata_wa.
bdcdata_wa-FNAM = 'BDC_OKCODE'.
bdcdata_wa-FVAL = '=UPDA'.
APPEND BDCDATA_WA TO BDCDATA_IT.
CALL TRANSACTION 'XD01' USING BDCDATA_IT MODE 'A' update 'S'.
REFRESH BDCDATA_IT.
ENDLOOP.
‎2007 Jul 29 12:15 PM
please refer this example.
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 = 'C:\VENDOR.TXT'
FILETYPE = 'ASC'
TABLES
DATA_TAB = 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 IT_XK01.
REFRESH IT_BDCDATA.
perform bdc_dynpro using 'SAPMF02K' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF02K-REF_LIFNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02K-LIFNR'
IT_XK01-LIFNR.
perform bdc_field using 'RF02K-BUKRS'
IT_XK01-BUKRS.
perform bdc_field using 'RF02K-EKORG'
IT_XK01-EKORG.
perform bdc_field using 'RF02K-KTOKK'
IT_XK01-KTOKK.
perform bdc_dynpro using 'SAPMF02K' '0110'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-TELX1'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFA1-NAME1'
IT_XK01-NAME1.
perform bdc_field using 'LFA1-SORTL'
IT_XK01-SORTL.
perform bdc_field using 'LFA1-LAND1'
IT_XK01-LAND1.
perform bdc_field using 'LFA1-SPRAS'
IT_XK01-SPRAS.
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-KOINH(02)'.
perform bdc_field 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 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'
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.
‎2007 Jul 29 12:17 PM
‎2007 Jul 29 6:13 PM
Wait my freind....
There is an relatively easy method..
Normally all the screns with table controls will have buttons to add(Insert) a Row, Delete a Row etc..
After adding data to 1st Row (it will have index 1)... press that insert button so a new Row is inserted again at 1st row..so this will have index 1.
So in this way you can hard code the index to one.
The advantage is that if there are many rows then you will not have to keep a track of how many rows are inserted and when to press the page down button.
I am giving a small example.... Just copy paste this example and run it in all mode...
Run it in all mode so that you can see what I am trying to do...
**********************************************
report ZTEST_BDC
no standard page heading line-size 255.
include bdcrecx1.
start-of-selection.
perform open_group.
perform bdc_dynpro using 'SAPMSRD0' '0102'.
perform bdc_field using 'BDC_CURSOR'
'RSRD1-DDTYPE'.
perform bdc_field using 'BDC_OKCODE'
'=CHANGE_RADIO'.
perform bdc_field using 'RSRD1-TBMA'
''.
perform bdc_field using 'RSRD1-TBMA_VAL'
'EKPO'.
perform bdc_field using 'RSRD1-DDTYPE'
'X'.
perform bdc_dynpro using 'SAPMSRD0' '0102'.
perform bdc_field using 'BDC_CURSOR'
'RSRD1-DDTYPE_VAL'.
perform bdc_field using 'BDC_OKCODE'
'=ADD'.
perform bdc_field using 'RSRD1-TBMA_VAL'
'EKPO'.
perform bdc_field using 'RSRD1-DDTYPE'
'X'.
perform bdc_field using 'RSRD1-DDTYPE_VAL'
'ztest_Str'.
perform bdc_dynpro using 'SAPLSED1' '0100'.
perform bdc_field using 'BDC_CURSOR'
'D_100-STRU'.
perform bdc_field using 'BDC_OKCODE'
'=GOON'.
perform bdc_field using 'D_100-DTEL'
''.
perform bdc_field using 'D_100-STRU'
'X'.
perform bdc_dynpro using 'SAPLSD41' '2100'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'DD02D-DDTEXT'
'test'.
perform bdc_field using 'BDC_CURSOR'
'DD03P_D-FIELDNAME(01)'.
perform bdc_field using 'DD03P_D-FIELDNAME(01)'
'bukrs'.
perform bdc_field using 'DD03P_D-ROLLNAME(01)'
'bukrs'.
perform bdc_dynpro using 'SAPLSD41' '2100'.
perform bdc_field using 'BDC_OKCODE'
'=WB_LINE_INSERT'.
perform bdc_field using 'DD02D-DDTEXT'
'test'.
perform bdc_field using 'BDC_CURSOR'
'DD03P_D-FIELDNAME(01)'.
perform bdc_dynpro using 'SAPLSD41' '2100'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'DD02D-DDTEXT'
'test'.
perform bdc_field using 'BDC_CURSOR'
'DD03P_D-ROLLNAME(01)'.
perform bdc_field using 'DD03P_D-FIELDNAME(01)'
'kostl'.
perform bdc_field using 'DD03P_D-ROLLNAME(01)'
'kostl'.
perform bdc_dynpro using 'SAPLSD41' '2100'.
perform bdc_field using 'BDC_OKCODE'
'=WB_LINE_INSERT'.
perform bdc_field using 'DD02D-DDTEXT'
'test'.
perform bdc_field using 'BDC_CURSOR'
'DD03P_D-FIELDNAME(01)'.
perform bdc_dynpro using 'SAPLSD41' '2100'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'DD02D-DDTEXT'
'test'.
perform bdc_field using 'BDC_CURSOR'
'DD03P_D-ROLLNAME(01)'.
perform bdc_field using 'DD03P_D-FIELDNAME(01)'
'wrbtr'.
perform bdc_field using 'DD03P_D-ROLLNAME(01)'
'wrbtr'.
perform bdc_dynpro using 'SAPLSD41' '2100'.
perform bdc_field using 'BDC_OKCODE'
'=WB_SAVE'.
perform bdc_field using 'DD02D-DDTEXT'
'test'.
perform bdc_field using 'BDC_CURSOR'
'DD03P_D-ROLLNAME(01)'.
perform bdc_dynpro using 'SAPLSTRD' '0100'.
perform bdc_field using 'BDC_CURSOR'
'KO007-L_DEVCLASS'.
perform bdc_field using 'BDC_OKCODE'
'=TEMP'.
perform bdc_field using 'KO007-L_AUTHOR'
'VARUN'.
perform bdc_dynpro using 'SAPLSD41' '2100'.
perform bdc_field using 'BDC_OKCODE'
'/EWB_CANCEL'.
perform bdc_dynpro using 'SAPMSRD0' '0102'.
perform bdc_field using 'BDC_OKCODE'
'/EABR'.
perform bdc_field using 'BDC_CURSOR'
'RSRD1-DDTYPE_VAL'.
perform bdc_transaction using 'SE11'.
perform close_group.
****************************************************
I hope this helps.....
Please mark points if it helps..