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 for Sales order using multiple line items

Former Member
0 Likes
1,599

Hi all,

I am working on BDC for sales order creation using VA01.

how to manage Header level and Item level in program?

how to write a code for multiple line item for single or multiple sales oder.

Regards,

Archana.

Hi all,

I am working on BDC for sales order creation using VA01.

how to manage Header level and Item level in program?

how to write a code for multiple line item for single or multiple sales oder.

Regards,

Archana.

3 REPLIES 3
Read only

Peter_Inotai
Active Contributor
0 Likes
816

Hi,

I'd suggest to consider of using BAPI FM BAPI_SALESORDER_CREATEFROMDAT2, where you can handle multiple line items easily and it has a better performance and control.

Best regards,

Peter

Read only

Former Member
0 Likes
816

See the example program and i did for purchase order change and it has multiple line items..

report zpochange.

data : i_error like bdcmsgcoll occurs 0 with header line.

data : i_bdcdata like bdcdata occurs 0 with header line.

tables : ekko, ekpo.

data :c1(10) value 'ME22',

c2(1) value ',',c3(10).

data : var1(20). " LIKE EKKO-EBELN.

data : var2 like ekko-ebeln.

data : begin of i_ekko occurs 0,

header(2),

ebeln like ekko-ebeln,

end of i_ekko.

data : begin of i_ekpo occurs 0,

item(2),

ebeln like ekpo-ebeln,

ebelp like ekpo-ebelp,

menge(10), " LIKE EKPO-MENGE,

end of i_ekpo.

data : v like ekpo-ebelp.

data: begin of itab occurs 0,

text(300),

end of itab.

parameters: p_file like ibipparms-path.

*PARAMETERS: PONUMBER LIKE EKPO-EBELN.

at selection-screen on value-request for p_file.

call function 'F4_FILENAME'

exporting

program_name = syst-cprog

dynpro_number = syst-dynnr

  • FIELD_NAME = ' '

importing

file_name = p_file

.

start-of-selection.

*SELECT EBELN FROM EKKO INTO TABLE I_EKKO WHERE EBELN = PONUMBER.

*

  • SELECT EBELN EBELP MENGE FROM EKPO INTO TABLE I_EKPO WHERE EBELN

*= PONUMBER.

*

perform get_data.

*LOOP AT ITAB.

  • WRITE 😕 ITAB.

  • ENDLOOP.

loop at itab.

var1 = itab-text+0(1).

if var1 = 'H'.

*I_EKKO-EBELN = ITAB-TEXT.

split itab at c2 into i_ekko-header

i_ekko-ebeln.

  • SPLIT ITAB AT ',' INTO I_EKKO-EBELN.

    • " I_EKPO-EBELP

    • " I_EKPO-MENGE

    • " var1.

append i_ekko.

else.

split itab at c2 into i_ekpo-item

i_ekpo-ebeln

i_ekpo-ebelp

i_ekpo-menge.

append i_ekpo.

endif.

*var2 = i_ekpo-ebeln.

  • MOVE VAR1 TO I_EKPO-EBELN.

  • MOVE VAR1 TO I_EKKO-EBELN.

  • APPEND: I_EKPO.

*if not var1 is initial.

  • split var1 at ',' into i_ekpo-ebelp

  • i_ekpo-menge.

  • i_ekpo-ebeln = var2.

  • append i_ekpo.

*endif.

endloop.

loop at i_ekpo.

write 😕 i_ekpo.

endloop.

*

loop at i_ekko.

perform fill_data. " TABLES I_EKPO.

endloop.

  • LOOP AT I_EKPO.

  • WRITE 😕 I_EKPO.

  • ENDLOOP.

*&----


*& Form GET_DATA

*&----


  • text

*----


  • --> p1 text

  • <-- p2 text

*----


*LOOP AT I_ERROR.

  • WRITE 😕 I_ERROR.

  • ENDLOOP.

*

form get_data.

call function 'WS_UPLOAD'

exporting

codepage = ' '

filename = p_file

filetype = 'ASC'

headlen = ' '

line_exit = ' '

trunclen = ' '

user_form = ' '

user_prog = ' '

dat_d_format = ' '

  • IMPORTING

  • FILELENGTH =

tables

data_tab = itab

exceptions

conversion_error = 1

file_open_error = 2

file_read_error = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

others = 10

.

if sy-subrc <> 0.

message id sy-msgid type sy-msgty number sy-msgno

with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

endif.

endform. " GET_DATA

*&----


*& Form FILL_DATA

*&----


  • text

*----


  • -->P_I_EKPO text

*----


form fill_data. " tables i_ekpo .

perform bdcscreen using 'SAPMM06E' '0105'.

perform bdcfield using 'RM06E-BSTNR' i_ekko-ebeln.

perform bdcfield using 'BDC_OKCODE' '/00'.

loop at i_ekpo where ebeln = i_ekko-ebeln.

  • V = I_EKPO-EBELP.

perform bdcscreen using 'SAPMM06E' 0120.

perform bdcfield using 'BDC_CURSOR' 'RM06E-EBELP'.

perform bdcfield using 'RM06E-EBELP' i_ekpo-ebelp.

perform bdcfield using 'BDC_OKCODE' '/00'.

perform bdcscreen using 'SAPMM06E' 0120.

perform bdcfield using 'BDC_CURSOR' 'EKPO-MENGE(01)'.

perform bdcfield using 'RM06E-EBELP' i_ekpo-ebelp.

perform bdcfield using 'EKPO-MENGE(01)' i_ekpo-menge.

perform bdcfield using 'BDC_OKCODE' '/00'.

*PERFORM BDCSCREEN USING 'SAPMM06E' 0120.

*

*PERFORM BDCFIELD USING 'BDC_CURSOR' 'RMO6E-EBELP'.

*

*CLEAR V.

endloop.

perform bdcfield using 'BDC_OKCODE' '=BU'.

call transaction c1 using i_bdcdata mode 'A'

messages into i_error.

refresh i_bdcdata.

endform. " FILL_DATA

*&----


*& Form BDCSCREEN

*&----


  • text

*----


  • -->P_0140 text

  • -->P_0120 text

*----


form bdcscreen using p_program p_screen.

i_bdcdata-program = p_program.

i_bdcdata-dynpro = p_screen.

i_bdcdata-dynbegin = 'X'.

append i_bdcdata.

clear i_bdcdata.

endform. " BDCSCREEN

*&----


*& Form BDCFIELD

*&----


  • text

*----


  • -->P_0145 text

  • -->P_I_EKPO_EBELN text

*----


form bdcfield using fnam fval.

i_bdcdata-fnam = fnam.

i_bdcdata-fval = fval.

append i_bdcdata.

clear i_bdcdata.

endform. " BDCFIELD

Even va01 is also same logic

Reward Points if it is helpful

Thanks

Seshu

Read only

0 Likes
816

Hello Seshu ,

I did my BDC Program for Sales Order Creation.

i used two Inernal tables & loops . one for Header and another for Item level.

when i try to upload file , it upload Header data but it gives an error while uploading file for item level.

Here is code.

REPORT /ZSALESORDER_BDC .

DATA : BEGIN OF ITAB OCCURS 0,

AUART LIKE VBAK-AUART,

VKORG LIKE VBAK-VKORG,

VTWEG LIKE VBAK-VTWEG,

SPART LIKE VBAK-SPART,

BSTKD LIKE VBKD-BSTKD,

BSTDK LIKE VBAK-BSTDK,

KUNNR LIKE KUAGV-KUNNR,

KUNNR1 LIKE KUWEV-KUNNR,

KETDAT LIKE RV45A-KETDAT,

KPRGBZ LIKE RV45A-KPRGBZ,

DWERK LIKE T001W-WERKS,

PRSDT LIKE VBKD-PRSDT,

END OF ITAB.

DATA : BEGIN OF ITAB_ITEM OCCURS 0,

COUNT(5) TYPE P,

MABNR LIKE RV45A-MABNR,

KWMENG LIKE RV45A-KWMENG,

END OF ITAB_ITEM.

*CALLING FUNCTION FOR UPLOADING HEADER DATA

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = 'C:\SALESORDER\HEADER.TXT'

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = '#'

TABLES

DATA_TAB = ITAB.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

  • CALL FUNCTION FOR UPLOADING DATA FOR ITEMS

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = 'C:\SALESORDER\ITEM.TXT'

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = '#'

TABLES

DATA_TAB = ITAB_ITEM.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

include bdcrecx1.

start-of-selection.

perform open_group.

LOOP AT ITAB.

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'

ITAB-AUART. "'zosd'.

perform bdc_field using 'VBAK-VKORG'

ITAB-VKORG. "'expo'.

perform bdc_field using 'VBAK-VTWEG'

ITAB-VTWEG. "'si'.

perform bdc_field using 'VBAK-SPART'

ITAB-SPART. "'em'.

perform bdc_dynpro using 'SAPMV45A' '4001'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'VBKD-BSTKD'

ITAB-BSTKD. "'4500000100'.

perform bdc_field using 'VBKD-BSTDK'

ITAB-BSTDK. "'01.04.2007'.

perform bdc_field using 'KUAGV-KUNNR'

ITAB-KUNNR. "'300161'.

perform bdc_field using 'KUWEV-KUNNR'

ITAB-KUNNR1. "'TV(TEVA)'.

perform bdc_field using 'RV45A-KETDAT'

ITAB-KETDAT. "'08.06.2007'.

perform bdc_field using 'RV45A-KPRGBZ'

ITAB-KPRGBZ. "'D'.

perform bdc_field using 'RV45A-DWERK'

ITAB-DWERK. "'ep04'.

perform bdc_field using 'VBKD-PRSDT'

ITAB-PRSDT. "'08.06.2007'.

LOOP AT ITAB_ITEM.

perform bdc_field using 'BDC_CURSOR'

'RV45A-KWMENG(02)'.

perform bdc_field using 'RV45A-MABNR(01)'

ITAB_ITEM-MABNR. "'420001245'.

perform bdc_field using 'RV45A-MABNR(02)'

'420001252'.

perform bdc_field using 'RV45A-KWMENG(01)'

ITAB_ITEM-KWMENG. "' 1000'.

perform bdc_field using 'RV45A-KWMENG(02)'

' 10,000'.

perform bdc_dynpro using 'SAPMV45A' '4001'.

perform bdc_field using 'BDC_OKCODE'

'=SICH'.

perform bdc_field using 'VBKD-BSTKD'

'4500000100'.

perform bdc_field using 'VBKD-BSTDK'

'01.04.2007'.

perform bdc_field using 'KUAGV-KUNNR'

'300161'.

perform bdc_field using 'KUWEV-KUNNR'

'TV(TEVA)'.

perform bdc_field using 'RV45A-KETDAT'

'08.06.2007'.

perform bdc_field using 'RV45A-KPRGBZ'

'D'.

perform bdc_field using 'RV45A-DWERK'

'EP04'.

perform bdc_field using 'VBKD-PRSDT'

'08.06.2007'.

perform bdc_field using 'VBKD-ZTERM'

'Z002'.

perform bdc_field using 'VBKD-INCO1'

'FOR'.

perform bdc_field using 'VBKD-INCO2'

'Pune'.

ENDLOOP.

perform bdc_field using 'BDC_CURSOR'

'RV45A-MABNR(02)'.

perform bdc_transaction using 'VA01'.

ENDLOOP.

perform close_group.

Regards,

Archana.