Multiple Line Items in Output File
Hi everyone,
I am using a IDOC to Flat File scenario
IDOC is PO Idoc.
Flat file should contain n no of records For example if IDOC of a PO contains 3 Line Item Flat file should have 3 records...
Suppose , my flat file has 3 fields
PO #
Item #
Material #
Now How to achieve this ?
Thanks.
Use UseOneASMany standard function and map as given below
E1EDK01-BELNR (context E1EDK01) ------------------------\
E1EDP01 -------------------- ----------------------------- >useoneasmany ---> target PO field
E1EDP01-POSEX (context E1EDP01) ---------------------/
because you use function useOneAsMany() if a field that only occurs once needs to be replicated as often as another field occurs in the outbound message so that the fields can be written to the target structure in pairs as a record.
it takes three inputs
first input values to be replicated
second input for how often values to be repeated(Occurence)
third input How to structure the values(in your case you have to repeat values as often as E1EDP01 occurs and structure should be as Item or material field)
Edited by: Kubra fatima on Oct 7, 2009 8:44 AM
Similar Messages
-
Pass Idoc PO Multiple Line Items to file
Hello All,
we are using Message Type ORDERS and ORDERS1 as Basic type to pass PO and sales data. I have configured IDOC to File scenario. I'm able to successfully place a file in file folder.
But my issue is some of the PO's have multiple line items and saved file has one first line item information. I have even tried unbounded for line item but no luck.
<b>How do I pass all the line item values to the file ?.</b>
The output structure should be
1. PO Number
2. PO ITem
3. Material No
4. Delivery Date
5. Vendor Number
the data type I created is
Pur_Ord
|__ EBELN
|__ EBELP 0..Unbounded
|__ MATNR
|__ AEDAT
|__ LIFNR
the current output is
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Pur_Ord_Out xmlns:ns0="http://PO_TO_FILE">
<EBELN>0004500066</EBELN>
<EBELP>00001</EBELP>
<MATNR>000000000000010027</MATNR>
<AEDAT>20051215</AEDAT>
<LIFNR>0001005780</LIFNR>
</ns0:Pur_Ord_Out>
Im looking for an output with all line items
Thanks in advance
PraveenPraveen
Try this
Pur_Ord
|__ ORDERS 0.. Unbounded
|__ EBELN
|__ EBELP
|__ MATNR
|__ AEDAT
|__ LIFNR
Here ORDERS is the parent node.
KK
Message was edited by: KK -
Hi all,
I wana pass multiple line items thru bdc me21n....can any1 please help me .if u guys have some code can mail me at [email protected] will be rewarded.
my code below is not working for passing multiple items.
report y1_po_test
no standard page heading line-size 255.
tables: mara,
lfa1,
eina,
eine,
eban,
zdrgsah, zdrgsap,
zdrgsup,
t100,
ekko,
a004, zprice_grpsal, mvke.
*Internal Table to get the input Data
data: begin of i_input occurs 0,
matnr like ekpo-matnr,
asqty like ekpo-menge,
ebeln like ekpo-ebeln,
posnr(5),
posnr like zdrgsap-posnr,
invno like zdrgsap-invno,
invdt like zdrgsah-invdt,
netpr like zdrgsap-netpr,
cntno like zdrgsap-cntno,
shcnm like zdrgsah-shcnm,
apcno like zdrgsap-apcno,
spcno like zdrgsap-spcno,
werks like ekpo-werks,
lgort like ekpo-lgort,
matkl like ekpo-matkl,
pack(10),
mvgr2 like mvke-mvgr2,
dpric type p decimals 6 ,
gpric type p decimals 6,
end of i_input.
data: begin of i_inputxt occurs 0,
matnr(18) ,
asqty(13) ,
ebeln(10) ,
posnr(6) ,
invno(10) ,
invdt(8) ,
netpr(11) ,
cntno(11) ,
shcnm(10) ,
werks(4) ,
lgort(4) ,
matkl(9) ,
pack(10),
end of i_inputxt.
data: begin of i_error occurs 0,
prnum like eban-banfn,
pritm like eban-bnfpo,
inmat like mara-matnr,
prmat like mara-matnr,
asqty like zdrgsap-asqty,
prqty like eban-menge,
remak(100),
remark(255) type c,
end of i_error.
data : begin of i_error1 occurs 0,
prnum like eban-banfn,
pritm like eban-bnfpo,
asqty like zdrgsap-asqty,
prqty like eban-menge,
remak(100),
end of i_error1.
data : begin of i_zsap occurs 0,
ebeln like zdrgsap-ebeln,
posnr(5),
menge like zdrgsap-menge,
asqty like zdrgsap-asqty,
end of i_zsap.
data : v_ebeln like eket-ebeln.
data : begin of i_a004 occurs 0,
matnr like a004-matnr,
knumh like a004-knumh,
kbetr like konp-kbetr,
end of i_a004,
i_a0041 like i_a004 occurs 0 with header line.
data : begin of i_konp occurs 0,
knumh like konp-knumh,
kbetr like konp-kbetr,
konwa like konp-konwa,
end of i_konp.
data : begin of i_konp1 occurs 0,
knumh like konp-knumh,
kbetr like konp-kbetr,
konwa like konp-konwa,
end of i_konp1.
data : begin of i_netpr occurs 0,
ebeln like eket-ebeln,
ebelp like eket-ebelp,
matnr like ekpo-matnr,
menge like ekpo-menge,
netpr like ekpo-netpr,
kbetr like konp-kbetr,
end of i_netpr.
data : begin of i_grpsal occurs 0,
pcode like zprice_grpsal-pcode,
fact like zprice_grpsal-fact,
wfact like zprice_grpsal-wfact,
end of i_grpsal.
data : begin of i_domsal occurs 0,
pcode like zprice_grpsal-pcode,
fact like zprice_grpsal-fact,
wfact like zprice_grpsal-wfact,
end of i_domsal.
data : begin of i_zsap1 occurs 0,
ebeln like zdrgsap-ebeln,
posnr(5),
asqty like zdrgsap-asqty,
end of i_zsap1.
data: begin of bdcdata occurs 0.
include structure bdcdata. " Batch input: New table field
data: end of bdcdata.
messages of call transaction
data: messtab like bdcmsgcoll occurs 0 with header line.
data: i_mara type mara occurs 0 with header line,
i_eina like eina occurs 0 with header line,
i_eine like eine occurs 0 with header line.
data : begin of i_inferr occurs 0,
matnr like eina-matnr,
infnr like eina-infnr,
werks like eine-werks,
end of i_inferr.
data : begin of i_inferrc occurs 0,
matnr like eina-matnr,
end of i_inferrc.
*Data declaration.
data: v_file type string, " Variable for uploading file
v_item(5) type c, " Line item number
v_itno(2) type n,
p_wkurs like zdrgkurs-wkurs,
v_matnr(20) type c,
v_menge(20) type c,
v_banfn(20) type c,
v_bnfpo(20) type c,
v_bednr(20) type c,
v_werks(20),
p_lifnr(10) ,
v_flag,
p_lifnrtxt(10),
p_wkurstxt(9),
p_bsartxt(4),
v_posnr(5), n type i,
v_quant(13),
v_asqty(13),
v_prqty(13),
v_apcno(6),
v_spcno(4),
v_itm(11),
v_cnt type i,
v_cntno(4),
v_pack(10),
v_order(15),
v_lifnr(10),
v_invdt like sy-datum,
v_waers like ekko-waers,
v_podat like ekko-bedat,
v_docdt1 like sy-datum,
v_docdt(10),
v_fnam(132).
data : begin of i_test occurs 0,
bnfpo like eban-bnfpo,
matnr like eban-matnr,
menge like eban-menge,
bsmng like eban-bsmng,
end of i_test.
data : begin of i_mvke occurs 0,
matnr like mvke-matnr,
mvgr2 like mvke-mvgr2,
end of i_mvke.
data : begin of i_invno,
ebeln like ekko-ebeln,
angnr like ekko-angnr,
end of i_invno.
data : i_final like zinvdiff occurs 0 with header line.
Constants
constants : c_pd01 like eine-werks value 'PD01'.
*Selection Screen Declarations
selection-screen begin of block b1 with frame title text-010.
parameters: p_invno like zdrgsah-invno obligatory,
p_bsart like ekko-bsart obligatory.
selection-screen end of block b1.
start-of-selection.
To Upload the data into Internal table.
perform f_upload_data.
To Validate the input data.
perform f_check_data.
if i_error[] is not initial or i_error1[] is not initial.
To display the error message
perform f_display_errors.
else.
To create PO
perform f_process_session.
endif.
perform f_check_calc_price.
perform f_display_data.
perform f_update_zinvdiff.
*& Form f_get_filename
text
form f_get_filename.
endform. " F_get_filename
*& Form f_upload_data
form f_upload_data .
select matwa as matnr asqty ebeln posnr b~invno invdt netpr cntno
shcnm apcno spcno into table i_input
from zdrgsah as a join zdrgsap as b on
a~invno = b~invno
where b~invno eq p_invno.
select ebeln
posnr
menge
asqty
from zdrgsap into table i_zsap
where invno = p_invno.
loop at i_zsap.
concatenate i_zsap-posnr(4) '0' into v_posnr.
i_zsap1-ebeln = i_zsap-ebeln.
i_zsap1-posnr = v_posnr.
i_zsap1-asqty = i_zsap-asqty.
collect i_zsap1.
clear i_zsap1.
endloop.
delete adjacent duplicates from i_zsap comparing posnr menge .
delete adjacent duplicates from i_input comparing ebeln posnr.
loop at i_input.
p_werks = i_input-werks.
v_invdt = i_input-invdt.
call function 'CONVERT_DATE_FORMAT'
exporting
i_date = v_invdt
importing
e_calc_date = v_invdt.
if i_input-apcno is initial.
v_apcno = '0000'.
else.
v_apcno = i_input-apcno.
endif.
if i_input-spcno is initial.
v_spcno = '0000'.
else.
v_spcno = i_input-spcno.
endif.
if i_input-cntno is initial.
i_input-cntno = '0000'.
endif.
concatenate v_apcno v_spcno into i_input-pack.
concatenate v_pack v_cntno into v_order separated by '-'.
i_input-order = v_order.
clear : v_itm, v_cnt, v_cntno, v_pack, v_apcno, v_spcno, v_order.
concatenate i_input-posnr(4) '0' into v_posnr.
select single lifnr into p_lifnr from zdrgsup
where shcnm = i_input-shcnm.
v_lifnr = p_lifnr.
if sy-subrc <> 0.
message e000(zcnc) with text-002.
endif.
select single * from eban
where banfn eq i_input-ebeln
and bnfpo eq v_posnr.
if sy-subrc eq 0.
move eban-werks to i_input-werks.
move eban-lgort to i_input-lgort.
move eban-matkl to i_input-matkl.
move eban-bnfpo to i_test-bnfpo.
move eban-matnr to i_test-matnr.
move eban-menge to i_test-menge.
move eban-bsmng to i_test-bsmng.
modify i_input.
if not i_input-matnr eq i_test-matnr.
move i_input-ebeln to i_error-prnum.
move v_posnr to i_error-pritm.
move i_input-matnr to i_error-inmat.
move eban-matnr to i_error-prmat.
i_error-remak = 'Material does not match'.
append i_error.
clear i_error.
endif.
v_quant = i_test-menge - i_test-bsmng.
read table i_zsap1 with key ebeln = i_input-ebeln posnr = v_posnr.
if not i_zsap1-asqty <= v_quant.
move i_input-ebeln to i_error1-prnum.
move i_zsap1-posnr to i_error1-pritm.
move i_zsap1-asqty to i_error1-asqty.
move eban-menge to i_error1-prqty.
move v_quant to i_error1-prqty.
i_error1-remak = 'Material Quantity does not match'.
append i_error1.
clear i_error1.
endif.
select single matnr infnr from eina
into corresponding fields of i_eina
where matnr eq i_input-matnr
and lifnr eq p_lifnr.
if sy-subrc = 0.
append i_eina.
check not i_eina[] is initial.
select single * from eine
into i_eine
where infnr eq i_eina-infnr
and werks eq eban-werks.
if sy-subrc <> 0.
move i_input-matnr to i_inferr-matnr.
move i_eina-infnr to i_inferr-infnr.
move eban-werks to i_inferr-werks.
append i_inferr.
clear i_inferr.
endif.
else.
move i_input-matnr to i_inferrc-matnr.
append i_inferrc.
clear i_inferrc.
endif.
clear : i_eina, i_eine.
clear : i_zsap, i_zsap1, i_input, v_posnr,
v_quant, i_test.
endif.
endloop.
delete adjacent duplicates from i_error1 comparing prnum pritm.
perform chk_info_rec.
endform. " f_upload_data
*& Form f_check_data
form f_check_data .
if not i_input[] is initial.
select * from mara
into table i_mara
for all entries in i_input
where matnr eq i_input-matnr.
endif.
loop at i_mara.
read table i_input with key matnr = i_mara-matnr.
if sy-subrc <> 0.
write : 'Following Part Numbers are not found in MARA'.
write : / i_input-matnr.
endif.
endloop.
if i_mara[] is initial.
loop at i_input.
format color col_heading intensified off.
write : 'Following Part Numbers are not found in MARA'.
format color col_normal intensified off.
write : / i_input-matnr.
endloop.
endif.
select single wkurs into p_wkurs from zdrgkurs
where invno = p_invno.
if sy-subrc ne 0.
message e000(zcnc) with text-s11.
endif.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = p_lifnr
importing
output = p_lifnr.
p_lifnrtxt = p_lifnr.
p_wkurstxt = p_wkurs.
p_bsartxt = p_bsart.
loop at i_input.
move-corresponding i_input to i_inputxt.
append i_inputxt.
endloop.
select single ebeln
angnr from ekko
into i_invno
where angnr = p_invno.
if sy-subrc = 0.
perform display_err.
endif.
endform. " f_check_data
*& Form f_process_session
text
form f_process_session.
v_docdt1 = sy-datum.
write v_docdt1 to v_docdt using edit mask '__.__.____'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MEDOCTYPE'.
perform bdc_field using 'BDC_CURSOR'
'MEPO_TOPLINE-BSART'.
perform bdc_field using 'MEPO_TOPLINE-BSART'
p_bsartxt.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'
p_lifnrtxt.
perform bdc_field using 'BDC_CURSOR'
'MEPO1222-BUKRS'.
perform bdc_field using 'MEPO1222-EKORG'
'SBAP'.
perform bdc_field using 'MEPO1222-EKGRP'
'PG1'.
perform bdc_field using 'MEPO1222-BUKRS'
'SBA'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=TABHDT2'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MEPO_TOPLINE-BSART'
p_bsartxt.
perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'
p_lifnrtxt.
********************conditions***************************************
perform bdc_field using 'BDC_CURSOR'
'KOMV-KSCHL(08)'.
perform bdc_field using 'KOMV-KSCHL(07)'
'zot1'.
perform bdc_field using 'KOMV-KSCHL(08)'
'zinc'.
perform bdc_field using 'KOMV-KSCHL(09)'
'ziv1'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=V69A_KOAN'.
perform bdc_field using 'BDC_CURSOR'
'KOMV-KSCHL(01)'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KOMV-KSCHL(02)'
'zca1'.
perform bdc_field using 'KOMV-KSCHL(03)'
'zfa1'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=TABHDT7'.
perform bdc_field using 'BDC_CURSOR'
'KOMV-KSCHL(09)'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'MEPO1229-IHRAN'.
perform bdc_field using 'MEPO1229-ANGNR'
p_invno.
perform bdc_field using 'MEPO1229-IHRAN'
v_invdt.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MEV4001BUTTON'.
perform bdc_field using 'BDC_CURSOR'
'MEPO1229-IHRAN'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MEV4000BUTTON'.
perform bdc_field using 'BDC_CURSOR'
'MEPO1229-IHRAN'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
loop at i_inputxt.
concatenate i_inputxt-posnr(4) '0' into v_posnr.
concatenate 'MEPO1211-EMATN(' v_itno ')' into v_matnr.
concatenate 'MEPO1211-MENGE(' v_itno ')' into v_menge.
concatenate 'MEPO1211-BANFN(' v_itno ')' into v_banfn.
concatenate 'MEPO1211-BNFPO(' v_itno ')' into v_bnfpo.
concatenate 'MEPO1211-BEDNR(' v_itno ')' into v_bednr.
concatenate 'MEPO1211-WERKS(' v_itno ')' into v_werks.
v_item = v_item + 10.
endif.
v_itno = v_itno + 1.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
v_matnr.
perform bdc_field using v_matnr "'MEPO1211-EMATN(01)'
i_inputxt-matnr.
perform bdc_field using v_menge "'MEPO1211-MENGE(01)'
i_inputxt-asqty.
perform bdc_field using v_banfn "'MEPO1211-BANFN(01)'
i_inputxt-ebeln.
perform bdc_field using v_bnfpo "'MEPO1211-BNFPO(01)'
i_inputxt-posnr.
perform bdc_field using 'DYN_6000-LIST'
v_itno.
loop at i_inputxt .
v_itno = sy-tabix.
clear v_fnam.
concatenate 'MEPO1211-EMATN(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-matnr.
clear v_fnam.
concatenate 'MEPO1211-MENGE(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-asqty.
clear v_fnam.
concatenate 'MEPO1211-BANFN(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-ebeln.
clear v_fnam.
concatenate 'MEPO1211-BNFPO(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-posnr.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
endloop.
loop at i_inputxt from 6.
v_itno = sy-tabix.
clear v_fnam.
concatenate 'MEPO1211-EMATN(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-matnr.
clear v_fnam.
concatenate 'MEPO1211-MENGE(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-asqty.
clear v_fnam.
concatenate 'MEPO1211-BANFN(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-ebeln.
clear v_fnam.
concatenate 'MEPO1211-BNFPO(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-posnr.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
endloop.
perform bdc_field using 'BDC_CURSOR'
'MEPO1320-SLFDT(01)'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=TABHDT2'.
perform bdc_field using 'DYN_6000-LIST'
' 2'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=V69A_KOAK'.
perform bdc_field using 'BDC_CURSOR'
'KOMV-KBETR(05)'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MECHECKDOC'.
perform bdc_field using 'BDC_CURSOR'
'KOMV-KSCHL(01)'.
perform bdc_dynpro using 'SAPMSSY0' '0120'.
perform bdc_field using 'BDC_CURSOR'
'04/03'.
perform bdc_field using 'BDC_OKCODE'
'=&ONT'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MEV4000BUTTON'.
perform bdc_field using 'BDC_CURSOR'
'MEPO_TOPLINE-BSART'.
perform bdc_field using 'DYN_6000-LIST'
' 2'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'KOMV-KBETR(08)'.
perform bdc_field using 'KOMV-KBETR(03)'
' .54'.
perform bdc_field using 'KOMV-KBETR(08)'
' .54'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MESAVE'.
perform bdc_field using 'BDC_CURSOR'
'MEPO1211-NETPR(01)'.
perform bdc_transaction using 'ME21N'.
endform. "f_process_session
*& Form bdc_transaction
text
-->P_0464 text
form bdc_transaction using tcode.
data: l_mstring(480).
data: l_subrc like sy-subrc.
data: v_mode type c.
v_mode = 'A'.
refresh messtab.
call transaction tcode using bdcdata
mode v_mode
update 'S'
messages into messtab.
l_subrc = sy-subrc.
WRITE: / 'CALL_TRANSACTION',
TCODE,
'returncode:'(I05),
L_SUBRC,
'RECORD:',
SY-INDEX.
loop at messtab.
select single * from t100 where sprsl = messtab-msgspra
and arbgb = messtab-msgid
and msgnr = messtab-msgnr.
if sy-subrc = 0.
l_mstring = t100-text.
if l_mstring cs '&1'.
replace '&1' with messtab-msgv1 into l_mstring.
replace '&2' with messtab-msgv2 into l_mstring.
replace '&3' with messtab-msgv3 into l_mstring.
replace '&4' with messtab-msgv4 into l_mstring.
else.
replace '&' with messtab-msgv1 into l_mstring.
replace '&' with messtab-msgv2 into l_mstring.
replace '&' with messtab-msgv3 into l_mstring.
replace '&' with messtab-msgv4 into l_mstring.
endif.
condense l_mstring.
if messtab-msgtyp eq 'E' or messtab-msgtyp eq 'W'.
write: / messtab-msgtyp, l_mstring(250).
endif.
search l_mstring for 'SEA'.
if sy-subrc = 0.
write: / messtab-msgtyp, l_mstring(250).
endif.
else.
write: / messtab.
endif.
endloop.
endform. " bdc_transaction
Start new screen *
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.
if fval <> space.
clear bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
append bdcdata.
endif.
endform. "BDC_FIELD
*& Form f_display_errors
form f_display_errors .
if i_error[] is not initial.
format color col_heading intensified off.
uline .
write :/ 'PR No ',
(10) 'Item No',
(20) 'PR Part No',
(30) 'Invoiced Part No',
(60) 'Remark'.
uline .
loop at i_error.
perform f_display_color.
write :/ i_error-prnum,
(10) i_error-pritm ,
(20) i_error-prmat,
(30) i_error-inmat,
(60) i_error-remak.
clear i_error.
endloop.
endif.
if i_error1[] is not initial.
format color col_heading intensified off.
uline .
write :/ 'PR No ',
(10) 'Item No',
(20) 'PR Quantity',
(30) 'Invoiced Quantity',
(60) 'Remark'.
uline .
loop at i_error1.
perform f_display_color.
if not i_error1-asqty is initial.
v_asqty = i_error1-asqty .
v_prqty = i_error1-prqty.
write :/ i_error1-prnum,
(10) i_error1-pritm ,
(20) v_prqty,
(30) v_asqty,
(60) i_error1-remak.
clear : v_asqty, v_prqty.
endif.
clear i_error1.
endloop.
endif.
endform. " f_display_errors
*& Form f_display_color
form f_display_color .
if v_flag = 0.
format color col_normal intensified on.
v_flag = 1.
elseif v_flag = 1.
format color col_normal intensified off.
v_flag = 0.
endif.
endform. " f_display_color
*& Form display_err
text
--> p1 text
<-- p2 text
form display_err .
format color col_heading intensified off.
write (120) text-006.
uline .
write : 'PR No ',
(15) 'Invoice No',
(30) 'Remark'.
uline.
format color col_negative intensified off.
write :/ i_invno-ebeln,
(15) p_invno ,
(30) 'Invoice Already Exists'.
endform. " display_err
*& Form f_check_calc_price
text
--> p1 text
<-- p2 text
form f_check_calc_price .
data : d_pric type p decimals 6 ,
g_pric type p decimals 6,
v_exch type p decimals 4 value '0.1049'.
select single ebeln
waers
bedat
from ekko into (v_ebeln , v_waers , v_podat)
where angnr eq p_invno.
loop at i_input.
concatenate i_input-posnr(4) '0' into v_posnr.
select single p~ebeln
p~ebelp
matnr
p~menge
netpr
into i_netpr
from eket as t inner join ekpo as p
on t~ebeln eq p~ebeln
and t~ebelp eq p~ebelp
where t~ebeln eq v_ebeln
and t~banfn eq i_input-ebeln
and t~bnfpo eq v_posnr.
if v_waers eq 'JPY'.
i_netpr-netpr = i_netpr-netpr * 100.
endif.
if not i_input-netpr eq i_netpr-netpr.
append i_netpr.
clear : i_input, i_netpr, v_posnr.
else.
clear : i_input, i_netpr, v_posnr.
endif.
endloop.
delete adjacent duplicates from i_netpr comparing ebeln ebelp matnr.
modify zinvdiff from table i_final.
if i_netpr[] is not initial.
select matnr
knumh
from a004
into table i_a004
for all entries in i_netpr
where matnr = i_netpr-matnr
and kschl = 'ZPR0'
and vkorg = 'SBAP'
and vtweg = 'DD'
and ( datab <= sy-datum and datbi => sy-datum ).
select matnr
knumh
from a004
into table i_a0041
for all entries in i_netpr
where matnr = i_netpr-matnr
and kschl = 'ZPR0'
and vkorg = 'EXPT'
and vtweg = 'BR'
and ( datab <= sy-datum and datbi => sy-datum ).
select matnr mvgr2 from mvke
into corresponding fields of table i_mvke
for all entries in i_netpr
where matnr = i_netpr-matnr
and vkorg = 'SBAP'
and vtweg = 'DD'.
if i_a004[] is not initial.
select knumh
kbetr
from konp
into table i_konp
for all entries in i_a004
where knumh = i_a004-knumh.
loop at i_a004.
read table i_konp with key knumh = i_a004-knumh.
i_konp-kbetr = i_konp-kbetr / 10.
move i_konp-kbetr to i_a004-kbetr.
modify i_a004.
clear : i_konp, i_a004.
endloop.
endif.
if i_a0041[] is not initial.
select knumh
kbetr
from konp
into table i_konp1
for all entries in i_a0041
where knumh = i_a0041-knumh.
loop at i_a0041.
read table i_konp1 with key knumh = i_a0041-knumh.
move i_konp1-kbetr to i_a0041-kbetr.
modify i_a0041.
clear : i_konp1, i_a0041.
endloop.
endif.
if i_mvke[] is not initial.
select pcode
fact
wfact
into table i_domsal
from zprice_grpsal
for all entries in i_mvke
where pcode = i_mvke-mvgr2
and vkorg = 'SBAP'
and vtweg = 'DD'
and lifnr = v_lifnr.
select pcode
fact
wfact
into table i_grpsal
from zprice_grpsal
for all entries in i_mvke
where pcode = i_mvke-mvgr2
and vkorg = 'EXPT'
and vtweg = 'BR'
and lifnr = v_lifnr.
endif.
loop at i_input .
read table i_mvke with key matnr = i_input-matnr.
if sy-subrc = 0.
move i_mvke-mvgr2 to i_input-mvgr2.
endif.
read table i_domsal with key pcode = i_input-mvgr2.
if sy-subrc = 0.
d_pric = i_domsal-fact / i_domsal-wfact.
i_input-dpric = i_input-netpr * d_pric * ( 112 / 100 ).
endif.
read table i_grpsal with key pcode = i_input-mvgr2.
if sy-subrc = 0.
g_pric = i_grpsal-fact * i_grpsal-wfact.
i_input-gpric = ( i_input-netpr * ( 112 / 100 ) ) / g_pric .
endif.
modify i_input.
clear i_input.
clear d_pric.
clear g_pric.
endloop.
endif.
endform. " f_check_price
*& Form f_display_data
text
--> p1 text
<-- p2 text
form f_display_data .
loop at i_netpr.
move i_netpr-ebeln to i_final-ebeln.
move i_netpr-ebelp to i_final-ebelp.
move i_netpr-matnr to i_final-matnr.
move i_netpr-netpr to i_final-poprc.
move i_netpr-menge to i_final-asqty.
move p_invno to i_final-invoice.
append i_final.
clear i_final.
endloop.
loop at i_final.
move v_podat to i_final-podat.
read table i_input with key matnr = i_final-matnr.
move i_input-netpr to i_final-invpr.
move i_input-dpric to i_final-dcalclp.Dear Santosh,
I haven't gone through your piece of code.
But I can suggest a way out, while handling multiple line-items.
The following code sample elucidate the use of multiple line-items. This is just an example for your understanding.
FORM BDC_OPERATION .
DATA: LV_ARBPL(15) TYPE C,
LV_ROWNO(2) TYPE N.
LOOP AT IT_TABDATA INTO WA_TABDATA.
CLEAR: LV_ARBPL
LV_ROWNO = SY-TABIX.
CONCATENATE 'PLPOD-ARBPL' '(' LV_ROWNO ')' INTO LV_ARBPL.
PERFORM BDC_DYNPRO USING 'SAPLCPDI' '1400'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' LV_ARBPL.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=PICK'.
PERFORM BDC_FIELD USING LV_ARBPL WA_TABDATA-ARBPL.
ENDLOOP.
ENDFORM. " BDC_OPERATION
Regards,
Abir
Please don't forget to award points * -
Dear All,
I am writing BDC for F-28
Where wanted to add multiple line items in screen 0731 for the field rfo5a-sel01
It's urgent
Regards
ShashikantHi,
You can use the program RFBIBL00 to upload the FI documents.
Sample BDC
File Format : Below listed fields must be filled when you wnat to post new document. Program will recognize new document by itab-newdoc = 'X'.
NEWDOC , "New Doc
BLDAT(10) , "Doc Date
BUDAT(10) , "Posting Date
BLART(2) , "Document Type
XBLNR LIKE BKPF-XBLNR , "Refrence
BKTXT LIKE BKPF-BKTXT , "Doc Header Text
You need one serverfile. After sucessfully run of program you have to run the progrma RFBIBL00. Pass data transfer type = 'B'.
Regards,
Naimesh.
PS: Reward points, if it is useful..!
REPORT ZTEST_NP .
Tables
TABLES: BSEG ,
BGR00,
BBKPF,
BBSEG,
t001.
Internal Tables
DATA: BEGIN OF ITAB OCCURS 0 ,
NEWDOC , "New Doc
BLDAT(10) , "Doc Date
BUDAT(10) , "Posting Date
BLART(2) , "Document Type
XBLNR LIKE BKPF-XBLNR , "Refrence
BKTXT LIKE BKPF-BKTXT , "Doc Header Text
BSCHL(2) , "Posting Key
HKONT(10) , "Account
UMSKZ(1), "Sp GL ind
ZLSCH(1) , "Payment Method
ZLSPR(1) , "Payment Block
WRBTR(16), "Amount without sign
KOSTL(10), "Cost center
GSBER(4) , "Business Area
ZUONR LIKE BSEG-ZUONR , "Assignment
AUFNR LIKE BSEG-AUFNR , "Order
PERNR(8) , "Personal Number
SGTXT LIKE BSEG-SGTXT, "Line Item Text
END OF ITAB .
DATA: ITAB1 LIKE ITAB OCCURS 0 WITH HEADER LINE.
DATA: I_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE.
DATA: I_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE.
DATA: I_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE.
Data Declaration
DATA: C_NODATA(1) TYPE C VALUE '/',
W_CNT TYPE I.
FIELD-SYMBOLS <F>.
SELECTION-SCREEN: BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-T01.
PARAMETER: P_BUKRS LIKE BKPF-BUKRS OBLIGATORY,
PSESSION(12) OBLIGATORY DEFAULT 'Auto_FI',
P_SFILE LIKE RLGRAP-FILENAME OBLIGATORY ,
P_LFILE LIKE RLGRAP-FILENAME OBLIGATORY .
SELECTION-SCREEN: END OF BLOCK BLK1.
At Selection Screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LFILE.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = P_LFILE.
Start Of Selection
START-OF-SELECTION .
OPEN DATASET P_SFILE FOR OUTPUT IN TEXT MODE .
PERFORM INIT_BGR00 USING C_NODATA.
PERFORM INIT_IBKPF USING C_NODATA.
PERFORM INIT_IBSEG USING C_NODATA.
PERFORM UPLOAD .
PERFORM SET_DATA.
*& Form INIT_BGR00
FORM INIT_BGR00 USING NODATA .
CLEAR BGR00.
BGR00-STYPE = '0'.
BGR00-GROUP = PSESSION.
BGR00-MANDT = SY-MANDT .
BGR00-USNAM = SY-UNAME .
bgr00-start = datum .
BGR00-XKEEP = 'X'.
BGR00-NODATA = NODATA.
TRANSFER BGR00 TO P_SFILE.
ENDFORM. " INIT_BGR00
*& Form INIT_IBKPF
FORM INIT_IBKPF USING NODATA .
Initialize data fields with NODATA:
W_CNT = 0.
DO.
ADD 1 TO W_CNT.
ASSIGN COMPONENT W_CNT OF STRUCTURE I_BBKPF TO <F>.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
MOVE NODATA TO <F>.
ENDDO.
ENDFORM.
*& Form INIT_IBSEG
FORM INIT_IBSEG USING NODATA.
Initialize data fields with NODATA:
W_CNT = 0.
DO.
ADD 1 TO W_CNT.
ASSIGN COMPONENT W_CNT OF STRUCTURE I_BBSEG TO <F>.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
MOVE NODATA TO <F>.
ENDDO.
ENDFORM.
*& Form INIT_BBKPF
FORM INIT_BBKPF.
MOVE I_BBKPF TO BBKPF.
BBKPF-STYPE = '1'.
ENDFORM. " INIT_BBKPF
*& Form INIT_BBSEG
FORM INIT_BBSEG.
MOVE I_BBSEG TO BBSEG.
BBSEG-STYPE = '2'.
BBSEG-TBNAM = 'BBSEG'.
ENDFORM. " INIT_BBSEG
*& Form UPLOAD
FORM UPLOAD.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = P_LFILE
FILETYPE = 'DAT'
TABLES
DATA_TAB = ITAB
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.
IF SY-SUBRC NE 0 .
MESSAGE S001(01) WITH 'The File Could not be Uploaded..!' .
LEAVE LIST-PROCESSING .
ELSE.
DELETE ITAB INDEX 1 .
ENDIF .
LOOP AT ITAB .
DO .
REPLACE '.' WITH '' INTO ITAB-BLDAT .
IF SY-SUBRC NE 0 .
CONDENSE ITAB-BLDAT NO-GAPS .
EXIT .
ENDIF .
ENDDO .
DO .
REPLACE '.' WITH '' INTO ITAB-BUDAT .
IF SY-SUBRC NE 0 .
CONDENSE ITAB-BUDAT NO-GAPS .
EXIT .
ENDIF .
ENDDO .
MODIFY ITAB .
ENDLOOP .
ENDFORM. " UPLOAD
*& Form SET_DATA
FORM SET_DATA.
DATA: L_DOCCNT TYPE I,
L_LNCNT TYPE I .
SELECT SINGLE * FROM T001
WHERE BUKRS = P_BUKRS.
LOOP AT ITAB .
IF ITAB-NEWDOC = 'X' OR ITAB-NEWDOC = 'x' .
CLEAR : L_LNCNT .
L_DOCCNT = L_DOCCNT + 1.
PERFORM INIT_BBKPF .
BBKPF-TCODE = 'FB01'.
BBKPF-BUKRS = P_BUKRS.
WRITE : ITAB-BLDAT DD/MM/YY TO BBKPF-BLDAT.
WRITE : ITAB-BUDAT DD/MM/YY TO BBKPF-BUDAT.
BBKPF-BLART = ITAB-BLART .
BBKPF-WAERS = T001-WAERS.
BBKPF-BKTXT = ITAB-BKTXT .
BBKPF-XBLNR = ITAB-XBLNR .
TRANSFER BBKPF TO P_SFILE.
ENDIF .
L_LNCNT = L_LNCNT + 1 .
IF L_LNCNT GT 990 .
MESSAGE S001(01) WITH 'Number of Records Exceed 990 Line Items'
'Program cannot be executed' .
LEAVE LIST-PROCESSING .
ENDIF .
PERFORM INIT_BBSEG .
BBSEG-NEWKO = ITAB-HKONT .
BBSEG-NEWBS = ITAB-BSCHL .
BBSEG-WRBTR = ITAB-WRBTR .
IF NOT ITAB-KOSTL IS INITIAL .
BBSEG-KOSTL = ITAB-KOSTL .
ELSE .
IF NOT ITAB-GSBER IS INITIAL .
BBSEG-GSBER = ITAB-GSBER .
ENDIF .
ENDIF .
BBSEG-ZUONR = ITAB-ZUONR.
BBSEG-SGTXT = ITAB-SGTXT .
IF NOT ITAB-AUFNR IS INITIAL .
BBSEG-AUFNR = ITAB-AUFNR .
ENDIF .
IF NOT ITAB-UMSKZ IS INITIAL .
BBSEG-NEWUM = ITAB-UMSKZ .
ENDIF .
IF ITAB-BSCHL = '29' OR ITAB-BSCHL = '39' OR ITAB-BSCHL = '09' .
BBSEG-ZFBDT = BBKPF-BLDAT .
ENDIF .
IF NOT ITAB-ZLSCH IS INITIAL .
BBSEG-ZLSCH = ITAB-ZLSCH .
ENDIF .
IF NOT ITAB-PERNR IS INITIAL .
BBSEG-PERNR = ITAB-PERNR .
ENDIF .
IF NOT ITAB-ZLSPR IS INITIAL .
BBSEG-ZLSPR = ITAB-ZLSPR .
ENDIF .
TRANSFER BBSEG TO P_SFILE.
ENDLOOP .
IF L_DOCCNT NE 0 .
WRITE :/ P_SFILE , 'has been created' .
WRITE :/ L_DOCCNT , 'DOCUMENTS UPLOADED' .
ELSE .
WRITE :/'INPUT FILE CONTAINS NO DATA' .
ENDIF .
CLOSE DATASET P_SFILE .
ENDFORM. " SET_DATA
Reward points if Useful
Regards
Gokul -
Copying the item text in case of multiple line items
Hi All,
I have a scenario where the sales order gets created in our SAP through a 850 idoc. The incoming idoc has only one item segment which carries the total order quantity ( for example say 1000). Since my company has contractual agreements with the end customer for doing multiple shipments , our sales department splits the total quantity into multiple line items in the sales order. Say splitting the 1000 quantities into 5 line items of 200 each.
The problem here is that when the sales order got created , all the related item text were copied only to the first line item ( of 1000 qty) and which is standard SAP. Since the order quantity was manually split, the related item text are not carried to the subsequent line items. The issue comes when an outbound (810) idoc is sent to customer . As I told earlier since only the first line item has the item text , the 810 idoc which was created for the first line item only has the item text . The rest of the 810 which were subsequently created for multiple shipments/invoices on different dates didn't have the item text in the 810's. This is becoming a major problem as the 810 files are failing at our trading partners end because of missing text.
Now my question is, Is there a way that I can make the item text copy automatically when multiple line items are created manually by business. Like is there a way where I can modify MV45AFZZ to copy the item text in their respective segemnts ( z003,z004 etc) to "N" number of line items.
Also please suggest if there is a better way of doing it. Suggstions are most welcome !!!.
Regards
AmrithHi,
First of all try to avoid doing select into corresponding fields. THis would improve the performance of the program.
Try to do a single fetch from the BSIS table . fetch the hkont, belnr, dmbtr fields in to a master internal table. Manipulate and play with the data as required. Don't hit the data base table more than once (unless it is required) . This would improve the performance of your code.
Try to code this way.
types: begin of ty_bsis,
hkont type hkont,
belnr type belnr_d,
dmbtr type dmbtr,
end of ty_bsis.
data: it_bsis type standard table of ty_bsis,
wa_bsis type ty_bsis,
select hkont belnr dmbtr
from bsis
into table it_bsis
WHERE HKONT IN S_RACCT
AND PRCTR IN P_PRCTR
AND MONAT IN S_POPER
AND BUKRS EQ P_BUKRS
AND GJAHR EQ P_GJAHR
AND PRCTR IN S_PRCTR.
Using the data availabe in the it_bsis, you can manipulate as required.
Hope this would be helpful
Regards
Ramesh Sundaram -
Pls help me to create SO using BDC for multiple line items (VA01)
Hi all,
My requirement is to create SO for multiple line items in ECC6.0
My recording for VA01 is like this.
start-of-selection.
perform open_group.
perform bdc_dynpro using 'SAPMV45A' '0101'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-AUART'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-AUART'
'ZOR'.
perform bdc_field using 'VBAK-VKORG'
'2000'.
perform bdc_field using 'VBAK-VTWEG'
'10'.
perform bdc_field using 'VBAK-SPART'
'05'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'KUAGV-KUNNR'
'100000'.
perform bdc_field using 'KUWEV-KUNNR'
'100000'.
perform bdc_field using 'RV45A-KETDAT'
'29.01.2008'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-WERKS(01)'.
perform bdc_field using 'RV45A-MABNR(01)'
'hrpocf'.
perform bdc_field using 'VBAP-POSNR(01)'
' 10'.
perform bdc_field using 'RV45A-KWMENG(01)'
' 55'.
perform bdc_field using 'VBAP-WERKS(01)'
'2010'.
perform bdc_dynpro using 'SAPLCEI0' '0109'.
perform bdc_field using 'BDC_CURSOR'
'RCTMS-MWERT(06)'.
perform bdc_field using 'BDC_OKCODE'
'=BACK'.
perform bdc_field using 'RCTMS-MNAME(01)'
'A_THICK_MM'.
perform bdc_field using 'RCTMS-MNAME(02)'
'A_WIDTH_MM'.
perform bdc_field using 'RCTMS-MNAME(03)'
'A_EQUIVALENT_SPEC'.
perform bdc_field using 'RCTMS-MNAME(04)'
'A_BATCH_WEIGHT_MAX_SI'.
perform bdc_field using 'RCTMS-MNAME(05)'
'A_BATCH_WEIGHT_MIN_SI'.
perform bdc_field using 'RCTMS-MNAME(06)'
'A_COIL_INNER_DIA_MM'.
perform bdc_field using 'RCTMS-MWERT(01)'
'3.2'.
perform bdc_field using 'RCTMS-MWERT(02)'
'1200'.
perform bdc_field using 'RCTMS-MWERT(03)'
'IS_11513_GR_D_1985'.
perform bdc_field using 'RCTMS-MWERT(04)'
'26.4'.
perform bdc_field using 'RCTMS-MWERT(05)'
'26.4'.
perform bdc_field using 'RCTMS-MWERT(06)'
'610'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'KUAGV-KUNNR'
'100000'.
perform bdc_field using 'KUWEV-KUNNR'
'100000'.
perform bdc_field using 'RV45A-KETDAT'
'29.01.2008'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai east'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-WERKS(02)'.
perform bdc_field using 'RV45A-MABNR(02)'
'hrpocf'.
perform bdc_field using 'VBAP-POSNR(02)'
' 11'.
perform bdc_field using 'RV45A-KWMENG(02)'
' 66'.
perform bdc_field using 'VBAP-WERKS(02)'
'2010'.
perform bdc_dynpro using 'SAPLCEI0' '0109'.
perform bdc_field using 'BDC_CURSOR'
'RCTMS-MWERT(06)'.
perform bdc_field using 'BDC_OKCODE'
'=BACK'.
perform bdc_field using 'RCTMS-MNAME(01)'
'A_THICK_MM'.
perform bdc_field using 'RCTMS-MNAME(02)'
'A_WIDTH_MM'.
perform bdc_field using 'RCTMS-MNAME(03)'
'A_EQUIVALENT_SPEC'.
perform bdc_field using 'RCTMS-MNAME(04)'
'A_BATCH_WEIGHT_MAX_SI'.
perform bdc_field using 'RCTMS-MNAME(05)'
'A_BATCH_WEIGHT_MIN_SI'.
perform bdc_field using 'RCTMS-MNAME(06)'
'A_COIL_INNER_DIA_MM'.
perform bdc_field using 'RCTMS-MWERT(01)'
'3.1'.
perform bdc_field using 'RCTMS-MWERT(02)'
'1250'.
perform bdc_field using 'RCTMS-MWERT(03)'
'IS_11513_GR_D_1985'.
perform bdc_field using 'RCTMS-MWERT(04)'
'20.084'.
perform bdc_field using 'RCTMS-MWERT(05)'
'20.084'.
perform bdc_field using 'RCTMS-MWERT(06)'
'610'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PDE3'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'KUAGV-KUNNR'
'100000'.
perform bdc_field using 'KUWEV-KUNNR'
'100000'.
perform bdc_field using 'RV45A-KETDAT'
'29.01.2008'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai east'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-POSNR(01)'.
perform bdc_field using 'RV45A-VBAP_SELKZ(01)'
'X'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=T\09'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-INCO2'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'VBKD-FKDAT'
'29.01.2008'.
perform bdc_field using 'VBAP-TAXM1'
'1'.
perform bdc_field using 'VBAP-TAXM2'
'1'.
perform bdc_field using 'VBAP-TAXM3'
'0'.
perform bdc_field using 'VBAP-TAXM4'
'0'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=TP_DELETE'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=TP_CREATE'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=TP_DETAIL'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPLSTXX' '1100'.
perform bdc_field using 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
perform bdc_field using 'BDC_OKCODE'
'=TXVB'.
perform bdc_field using 'RSTXT-TXLINE(02)'
'FDGFDG'.
perform bdc_dynpro using 'SAPLSTXX' '1100'.
perform bdc_field using 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
perform bdc_field using 'BDC_OKCODE'
'=TXBA'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=T\10'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-POSEX_E'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'VBAP-POSEX'
'108128'.
perform bdc_field using 'VBKD-BSTKD_E'
'3011192'.
perform bdc_field using 'VBKD-POSEX_E'
'000005'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PDE3'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'KUAGV-KUNNR'
'100000'.
perform bdc_field using 'KUWEV-KUNNR'
'100000'.
perform bdc_field using 'RV45A-KETDAT'
'29.01.2008'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai east'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-POSNR(02)'.
perform bdc_field using 'RV45A-VBAP_SELKZ(02)'
'X'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=T\09'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-INCO2'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'VBKD-FKDAT'
'29.01.2008'.
perform bdc_field using 'VBAP-TAXM1'
'1'.
perform bdc_field using 'VBAP-TAXM2'
'1'.
perform bdc_field using 'VBAP-TAXM3'
'0'.
perform bdc_field using 'VBAP-TAXM4'
'0'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=TP_DELETE'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=TP_CREATE'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=TP_DETAIL'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPLSTXX' '1100'.
perform bdc_field using 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
perform bdc_field using 'BDC_OKCODE'
'=TXVB'.
perform bdc_field using 'RSTXT-TXLINE(02)'
'GFGFDG'.
perform bdc_dynpro using 'SAPLSTXX' '1100'.
perform bdc_field using 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
perform bdc_field using 'BDC_OKCODE'
'=TXBA'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=T\10'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-POSEX_E'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'VBAP-POSEX'
'108128'.
perform bdc_field using 'VBKD-BSTKD_E'
'3011192'.
perform bdc_field using 'VBKD-POSEX_E'
'000005'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-POSEX'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'VBAP-POSEX'
'108128'.
perform bdc_field using 'VBKD-BSTKD_E'
'3011192'.
perform bdc_field using 'VBKD-POSEX_E'
'5'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=KKAU'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'KUAGV-KUNNR'
'100000'.
perform bdc_field using 'KUWEV-KUNNR'
'100000'.
perform bdc_field using 'RV45A-KETDAT'
'29.01.2008'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai east'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(01)'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\02'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-KONDA'.
perform bdc_field using 'VBAK-AUDAT'
'29.01.2008'.
perform bdc_field using 'VBAK-VKBUR'
'IN15'.
perform bdc_field using 'VBAK-WAERK'
'INR'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'VBKD-KDGRP'
'CF'.
perform bdc_field using 'VBKD-PLTYP'
'01'.
perform bdc_field using 'VBKD-KONDA'
'01'.
perform bdc_field using 'VBKD-BZIRK'
'NORTH'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\03'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-VSART'.
perform bdc_field using 'VBAK-VSBED'
'01'.
perform bdc_field using 'VBKD-KZAZU'
'X'.
perform bdc_field using 'VBKD-VSART'
'ER'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\05'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-INCO2'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'VBKD-FKDAT'
'29.01.2008'.
perform bdc_field using 'VBAK-TAXK1'
'1'.
perform bdc_field using 'VBAK-TAXK3'
'l'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\09'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-ZLSCH'.
perform bdc_field using 'VBKD-KTGRD'
'01'.
perform bdc_field using 'VBKD-ZLSCH'
'c'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=TP_DELETE'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=TP_CREATE'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=TP_DETAIL'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPLSTXX' '1100'.
perform bdc_field using 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
perform bdc_field using 'BDC_OKCODE'
'=TXVB'.
perform bdc_field using 'RSTXT-TXLINE(02)'
'BDFBFDB'.
perform bdc_dynpro using 'SAPLSTXX' '1100'.
perform bdc_field using 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
perform bdc_field using 'BDC_OKCODE'
'=TXBA'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\11'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=KSTC'.
perform bdc_dynpro using 'SAPLBSVA' '0300'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'J_STMAINT-ANWS(02)'.
perform bdc_field using 'J_STMAINT-ANWS(01)'
perform bdc_field using 'J_STMAINT-ANWS(02)'
'X'.
perform bdc_dynpro using 'SAPLBSVA' '0300'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'J_STMAINT-ANWS(03)'.
perform bdc_field using 'J_STMAINT-ANWS(02)'
perform bdc_field using 'J_STMAINT-ANWS(03)'
'X'.
perform bdc_dynpro using 'SAPLBSVA' '0300'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'J_STMAINT-ANWS(04)'.
perform bdc_field using 'J_STMAINT-ANWS(03)'
perform bdc_field using 'J_STMAINT-ANWS(04)'
'X'.
perform bdc_dynpro using 'SAPLBSVA' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=BACK'.
perform bdc_field using 'BDC_CURSOR'
'JOSTD-OBJNR'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-TXT_VBELN'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'KUAGV-KUNNR'
'100000'.
perform bdc_field using 'KUWEV-KUNNR'
'100000'.
perform bdc_field using 'RV45A-KETDAT'
'29.01.2008'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(01)'.
perform bdc_transaction using 'VA01'.
perform close_group.
if in excel file one row of records means i am succesfully creating SO.
But for multiple i am not getting idea to create SO.
My excel file details like this.In this excel file based on VBKD-BSTKD_E value i have to keep the records in line items.
VBAK-AUART :Order Type
VBAK-VKORG : Sales Org
VBAK-VTWEG : Distri Channel
VBAK-SPART : Division
VBAK-KUNNR : Sold-to-Party
VBPA-KUNNAR : Ship-to-Party
VBAK-BSTNK : PO No
VBAK-BSTDK : PO Date
VBAP-MATNR : Material No
A_THICK_MM
A_WIDTH_MM
A_EQUIVALENT_SPEC
A_COIL_INNER_DIA_MM
A_BATCH_WEIGHT_MIN_SI
A_BATCH_WEIGHT_MAX_SI
VBAP-KWMENG : Qty
VBAP-WERKS : Delivery Plant
VBKD-INCO2 : Incoterm2
VBKD-KONDA : Price Group
VBKD-VSART : Shipping Type
VBAK-TAXK1 : Cust Tax-1
VBAK-TAXK2 : Cust Tax-2
VBAK-TAXK3 : Cust Tax-3
VBAK-TAXK4 : Cust Tax-4
VBKD-ZLSCH : Payment Method
VBAP-TAXM1 : Mat tax clss-1
VBAP-TAXM2 : Mat tax clss-2
VBAP-TAXM3 : Mat tax clss-3
VBAP-TAXM4 : Mat tax clss-4
VBAP-POSEX : IMPS Order No
VBKD-BSTKD_E : old SO in 4.6c
VBKD-POSEX_E : old SO Item in 4.6c
Text Id : TDC No
Text Id-ES10 : Special Inst(Unld const & Veh)
ZOR,2000,10,5,100000,100000,PO NO 125,19.01.2008,HRPOCF,3.1,1200,IS_11513_GR_D_1985,610,20.084,20.084
51,2010,Mumbai,01Freight-pre paid,ER,2,0,L,0,c,1,1,0,0,108128,3011192, 1,PO 444 AMD 1,Spl Inst
based on VBKD-BSTKD_E line items has to create.
if VBKD-BSTKD_E = 3011192 is like 4 records in excel means for these 4 should be one SO
if it is changed to 3011193 then only different SO.
PLs If any one knows solution pls write some sample code for me.
If u send that code to my mail id also very thankful.
Pls help me this is urgent requirement.
[email protected]
Thanks & Regards,
J.LokeshIf u want to add Items data, u have to handle the Table control by writing the complete code.
U have to write code for 2 items, when u press enter u will get new row to enter new record one by one.
Narendra -
BDC to create SO(VA01) for multiple line items
Hi all,
My requirement is to create SO for multiple line items in ECC6.0
My recording for VA01 is like this.
start-of-selection.
perform open_group.
perform bdc_dynpro using 'SAPMV45A' '0101'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-AUART'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-AUART'
'ZOR'.
perform bdc_field using 'VBAK-VKORG'
'2000'.
perform bdc_field using 'VBAK-VTWEG'
'10'.
perform bdc_field using 'VBAK-SPART'
'05'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'KUAGV-KUNNR'
'100000'.
perform bdc_field using 'KUWEV-KUNNR'
'100000'.
perform bdc_field using 'RV45A-KETDAT'
'29.01.2008'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-WERKS(01)'.
perform bdc_field using 'RV45A-MABNR(01)'
'hrpocf'.
perform bdc_field using 'VBAP-POSNR(01)'
' 10'.
perform bdc_field using 'RV45A-KWMENG(01)'
' 55'.
perform bdc_field using 'VBAP-WERKS(01)'
'2010'.
perform bdc_dynpro using 'SAPLCEI0' '0109'.
perform bdc_field using 'BDC_CURSOR'
'RCTMS-MWERT(06)'.
perform bdc_field using 'BDC_OKCODE'
'=BACK'.
perform bdc_field using 'RCTMS-MNAME(01)'
'A_THICK_MM'.
perform bdc_field using 'RCTMS-MNAME(02)'
'A_WIDTH_MM'.
perform bdc_field using 'RCTMS-MNAME(03)'
'A_EQUIVALENT_SPEC'.
perform bdc_field using 'RCTMS-MNAME(04)'
'A_BATCH_WEIGHT_MAX_SI'.
perform bdc_field using 'RCTMS-MNAME(05)'
'A_BATCH_WEIGHT_MIN_SI'.
perform bdc_field using 'RCTMS-MNAME(06)'
'A_COIL_INNER_DIA_MM'.
perform bdc_field using 'RCTMS-MWERT(01)'
'3.2'.
perform bdc_field using 'RCTMS-MWERT(02)'
'1200'.
perform bdc_field using 'RCTMS-MWERT(03)'
'IS_11513_GR_D_1985'.
perform bdc_field using 'RCTMS-MWERT(04)'
'26.4'.
perform bdc_field using 'RCTMS-MWERT(05)'
'26.4'.
perform bdc_field using 'RCTMS-MWERT(06)'
'610'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'KUAGV-KUNNR'
'100000'.
perform bdc_field using 'KUWEV-KUNNR'
'100000'.
perform bdc_field using 'RV45A-KETDAT'
'29.01.2008'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai east'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-WERKS(02)'.
perform bdc_field using 'RV45A-MABNR(02)'
'hrpocf'.
perform bdc_field using 'VBAP-POSNR(02)'
' 11'.
perform bdc_field using 'RV45A-KWMENG(02)'
' 66'.
perform bdc_field using 'VBAP-WERKS(02)'
'2010'.
perform bdc_dynpro using 'SAPLCEI0' '0109'.
perform bdc_field using 'BDC_CURSOR'
'RCTMS-MWERT(06)'.
perform bdc_field using 'BDC_OKCODE'
'=BACK'.
perform bdc_field using 'RCTMS-MNAME(01)'
'A_THICK_MM'.
perform bdc_field using 'RCTMS-MNAME(02)'
'A_WIDTH_MM'.
perform bdc_field using 'RCTMS-MNAME(03)'
'A_EQUIVALENT_SPEC'.
perform bdc_field using 'RCTMS-MNAME(04)'
'A_BATCH_WEIGHT_MAX_SI'.
perform bdc_field using 'RCTMS-MNAME(05)'
'A_BATCH_WEIGHT_MIN_SI'.
perform bdc_field using 'RCTMS-MNAME(06)'
'A_COIL_INNER_DIA_MM'.
perform bdc_field using 'RCTMS-MWERT(01)'
'3.1'.
perform bdc_field using 'RCTMS-MWERT(02)'
'1250'.
perform bdc_field using 'RCTMS-MWERT(03)'
'IS_11513_GR_D_1985'.
perform bdc_field using 'RCTMS-MWERT(04)'
'20.084'.
perform bdc_field using 'RCTMS-MWERT(05)'
'20.084'.
perform bdc_field using 'RCTMS-MWERT(06)'
'610'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PDE3'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'KUAGV-KUNNR'
'100000'.
perform bdc_field using 'KUWEV-KUNNR'
'100000'.
perform bdc_field using 'RV45A-KETDAT'
'29.01.2008'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai east'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-POSNR(01)'.
perform bdc_field using 'RV45A-VBAP_SELKZ(01)'
'X'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=T\09'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-INCO2'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'VBKD-FKDAT'
'29.01.2008'.
perform bdc_field using 'VBAP-TAXM1'
'1'.
perform bdc_field using 'VBAP-TAXM2'
'1'.
perform bdc_field using 'VBAP-TAXM3'
'0'.
perform bdc_field using 'VBAP-TAXM4'
'0'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=TP_DELETE'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=TP_CREATE'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=TP_DETAIL'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPLSTXX' '1100'.
perform bdc_field using 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
perform bdc_field using 'BDC_OKCODE'
'=TXVB'.
perform bdc_field using 'RSTXT-TXLINE(02)'
'FDGFDG'.
perform bdc_dynpro using 'SAPLSTXX' '1100'.
perform bdc_field using 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
perform bdc_field using 'BDC_OKCODE'
'=TXBA'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=T\10'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-POSEX_E'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'VBAP-POSEX'
'108128'.
perform bdc_field using 'VBKD-BSTKD_E'
'3011192'.
perform bdc_field using 'VBKD-POSEX_E'
'000005'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PDE3'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'KUAGV-KUNNR'
'100000'.
perform bdc_field using 'KUWEV-KUNNR'
'100000'.
perform bdc_field using 'RV45A-KETDAT'
'29.01.2008'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai east'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-POSNR(02)'.
perform bdc_field using 'RV45A-VBAP_SELKZ(02)'
'X'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=T\09'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-INCO2'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'VBKD-FKDAT'
'29.01.2008'.
perform bdc_field using 'VBAP-TAXM1'
'1'.
perform bdc_field using 'VBAP-TAXM2'
'1'.
perform bdc_field using 'VBAP-TAXM3'
'0'.
perform bdc_field using 'VBAP-TAXM4'
'0'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=TP_DELETE'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=TP_CREATE'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=TP_DETAIL'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPLSTXX' '1100'.
perform bdc_field using 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
perform bdc_field using 'BDC_OKCODE'
'=TXVB'.
perform bdc_field using 'RSTXT-TXLINE(02)'
'GFGFDG'.
perform bdc_dynpro using 'SAPLSTXX' '1100'.
perform bdc_field using 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
perform bdc_field using 'BDC_OKCODE'
'=TXBA'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=T\10'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-POSEX_E'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'VBAP-POSEX'
'108128'.
perform bdc_field using 'VBKD-BSTKD_E'
'3011192'.
perform bdc_field using 'VBKD-POSEX_E'
'000005'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-POSEX'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'VBAP-POSEX'
'108128'.
perform bdc_field using 'VBKD-BSTKD_E'
'3011192'.
perform bdc_field using 'VBKD-POSEX_E'
'5'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=KKAU'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'KUAGV-KUNNR'
'100000'.
perform bdc_field using 'KUWEV-KUNNR'
'100000'.
perform bdc_field using 'RV45A-KETDAT'
'29.01.2008'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai east'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(01)'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\02'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-KONDA'.
perform bdc_field using 'VBAK-AUDAT'
'29.01.2008'.
perform bdc_field using 'VBAK-VKBUR'
'IN15'.
perform bdc_field using 'VBAK-WAERK'
'INR'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'VBKD-KDGRP'
'CF'.
perform bdc_field using 'VBKD-PLTYP'
'01'.
perform bdc_field using 'VBKD-KONDA'
'01'.
perform bdc_field using 'VBKD-BZIRK'
'NORTH'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\03'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-VSART'.
perform bdc_field using 'VBAK-VSBED'
'01'.
perform bdc_field using 'VBKD-KZAZU'
'X'.
perform bdc_field using 'VBKD-VSART'
'ER'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\05'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-INCO2'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'VBKD-FKDAT'
'29.01.2008'.
perform bdc_field using 'VBAK-TAXK1'
'1'.
perform bdc_field using 'VBAK-TAXK3'
'l'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\09'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-ZLSCH'.
perform bdc_field using 'VBKD-KTGRD'
'01'.
perform bdc_field using 'VBKD-ZLSCH'
'c'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=TP_DELETE'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=TP_CREATE'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=TP_DETAIL'.
perform bdc_field using 'LV70T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPLSTXX' '1100'.
perform bdc_field using 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
perform bdc_field using 'BDC_OKCODE'
'=TXVB'.
perform bdc_field using 'RSTXT-TXLINE(02)'
'BDFBFDB'.
perform bdc_dynpro using 'SAPLSTXX' '1100'.
perform bdc_field using 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
perform bdc_field using 'BDC_OKCODE'
'=TXBA'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\11'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=KSTC'.
perform bdc_dynpro using 'SAPLBSVA' '0300'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'J_STMAINT-ANWS(02)'.
perform bdc_field using 'J_STMAINT-ANWS(01)'
perform bdc_field using 'J_STMAINT-ANWS(02)'
'X'.
perform bdc_dynpro using 'SAPLBSVA' '0300'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'J_STMAINT-ANWS(03)'.
perform bdc_field using 'J_STMAINT-ANWS(02)'
perform bdc_field using 'J_STMAINT-ANWS(03)'
'X'.
perform bdc_dynpro using 'SAPLBSVA' '0300'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'J_STMAINT-ANWS(04)'.
perform bdc_field using 'J_STMAINT-ANWS(03)'
perform bdc_field using 'J_STMAINT-ANWS(04)'
'X'.
perform bdc_dynpro using 'SAPLBSVA' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=BACK'.
perform bdc_field using 'BDC_CURSOR'
'JOSTD-OBJNR'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-TXT_VBELN'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'VBKD-BSTKD'
'open SO'.
perform bdc_field using 'VBKD-BSTDK'
'29.01.2008'.
perform bdc_field using 'KUAGV-KUNNR'
'100000'.
perform bdc_field using 'KUWEV-KUNNR'
'100000'.
perform bdc_field using 'RV45A-KETDAT'
'29.01.2008'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'29.01.2008'.
perform bdc_field using 'VBKD-INCO1'
'EXW'.
perform bdc_field using 'VBKD-INCO2'
'mumbai'.
perform bdc_field using 'VBKD-ZTERM'
'0001'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(01)'.
perform bdc_transaction using 'VA01'.
perform close_group.
if in excel file one row of records means i am succesfully creating SO.
But for multiple i am not getting idea to create SO.
My excel file details like this.In this excel file based on VBKD-BSTKD_E value i have to keep the records in line items.
VBAK-AUART :Order Type
VBAK-VKORG : Sales Org
VBAK-VTWEG : Distri Channel
VBAK-SPART : Division
VBAK-KUNNR : Sold-to-Party
VBPA-KUNNAR : Ship-to-Party
VBAK-BSTNK : PO No
VBAK-BSTDK : PO Date
VBAP-MATNR : Material No
A_THICK_MM
A_WIDTH_MM
A_EQUIVALENT_SPEC
A_COIL_INNER_DIA_MM
A_BATCH_WEIGHT_MIN_SI
A_BATCH_WEIGHT_MAX_SI
VBAP-KWMENG : Qty
VBAP-WERKS : Delivery Plant
VBKD-INCO2 : Incoterm2
VBKD-KONDA : Price Group
VBKD-VSART : Shipping Type
VBAK-TAXK1 : Cust Tax-1
VBAK-TAXK2 : Cust Tax-2
VBAK-TAXK3 : Cust Tax-3
VBAK-TAXK4 : Cust Tax-4
VBKD-ZLSCH : Payment Method
VBAP-TAXM1 : Mat tax clss-1
VBAP-TAXM2 : Mat tax clss-2
VBAP-TAXM3 : Mat tax clss-3
VBAP-TAXM4 : Mat tax clss-4
VBAP-POSEX : IMPS Order No
VBKD-BSTKD_E : old SO in 4.6c
VBKD-POSEX_E : old SO Item in 4.6c
Text Id : TDC No
Text Id-ES10 : Special Inst(Unld const & Veh)
ZOR,2000,10,5,100000,100000,PO NO 125,19.01.2008,HRPOCF,3.1,1200,IS_11513_GR_D_1985,610,20.084,20.084
51,2010,Mumbai,01Freight-pre paid,ER,2,0,L,0,c,1,1,0,0,108128,3011192, 1,PO 444 AMD 1,Spl Inst
based on VBKD-BSTKD_E line items has to create.
if VBKD-BSTKD_E = 3011192 is like 4 records in excel means for these 4 should be one SO
if it is changed to 3011193 then only different SO.
PLs If any one knows solution pls write some sample code for me.
If u send that code to my mail id also very thankful.
[email protected]
Pls help me this is urgent requirement.
Thanks & Regards,
J.LokeshHI,
Instead of using BDC , why dont you make use of BAPI.
As you are on ECC, you can make use of BAPI BAPI_SALESORDER_CREATEFROMDAT2
Collect all your records based on PO # and pass them into line item table structure ORDER_ITEMS_IN.
*--Logic something like this.
loop at it_exceldata into l_line.
loop at it_exceldata into l_so where bstkd_e eq l_line-bstkd.
*This will loop at all the same PO#
*collect the data related into corr tables. and append
endloop.
*Now you are outside the loop.
*Call the BAPI to update this SO
delete it_exceldata where bstkd_e eq l_line-bstkd_e.
endloop.
Also pass all the necessary data to header structure ORDER_HEADER_IN
Do not check for Sy-subrc at the end of execution.
Instead read the Return table with message type 'A' or 'E whichi means there is an error/abort in BAPI execution.
Remember to expicitly COMMIT_WORK after succesfull execution of BAPI using BAPI_TRANSACTION_COMMIT
Please let me know , if you need more help in this
Gary. -
BDC for multiple line items (VA01)
Hi Experts,
I create a BDC for VA01 transaction for single line item in that now i want to upload multiple line items also with o/p of total no. of records uploaded, no. of records posted and the no. of error records...
Can any body explain with sample code...Hi,
if the flat file is containing header and item records...
first split those records tooo two internal tables header and item..
Loop at header ...
process of recording steps for header....
Loop at item...
here create a varialbe with char 2 .. for index value....
process of item recording steps..
increment the index value by 1....
here u have to pass 'p+' OK_CODE..
Endloop ..(item)
Endloop...(header)
for more info goo through this link...
http://www.sap-img.com/bdc.htm
hope helpful
Raghunath.S -
hi all,
i am developing bdc program to upload multiple line items for ml10.
i am uploading folling fields
spec_no
astyp
txz01,
sort1,
waers,
matkl,
ekorg,
srvpos ' service number
menge. 'quantity
service number and quantity are multiple line items.
i have developed a code which is taking single record only, it is not working for multiple service no and quantity.
include bdcrecx1.
parameters: filename like rlgrap-filename.
data: begin of record,
SPEC_NO(10),
ASTYP(4),
TXZ01(40),
SORT1(20),
WAERS(5),
MATKL(9),
EKORG(4),
NEW_ROW(10),
SRVPOS(18),
MENGE(13),
end of record.
data: itab_program like record occurs 0 with header line.
At Selection Screen
at selection-screen on value-request for filename.
perform query_filename changing filename.
*START-OF-SELECTION
start-of-selection.
*-- Upload flat data to ITAB.
perform upload_to_itab.
*{ chg001 -- modified as per requirement
perform open_group.
loop at itab_program.
perform upload_programs.
endloop.
perform close_group.
FORM UPLOAD_TO_ITAB *
form upload_to_itab.
call function 'WS_UPLOAD'
exporting
CODEPAGE = ' '
filename = filename
filetype = 'DAT'
HEADLEN = ' '
LINE_EXIT = ' '
TRUNCLEN = ' '
USER_FORM = ' '
USER_PROG = ' '
DAT_D_FORMAT = ' '
IMPORTING
FILELENGTH =
tables
data_tab = itab_program
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.
write : 'File opening error.'.
endif.
endform.
FORM QUERY_FILENAME *
--> P_FILENAME *
form query_filename changing p_filename.
data : tmp_filename like filename.
call function 'WS_FILENAME_GET'
exporting
def_filename = filename
mask = ',.txt,.txt.'
mode = 'O'
title = 'Select the file to Upload'
importing
filename = tmp_filename
exceptions
inv_winsys = 01
no_batch = 02
selection_cancel = 03
selection_error = 04.
if sy-subrc = 0.
filename = tmp_filename.
endif.
endform.
*perform open_group.
*& Form UPLOAD_programs
text
--> p1 text
<-- p2 text
form upload_programs.
perform bdc_dynpro using 'SAPLMLSM' '0100'.
perform bdc_field using 'BDC_CURSOR'
'TEMP_SPEC-ASTYP'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'TMP_SPEC-SPEC_NO'
ITAB_PROGRAM-SPEC_NO.
perform bdc_field using 'TMP_SPEC-ASTYP'
ITAB_PROGRAM-ASTYP.
*****************************************************************SCREEN1
perform bdc_dynpro using 'SAPLMLSM' '0200'.
perform bdc_field using 'BDC_CURSOR'
'TMP_SPEC-EKORG'.
perform bdc_field using 'BDC_OKCODE'
'=SRV'.
perform bdc_field using 'TMP_SPEC-TXZ01'
ITAB_PROGRAM-TXZ01.
perform bdc_field using 'TMP_SPEC-SORT1'
ITAB_PROGRAM-SORT1.
perform bdc_field using 'TMP_SPEC-WAERS'
ITAB_PROGRAM-WAERS.
perform bdc_field using 'TMP_SPEC-MATKL'
ITAB_PROGRAM-MATKL.
perform bdc_field using 'TMP_SPEC-EKORG'
ITAB_PROGRAM-EKORG.
*****************************************************************END OF SCREEN2
perform bdc_dynpro using 'SAPLMLSP' '0201'.
perform bdc_field using 'BDC_OKCODE'
'=BZE'.
*perform bdc_field using 'RM11P-HEADTEXT'
ITAB_PROGRAM-TXZ01.
perform bdc_field using 'BDC_SUBSCR'
'SAPLMLSP'.
perform bdc_dynpro using 'SAPLMLSP' '0201'.
perform bdc_field using 'BDC_OKCODE'
'=BZE'.
perform bdc_field using 'BDC_CURSOR'
'ESLL-MENGE(01)'.
perform bdc_field using 'ESLL-SRVPOS(01)'
ITAB_PROGRAM-SRVPOS.
perform bdc_field using 'ESLL-MENGE(01)'
ITAB_PROGRAM-MENGE.
perform bdc_dynpro using 'SAPLMLSP' '0201'.
perform bdc_field using 'BDC_OKCODE'
'=SAV'.
perform bdc_field using 'BDC_SUBSCR'
'SAPLMLSP'.
perform bdc_transaction using 'ML10'.
endform. " UPLOAD_programs
can any body help me in this regard.
thanks in advance
sivaLoop at itab_program.
< Here will be your BDC Program>
call transaction..... .
endloop.
and all the records in you internal table itab_program will get updated...
Regards.
Jayant
<b>Please award if helpful</b> -
Problem in printing multiple line items
Hi,
i designed a SAPSCRIPT FORM.When i execute the t-code MB01 by giving PO which has multiple line items , output type is invisible.
But when i iexecute the t-code MB01 by giving PO which has single item , output type is visible and form is printing.
Do i need to copy the print program and make changes in there or if i change elements in the form will that helps in printing multiple line items.
thanks.HI,
wat i understand is u r trying to loop at a variable window .but tht is not suggestable.
write a loop in program lines. read the values in to different variables and the try printing them as text elements that will solve the problem.
or else in other way use a template and that can also solve the problem. -
Create ecatt script for one sales order creation with multiple line items
Hi ,
I want to create a ecatt script for one sales order creation with multiple line items. Preferably SAP GUI.
This selection of data will be from an external file/ variants which will have only one row of data in it.
Firstly: I have to sort the external file having same PO Numbers in an order.Group them together.
Second: I have to create sales order for those many line items having same PO Number.
Best Regard
TaranumHi Micky
Firstl you should upload the Line items for a particular sales Order in an Internal table
and then pass that internal table to your BAPI during your coding corresponding to a particu;lar sales order
In case of any issues pls revert back
Reward points if helpful
Regards
Hitesh -
Unable to create PO with multiple line items through LSMW-BAPI method
Hi All,
I have a requirement of creating PO through LSMW. I can't use LSMW standard batch input program since there are some fileds not available and also it has many limitations. I'm using LSMW-BAPI method ( Business object BUS2012) which create IDOC and uses BAPI_PO_CREATE1 to ultimately post the PO in the system. I am trying to create PO from a single file which contains both Header and Item data.
Now my problem is that everytime PO is being created with Single line item only. Everytime I am giving multiple item data in the source file LSMW is preparing multiple IDOCs for multiple line items. As per my understanding this is happenng since header and item is in the same hierarchy level of IDOC type PORDCR102 and the control record is inserted for every line item in the source file.
It seems that through LSMW-BAPI it is not possible to create PO with multiple line items. Can anybody provide some input regarding this? Thanks in advance.
BR,
Atanu MukherjeeSolved by myself.
Earlier the problem was that LSMW was not being able to recognize items under same header. It was creating new IDOCs every time it gets a new item. To enable this we need to create two structure HEADERDATA and ITEMDATA. Two additional identifier fields with identifier value 'H' and 'I' should be added in these two structures respectively. Then we need one sequential file with the identifiers field followed by the header and Item data. Example:
H~header data
I~item data
I~item data
This would help the standard program to understand what are the items under same header and ultimately create PO with multiple line items.
BR,
Atanu Mukherjee -
How to insert multiple line items in fv60 using bdc.
Hi all,
How to insert multiple line items in fv60 using bdcshi
chk this
DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA : IT_MESSAGES LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA : V_EBELP(30) , V_MENGE(30) , V_WERKS(30), V_EMATN(30) ,
V_PEINH(30).
DATA : FILE TYPE STRING, V_MSG(100) , V_IND(2) TYPE N , FLAG VALUE 'X'.
PARAMETERS: P_FILE(50) TYPE C DEFAULT 'C:\ME21_TEST'.
DATA : BEGIN OF ITAB OCCURS 0,
IND(02),
LIFNR_001(010),
data element: BSART
BSART_002(004),
data element: BEDAT
data element: EKORG
EKORG_004(004),
EKGRP_006(003),
data element: LPEIN
LPEIN_005(001),
data element: EMATNR
EMATN_01_007(018),
data element: EWERK
WERKS_01_008(004),
data element: EPEIN
PEINH_01_009(006),
data element: EWERK
MENGE_01_013(017),
data element: AUFEP
EBELP_014(005),
data element: AUFEP
END OF ITAB.
START-OF-SELECTION.
FILE = P_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = FILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = ITAB
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
SORT ITAB BY IND.
START-OF-SELECTION.
LOOP AT ITAB.
REFRESH IT_MESSAGES.
<b>V_IND = V_IND + 1.</b>
<b>AT NEW IND.</b>
<b>READ TABLE ITAB INDEX SY-TABIX.</b>
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0100'.
PERFORM BDC_FIELD USING 'EKKO-LIFNR'
ITAB-LIFNR_001.
PERFORM BDC_FIELD USING 'RM06E-BSART'
ITAB-BSART_002.
*perform bdc_field using 'RM06E-BEDAT'
ITAB-BEDAT_003.
PERFORM BDC_FIELD USING 'EKKO-EKORG'
ITAB-EKORG_004.
PERFORM BDC_FIELD USING 'RM06E-LPEIN'
ITAB-LPEIN_005.
PERFORM BDC_FIELD USING 'EKKO-EKGRP'
ITAB-EKGRP_006.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
ENDAT.
<b>PERFORM BDC_DYNPRO USING 'SAPMM06E' '0120'.
CONCATENATE 'EKPO-EMATN(' V_IND ')' INTO V_EMATN.
PERFORM BDC_FIELD USING V_EMATN
ITAB-EMATN_01_007.
CONCATENATE 'EKPO-WERKS(' V_IND ')' INTO V_WERKS.
PERFORM BDC_FIELD USING V_WERKS
ITAB-WERKS_01_008.
CONCATENATE 'EKPO-PEINH(' V_IND ')' INTO V_PEINH.
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0120'.
PERFORM BDC_FIELD USING V_PEINH
ITAB-PEINH_01_009.
*CONCATENATE 'EKPO-MENGE(' V_IND ')' INTO V_MENGE.
*perform bdc_dynpro using 'SAPMM06E' '0120'.
*perform bdc_field using V_MENGE
ITAB-MENGE_01_013.
*CONCATENATE 'EKPO-EBELP(' V_IND ')' INTO V_EBELP.
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0120'.
PERFORM BDC_FIELD USING 'RM06E-EBELP'
ITAB-EBELP_014.</b>PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
AT END OF IND.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
ENDAT.
CALL TRANSACTION 'ME21' USING IT_BDCDATA MODE 'A'
UPDATE 'S'
MESSAGES INTO IT_MESSAGES.
LOOP AT IT_MESSAGES WHERE MSGTYP = 'E' OR MSGTYP = 'A'.
IF FLAG = 'X'.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
DEST = FILLER8
GROUP = 'GAMY_FAILURE'
HOLDDATE = FILLER8
KEEP = 'X'
USER = SY-UNAME
RECORD = FILLER1
PROG = SY-CPROG
IMPORTING
QID =
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR FLAG.
ENDIF.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'ME21'
POST_LOCAL = NOVBLOCAL
PRINTING = NOPRINT
SIMUBATCH = ' '
CTUPARAMS = ' '
TABLES
DYNPROTAB = IT_BDCDATA
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = IT_MESSAGES-MSGID
LANG = 'EN'
NO = IT_MESSAGES-MSGNR
V1 = IT_MESSAGES-MSGV1
V2 = IT_MESSAGES-MSGV2
V3 = IT_MESSAGES-MSGV3
V4 = IT_MESSAGES-MSGV4
IMPORTING
MSG = V_MSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2
WRITE : / V_MSG.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
ENDLOOP.
IF FLAG NE 'X'.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 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.
ENDIF.
Start new screen *
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR IT_BDCDATA.
IT_BDCDATA-PROGRAM = PROGRAM.
IT_BDCDATA-DYNPRO = DYNPRO.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
ENDFORM.
Insert field *
FORM BDC_FIELD USING FNAM FVAL.
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = FNAM.
IT_BDCDATA-FVAL = FVAL.
APPEND IT_BDCDATA. -
LSMW- Recording : Multiple Line Items
I am trying to create an LSMW recording that simulates transaction O3I7.
The thing is that we have different line items. This is similar to a sales order where we have header details and items details.
I created a recording. Then I created two structures. One header Structure and one Item structure. I define the specific header fields under the header structure and the item fields under the item structure.
However LSMW gives me an error. Because in LSMW each recording is considered as one target structure. I can't have more source structures than Target structures. Since I have One recording LSMW gives me an error.
I tried to create two recordings but this does not work since LSMW will read each one as a different transaction.
Does anyone know how to create LSMW recording with multiple line items so he/she can help?
ThxHi,
Not sure about the transaction that you have mentioned. However, in LSMW recording, you can load the items along with the header in 2 steps using 2 data files.
Step1: Create the header along with the first line item. Here you use a file which contains the header data along with the first line item data.
Step2. Add subsequent line items to the header. In this case you need to enter the transaction in change mode. The data file may contain items data only. Please be sure to have an identifier at header level to add the items in that specific document.
Hope this helps.
Best Regards, Murugesh -
Multiple line items one with default values
Hi All
We have a flat file coming into xi that needs to be mapped to an idoc, the idoc will have multiple line items.
The first line item must have default values but the from the second line item and on must have dynamic value from file? How Can this be achieved?
RegardsHi,
I didnt get the the exact prb you have been facing...
But from my understabding,
Try giving constants for the default values of first Line Item.
Then, directly map the file data to the second line items onwards..
Regards,
Swetha,
Maybe you are looking for
-
I'm experiencing problems with my sound. My ringtone works, my alarms work, my you tube videos play. But I can not get My music that I have purchased to play nor will my Instagram videos make any sound but the video does play. My volume is up and the
-
I'm looking for a list of printers compatible with Airport Extreme
My existing HP printer is not compatible with Airport Extreme and I want to be able to print from all of my Apple devices. I'm looking for a new photo quality printer / scanner / copier which will work wirelessly with all my devices.
-
Insufficient rights - How to determine the correct rights?
All, Does anyone know how to determine the correct rights if you get the error message "Insufficient rights for operation"? In SAP backend systems you can start transaction SU53 to check your "missing" authorizations, but is something like that also
-
Photoshop doesnt load after installing a third party plug in on Mac
I Installed a third party plug in : WhiteWindowWorkaround.plugin1_0_6.zip This was supposed to fix a problem with the polygonal lasso tool on Mac OSX. I use Macbook Air with the latest OSX and I had installed 'creative suite 6 design standard" Afte
-
Adobe interactive forms for VA01
I'm looking for a list of all Adobe interactive forms that are available for ECC Enh4... we are looking to create an adobe template for SAP transaction VA01 (Create Sales Order). I've looked at table FPLAYOUT but the form names are very cryptic. Than