Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

bdc

Former Member
0 Likes
442

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

5 REPLIES 5
Read only

Former Member
0 Likes
426

hi gayathri,

can u plse tel me for which transation ur going to upload the data

Read only

Former Member
0 Likes
426

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

Read only

Former Member
0 Likes
426

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

Read only

0 Likes
426

ok thaks raghu

Read only

Former Member
0 Likes
426

Hi

This question has been answered Multiple times. Search in SCN...you will get lots of sample code about it.