‎2007 Aug 08 5:24 PM
Hi guys!
I'm still having trouble with my BAPI. Right now I'm using BAPI_SALESORDER_CREATEFRMDAT1, having an error of
<b>Unpermitted combination of business object BUS2032 and sales doc. category</b>. could someone explain why is this happening? Please help. Below is my code..
DATA: bapisdhd1 LIKE bapisdhd1,
bapisdhd1x LIKE bapisdhd1x,
bapisditm LIKE bapisditm OCCURS 0 WITH HEADER LINE,
bapisditmx LIKE bapisditmx OCCURS 0 WITH HEADER LINE,
bapiparnr LIKE bapiparnr OCCURS 0 WITH HEADER LINE,
return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
-- header
DATA: it_vbak LIKE STANDARD TABLE OF vbak,
wa_vbak LIKE vbak.
-- details
DATA: it_vbap LIKE STANDARD TABLE OF vbap,
wa_vbap LIKE vbap.
DATA: kunnr_soldto TYPE vbpa-kunnr,
kunnr_shipto TYPE vbpa-kunnr.
CLEAR: it_vbak,
it_vbap.
REFRESH: it_vbak,
it_vbap.
CHECK NOT scr0100-vbeln IS INITIAL.
SELECT * FROM vbak INTO TABLE it_vbak "header table for sales order
WHERE vbeln = scr0100-vbeln AND
vbtyp = 'B'.
SELECT * FROM vbap INTO TABLE it_vbap "detail table for sales order
WHERE vbeln = scr0100-vbeln.
SELECT SINGLE kunnr FROM vbpa INTO kunnr_soldto "Ship to party
WHERE vbeln = scr0100-vbeln
AND parvw = 'AG'.
SELECT SINGLE kunnr FROM vbpa INTO kunnr_shipto "Sold to party
WHERE vbeln = scr0100-vbeln
AND parvw = 'WE'.
--! Order header data
bapisdhd1-ref_doc = scr0100-vbeln.
bapisdhd1x-ref_doc = 'X'.
bapisdhd1-refdoc_cat = 'B'.
bapisdhd1x-refdoc_cat = 'X'.
bapisdhd1-doc_type = 'ZRE'.
bapisdhd1x-doc_type = 'X'.
LOOP AT it_vbak INTO wa_vbak.
bapisdhd1-sales_org = wa_vbak-vkorg.
bapisdhd1x-sales_org = 'X'.
bapisdhd1-distr_chan = wa_vbak-vtweg.
bapisdhd1x-distr_chan = 'X'.
bapisdhd1-division = wa_vbak-spart.
bapisdhd1x-division = 'X'.
bapisdhd1x-updateflag = 'I'.
CLEAR wa_vbak.
ENDLOOP.
--! partner function
bapiparnr-partn_role = 'AG'.
bapiparnr-partn_numb = kunnr_soldto.
APPEND bapiparnr.
bapiparnr-partn_role = 'WE'.
bapiparnr-partn_numb = kunnr_shipto.
APPEND bapiparnr.
LOOP AT it_vbap INTO wa_vbap.
bapisditmx-updateflag = 'I'.
bapisditm-ref_doc = wa_vbap-vbeln.
bapisditmx-ref_doc = 'X'.
bapisditm-ref_doc_it = wa_vbap-posnr.
bapisditmx-ref_doc_it = 'X'.
bapisditm-ref_doc_ca = 'B'.
bapisditmx-ref_doc_ca = 'X'.
bapisditm-material = wa_vbap-matnr.
bapisditmx-material = 'X'.
bapisditm-plant = wa_vbap-werks.
bapisditmx-plant = 'X'.
bapisditm-target_qty = wa_vbap-kwmeng.
bapisditmx-target_qty = 'X'.
APPEND: bapisditm,
bapisditmx.
CLEAR wa_vbap.
ENDLOOP.
CHECK NOT it_vbak IS INITIAL AND NOT it_vbap IS INITIAL.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
order_header_in = bapisdhd1
order_header_inx = bapisdhd1x
convert = 'X'
IMPORTING
salesdocument = scr0100-cbeln
TABLES
return = return
order_items_in = bapisditm
order_items_inx = bapisditmx
order_partners = bapiparnr.
LOOP AT return WHERE type = 'E' OR type = 'A'.
EXIT.
ENDLOOP.
IF sy-subrc <> 0.
COMMIT WORK AND WAIT.
ENDIF.
Please help its urgent...tnx!
Regards,
Mackoy
‎2007 Aug 08 6:16 PM
‎2007 Aug 08 5:27 PM
Hi,
Please refer to the documentation below:
Functionality
You can use this method to create sales orders.
You must enter at least the order header data (from the ORDER_HEADER_IN structure) as well as partner data (using the ORDER_PARTNERS table) as input parameters.
Enter item data using the ORDER_ITEMS_IN table. You can allocate the item number by filling in the relevant fields manually, or the system does it according to the settings in Customizing, whereby the relevant fields remain blank.
If the item is configurable, you need to enter the configuration data in the ORDER_CFGS_REF, ORDER_CFGS_INST, ORDER_CFGS_PART_OF and ORDER_CFGS_VALUE tables.
You can use the BAPICCARD structure to enter credit card data. You can either enter data for identifying the card or, you can enter data for an authorization in an external system.
Once you have successfully created the sales order, the system displays the document number (in the SALESDOCUMENT field), as well as detailed data about the other parties (in the OLD_TO_PARTY, SHIP_TO_PARTY and BILLING_PARTY structures). The RETURN parameter displays any errors that may have occured.
The ORDER_ITEMS_OUT table contains more detailed information that will enable you to judge the pricing and availability of an item.
Notes
1. Mandatory entries:
ORDER_HEADER_IN : DOC_TYPE Sales document type
SALES_ORG Sales organization
DISTR_CHAN Distribution channel
DIVISION Division
ORDER_PARTNERS..: PARTN_ROLE Partner functions, SP sold-to party
PARTN_NUMB Customer number
ORDER_ITEMS_IN..: MATERIAL Material number
REQ_QTY Order quantity in sales unit
2. Ship-to party
If a ship-to party hasn't been entered, the ship-to party = sold-to
party
3. COMMIT control:Parameter WITHOUT_COMMIT
If this switch is activated, the system does not process any Commit Work and the application that has called it up must trigger the Commit itself. To do this, useBAPI_TRANSACTION_COMMIT.
4. German keywords:
The following keywords must be entered in German, regardless of the
logon language:
DOC_TYPE Sales document type, for example TA for standard order
PARTN_ROLE Partner function, for example, WE for ship-to party
Hope it will be useful.
Thanks,
Sandeep.
‎2007 Aug 08 5:47 PM
Hi Sandeep!
Am i having problem in my doc_type? in my program, i declare the
doc_type = 'ZRE' which is available in va01. still having a problem.. what should i do..tnx
regards,
Mackoy
‎2007 Aug 08 5:40 PM
‎2007 Aug 08 5:48 PM
Hi Rob,
Yes! and it says:
<b>Unpermitted combination of business object BUS2032 and sales doc. category</b>. do u know this error?
Regards,
Mackoy
‎2007 Aug 08 5:54 PM
‎2007 Aug 08 5:57 PM
‎2007 Aug 08 6:16 PM
‎2007 Aug 08 6:16 PM
‎2007 Aug 08 6:26 PM
You are trying to fill th ereference doc details it at the header level instead fill it at the item level
‎2007 Sep 24 3:42 PM
From wat I'm seeing, you have to use BAPI_SALESDOCU_CREATEFROMDAT1 for any creation that is not a Sales Order.
‎2007 Sep 25 4:34 AM
i hope u have to use 'DOC_TYPE TYPE AUART' instead of refdoc_cat ....
bapisdhd1-ref_doc = scr0100-vbeln.
bapisdhd1x-ref_doc = 'X'.
bapisdhd1-refdoc_cat = 'B'.
bapisdhd1x-refdoc_cat = 'X'.
bapisdhd1-doc_type = 'ZRE'.
bapisdhd1x-doc_type = 'X'.
check the sample code below...........so that u will get an idea............
*Order Partners
data: li_order_partners type standard table of bapiparnr,
l_order_partners like bapiparnr.
*Structures For Order Header
data:l_order_header_in like bapisdhd1,
l_order_header_inx like bapisdhd1x,
*Tables for Order Items
li_order_items_in type standard table of bapisditm,
l_order_items_in like bapisditm,
li_order_items_inx type standard table of bapisditmx,
l_order_items_inx like bapisditmx,
*Return Table from BAPI Call
li_return type standard table of bapiret2,
l_return type bapiret2,
*Sales Document No
l_vbeln like bapivbeln-vbeln,
*Error Flag
l_errflag(1) type c.
start-of-selection.
*Build Partner Information
clear l_order_partners .
l_order_partners-partn_role = 'AG'.
l_order_partners-partn_numb = '0000001002'.
append l_order_partners to li_order_partners.
*Update Flag
l_order_header_inx-updateflag = 'I'.
*Sales document type
l_order_header_in-doc_type = 'TA'.
l_order_header_inx-doc_type = 'X'.
*Sales Organization
l_order_header_in-sales_org = '1000'.
l_order_header_inx-sales_org = 'X'.
*Distribution Channel
l_order_header_in-distr_chan = '10'.
l_order_header_inx-distr_chan = 'X'.
*Division
l_order_header_in-division = '00'.
l_order_header_inx-division = 'X'.
*Purchase Order
l_order_header_in-purch_no_c = 'DG-19970626-300'.
l_order_header_inx-purch_no_c = 'X'.
*Build Order Items for 1 item
l_order_items_in-itm_number = '10'.
l_order_items_inx-itm_number = '10'.
l_order_items_in-material = 'P-100'.
l_order_items_inx-material = 'X'.
l_order_items_in-comp_quant = '1.000'.
l_order_items_inx-comp_quant = 'X'.
append l_order_items_in to li_order_items_in.
l_order_items_inx-updateflag = 'I'.
append l_order_items_inx to li_order_items_inx.
call function 'BAPI_SALESORDER_CREATEFROMDAT2'
exporting
SALESDOCUMENTIN = SALESDOCUMENTIN
order_header_in = l_order_header_in
order_header_inx = l_order_header_inx
SENDER = SENDER
BINARY_RELATIONSHIPTYPE = BINARY_RELATIONSHIPTYPE
INT_NUMBER_ASSIGNMENT = INT_NUMBER_ASSIGNMENT
BEHAVE_WHEN_ERROR = BEHAVE_WHEN_ERROR
LOGIC_SWITCH = LOGIC_SWITCH
testrun = 'X'
CONVERT = ' '
importing
salesdocument = l_vbeln
tables
return = li_return
order_items_in = li_order_items_in
order_items_inx = li_order_items_inx
order_partners = li_order_partners
ORDER_SCHEDULES_IN = ORDER_SCHEDULES_IN
ORDER_SCHEDULES_INX = ORDER_SCHEDULES_INX
ORDER_CONDITIONS_IN = ORDER_CONDITIONS_IN
ORDER_CONDITIONS_INX = ORDER_CONDITIONS_INX
ORDER_CFGS_REF = ORDER_CFGS_REF
ORDER_CFGS_INST = ORDER_CFGS_INST
ORDER_CFGS_PART_OF = ORDER_CFGS_PART_OF
ORDER_CFGS_VALUE = ORDER_CFGS_VALUE
ORDER_CFGS_BLOB = ORDER_CFGS_BLOB
ORDER_CFGS_VK = ORDER_CFGS_VK
ORDER_CFGS_REFINST = ORDER_CFGS_REFINST
ORDER_CCARD = ORDER_CCARD
ORDER_TEXT = ORDER_TEXT
ORDER_KEYS = ORDER_KEYS
EXTENSIONIN = EXTENSIONIN
PARTNERADDRESSES = PARTNERADDRESSES
.
end-of-selection.
*----
Check and write Return table
*----
clear l_errflag.
write: / 'Sales dcoument: ', l_vbeln.
loop at li_return into l_return.
write: / l_return-type, l_return-message(50).
if l_return-type = 'E'.
l_errflag = 'X'.
endif.
endloop.
*----
No errors - Commit
*----
if l_errflag is initial.
call function 'BAPI_TRANSACTION_COMMIT'.
endif.
reward points if helpful..........