Poupulate using BAPI
Hello,
Please give abap program making used of the BAPI function
to create purchase order creation using ME21N after importing the data from an external system.
Regards,
Sarath.
Hi Naren
Check the below code.
report zmmb_po_upload.
data : begin of itab occurs 0,
collective_no(10) type c,
company_code(4) type c,
doc_type(4) type c,
vend_code(10) type c,
purch_org(4) type c,
purch_grp(3) type c,
currency(3) type c,
wo_date(10) type c,
line_item(5) type c,
itemtext(40) type c,
plant(4) type c,
matgroup(10) type c,
taxcode(2) type c,
itemcat(1) type c,
actasgntcat(1) type c,
deldate(10) type c,
glaccount(10) type c,
internalorder(12) type c,
network(12) type c,
activity(4) type c,
serlineitem(5) type c,
serviuceno(18) type c,
servicetext(40) type c,
quantity(17) type c,
unit(3) type c,
grossprice(17) type c,
end of itab.
*data : begin of itab occurs 0,
collective_no(10) type c,
doc_type(4) type c,
vend_code(10) type c,
purch_org(4) type c,
purch_grp(3) type c,
company_code(4) type c,
wo_date(10) type c,
line_item(5) type c,
actasgntcat(1) type c,
itemcat(1) type c,
itemtext(40) type c,
deldate(10) type c,
plant(4) type c,
matgroup(10) type c,
taxcode(2) type c,
serlineitem(5) type c,
serviuceno(18) type c,
servicedesc(40) type c,
quantity(17) type c,
unit(3) type c,
grossprice(17) type c,
glaccount(10) type c,
costcenter(10) type c,
internalorder(12) type c,
wbselement(24) type c,
conditiontype(4) type c,
amount(17) type c,
currency(3) type c,
end of itab.
data : xfile type string.
data : poheader like bapimepoheader,
poheaderx like bapimepoheaderx,
testrun like bapiflag-bapiflag value 'X',
poitem like bapimepoitem occurs 0 with header line,
poitemx like bapimepoitemx occurs 0 with header line,
poschedule like bapimeposchedule occurs 0 with header line,
poschedulex like bapimeposchedulx occurs 0 with header line,
poservices like bapiesllc occurs 0 with header line,
poaccount like bapimepoaccount occurs 0 with header line,
poaccountx like bapimepoaccountx occurs 0 with header line,
posrvact like bapiesklc occurs 0 with header line,
pocond like bapimepocondheader occurs 0 with header line,
pocondx like bapimepocondx occurs 0 with header line,
return like bapiret2 occurs 0 with header line,
po_number like bapimepoheader-po_number,
expheader like bapimepoheader,
wait like bapita-wait value 'X'.
parameter : fname like ibipparms-path obligatory.
at selection-screen on value-request for fname.
clear fname.
call function 'F4_FILENAME'
importing
file_name = fname
exceptions
others = 1.
at selection-screen.
if sy-ucomm = 'ONLI'.
xfile = fname.
clear itab. refresh itab.
call function 'GUI_UPLOAD'
exporting
filename = xfile
filetype = 'ASC'
has_field_separator = 'X'
tables
data_tab = itab.
if sy-subrc <> 0.
message e999(zm) with 'Error: Uploding file'.
endif.
endif.
start-of-selection.
data : wa_itab like itab.
data : counter(10) type n,
packno like ekpo-packno,
subpackno like bapiesllc-subpckg_no,
serial_no like bapimepoaccount-serial_no,
service_line(2) type n.
clear : poheader, poitem, poschedule, poservices, poaccount,
pocond, return, testrun, po_number, expheader, posrvact.
clear : poheaderx, poitemx, poschedulex, poaccountx, counter,
packno, subpackno, serial_no, service_line.
refresh : poitem, poschedule, poservices, poaccount, pocond,
return, posrvact.
refresh : poitemx, poschedulex, poaccountx.
sort itab by collective_no line_item serlineitem.
loop at itab.
clear wa_itab.
wa_itab = itab.
at new collective_no.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = wa_itab-vend_code
importing
output = wa_itab-vend_code.
poheader-vendor = wa_itab-vend_code.
poheader-doc_type = wa_itab-doc_type.
poheader-purch_org = wa_itab-purch_org.
poheader-pur_group = wa_itab-purch_grp.
poheader-comp_code = wa_itab-company_code.
concatenate wa_itab-wo_date6(4) wa_itab-wo_date3(2)
wa_itab-wo_date+0(2) into wa_itab-wo_date.
poheader-doc_date = wa_itab-wo_date.
poheader-collect_no = wa_itab-collective_no.
poheader-currency = wa_itab-currency.
poheaderx-vendor = 'X'.
poheaderx-doc_type = 'X'.
poheaderx-purch_org = 'X'.
poheaderx-pur_group = 'X'.
poheaderx-comp_code = 'X'.
poheaderx-doc_date = 'X'.
poheaderx-collect_no = 'X'.
poheaderx-currency = 'X'.
endat.
at new line_item.
clear counter.
clear service_line.
counter = counter + 1.
if packno is initial.
select max( packno ) into packno from eslh.
packno = packno + 1.
subpackno = packno + 1.
else.
packno = subpackno + 1.
subpackno = packno + 1.
endif.
poitem-po_item = wa_itab-line_item.
poitem-acctasscat = wa_itab-actasgntcat.
poitem-item_cat = wa_itab-itemcat.
poitem-short_text = wa_itab-itemtext.
poitem-plant = wa_itab-plant.
poitem-matl_group = wa_itab-matgroup.
poitem-tax_code = wa_itab-taxcode.
poitem-quantity = 1.
poitem-pckg_no = packno.
append poitem. clear poitem.
poitemx-po_item = wa_itab-line_item.
poitemx-acctasscat = 'X'.
poitemx-item_cat = 'X'.
poitemx-short_text = 'X'.
poitemx-plant = 'X'.
poitemx-matl_group = 'X'.
poitemx-tax_code = 'X'.
poitemx-quantity = 'X'.
poitemx-pckg_no = 'X'.
append poitemx. clear poitemx.
poschedule-po_item = wa_itab-line_item.
poschedule-sched_line = 1.
poschedule-delivery_date = wa_itab-deldate.
poschedule-quantity = 1.
append poschedule. clear poschedule.
poschedulex-po_item = wa_itab-line_item.
poschedulex-sched_line = 1.
poschedulex-delivery_date = 'X'.
poschedulex-quantity = 'X'.
append poschedulex. clear poschedulex.
serial_no = serial_no + 1.
poaccount-po_item = wa_itab-line_item.
poaccount-serial_no = serial_no.
poaccount-serial_no = 1.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = wa_itab-glaccount
importing
output = wa_itab-glaccount.
poaccount-gl_account = wa_itab-glaccount.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = wa_itab-costcenter
importing
output = wa_itab-costcenter.
poaccount-costcenter = wa_itab-costcenter.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = wa_itab-internalorder
importing
output = wa_itab-internalorder.
poaccount-orderid = wa_itab-internalorder.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = wa_itab-network
importing
output = wa_itab-network.
poaccount-network = wa_itab-network.
call function 'CONVERSION_EXIT_NUMCV_INPUT'
exporting
input = wa_itab-activity
importing
output = wa_itab-activity.
poaccount-activity = wa_itab-activity.
append poaccount. clear poaccount.
poaccountx-po_item = wa_itab-line_item.
poaccountx-serial_no = serial_no.
poaccountx-gl_account = 'X'.
poaccountx-costcenter = 'X'.
poaccountx-orderid = 'X'.
poaccountx-network = 'X'.
poaccountx-activity = 'X'.
append poaccountx. clear poaccountx.
endat.
at new serlineitem.
if counter = 1.
poservices-pckg_no = packno.
poservices-line_no = counter.
poservices-subpckg_no = subpackno.
poservices-short_text = wa_itab-itemtext.
append poservices. clear poservices.
posrvact-pckg_no = packno.
posrvact-line_no = counter.
posrvact-percentage = 100.
posrvact-serial_no = serial_no.
posrvact-serial_no = 1.
append posrvact. clear posrvact.
endif.
counter = counter + 1.
service_line = service_line + 1.
poservices-pckg_no = subpackno.
poservices-line_no = counter.
poservices-ext_line = wa_itab-serlineitem.
if not wa_itab-serviuceno is initial.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = wa_itab-serviuceno
importing
output = wa_itab-serviuceno.
endif.
poservices-service = wa_itab-serviuceno.
poservices-short_text = wa_itab-servicetext.
poservices-quantity = wa_itab-quantity.
poservices-base_uom = wa_itab-unit.
poservices-gr_price = wa_itab-grossprice.
append poservices. clear poservices.
posrvact-pckg_no = subpackno.
posrvact-line_no = counter.
posrvact-SERNO_LINE = service_line.
posrvact-SERNO_LINE = serial_no.
posrvact-percentage = 100.
posrvact-serial_no = serial_no.
posrvact-serial_no = 1.
append posrvact. clear posrvact.
endat.
at end of collective_no.
call function 'BAPI_PO_CREATE1'
exporting
poheader = poheader
poheaderx = poheaderx
importing
exppurchaseorder = po_number
expheader = expheader
tables
return = return
poitem = poitem
poitemx = poitemx
poschedule = poschedule
poschedulex = poschedulex
poaccount = poaccount
poaccountx = poaccountx
poservices = poservices
posrvaccessvalues = posrvact.
if not po_number is initial.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = wait.
endif.
write :/ wa_itab.
write :/ sy-uline.
loop at return.
write :/ return-message.
endloop.
write :/ sy-uline.
clear : poheader, poitem, poschedule, poservices, poaccount,
pocond, return, testrun, po_number, expheader,
posrvact.
clear : poheaderx, poitemx, poschedulex, poaccountx, counter,
packno, subpackno, serial_no, service_line.
refresh : poitem, poschedule, poservices, poaccount, pocond,
return, posrvact.
refresh : poitemx, poschedulex, poaccountx.
endat.
endloop.
end-of-selection.
Hope this helps !!!
Britto
Similar Messages
-
Creating Service entry sheet using bapi BAPI_ENTRYSHEET_CREATE
Hello Guys,
I am trying to create a service entry sheet for single line item only using bapi BAPI_ENTRYSHEET_CREATE.
its is creating Service entry document but not populating the line item for me (here only one line item for me).
If you guys have sample code (how the poupulate the internal tables) could you please send it across?.
Thanks in Advance..
SteevanHi,
Creating Service entry sheet using bapi BAPI_ENTRYSHEET_CREATE
For creating service entry sheet follow below link and it helps to you.
http://wiki.sdn.sap.com/wiki/display/ABAP/CreatingServiceEntrySheetusing+BAPI
Regards,
Sekhar -
Deletion of Scheduling Agreement and Delivery Schedule using BAPI
Hi SAP MM Gurus,
Please assist in inquiry below:
My scenario is that I am trying to delete delivery schedules and scheduling lines using BAPIs. I have no issues when there is no GR made yet for the delivery schedules. The error arises when there are already existing Goods Receipts and Invoices for the schedule line that I wish to delete
When using the BAPIs (either BAPI_SAG_CHANGE or BAPI_SCHEDULE_MAINTAIN), I set the deletion indicator to "L" and set to X all change relevant fields (i.e. DELETION_INDX). However, whenever I execute it, I get the error message 06088. The funny thing is both the Quantities and the delivered quantities that are normally populated are left blank.
For example:
Normal error for 06088:
Quantity 100.0 smaller than quantity delivered 179.0
Error using BAPI with deletion indicator:
Quantity smaller than quantity delivered
Is this a bug of the BAPI? or am I just missing some settings?
Your immediate response is appreciated
Regards,
DeLoHi,
Please find the below link check the setting are correct or not
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/a02cb00a-bfb4-2c10-98aa-e33e7f64ba28?quicklink=index&overridelayout=true
Reagrds,
Pramod -
Issue in material master update from presentation server using BAPI....
Hi Guru's...
i am trying to change the material master from presentation server (desktop flat file)
using BAPI(BAPI_MATERIAL_SAVEDATA) ....
while executing my program i am getting the message like material had changed...
but while in mm02 i am un able to fine the updates...
please find below program logic and correct me if any mistakes....
thanks in advance...
*& Report ZAREPAS36
REPORT zarepas36.
DATA : gs_bapimathead TYPE bapimathead,
gs_clientdata TYPE bapi_mara,
gs_clientdatax TYPE bapi_marax.
TYPES : BEGIN OF gty_itab1,
matnr(18),
matkl(9),
spart(2),
ntgew(13),
gewei(3),
meins(3),
END OF gty_itab1.
DATA : gt_itab1 TYPE STANDARD TABLE OF gty_itab1,
gwa_itab1 TYPE gty_itab1.
TYPES: BEGIN OF gty_itab2,
abc(132),
END OF gty_itab2.
DATA: gt_itab2 TYPE STANDARD TABLE OF gty_itab2,
gwa_itab2 TYPE gty_itab2.
flat file at selection screen
PARAMETERS: p_files TYPE string.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = p_files
filetype = 'ASC'
CHANGING
data_tab = gt_itab2
EXCEPTIONS
OTHERS = 8.
LOOP AT gt_itab2 INTO gwa_itab2.
IF gwa_itab2-abc(1) = 'S'.
gwa_itab1 = gwa_itab2-abc(132).
APPEND gwa_itab1 TO gt_itab1.
ENDIF.
ENDLOOP.
loop at gt_itab1 into gwa_itab1.
*Material
gs_bapimathead-material = gwa_itab1-matnr.
*Material details at client data
*material group.
gs_clientdata-matl_group = gwa_itab1-matkl.
gs_clientdatax-matl_group = 'X'.
*Division
gs_clientdata-division = gwa_itab1-spart.
gs_clientdatax-division = 'X'.
*Net Weight
gs_clientdata-net_weight = gwa_itab1-ntgew.
gs_clientdatax-net_weight = 'X'.
*Unit of Weight
gs_clientdata-unit_of_wt = gwa_itab1-gewei.
gs_clientdatax-unit_of_wt = 'X'.
*Base Unit of Measure
gs_clientdata-base_uom = gwa_itab1-meins.
gs_clientdatax-base_uom = 'X'.
endloop.
*calling BAPI for making changes in material and saving thru BAPI.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = gs_bapimathead
clientdata = gs_clientdata
clientdatax = gs_clientdatax.
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
WRITE: / 'Error occured while changing material'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
WRITE: / 'material',gs_bapimathead-material,'changed'.
ENDIF.hi hello Guru's
i resolved the issuee..
pleaso go thru the below proram logic for your reference..........
*& Report ZAREPAS36
REPORT zarepas36.
DATA : gs_bapimathead TYPE bapimathead,
gs_clientdata TYPE bapi_mara,
gs_clientdatax TYPE bapi_marax.
TYPES : BEGIN OF gty_itab1,
matnr(18),
matkl(9),
spart(2),
ntgew(13),
gewei(3),
meins(3),
END OF gty_itab1.
DATA : gt_itab1 TYPE STANDARD TABLE OF gty_itab1,
gwa_itab1 TYPE gty_itab1.
TYPES: BEGIN OF gty_itab2,
abc(132),
END OF gty_itab2.
DATA: gt_itab2 TYPE STANDARD TABLE OF gty_itab2,
gwa_itab2 TYPE gty_itab2.
DATA:ls_return TYPE bapiret2,
lt_bapiret2 TYPE standard table of bapiret2.
flat file at selection screen
PARAMETERS: p_files TYPE string.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = p_files
filetype = 'ASC'
CHANGING
data_tab = gt_itab2
EXCEPTIONS
OTHERS = 8.
LOOP AT gt_itab2 INTO gwa_itab2.
IF gwa_itab2-abc(1) = 'S'.
gwa_itab1 = gwa_itab2-abc(132).
APPEND gwa_itab1 TO gt_itab1.
ENDIF.
ENDLOOP.
LOOP AT gt_itab1 INTO gwa_itab1.
*Material
gs_bapimathead-material = gwa_itab1-matnr.
*Material details at client data
*material group.
gs_clientdata-matl_group = gwa_itab1-matkl.
gs_clientdatax-matl_group = 'X'.
*Division
gs_clientdata-division = gwa_itab1-spart.
gs_clientdatax-division = 'X'.
*Net Weight
gs_clientdata-net_weight = gwa_itab1-ntgew.
gs_clientdatax-net_weight = 'X'.
*Unit of Weight
gs_clientdata-unit_of_wt = gwa_itab1-gewei.
gs_clientdatax-unit_of_wt = 'X'.
*Base Unit of Measure
gs_clientdata-base_uom = gwa_itab1-meins.
gs_clientdatax-base_uom = 'X'.
ENDLOOP.
*calling BAPI for making changes in material and saving thru BAPI.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = gs_bapimathead
clientdata = gs_clientdata
clientdatax = gs_clientdatax
IMPORTING
return = ls_return.
LOOP AT lt_bapiret2 INTO ls_return.
EXIT.
ENDLOOP.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
WRITE: / 'Error occured while changing material'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
WRITE: / 'material',gs_bapimathead-material,'changed'.
ENDIF. -
Service order creation using bapi with repair order number
Hi experts,
Pls suggest me a BAPI to create a service order for those repair orders where a PGR has been done(for return delivery type : LR).
The plant should be 0260 with storage location wh01 and item category ZRRE
Creation of a service order with repair order type SM03 is not allowed in iw31.
thanks and regards,
Vijayb.Hi prakash,
Thank u for the BAPI
But an error is being displayed saying that the REFURBISHMENT ORDERS CANNOT BE PROCESSED USING BAPI.
ERROR DURING PROCESSING OF BAPI METHODS.
This is while u pass the order type as either ZM03 or SM01or SM02 or SM03.
pls help me on that.
thanks and regards,
Vijayb. -
Unable to capture error message while creating an SO using bapi
Hi,
Can anybody suggest how to capture the error message while creating a SO using BAPI.
I have developed a customeized BAPI and using the BDC format to create the SO.
Note: i am using a call transaction method for the BDC.
I am sending the message into message1.
but i am unable to send the same into an internal table
shyam.Hi Shyam
If my understanding is correct, you are performing BDC process within the customized BAPI...
And you want to collect the messages from BDC to an internal table and pass to the output.
Proceed as below:
1. While calling BDC, use CALL TRANSACTION .... with addition: <b>MESSAGES INTO itab</b>. The structure of itab should be like <b>BDCMSGCOLL</b>.
2. Now the messages will be collected in ita.
3. Prepare the messages using FM: <b>FORMAT_MESSAGE</b>
4. Collect to the returning table.
Hope this helps...
Though i could not understand the reason of creating a BDC within BAPI, you can opt for loading orders via BAPI's like: BAPI_SALESORDER_CREATEFROMDAT1 or BAPI_SALESORDER_CREATEFROMDAT2.
Kind Regards
Eswar -
Please find herewith my below code. This program i have created for transferring goods with mvt type '657' to '555' using BAPI 'BAPI_GOODSMVT_CREATE' for TCODE MB1A.
*& Report Z_BAPI_FOR_MB1A
REPORT Z_BAPI_FOR_MB1A.
Tables : mkpf, mseg, WB2_V_MKPF_MSEG2.
DATA:
it_mb1a LIKE BAPI2017_GM_ITEM_CREATE OCCURS 0 WITH HEADER LINE,
it_return LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,
it_ex_headret LIKE BAPI2017_GM_HEAD_RET OCCURS 0 WITH HEADER LINE,
it_im_header LIKE BAPI2017_GM_HEAD_01, " OCCURS 0, " WITH HEADER LINE,
it_im_gmcode LIKE BAPI2017_GM_CODE, " OCCURS 0, "WITH HEADER LINE,
mat_doc type bapi2017_gm_head_ret-mat_doc,
mat_docyear type bapi2017_gm_head_ret-doc_year.
*data : lv_intense(01).
data : it_mseg like WB2_V_MKPF_MSEG2 occurs 0 with header line,
it_cost like csks occurs 0 with header line.
selection-screen begin of block a with frame title text-001.
parameters: p_date type sy-datum default sy-datum.
select-options: so_budat for WB2_V_MKPF_MSEG2-budat,
so_werks for WB2_V_MKPF_MSEG2-werks_i,
so_matnr for WB2_V_MKPF_MSEG2-matnr_i,
so_lgort for WB2_V_MKPF_MSEG2-lgort_i.
selection-screen end of block a.
select * from WB2_V_MKPF_MSEG2 into
table it_mseg where
budat in so_budat and
werks_i in so_werks and
matnr_i in so_matnr and
lgort_i in so_lgort and
bwart_i = '657'.
select * from csks into table it_cost
for all entries in it_mseg where
gsber = it_mseg-werks_i.
*Filling BAPI Header Tables
it_im_header-pstng_date = sy-datum.
it_im_header-doc_date = sy-datum.
it_im_gmcode-gm_code = '03'.
*Filling BAPI Item Tables
loop at it_mseg.
read table it_cost with key gsber = it_mseg-werks_i.
it_mb1a-material = it_mseg-matnr_i.
it_mb1a-plant = it_mseg-werks_i.
it_mb1a-stge_loc = it_mseg-lgort_i.
it_mb1a-batch = it_mseg-charg_i.
it_mb1a-move_type = 555. " '103'.
it_mb1a-entry_qnt = it_mseg-menge_i.
it_mb1a-costcenter = it_cost-KOSTL.
it_mb1a-gl_account = '530089'.
append it_mb1a.
clear it_mb1a.
clear it_cost.
endloop.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = it_im_header
goodsmvt_code = it_im_gmcode
* TESTRUN = ' '
* GOODSMVT_REF_EWM =
IMPORTING
GOODSMVT_HEADRET = it_ex_headret
MATERIALDOCUMENT = mat_doc
MATDOCUMENTYEAR = mat_docyear
tables
goodsmvt_item = it_mseg
* GOODSMVT_SERIALNUMBER =
return = it_return
* GOODSMVT_SERV_PART_DATA =
* EXTENSIONIN =
if sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
* IMPORTING
* RETURN =
endif.
But when i execute the above i am getting the following error.
Runtime Errors CALL_FUNCTION_UC_STRUCT
Except. CX_SY_DYN_CALL_ILLEGAL_TYPE
Date and Time 27.01.2009 14:43:06
Short text
Type conflict during structure parameter transfer at CALL FUNCTION.
What happened?
Error in the ABAP Application Program
The current ABAP program "Z_BAPI_FOR_MB1A" had to be terminated because it has
come across a statement that unfortunately cannot be executed.
Error analysis
An exception occurred that is explained in detail below.
The exception, which is assigned to class 'CX_SY_DYN_CALL_ILLEGAL_TYPE', was
not caught and
therefore caused a runtime error.
The reason for the exception is:
In the function "BAPI_GOODSMVT_CREATE", the STRUCTURE parameter "GOODSMVT_ITEM"
is typed in such a way
that only actual parameters are allowed, which are compatible in Unicode
with respect to the fragment view. However, the specified actual
parameter "IT_MSEG" has an incompatible fragment view.
Missing Handling of System Exception
Program Z_BAPI_FOR_MB1A
Trigger Location of Exception
Program Z_BAPI_FOR_MB1A
Include Z_BAPI_FOR_MB1A
Row 72
Module Name START-OF-SELECTION
Source Code Extract
Line SourceCde
42 lgort_i in so_lgort and
43 bwart_i = '657'.
44
45 select * from csks into table it_cost
46 for all entries in it_mseg where
47 gsber = it_mseg-werks_i.
48 *Filling BAPI Header Tables
49 it_im_header-pstng_date = sy-datum.
50 it_im_header-doc_date = sy-datum.
51 it_im_gmcode-gm_code = '03'.
52
53 *Filling BAPI Item Tables
54 loop at it_mseg.
55
56 read table it_cost with key gsber = it_mseg-werks_i.
57
58 it_mb1a-material = it_mseg-matnr_i.
59 it_mb1a-plant = it_mseg-werks_i.
60 it_mb1a-stge_loc = it_mseg-lgort_i.
61 it_mb1a-batch = it_mseg-charg_i.
62 it_mb1a-move_type = 555. " '103'.
64 it_mb1a-costcenter = it_cost-KOSTL.
65 it_mb1a-gl_account = '530089'.
66
67 append it_mb1a.
68 clear it_mb1a.
69 clear it_cost.
70 endloop.
71
72*>>>> CALL FUNCTION 'BAPI_GOODSMVT_CREATE'* 73 EXPORTING
74 goodsmvt_header = it_im_header
75 goodsmvt_code = it_im_gmcode
76 * TESTRUN = ' '
77 * GOODSMVT_REF_EWM =
78 IMPORTING
79 GOODSMVT_HEADRET = it_ex_headret
80 MATERIALDOCUMENT = mat_doc
81 MATDOCUMENTYEAR = mat_docyear
82 tables
83 goodsmvt_item = it_mseg
84 * GOODSMVT_SERIALNUMBER =
85 return = it_return
86 * GOODSMVT_SERV_PART_DATA =
87 * EXTENSIONIN =
88 .
89 if sy-subrc = 0.
90 CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
91 EXPORTING
Can u explain why this is coming. Your valuable suggestions are required.
Thanks,
Jitesh M NairHi,
Try this Code.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = WF_HEADER
GOODSMVT_CODE = WF_CODE
TESTRUN = WL_space
IMPORTING
MATERIALDOCUMENT = FS_MATERIAL_DOC
TABLES
GOODSMVT_ITEM = INT_ITEM
GOODSMVT_SERIALNUMBER = INT_SERIALNO
RETURN = INT_RETURN1.
*VARIABLES for goods movement creation bapi
DATA : WF_HEADER TYPE BAPI2017_GM_HEAD_01,
WF_CODE TYPE BAPI2017_GM_CODE.
DATA : FS_MATERIAL_DOC TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
FS_SERIALNO TYPE BAPI2017_GM_SERIALNUMBER,
FS_ITEM TYPE BAPI2017_GM_ITEM_CREATE,
FS_RETURN1 TYPE BAPIRET2,
data declaration for goods movement creation bapi
DATA : INT_ITEM TYPE TABLE OF BAPI2017_GM_ITEM_CREATE,
INT_SERIALNO TYPE TABLE OF BAPI2017_GM_SERIALNUMBER,
INT_RETURN1 TYPE TABLE OF BAPIRET2.
Hope this will help.
Regards,
Rohan. -
Send mail to non-sap using bapi's
hi friends,
Can any one please help me how to send mail from sap to non-sap systems using bapi's.plesae help me .i want the procedure and code
regards
srikanth.vHi,
Use this sample Code...
REPORT ZSENDMAIL.
DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.
DATA: OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.
DATA: OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.
DATA: DOC_CHNG LIKE SODOCCHGI1.
DATA: TAB_LINES LIKE SY-TABIX.
Creation of the document to be sent
File Name
DOC_CHNG-OBJ_NAME = 'SENDFILE'.
Mail Subject
DOC_CHNG-OBJ_DESCR = 'Send External Mail'.
Mail Contents
OBJTXT = 'Minimum bid : $250000'.
APPEND OBJTXT.
OBJTXT = 'A representation of the pictures up for auction'.
APPEND OBJTXT.
OBJTXT = 'was included as attachment.'.
APPEND OBJTXT.
DESCRIBE TABLE OBJTXT LINES TAB_LINES.
READ TABLE OBJTXT INDEX TAB_LINES.
DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).
Creation of the entry for the compressed document
CLEAR OBJPACK-TRANSF_BIN.
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 0.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = 'RAW'.
APPEND OBJPACK.
Creation of the document attachment
(Assume that the data in OBJBIN is in BMP format)
*OBJBIN = ' \O/ '. APPEND OBJBIN.
*OBJBIN = ' | '. APPEND OBJBIN.
*OBJBIN = ' / \ '. APPEND OBJBIN.
*DESCRIBE TABLE OBJBIN LINES TAB_LINES.
*OBJHEAD = 'PICTURE.BMP'.
*APPEND OBJHEAD.
Creation of the entry for the compressed attachment
*OBJPACK-TRANSF_BIN = 'X'.
*OBJPACK-HEAD_START = 1.
*OBJPACK-HEAD_NUM = 1.
*OBJPACK-BODY_START = 1.
*OBJPACK-BODY_NUM = TAB_LINES.
*OBJPACK-DOC_TYPE = 'BMP'.
*OBJPACK-OBJ_NAME = 'PICTURE'.
*OBJPACK-OBJ_DESCR = 'Representation of object 138'.
*OBJPACK-DOC_SIZE = TAB_LINES * 255.
*APPEND OBJPACK.
Completing the recipient list
RECLIST-RECEIVER = '[email protected]'.
RECLIST-REC_TYPE = 'U'.
APPEND RECLIST.
*RECLIST-RECEIVER = 'SAPUSERNAME'.
*RECLIST-REC_TYPE = 'P'.
*APPEND RECLIST.
Sending the document
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOC_CHNG
PUT_IN_OUTBOX = 'X'
TABLES
PACKING_LIST = OBJPACK
OBJECT_HEADER = OBJHEAD
CONTENTS_BIN = OBJBIN
CONTENTS_TXT = OBJTXT
RECEIVERS = RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
OPERATION_NO_AUTHORIZATION = 4
OTHERS = 99.
CASE SY-SUBRC.
WHEN 0.
WRITE: / 'Result of the send process:'.
LOOP AT RECLIST.
WRITE: / RECLIST-RECEIVER(48), ':'.
IF RECLIST-RETRN_CODE = 0.
WRITE 'The document was sent'.
ELSE.
WRITE 'The document could not be sent'.
ENDIF.
ENDLOOP.
WHEN 1.
WRITE: / 'No authorization for sending to the specified number',
'of recipients'.
WHEN 2.
WRITE: / 'Document could not be sent to any recipient'.
WHEN 4.
WRITE: / 'No send authorization'.
WHEN OTHERS.
WRITE: / 'Error occurred while sending'.
ENDCASE.
in this code....Internal table IF RECLIST-RETRN_CODE is not 0,then the mail is not send to the recipient, so if you want the undeliverable mail for a perticular recipient then call the same function module SO_NEW_DOCUMENT_ATT_SEND_API1 with undeliverd message to whom want to receive the undeliverd message.
hope this solves your problem -
Hi experts, Upload purchase order using BAPI
hi
Could you please help me how to do PURCHASE ORDER CREATION using BAPI.
Thank you.Satyendra,
The forum that you have posted your question in is for questions related to the SAP Business One Integration for SAP NetWeaver. Your question is or seems to be related to R/3 and should be posted in that forum.
Eddy -
Hi bapi Guru's,
I am asked to use bapi's(Instead of BDC's) for data upload .I am not getting good documentation on 'USING BAPI's IN ABAP',Like Defining structures, and what are the FM's to be called like bapi_commit.
Any Info is Appriciated.
Regards
satishSorry Satish,
Maybe this is going off topic a little, bit perhaps also its relevant as you have been asked to move from BDC's to BAPIs.
Juan,
When I talk about debugging, there are two levels to this:
<b>1. Debugging by the programmer</b>
In this case, how can it be easier to debug an error from a BAPI than from the screen? For a sales order, for example, when you enter a delivery date of 01.01.2000 for an item, via BDC you will get an error message as the item is entered (something along the lines of delivery date is in the past), and you will see exactly the date you have entered, and if you don't understand the error, you can click on F1 and it will give you the long description of the error. Via a BAPI, you would get the error message, and you MIGHT get the item number and the date in question. But if you don't understand the error what do you do then? Debug the BAPI itself? You could, but isn't this a rather lengthy way to get to the root of the problem? In general, any errors you get calling BAPIs/BDCs are errors with your master data, or breaking business rules, you shouldn't have to debug standard code to tell you whats going wrong, the application can tell you.
<b>2. Debugging by the end user</b>
When you implement a BAPI/BDC this will be related to an interface/automated transaction etc. When its in production you will occassionally get errors (due to bad master data, not fully capturing all the business logic in your custom coding [it happens], technical issues etc.) What do you do then? In the case of BDC you can do nothing. The error is recorded, and you can get end users to process the errors by stepping through the screens (which they already know how to use) and make corrections as required. In the case of BAPIs, you have to record the error in a table or a file, then develop some kind of interface to display the errors, then develop some kind of process for re-processing the errors. If the data used to call the BAPI is not correct then you also need to provide a facility for changing the data before reprocessing. Normally you do none of this because its too much work and you end up having all errors coming back to the SAP team who have to debug and change table entries etc. to get it all to work. I would not say that this makes BAPIs easier to debug.
Oops, just realised my pasta is burning!!!
Anyway, think I got my point across. Not personal but feel quite strongly about this topic. To me BDC's are still a relevant tool despite the push for Idocs/BAPIs.
Cheers,
Brad -
Changing Payment terms using Bapi
Hi Gurus,
I want to change the Payment terms in Purchase order / Scheduling agreement Using Bapi.
I used BAPI_PO_CHANGE.but Payment terms are not updating.
Useful Answers will be rewarded with Points.Did you use BAPI_TRANSACTION_COMMIT after BAPI_PO_CHANGE.
Look also at this <a href="http://www.sap-img.com/abap/sample-abap-code-on-bapi-po-change.htm">Sample Abap code on BAPI_PO_CHANGE</a>
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
PURCHASEORDER = T_POHEADER-PO
POHEADER = T_BAPI_POHEADER
POHEADERX = T_BAPI_POHEADERX
TABLES
RETURN = T_BAPIRETURN
POITEM = T_BAPI_POITEM
POITEMX = T_BAPI_POITEMX.
READ TABLE t_bapireturn WITH KEY type = c_err TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = c_x.
ENDIF.
Regards -
Problem in Sales order create using BAPI with reference to quotation
Hi,
I am creating a sales order from Quotation using BAPI /AFS/BAPI_SALESORD_CREATEFDATA.
The Sale order is getting created and the document flow is updated. When i check the status of quotation it is "OPEN".
Ideally when a sale order is created in VA01 with reference to a quotation and if all items are added in the order from quotation, then the status of the quotation must be "Complete".
When i use the BAPI, the status of the quotation is sill "Open". Has anyone faced this issue?
Even if anyone has faced this issue with BAPI_SALESORDER_CREATEFROMDAT2, please let me know...
RegardsHi RV,
I am using BAPI to create order reference to contracts. I am facing same issue. Its not updating document flow (vbfa-plmin field). After creating orders I am forcing to update plmin field in vbfa. This worked fine. But now status in reference document not updating properly. I saw your thread. It looks like similar issue. I saw your comments "Customization was not maintained properly for the Order types ". Please can you explain little bit more about your solution. It will helps us lot.
Thanks,
srini -
Creating sale order by using BAPI
Hi,
My requirement is to create a inquiry(VA11), By using the Inquiry no as a input in report, i should create a salesorder using BAPI in which the datas should be flowed from inquiry to sale order. i did almost everything except the Pricing Condition.
I am fetching the pricing condition values from table KONV-KSCHL and passing the value via BAPI_SALESORDER_CREATEFROMDAT2 it creates saleorder. In the created salesorder, there are two same pricing conditions but different rate 1.) the price of the MATNR which is maintained 2.) the changed MATNR price in inquiry level,
i need the value which is changed in inquiry level that is 2nd value.
can anyone help me in this...REPORT ZSALESORDER.
<< Cut and paste without attribution from
create sales order using BAPI
removed >>
Edited by: Rob Burbank on Feb 24, 2009 10:43 AM -
Sale Order Item Quantity Not Populating When Create A Sale Order Using BAPI
I am having a problem when creating a sale order using BAPI
BAPI_SALESORDER_CREATEFROMDAT2
Problem is that sale order item quantity field is not populating
code is as follows
ORDER_ITEMS_IN-ITM_NUMBER = '0010'.
ORDER_ITEMS_IN-MATERIAL = '000000000010000262'.
ORDER_ITEMS_IN-TARGET_QU = 'LB'.
ORDER_ITEMS_IN-TARGET_QTY = 1.Hi,
Try populating ORDER_SCHEDULES_IN table in the bapi field REQ_QTY.
Regds,
Rudra -
Problem regarding the creation of sales order using bapi.
Hai all,
I am creating sales order using bapi but i am, get following error messages :
TYPE ID NUMBER MESSAGE
E VP 112 Please enter sold-to party or ship-to party
E V4 219 Sales document was not changed
I have entered all the parameters.
my program is as follows :
*& Report ZSD_SALES_ORDER
REPORT ZSD_SALES_ORDER.
Tables
*table definitions
TABLES:vbak, "Sales Document: Header Data
knvv, "Customer Master Sales Data
mara, "General Material Data
t001l, "Plants/Branches
mvke, "Sales Data for Material
vbap, "Sales Document: Item Data
konv. "Conditions (Transaction Data)
Types
*type for upload data
TYPES :BEGIN OF ty_upload,
matnr(20) TYPE c, " Old material number
quantity(20) TYPE c, " Cumulative order quantity in sales units
VALUE TYPE BAPIKWERT1,
value(20) TYPE c, " Condition value
value TYPE konv-kwert, " Condition value
END OF ty_upload.
*type for final output table
TYPES :BEGIN OF ty_main,
bismt TYPE mara-bismt, "Old material number
matnr TYPE vbap-matnr, "Material Number
kunnr TYPE vbak-kunnr, "customer number
auart TYPE vbak-auart, "Sales Document Type
vkorg TYPE vbak-vkorg, "Sales Organization
vtweg TYPE vbak-vtweg, "Distribution Channel
spart TYPE vbak-spart, "Division
vbeln TYPE vbak-vbeln, "Sales document
werks TYPE marc-werks, " Plant
lgort TYPE mard-lgort, "Storage Location
posnr TYPE vbap-posnr, "Sales Document Item
parvw TYPE vbpa-parvw, "Partner function
kwmeng TYPE vbap-kwmeng, "Cumulative order quantity in sales units
kschl TYPE konv-kschl, "Condition type
kwert TYPE konv-kwert, "Condition value
KWERT TYPE BAPIKWERT1,
kwert(20) TYPE c, "Condition value
waers TYPE konv-waers, "Currency
END OF ty_main.
*type for old material number
TYPES: BEGIN OF ty_matnr,
matnr TYPE mara-matnr,
bismt TYPE mara-bismt,
END OF ty_matnr.
*type for order number
TYPES :BEGIN OF ty_output,
vbeln TYPE vbak-vbeln, "Sales Document
END OF ty_output.
Constants Begin with C_ *
CONSTANTS:
c_zpmu(4) TYPE c VALUE 'ZPMU',
c_zpmm(4) TYPE c VALUE 'ZPMM'.
DATA: c_ch(1) TYPE c VALUE 'X'.
Data Begin with W_ *
*global data for validations
DATA: w_count TYPE i,
w_vkorg TYPE vbak-vkorg,
w_vtweg TYPE vbak-vtweg,
w_spart TYPE vbak-spart,
w_werks TYPE t001l-werks,
w_check TYPE c,
w_itemno TYPE posnr_va,
W_COND TYPE C.
w_cond(3) TYPE c.
Internal tables Begin with IT_ *
*internal table definitions
DATA : it_upload TYPE STANDARD TABLE OF ty_upload ,
wa_upload TYPE ty_upload.
DATA : it_main TYPE STANDARD TABLE OF ty_main,
wa_main TYPE ty_main.
DATA: it_matnr TYPE STANDARD TABLE OF ty_matnr,
wa_matnr TYPE ty_matnr.
DATA : it_output TYPE STANDARD TABLE OF ty_output.
Internal table for BAPI.
DATA: it_bapisdhd1 TYPE STANDARD TABLE OF bapisdhd1, "Sales and Distribution Document Header
wa_bapisdhd1 TYPE bapisdhd1.
DATA: it_bapisditm TYPE STANDARD TABLE OF bapisditm , "Sales and Distribution Document Item
wa_bapisditm TYPE bapisditm.
DATA: it_bapiparnr TYPE STANDARD TABLE OF bapiparnr, "SD Document Partner: WWW
wa_bapiparnr TYPE bapiparnr.
DATA: it_bapischdl TYPE STANDARD TABLE OF bapischdl, "Schedule Lines
wa_bapischdl TYPE bapischdl.
DATA: it_bapicond TYPE STANDARD TABLE OF bapicond, "Communication Fields for Maintaining Conditions in the Order
wa_bapicond TYPE bapicond.
DATA: it_bapiret2 TYPE STANDARD TABLE OF bapiret2, "Return Parameter
wa_bapiret2 TYPE bapiret2.
Parameters Begin with PR_ *
*selection screen definition
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME .
PARAMETERS: pr_vkorg TYPE vbak-vkorg OBLIGATORY,
pr_vtweg TYPE vbak-vtweg OBLIGATORY,
pr_spart TYPE vbak-spart OBLIGATORY,
pr_kunnr TYPE kna1-kunnr OBLIGATORY,
pr_werks TYPE marc-werks OBLIGATORY,
pr_lgort TYPE mard-lgort OBLIGATORY.
PARAMETERS: pr_auart TYPE vbak-auart OBLIGATORY,
PR_AUGRU TYPE VBAK-AUGRU OBLIGATORY.
pr_augru TYPE vbak-augru.
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME.
PARAMETERS : pr_file TYPE ibipparms-path OBLIGATORY.
SELECTION-SCREEN END OF BLOCK blk2.
At selection-screen *
AT SELECTION-SCREEN.
PERFORM f006_validate_vkorg.
PERFORM f007_validate_vtweg.
PERFORM f008_validate_spart.
PERFORM f009_validate_kunnr.
PERFORM f010_validate_werks.
PERFORM f011_validate_lgort.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pr_file.
*for f4 help----
PERFORM f003_f4_help.
S T A R T O F S E L E C T I O N *
START-OF-SELECTION.
*for material ,quantity and value upload
PERFORM f001_upload_file.
*get data
PERFORM f003_get_data.
*for check the data
PERFORM f002_check_data .
PERFORM f004_process.
*for posting
PERFORM f005_posting.
END-OF-SELECTION.
E N D O F S E L E C T I O N *
*& Form f001_upload_file
upload file
FORM f001_upload_file .
DATA : lw_fname TYPE string.
CLEAR lw_fname.
lw_fname = pr_file.
REFRESH it_upload.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lw_fname
filetype = 'ASC'
has_field_separator = c_ch
TABLES
data_tab = it_upload
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.
LOOP AT it_upload INTO wa_upload.
wa_upload-value = ( wa_upload-value ) / 10.
MODIFY it_upload FROM wa_upload.
ENDLOOP.
ENDFORM. "F001_UPLOAD_FILE
*& Form f003_f4_help
f4 help
FORM f003_f4_help .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = ' '
IMPORTING
file_name = pr_file.
ENDFORM. " f003_f4_help
*& Form check_data
text
FORM f002_check_data .
DATA: lw_lines TYPE i.
DESCRIBE TABLE it_main LINES lw_lines.
IF lw_lines LE 0.
RETURN.
ENDIF.
SELECT a~matnr
a~bismt FROM mara AS a INNER JOIN mvke AS b
ON amatnr = bmatnr
INTO CORRESPONDING FIELDS OF TABLE it_matnr
FOR ALL ENTRIES IN it_main
WHERE a~bismt = it_main-bismt.
IF sy-subrc = 0.
LOOP AT it_main INTO wa_main.
CLEAR : wa_matnr.
READ TABLE it_matnr INTO wa_matnr WITH KEY bismt = wa_main-bismt.
IF sy-subrc = 0.
MOVE: wa_matnr-matnr TO wa_main-matnr.
ENDIF.
MODIFY it_main FROM wa_main TRANSPORTING matnr WHERE bismt = wa_main-bismt.
ENDLOOP.
ELSE.
MESSAGE e000(zmsd) WITH text-001.
ENDIF.
ENDFORM. "CHECK_DATA
*& Form F009_validate_vkorg
text
FORM f006_validate_vkorg .
CLEAR w_vkorg.
SELECT SINGLE vkorg
INTO w_vkorg FROM tvko
WHERE vkorg EQ pr_vkorg.
IF sy-subrc <> 0.
MESSAGE e000(zmsd) WITH text-012 pr_vkorg.
ENDIF.
ENDFORM. " F009_validate_vkorg
*& Form f007_validate_vtweg
text
FORM f007_validate_vtweg .
CLEAR:w_vtweg.
SELECT SINGLE vtweg
INTO w_vtweg FROM tvtw
WHERE vtweg EQ pr_vtweg.
IF sy-subrc <> 0.
MESSAGE e089(zmsd).
ENDIF.
ENDFORM. " f007_validate_vtweg
*& Form f008_validate_spart
text
FORM f008_validate_spart .
CLEAR:w_spart.
SELECT SINGLE spart
INTO w_spart FROM tspa
WHERE spart EQ pr_spart.
IF sy-subrc <> 0.
MESSAGE e087(zmsd).
ENDIF.
ENDFORM. " f008_validate_spart
*& Form F010_validate_kunnr
text
FORM f009_validate_kunnr .
DATA: l_kunnr TYPE kunnr.
CLEAR: w_vkorg, w_vtweg,w_spart.
SELECT SINGLE kunnr FROM knvv
INTO l_kunnr
WHERE kunnr = pr_kunnr
AND vkorg = pr_vkorg
AND vtweg = pr_vtweg
AND spart = pr_spart.
IF sy-subrc <> 0.
MESSAGE e000(zmsd) WITH text-010 pr_kunnr text-011 pr_vkorg .
ENDIF.
ENDFORM. " F010_validate_kunnr
*& Form f010_validate_werks
text
FORM f010_validate_werks .
CLEAR:w_werks.
SELECT SINGLE werks
INTO w_werks FROM t001w
WHERE werks EQ pr_werks.
IF sy-subrc <> 0.
MESSAGE e088(zmsd).
ENDIF.
ENDFORM. " f010_validate_werks
*& Form F011_validate_lgort
text
FORM f011_validate_lgort .
CLEAR:w_werks .
SELECT SINGLE werks FROM t001l
INTO w_werks
WHERE werks = pr_werks
AND lgort = pr_lgort.
IF sy-subrc <> 0.
MESSAGE e000(zmsd) WITH text-007 pr_lgort text-008 pr_werks .
ENDIF.
ENDFORM. " F011_validate_lgort
*& Form f003_get_data
text
FORM f003_get_data .
CLEAR wa_main.
REFRESH it_main.
LOOP AT it_upload INTO wa_upload.
CLEAR : wa_main.
MOVE: wa_upload-matnr TO wa_main-bismt,
wa_upload-quantity TO wa_main-kwmeng,
wa_upload-value TO wa_main-kwert,
pr_vkorg TO wa_main-vkorg,
pr_vtweg TO wa_main-vtweg,
pr_spart TO wa_main-spart,
pr_kunnr TO wa_main-kunnr,
pr_werks TO wa_main-werks,
pr_lgort TO wa_main-lgort.
APPEND wa_main TO it_main.
ENDLOOP.
ENDFORM. " f003_get_data
*& Form f004_process
text
FORM f004_process .
CLEAR w_check.
LOOP AT it_main INTO wa_main.
IF wa_main-matnr = ''.
WRITE:/ text-006,
wa_main-bismt.
w_check = 1.
ENDIF.
IF wa_main-kwmeng = 0.
WRITE:/ text-005,
wa_main-bismt.
w_check = 1.
ENDIF.
IF pr_auart <> 'ZM01'.
IF wa_main-kwert IS INITIAL.
WRITE:/ text-004,
wa_main-bismt.
w_check = 1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " f004_process
*& Form f005_posting
text
FORM f005_posting .
CLEAR: w_itemno,
w_cond.
w_itemno = 10.
w_cond = 1.
IF w_check = '' OR w_check = 1.
wa_bapisdhd1-doc_type = pr_auart.
wa_bapisdhd1-ord_reason = pr_augru.
LOOP AT it_main INTO wa_main.
IF w_cond = 1.
CLEAR: it_bapiret2,
it_bapisditm,
it_bapiparnr,
it_bapischdl,
it_bapicond.
REFRESH:it_bapiret2,
it_bapisditm,
it_bapiparnr,
it_bapischdl,
it_bapicond.
MOVE: wa_main-vkorg TO wa_bapisdhd1-sales_org,
wa_main-vtweg TO wa_bapisdhd1-distr_chan,
wa_main-spart TO wa_bapisdhd1-division.
wa_bapisdhd1-wbs_eleM = 'Y561.1'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = pr_kunnr
IMPORTING
OUTPUT = pr_kunnr.
wa_bapisdhd1-PURCH_NO_S = pr_kunnr.
wa_bapisdhd1-PURCH_NO_C = pr_kunnr.
ENDIF.
MOVE: w_itemno TO wa_bapisditm-itm_number,
wa_main-matnr TO wa_bapisditm-material,
wa_main-BISMT TO wa_bapisditm-material,
wa_main-werks TO wa_bapisditm-plant,
wa_main-lgort TO wa_bapisditm-store_loc.
wa_bapisditm-target_qty = '10'.
wa_bapisditm-PURCH_NO_S = pr_kunnr.
wa_bapisditm-PURCH_NO_C = pr_kunnr.
APPEND wa_bapisditm TO it_bapisditm.
IF w_cond = 1.
wa_bapiparnr-partn_numb = pr_kunnr.
wa_bapiparnr-itm_number = 10.
wa_bapiparnr-partn_role = 'SP'.
APPEND wa_bapiparnr TO it_bapiparnr.
wa_bapiparnr-partn_role = 'AG'.
APPEND wa_bapiparnr TO it_bapiparnr.
CLEAR wa_bapiparnr-partn_role.
wa_bapiparnr-partn_numb = pr_kunnr.
wa_bapiparnr-partn_role = 'RE'.
APPEND wa_bapiparnr TO it_bapiparnr.
CLEAR wa_bapiparnr-partn_role.
wa_bapiparnr-partn_numb = pr_kunnr.
wa_bapiparnr-partn_role = 'RG'.
APPEND wa_bapiparnr TO it_bapiparnr.
CLEAR wa_bapiparnr-partn_role.
wa_bapiparnr-partn_numb = pr_kunnr.
wa_bapiparnr-partn_role = 'WE'.
APPEND wa_bapiparnr TO it_bapiparnr.
ENDIF.
wa_bapischdl-itm_number = w_itemno.
wa_bapischdl-req_qty = wa_main-kwmeng.
wa_bapischdl-PURCH_NO_S = pr_kunnr.
APPEND wa_bapischdl TO it_bapischdl.
wa_bapicond-itm_number = w_itemno.
wa_bapicond-cond_type = 'ZECL'.
IF ( wa_bapisdhd1-doc_type = 'ZPMU' ) OR ( wa_bapisdhd1-doc_type = 'ZPMM' ).
wa_bapicond-cond_type = 'ZVAL'.
ELSE.
wa_bapicond-cond_type = 'ZMRP'. "+PK12122006
ENDIF.
wa_bapicond-cond_value = wa_main-kwert.
APPEND wa_bapicond TO it_bapicond.
w_itemno = w_itemno + 10.
w_cond = w_cond + 1.
ENDLOOP.
data : SALESDOCUMENTIN like BAPIVBELN-VBELN.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
order_header_in = wa_bapisdhd1
IMPORTING
salesdocument = SALESDOCUMENTIN
TABLES
return = it_bapiret2
order_items_in = it_bapisditm
order_partners = it_bapiparnr
order_schedules_in = it_bapischdl
order_conditions_in = it_bapicond.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = c_ch.
ENDIF.
LOOP AT it_bapiret2 INTO wa_bapiret2.
DATA : w_err(100) TYPE c,
w_matnr TYPE matnr.
IF wa_bapiret2-type = 'E' AND wa_bapiret2-id = 'V1' AND wa_bapiret2-number = 392.
UNPACK wa_bapiret2-message_v1 TO w_matnr.
READ TABLE it_matnr INTO wa_matnr WITH KEY matnr = w_matnr.
IF sy-subrc EQ 0.
CONCATENATE text-013 wa_matnr-bismt INTO w_err SEPARATED BY space.
MESSAGE w_err TYPE 'S'.
ENDIF.
ENDIF.
IF WA_BAPIRET2-TYPE = 'S'. " Comment
WRITE: 40 TEXT-009, WA_BAPIRET2-MESSAGE_V2+0(10).
ENDIF.
ENDLOOP.
ENDFORM. " f005_posting
I have given all the necessary parameters. it is telling that error is in parameter
sales_header_in.
I have checked it.
i have assigned purch_no_s and purch_no_c of the structure BAPISDHD1(ORDER_HEADER_IN)
in the bapi with customer number.
and also i have assigned the partnumber of the structure BAPIPARNR ORDER_PARTNERS
in the bapi with customer number.
but still , it is diplaying the error message, please enter the sold to or ship to party number.
how to resolve this error.
this is urgent requirement.
points will be awarded.
thanking u in advance,
a.srinivas.Hi,
Did u have a look at the standard programs which make use of BAPI_SALESORDER_CREATEFROMDAT1
Heres a list...
LWSSOU08
MV45WF0S
MWWMJF21_BAPI_SALESORDER_CREAT
RBUS2032
Regards,
Tanveer.
<b>Please mark helpful answers</b>
Maybe you are looking for
-
Error while invoking the WSDL service of EBS from BPEL process
Hi Team, when we are calling webservice client to call WSDL service which is published in Oracle EBS integrated SOA Gateway from BPEL process. After invoking, we are getting the below error <bpelFault><faultType>0</faultType><remoteFault xmlns="http:
-
Delivery cost condition type in PO coming as display mode
Hi Experts, In my Purchase order having delivery cost condition types, for ex freight. For this PO i have done Goods receipt. PO all the delivery costs are showing in display mode. i have reversed the Good receipt.Again also all the delivery costs a
-
Windows 8.1 crashes after an extern virtual switch is added
Hello, to get connected from a virtual machine in hyper v I must add an external virtual Switch. If I do so, after 2 or 3 minutes I get a blue Screen with the message: Unexpected_kernel_mode_trap. I have changed the Driver for the Network Card from I
-
Window 8.1 drivers and M1217nfw
I have a windows 8.1 64-bit system connected to an HP Pro M1217nfw MFP. The system was working fine until I decided to change the wireless network connected to the printer. Since change that I have been able to get the wireless connected to the pri
-
Hi, I need some assistance with a Price List query. I have special volume discounts setup for items within the main price lists. I have done it this way rather than doing special pricing against business partners. I need a query where you select a p