09-12-2008 12:28 PM
Hi Friends,
I have req to change billing block if invoice date is blank
and change invoice date as fullfillment date in sales order.
I am using BAPI_SALESORDER_CHANGE for that.
It changes Invoice Date but not billing block.
Please tell me how it is possible????????
Edited by: Julius Bussche on Sep 15, 2008 11:14 AM
09-12-2008 12:34 PM
Can you post your code? I use that BAPI for that too! Are you filling structures order_header_in and order_header_inx correctly?
order_header_in-BILL_BLOCK = space. "new value
order_header_inx-BILL_BLOCK = 'X'. "variable will change
order_header_inx-updateflag = 'U'.
Regards.
Valter Oliveira.
09-15-2008 5:51 AM
Hi,
I am providing my Code here.
I have used order_item_in to chages line item.
I want to change billing bolck and invoice date for specific line item.
wa_order_header_inx-updateflag = 'U'.
wa_order_item_in-itm_number = sales_doc_item. // line item
IF wa_billingblock-faksp IS NOT INITIAL.
If Billing block has value
IF wa_lineitemvalues-perfk IS INITIAL.
If Invoice Date is blank
wa_order_item_in-bill_date = f_date. // fullfillment date
wa_order_item_in-bill_block = space.
ELSE.
wa_order_item_in-bill_date = wa_lineitemvalues-fkdat. //dont change date
wa_order_item_in-bill_block = space.
ENDIF.
ENDIF.
APPEND wa_order_item_in TO it_order_item_in.
CLEAR wa_order_item_inx.
CLEAR it_order_item_inx.
wa_order_item_inx-itm_number = 'X'.
wa_order_item_inx-updateflag = 'U'.
wa_order_item_inx-bill_date = 'X'.
wa_order_item_inx-bill_block = 'X'.
APPEND wa_order_item_inx TO it_order_item_inx.
************************************************************************
BAPI CALL *
************************************************************************
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = sales_document
ORDER_HEADER_IN = wa_header_in
order_header_inx = wa_order_header_inx
SIMULATION =
BEHAVE_WHEN_ERROR = ' '
INT_NUMBER_ASSIGNMENT = ' '
LOGIC_SWITCH =
NO_STATUS_BUF_INIT = ' '
TABLES
return = it_return1
order_item_in = it_order_item_in
order_item_inx = it_order_item_inx
PARTNERS =
PARTNERCHANGES =
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 =
.
LOOP AT it_return1.
MOVE-CORRESPONDING it_return1 TO it_return2.
APPEND it_return2.
CLEAR it_return2.
ENDLOOP.
************************************************************************
BAPI CALL *
************************************************************************
IF sy-subrc = 0 .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = it_return1.
ENDIF.
09-15-2008 9:56 AM
Hi again.
There is one thing wrong in your code. (structure "inx" item number should not should be 'X'. If you are changing item bill block, wa_order_item_inx-itm_number should be equual to sales_doc_item.
wa_order_item_inx-itm_number = 'X'.
Regards,
Valter Oliveira.
09-15-2008 5:56 AM
order_header_inx-doc_type = c_x.
order_header_inx-sales_org = c_x.
order_header_inx-distr_chan = c_x.
order_header_inx-division = c_x.
wa_order_conditions_inx-cond_type = c_x.
wa_order_conditions_inx-cond_value = c_x.
APPEND wa_order_conditions_inx TO order_conditions_inx.
LOOP AT i_sorder INTO wa_sorder.
order_header_in-doc_type = wa_sorder-doc_type.
order_header_in-sales_org = wa_sorder-sales_org.
order_header_in-distr_chan = wa_sorder-distr_chan.
order_header_in-division = wa_sorder-division.
WA_ORDER_ITEMS_IN-ITM_NUMBER = WA_SORDER-ITM_NUMBER. "'000010'.
wa_order_items_in-material = wa_sorder-material.
wa_order_items_in-plant = wa_sorder-plant.
wa_order_items_in-target_qty = wa_sorder-target_qty.
wa_order_items_in-target_qu = wa_sorder-target_qu.
APPEND wa_order_items_in TO order_items_in.
wa_order_items_inx-ITM_NUMBER = WA_SORDER-ITM_NUMBER.
wa_order_items_inx-material = c_x.
wa_order_items_inx-plant = c_x.
wa_order_items_inx-target_qty = c_x.
wa_order_items_inx-target_qu = c_x.
wa_order_items_inx-updateflag = c_x.
APPEND wa_order_items_inx TO order_items_inx.
WA_ORDER_SCHEDULES_IN-ITM_NUMBER = WA_SORDER-ITM_NUMBER.
WA_ORDER_SCHEDULES_IN-REQ_QTY = wa_sorder-target_qty.
APPEND WA_ORDER_SCHEDULES_IN TO ORDER_SCHEDULES_IN.
WA_ORDER_SCHEDULES_INX-ITM_NUMBER = WA_SORDER-ITM_NUMBER.
WA_ORDER_SCHEDULES_INX-REQ_QTY = C_X.
APPEND WA_ORDER_SCHEDULES_INX TO ORDER_SCHEDULES_INX.
wa_order_partners-partn_role = wa_sorder-partn_role.
wa_order_partners-partn_numb = wa_sorder-partn_numb.
APPEND wa_order_partners TO order_partners.
*WA_ORDER_CONDITIONS_IN-COND_TYPE = WA_SORDER-COND_TYPE.
*WA_ORDER_CONDITIONS_IN-COND_VALUE = WA_SORDER-COND_VALUE.
*APPEND WA_ORDER_CONDITIONS_IN TO ORDER_CONDITIONS_IN.
i_data = wa_sorder.
append i_data.
AT END OF ref.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN =
order_header_in = order_header_in
order_header_inx = order_header_inx
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT =
TABLES
return = return
order_items_in = order_items_in
order_items_inx = order_items_inx
order_partners = 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_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS =
EXTENSIONIN =
PARTNERADDRESSES =
.
READ TABLE return INTO wa_return WITH KEY type = 'S'
number = '311'.
IF sy-subrc <> 0.
READ TABLE return INTO wa_return WITH KEY type = 'E'.
IF sy-subrc = 0.
i_result-ref = wa_sorder-ref.
i_result-message = wa_return-message.
APPEND i_result.
insert lines of i_data into table i_error.
ENDIF.
ELSE.
i_result-ref = wa_sorder-ref.
i_result-message = wa_return-message.
APPEND i_result.
insert lines of i_data into table i_success.
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
return = return1.