‎2007 Jan 24 6:54 AM
Hi,
In the BAPI_SALESORDER_CHANGE how to use partner, partnerfunctions.
‎2007 Jan 24 6:58 AM
Table of structure BAPIPARNR need to be passed.
Minimum Data to be passed:
1. PARTN_ROLE
2. PARTN_NUMB
Regards
Eswar
‎2007 Jan 24 6:58 AM
Table of structure BAPIPARNR need to be passed.
Minimum Data to be passed:
1. PARTN_ROLE
2. PARTN_NUMB
Regards
Eswar
‎2007 Jan 24 7:28 AM
Refer this demo code,may be it will help you.
FORM update_order_quantity .
*- Local Work Areas
DATA: ls_order_head TYPE bapisdh1, "Order Header
ls_order_headx TYPE bapisdh1x, "Order HeaderX
ls_order_item TYPE bapisditm, "Order Item
ls_order_itemx TYPE bapisditmx, "Order ItemX
ls_return TYPE bapiret2, "BAPI Return table
ls_submit TYPE t_display, "Submit data
ls_schedule_lines TYPE bapischdl, "Schedule line data
ls_schedule_linesx TYPE bapischdlx, "Schedule line data
ls_log TYPE t_log. "Log data
*- Local Internal tables
DATA:
lt_return TYPE STANDARD TABLE OF bapiret2, "Retrun table
lt_order_item TYPE STANDARD TABLE OF bapisditm, "Item table
lt_order_itemx TYPE STANDARD TABLE OF bapisditmx, "Itemx table
lt_schedule_lines TYPE STANDARD TABLE OF bapischdl, "Schedule line
lt_schedule_linesx TYPE STANDARD TABLE OF bapischdlx. "Schedule lineX
*- Local Constants
CONSTANTS: lc_004 TYPE vbap-mvgr5 VALUE '004',
lc_99 TYPE vbap-abgru VALUE '99',
lc_u TYPE c VALUE 'U',
lc_e TYPE c VALUE 'E',
lc_311 TYPE symsgno VALUE '311'.
CLEAR: gt_log.
REFRESH gt_log.
LOOP AT gt_submit INTO ls_submit.
*-Clearing for every new Order
AT NEW vbeln.
CLEAR: lt_order_item,
lt_order_itemx,
lt_schedule_lines,
lt_schedule_linesx,
lt_return.
ENDAT.
*- Population of Order Item data
ls_order_item-itm_number = ls_submit-posnr. "Item
ls_order_item-prc_group5 = '003'."lc_004. "Material Group5
IF ls_submit-zmeng = 0.
ls_order_item-reason_rej = lc_99. "Reason for Rejection
ENDIF.
APPEND ls_order_item TO lt_order_item.
*-Population of update flag for Order Item
ls_order_itemx-itm_number = ls_submit-posnr."Item
ls_order_itemx-updateflag = lc_u. "Update flag
ls_order_itemx-prc_group5 = gc_x. "Material Group5 update
*- if the required quanity is zero then reject the line
IF ls_submit-zmeng = 0.
ls_order_itemx-reason_rej = gc_x. "Reason for Rejection
ENDIF.
APPEND ls_order_itemx TO lt_order_itemx.
*-Population of
ls_schedule_lines-itm_number = ls_submit-posnr.
ls_schedule_lines-sched_line = ls_submit-etenr.
ls_schedule_lines-req_qty = ls_submit-zmeng.
APPEND ls_schedule_lines TO lt_schedule_lines.
*-Population of update flag for Schedule line data
ls_schedule_linesx-itm_number = ls_submit-posnr.
ls_schedule_linesx-sched_line = ls_submit-etenr.
ls_schedule_linesx-updateflag = lc_u.
ls_schedule_linesx-req_qty = gc_x.
APPEND ls_schedule_linesx TO lt_schedule_linesx.
*- at the end of Order call the BAPI to Update the Order
AT END OF vbeln.
ls_order_head-collect_no = ls_submit-vbeln.
ls_order_headx-updateflag = lc_u.
ls_order_headx-collect_no = gc_x.
*- BAPI Call to Update the Order
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = ls_submit-vbeln
order_header_in = ls_order_head
order_header_inx = ls_order_headx
TABLES
return = lt_return
order_item_in = lt_order_item
order_item_inx = lt_order_itemx
schedule_lines = lt_schedule_lines
schedule_linesx = lt_schedule_linesx.
*- Check for the errors and based on that populate the log
READ TABLE lt_return INTO ls_return WITH KEY type = lc_e.
IF sy-subrc EQ 0.
LOOP AT lt_return INTO ls_return WHERE type = lc_e.
ls_log-excep = 1.
ls_log-vbeln = ls_submit-vbeln.
ls_log-message = ls_return-message.
APPEND ls_log TO gt_log.
CLEAR: ls_log,
ls_submit-vbeln .
ENDLOOP.
ELSE.
*- Commit the Changes
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = gc_x.
*- Check for the success message and populate the log
LOOP AT lt_return INTO ls_return WHERE number = lc_311.
ls_log-excep = 3.
ls_log-vbeln = ls_submit-vbeln.
ls_log-message = ls_return-message.
APPEND ls_log TO gt_log.
CLEAR: ls_log,
ls_submit-vbeln .
ENDLOOP.
ENDIF.
ENDAT.
*- Clearing the work areas.
CLEAR: ls_order_item,
ls_order_itemx,
ls_schedule_lines,
ls_schedule_linesx.
ENDLOOP.
ENDFORM. " update_order_quantity
‎2007 Jan 24 7:35 AM
Hi,
check this out, this might help:
Data: salesd like BAPIVBELN-VBELN.
data: it_BAPISDH1 type BAPISDH1.
data: it_BAPISDH1X type BAPISDH1X.
data: it_BAPIPARNR type BAPIPARNR occurs 0 with header line.
data: it_BAPIRET2 type BAPIRET2 occurs 0 with header line.
data: it_BAPIPARNRC type BAPIPARNRC occurs 0 with header line.
data: it_BAPISDITMX type BAPISDITMX occurs 0 with header line.
data: it_BAPISDITM type standard table of BAPISDITM with header line.
constants: c_bp(2) type c value 'BP'.
it_BAPISDH1X-UPDATEFLAG = 'U'.
it_BAPISDH1X-SALES_ORG = 'X'.
it_BAPISDH1X-DISTR_CHAN = 'X'.
it_BAPISDH1X-DIVISION = 'X'.
it_BAPISDH1X-PURCH_NO_C = 'X'.
it_BAPISDH1X-CUST_GROUP = 'X'.
it_BAPISDH1-SALES_ORG = '1000'.
it_BAPISDH1-DISTR_CHAN = '01'.
it_BAPISDH1-DIVISION = '00'.
it_BAPISDH1-PURCH_NO_C = 'Test1'.
***it_BAPIPARNR-PARTN_ROLE = 'RE'.
***it_BAPIPARNR-PARTN_NUMB = '0000000171'.
***it_BAPIPARNR-ITM_NUMBER = '00000'.
***append it_BAPIPARNR.
***it_BAPIPARNR-PARTN_ROLE = 'RE'.
***it_BAPIPARNR-PARTN_NUMB = '0000000179'.
***it_BAPIPARNR-ITM_NUMBER = '000000'.
***append it_BAPIPARNR.
it_BAPIPARNRC-DOCUMENT = '000000375'.
it_BAPIPARNRC-ITM_NUMBER = '000000'.
it_BAPIPARNRC-UPDATEFLAG = 'U'.
it_BAPIPARNRC-PARTN_ROLE = 'WE'.
it_BAPIPARNRC-P_NUMB_OLD = '0000000171'.
it_BAPIPARNRC-P_NUMB_NEW = '0000000179'.
***it_BAPIPARNRC-ADDRESS = '26324'.
it_BAPIPARNRC-ADDR_LINK = '0000000003'.
***it_BAPIPARNRC-REFOBJTYPE = 'BUS2032'.
***it_BAPIPARNRC-REFOBJKEY = '000000375'.
append it_BAPIPARNRC.
data PARTNERADDRESSES like BAPIADDR1 occurs 0 with header line.
PARTNERADDRESSES-ADDR_NO = '0000000003'.
PARTNERADDRESSES-NAME = 'Test Cust'.
PARTNERADDRESSES-STREET = '222nd AVE'.
PARTNERADDRESSES-NAME_2 = 'NEW Bldg A2'.
PARTNERADDRESSES-CITY = 'MILPITAS'.
***PARTNERADDRESSES-REGION = 'CA'.
PARTNERADDRESSES-POSTL_COD1 = '950351'.
PARTNERADDRESSES-COUNTRY = 'IN'.
PARTNERADDRESSES-LANGU = 'E'.
APPEND PARTNERADDRESSES. CLEAR PARTNERADDRESSES.
*it_BAPISDITMX-ITM_NUMBER = '00010'.
*it_BAPISDITMX-UPDATEFLAG = 'U'.
*it_BAPISDITMX-MATERIAL = 'X'.
*it_BAPISDITMX-CUST_GROUP = 'X'.
*append it_BAPISDITMX.
*it_BAPISDITM-ITM_NUMBER = '00010'.
*it_BAPISDITM-MATERIAL = '946'.
*append it_BAPISDITM.
break-point.
salesd = '0000000375'.
call function 'BAPI_SALESORDER_CHANGE'
exporting
salesdocument = salesd
ORDER_HEADER_IN = it_BAPISDH1
order_header_inx = it_BAPISDH1X
SIMULATION =
BEHAVE_WHEN_ERROR = ' '
INT_NUMBER_ASSIGNMENT = ' '
LOGIC_SWITCH =
tables
ORDER_ITEM_IN = it_BAPISDITM
ORDER_ITEM_INX = it_BAPISDITMX
PARTNERS = it_BAPIPARNR
return = it_BAPIRET2
PARTNERCHANGES = it_BAPIPARNRC
PARTNERADDRESSES = PARTNERADDRESSES
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
SCHEDULE_LINES =
SCHEDULE_LINESX =
ORDER_TEXT =
ORDER_KEYS =
CONDITIONS_IN =
CONDITIONS_INX =
EXTENSIONIN =
.
If sy-subrc = 0.
break-point.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN =
.