A B A P&W E B D Y N P R O A B A P @ A R J U N IGROWSOFT
BDC with Table control
Business Requirement:
Add Bank data to the existing vendors in SAP. The data is given by the client as per the below
format.
Step1: Create Vendors in SAP using XK01 Tcode.
Steps: Prepare the flat file as per the below format.
1204 DE 23022200 123456705
1204 DE 23984899 123456706
1204 DE 30080000 123456703
1204 DE 30080000 123456704
1204 DE 50000001 123456702
1204 DE 56565656 123456701
1205 DE 23022200 123456705
1205 DE 23984899 123456706
1205 DE 30080000 123456703
1205 DE 30080000 123456704
1205 DE 50000001 123456702
1205 DE 56565656 123456701
REPORT ZBDC_WITH_TBCL2.
TYPES : BEGIN OF TY_FILE,
LIFNR TYPE LFBK-LIFNR,
BANKS TYPE LFBK-BANKS,
BANKL TYPE LFBK-BANKL,
BANKN TYPE LFBK-BANKN,
END OF TY_FILE.
ARJUN.LEARN REAL TIME SCENARIOS DONE BY ME Page 1
A B A P&W E B D Y N P R O A B A P @ A R J U N IGROWSOFT
DATA : I_FILE TYPE TABLE OF TY_FILE .
DATA : WA_FILE TYPE TY_FILE .
data : wa_options type ctu_params .
DATA : V_COUNT TYPE CHAR2 .
DATA : V_FIELD_NAME TYPE STRING .
data : bdcdata type bdcdata occurs 0 with header line .
data : messtab type bdcmsgcoll occurs 0 with header line .
data : lv_msg type string .
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'C:\VENDORS_BANK.TXT'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = I_FILE.
LOOP AT I_FILE INTO WA_FILE.
AT NEW LIFNR. "AT NEW MEANS...BELOW LOGIC EXECUTES ONLY WHEN THERE IS A NEW VENDOR
perform bdc_dynpro using 'SAPMF02K' '0101'.
perform bdc_field using 'BDC_CURSOR' 'RF02K-D0130'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'RF02K-LIFNR' WA_FILE-LIFNR.
perform bdc_field using 'RF02K-D0130' 'X'.
ARJUN.LEARN REAL TIME SCENARIOS DONE BY ME Page 2
A B A P&W E B D Y N P R O A B A P @ A R J U N IGROWSOFT
****BANK DATA SCREEN '0130' STARTS FROM HERE
perform bdc_dynpro using 'SAPMF02K' '0130'.
perform bdc_field using 'BDC_CURSOR' 'LFBK-BANKN(05)'.
perform bdc_field using 'BDC_OKCODE' 'ENTR'.
V_COUNT = '0' .
LOOP AT I_FILE INTO WA_FILE WHERE LIFNR = WA_FILE-LIFNR.
V_COUNT = V_COUNT + 1 .
CONCATENATE 'LFBK-BANKS' '(' V_COUNT ')' INTO V_FIELD_NAME .
perform bdc_field using V_FIELD_NAME WA_FILE-BANKS.
CONCATENATE 'LFBK-BANKL' '(' V_COUNT ')' INTO V_FIELD_NAME .
perform bdc_field using V_FIELD_NAME WA_FILE-BANKL.
CONCATENATE 'LFBK-BANKN' '(' V_COUNT ')' INTO V_FIELD_NAME .
perform bdc_field using V_FIELD_NAME WA_FILE-BANKN.
IF V_COUNT = '5' .
V_COUNT = '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(01)'.
ENDIF .
ENDLOOP.
perform bdc_field using 'BDC_OKCODE' '=UPDA'.
ARJUN.LEARN REAL TIME SCENARIOS DONE BY ME Page 3
A B A P&W E B D Y N P R O A B A P @ A R J U N IGROWSOFT
wa_options-dismode = 'A' .
wa_options-updmode = 'S' .
wa_options-defsize = 'X' . "SET THE DEFAULT SCREEN SIZE
call transaction 'XK02' using bdcdata
options from wa_options
messages into messtab .
if sy-subrc = 0 .
read table messtab with key msgtyp = 'S' .
call function 'FORMAT_MESSAGE'
EXPORTING
id = messtab-msgid
lang = sy-langu
no = messtab-msgnr
v1 = messtab-msgv1
v2 = messtab-msgv2
v3 = messtab-msgv3
v4 = messtab-msgv4
IMPORTING
msg = lv_msg.
write / lv_msg color 5 .
else.
loop at messtab.
ARJUN.LEARN REAL TIME SCENARIOS DONE BY ME Page 4
A B A P&W E B D Y N P R O A B A P @ A R J U N IGROWSOFT
call function 'FORMAT_MESSAGE'
EXPORTING
id = messtab-msgid
lang = sy-langu
no = messtab-msgnr
v1 = messtab-msgv1
v2 = messtab-msgv2
v3 = messtab-msgv3
v4 = messtab-msgv4
IMPORTING
msg = lv_msg.
write / lv_msg color 6 .
endloop.
endif .
refresh bdcdata .
refresh messtab .
clear bdcdata .
clear messtab .
ENDAT .
ENDLOOP .
* *----------------------------------------------------------------------*
* Start new screen *
ARJUN.LEARN REAL TIME SCENARIOS DONE BY ME Page 5
A B A P&W E B D Y N P R O A B A P @ A R J U N IGROWSOFT
*----------------------------------------------------------------------*
form bdc_dynpro using program dynpro.
clear bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
append bdcdata.
endform. "bdc_dynpro
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
form bdc_field using fnam fval.
clear bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
append bdcdata.
endform. "bdc_field
ARJUN.LEARN REAL TIME SCENARIOS DONE BY ME Page 6