‎2008 Dec 12 11:58 AM
hi experts,
i am new to BDC , i want to upload multiple line items using bdc prog ca n any body give me sample example
‎2008 Dec 12 12:02 PM
hi gayathri,
can u plse tel me for which transation ur going to upload the data
‎2008 Dec 12 12:08 PM
Hai Gayatri..
For which transaction you want to upload the data.
For header and line items means you must use " Table control technique".
Here iam sending code for uploading sales orders to VA01.
Iam taken header data in one internal table and item data in another one.
Hope it will give U some idea abt table control technique....
TABLES : KNA1.
DATA : BEGIN OF WA_HEADER,
AUART LIKE VBAK-AUART,
VKORG LIKE VBAK-VKORG,
VTWEG LIKE VBAK-VTWEG,
SPART LIKE VBAK-SPART,
BSTKD LIKE VBKD-BSTKD,
KUNNR LIKE KUAGV-KUNNR,
KUNNR1 LIKE KUWEV-KUNNR,
END OF WA_HEADER.
DATA : IT_HEADER LIKE TABLE OF WA_HEADER.
DATA : BEGIN OF WA_ITEMS,
BSTKD LIKE VBKD-BSTKD,
MABNR LIKE RV45A-MABNR,
KWMENG(20) TYPE C,
WBS(20) TYPE C,
KSCHL LIKE KOMV-KSCHL,
KBETR(20) TYPE C,
END OF WA_ITEMS.
DATA : IT_ITEMS LIKE TABLE OF WA_ITEMS.
WORK AREA AND INT TAB FOR BDCDATA
DATA : WA_BDCDATA LIKE BDCDATA.
DATA : IT_BDCDATA LIKE TABLE OF WA_BDCDATA.
DATA : PATH TYPE STRING.
SELECTION SCREEN
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETER : HD_FILE LIKE PATH,
LI_FILE LIKE PATH.
SELECTION-SCREEN END OF BLOCK B1.
TO PROVIDE F4 HELP
DATA : H_FILE LIKE IBIPPARMS-PATH,
L_FILE LIKE IBIPPARMS-PATH.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR HD_FILE.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = H_FILE.
HD_FILE = H_FILE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR LI_FILE.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = L_FILE.
LI_FILE = L_FILE.
START-OF-SELECTION.
UPLOAD DATA FROM FLAT FILE TO INT TAB
DATA : WA_FILEDATA LIKE ALSMEX_TABLINE,
IT_FILEDATA LIKE TABLE OF WA_FILEDATA.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = H_FILE
I_BEGIN_COL = '1'
I_BEGIN_ROW = '1'
I_END_COL = '7'
I_END_ROW = '3'
TABLES
INTERN = IT_FILEDATA
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT IT_FILEDATA INTO WA_FILEDATA.
CASE WA_FILEDATA-COL.
WHEN '001'.
WA_HEADER-AUART = WA_FILEDATA-VALUE.
WHEN '002'.
WA_HEADER-VKORG = WA_FILEDATA-VALUE.
WHEN '003'.
WA_HEADER-VTWEG = WA_FILEDATA-VALUE.
WHEN '004'.
WA_HEADER-SPART = WA_FILEDATA-VALUE.
WHEN '005'.
WA_HEADER-KUNNR = WA_FILEDATA-VALUE.
WHEN '006'.
WA_HEADER-KUNNR = WA_FILEDATA-VALUE.
WHEN '007'.
WA_HEADER-BSTKD = WA_FILEDATA-VALUE.
AT END OF ROW.
APPEND WA_HEADER TO IT_HEADER.
ENDAT.
ENDCASE.
ENDLOOP.
DATA : WA_FILEDATA1 LIKE ALSMEX_TABLINE,
IT_FILEDATA1 LIKE TABLE OF WA_FILEDATA1.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = L_FILE
I_BEGIN_COL = '1'
I_BEGIN_ROW = '1'
I_END_COL = '6'
I_END_ROW = '6'
TABLES
INTERN = IT_FILEDATA1
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT IT_FILEDATA1 INTO WA_FILEDATA1.
CASE WA_FILEDATA1-COL.
WHEN '001'.
WA_ITEMS-BSTKD = WA_FILEDATA1-VALUE.
WHEN '002'.
WA_ITEMS-MABNR = WA_FILEDATA1-VALUE.
WHEN '003'.
WA_ITEMS-KWMENG = WA_FILEDATA1-VALUE.
WHEN '004'.
WA_ITEMS-WBS = WA_FILEDATA1-VALUE.
WHEN '005'.
WA_ITEMS-KSCHL = WA_FILEDATA1-VALUE.
WHEN '006'.
WA_ITEMS-KBETR = WA_FILEDATA1-VALUE.
AT END OF ROW.
APPEND WA_ITEMS TO IT_ITEMS.
ENDAT.
ENDCASE.
ENDLOOP.
DATA : M(2) TYPE C,
N(2) TYPE C,
TEMP(50) TYPE C,
WA_KUNNR LIKE KNA1-KUNNR.
POPULATING HEADER DATA
LOOP AT IT_HEADER INTO WA_HEADER.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_HEADER-KUNNR
IMPORTING
OUTPUT = WA_HEADER-KUNNR
.
SELECT SINGLE KUNNR FROM KNA1 INTO WA_KUNNR WHERE KUNNR = WA_HEADER-KUNNR.
IF SY-SUBRC <> 0.
MESSAGE I004(ZZS_MSG).
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-SPART'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'VBAK-AUART' WA_HEADER-AUART.
PERFORM BDC_FIELD USING 'VBAK-VKORG' WA_HEADER-VKORG.
PERFORM BDC_FIELD USING 'VBAK-VTWEG' WA_HEADER-VTWEG.
PERFORM BDC_FIELD USING 'VBAK-SPART' WA_HEADER-SPART.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'VBKD-BSTKD' WA_HEADER-BSTKD.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR' WA_HEADER-KUNNR.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR' WA_HEADER-KUNNR1.
PERFORM BDC_FIELD USING 'RV45A-KETDAT'
'21.10.2008'.
PERFORM BDC_FIELD USING 'RV45A-KPRGBZ'
'D'.
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
'21.10.2008'.
ITEM DETAILS ARE UPLOADING BY THIS PEACE OF CODE
ITEM LOOP TO FIND NO.OF ITEMS
M = 0.
LOOP AT IT_ITEMS INTO WA_ITEMS WHERE BSTKD = WA_HEADER-BSTKD.
M = M + 1.
ENDLOOP.
CONCATENATE 'VBAP-PS_PSP_PNR(' M ')' INTO TEMP.
PERFORM BDC_FIELD USING 'BDC_CURSOR' TEMP.
CLEAR TEMP.
POPULATING ITEMS DATA
N = 1.
LOOP AT IT_ITEMS INTO WA_ITEMS WHERE BSTKD = WA_HEADER-BSTKD.
CONCATENATE 'RV45A-MABNR(' N ')' INTO TEMP.
PERFORM BDC_FIELD USING TEMP WA_ITEMS-MABNR.
CLEAR TEMP.
CONCATENATE 'RV45A-KWMENG(' N ')' INTO TEMP.
PERFORM BDC_FIELD USING TEMP WA_ITEMS-KWMENG.
CLEAR TEMP.
CONCATENATE 'VBAP-PS_PSP_PNR(' N ')' INTO TEMP.
PERFORM BDC_FIELD USING TEMP WA_ITEMS-WBS.
CLEAR TEMP.
N = N + 1.
ENDLOOP.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'VBKD-BSTKD' WA_HEADER-BSTKD.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR' WA_HEADER-KUNNR.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR' WA_HEADER-KUNNR1.
PERFORM BDC_FIELD USING 'RV45A-KETDAT'
'21.10.2008'.
PERFORM BDC_FIELD USING 'RV45A-KPRGBZ'
'D'.
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
'21.10.2008'.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
'N30'.
PERFORM BDC_FIELD USING 'VBKD-INCO1'
'FOB'.
PERFORM BDC_FIELD USING 'VBKD-INCO2'
'NEW YORK'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RV45A-MABNR(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PKO1'.
PERFORM BDC_FIELD USING 'VBKD-BSTKD' WA_HEADER-BSTKD.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR' WA_HEADER-KUNNR.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR' WA_HEADER-KUNNR1.
PERFORM BDC_FIELD USING 'RV45A-KETDAT'
'21.10.2008'.
PERFORM BDC_FIELD USING 'RV45A-KPRGBZ'
'D'.
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
'21.10.2008'.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
'N30'.
PERFORM BDC_FIELD USING 'VBKD-INCO1'
'FOB'.
PERFORM BDC_FIELD USING 'VBKD-INCO2'
'NEW YORK'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAP-POSNR(01)'.
PERFORM BDC_FIELD USING 'RV45A-VBAP_SELKZ(01)'
'X'.
LOOP AT IT_ITEMS INTO WA_ITEMS WHERE BSTKD = WA_HEADER-BSTKD.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(07)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(07)' WA_ITEMS-KSCHL.
PERFORM BDC_FIELD USING 'KOMV-KBETR(07)' WA_ITEMS-KBETR.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=POS+'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(08)'.
ENDLOOP.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(08)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION 'VA01' USING IT_BDCDATA MODE 'A'.
REFRESH IT_BDCDATA.
ENDLOOP.
----
Start new screen *
----
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR WA_BDCDATA.
WA_BDCDATA-PROGRAM = PROGRAM.
WA_BDCDATA-DYNPRO = DYNPRO.
WA_BDCDATA-DYNBEGIN = 'X'.
APPEND WA_BDCDATA TO IT_BDCDATA.
ENDFORM. "BDC_DYNPRO
----
Insert field *
----
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> SPACE.
CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM = FNAM.
WA_BDCDATA-FVAL = FVAL.
APPEND WA_BDCDATA TO IT_BDCDATA.
ENDIF.
ENDFORM. "BDC_FIELD
‎2008 Dec 12 12:11 PM
hi
this is the pieace of cod eu can add in ur recrding where the multiple items r getting poulated...
l_index = 1.
LOOP AT t_itablfbk WHERE lifnr = t_itabven-lifnr.
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
CONCATENATE 'LFBK-BANKS(0' l_index ')' INTO l_fldbank.
CONCATENATE 'LFBK-BANKL(0' l_index ')' INTO l_fldbankl.
CONCATENATE 'LFBK-BANKN(0' l_index ')' INTO l_fldbankn.
CONCATENATE 'LFBK-BVTYP(0' l_index ')' INTO l_fldbvtyp.
PERFORM bdc_field USING l_fldbank t_itablfbk-banks.
PERFORM bdc_field USING l_fldbankl t_itablfbk-bankl.
PERFORM bdc_field USING l_fldbankn t_itablfbk-bankn.
PERFORM bdc_field USING l_fldbvtyp t_itablfbk-bvtyp.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'.
l_index = l_index + 1.
ENDLOOP.
if any quiries let me know
‎2008 Dec 12 12:25 PM
‎2008 Dec 12 12:15 PM
Hi
This question has been answered Multiple times. Search in SCN...you will get lots of sample code about it.