0% found this document useful (0 votes)
176 views5 pages

1 Cookbook VBUK VBUP Adaption 20151027

This report copies sales order data from one system to another using BAPI functions. It retrieves order details including items, schedules, partners and conditions from the source system. It then prepares this data to create a new sales order in the target system, mapping fields as needed. Any return messages from the creation process are output.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
176 views5 pages

1 Cookbook VBUK VBUP Adaption 20151027

This report copies sales order data from one system to another using BAPI functions. It retrieves order details including items, schedules, partners and conditions from the source system. It then prepares this data to create a new sales order in the target system, mapping fields as needed. Any return messages from the creation process are output.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

*&---------------------------------------------------------------------*

*& Report ZZ_MS_BAPI_COPY *


*& *
*&---------------------------------------------------------------------*

REPORT zz_ms_bapi_copy.

DATA ls_bapi_view TYPE order_view.


DATA lt_salesdocuments TYPE TABLE OF sales_key.
DATA lt_order_headers_out TYPE TABLE OF bapisdhd.
DATA lt_order_items_out TYPE TABLE OF bapisdit.
DATA lt_order_schedules_out TYPE TABLE OF bapisdhedu.
DATA lt_order_conditions_out TYPE TABLE OF bapisdcond.
DATA lt_order_partners_out TYPE TABLE OF bapisdpart.

DATA: lv_logic_switch TYPE bapisdls.


DATA lv_salesdocument TYPE bapivbeln-vbeln.
DATA lt_return TYPE TABLE OF bapiret2.
DATA lt_order_items_in TYPE TABLE OF bapisditm.
DATA lt_order_schedules_in TYPE TABLE OF bapischdl.
DATA lt_order_partners TYPE TABLE OF bapiparnr.
DATA lt_order_conditions_in TYPE TABLE OF bapicond.

DATA: ls_return TYPE bapiret2.


DATA: ls_header_out TYPE bapisdhd.
DATA ls_order_header_in TYPE bapisdhd1.
DATA: ls_item_out TYPE bapisdit.
DATA: ls_order_items_in TYPE bapisditm.
DATA: ls_order_schedules_in TYPE bapischdl.
DATA: ls_schedules_out TYPE bapisdhedu.
DATA: ls_order_partners_out TYPE bapisdpart.
DATA: ls_order_partners TYPE bapiparnr.
DATA ls_order_conditions_in TYPE bapicond.
DATA: ls_conditions_out TYPE bapisdcond.

PARAMETERS: pa_key TYPE sales_key, "ref_doc


pa_auart TYPE vbak-auart, "doc_type
pa_itmno TYPE vbap-posnr, "itm_number
pa_qty TYPE vbep-wmeng, "Order quantity
pa_prart TYPE kond-knprs, "condition type
pa_purno TYPE vbkd-bstkd. "order number

ls_bapi_view-header = 'X'.
ls_bapi_view-item = 'X'.
ls_bapi_view-sdschedule = 'X'.
ls_bapi_view-sdcond = 'X'.
ls_bapi_view-partner = 'X'.

APPEND pa_key TO lt_salesdocuments.

CALL FUNCTION 'BAPISDORDER_GETDETAILEDLIST'


EXPORTING
i_bapi_view = ls_bapi_view
* I_MEMORY_READ =
TABLES
sales_documents = lt_salesdocuments
order_headers_out = lt_order_headers_out
order_items_out = lt_order_items_out
order_schedules_out = lt_order_schedules_out
* ORDER_BUSINESS_OUT =
order_partners_out = lt_order_partners_out
* ORDER_ADDRESS_OUT =
* ORDER_STATUSHEADERS_OUT =
* ORDER_STATUSITEMS_OUT =
order_conditions_out = lt_order_conditions_out
* ORDER_COND_HEAD =
* ORDER_COND_ITEM =
* ORDER_COND_QTY_SCALE =
* ORDER_COND_VAL_SCALE =
* ORDER_CONTRACTS_OUT =
* ORDER_TEXTHEADERS_OUT =
* ORDER_TEXTLINES_OUT =
* ORDER_FLOWS_OUT =
* ORDER_CFGS_CUREFS_OUT =
* ORDER_CFGS_CUCFGS_OUT =
* ORDER_CFGS_CUINS_OUT =
* ORDER_CFGS_CUPRTS_OUT =
* ORDER_CFGS_CUVALS_OUT =
* ORDER_CFGS_CUBLBS_OUT =
* ORDER_CFGS_CUVKS_OUT =
* ORDER_BILLINGPLANS_OUT =
* ORDER_BILLINGDATES_OUT =
* ORDER_CREDITCARDS_OUT =
* EXTENSIONOUT =
.
************************************************************************
** PREPARE DATA

* fill header data


IF NOT lt_order_headers_out[] IS INITIAL.
READ TABLE lt_order_headers_out INTO ls_header_out INDEX 1.

ls_order_header_in-doc_type = pa_auart.
ls_order_header_in-sales_org = ls_header_out-sales_org.
ls_order_header_in-distr_chan = ls_header_out-distr_chan.
ls_order_header_in-division = ls_header_out-division.
ls_order_header_in-ref_doc = pa_key.
ls_order_header_in-purch_no_c = pa_purno.
ls_order_header_in-refdoc_cat = ls_header_out-sd_doc_cat.
ENDIF.

* fill item data


IF pa_itmno NE 0.
** if itm_number is selected
READ TABLE lt_order_items_out INTO ls_item_out
WITH KEY itm_number = pa_itmno.
IF sy-subrc = 0.
PERFORM add_items.
PERFORM add_schedules.
IF pa_prart CA 'BCG'.
PERFORM add_conditions.
ENDIF.
ENDIF.
ELSE.
** for all items
LOOP AT lt_order_items_out INTO ls_item_out.
PERFORM add_items.
PERFORM add_schedules.
IF pa_prart CA 'BCG'.
PERFORM add_conditions.
ENDIF.
ENDLOOP.

ENDIF.

* fill partner data


READ TABLE lt_order_partners_out INTO ls_order_partners_out
WITH KEY partn_role = 'AG'.
IF sy-subrc = 0.
ls_order_partners-partn_role = 'AG'.
ls_order_partners-partn_numb = ls_order_partners_out-customer.
APPEND ls_order_partners TO lt_order_partners.
ENDIF.

*fill logic switch


lv_logic_switch-pricing = pa_prart.

*** END OF PREPARE DATA


************************************************************************

CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'


EXPORTING
* SALESDOCUMENTIN =
order_header_in = ls_order_header_in
* ORDER_HEADER_INX =
* SENDER =
* BINARY_RELATIONSHIPTYPE =
* INT_NUMBER_ASSIGNMENT =
* BEHAVE_WHEN_ERROR =
logic_switch = lv_logic_switch
* TESTRUN =
* CONVERT = ' '
IMPORTING
salesdocument = lv_salesdocument
TABLES
return = lt_return
order_items_in = lt_order_items_in
* ORDER_ITEMS_INX =
order_partners = lt_order_partners
order_schedules_in = lt_order_schedules_in
* ORDER_SCHEDULES_INX =
order_conditions_in = lt_order_conditions_in
* 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 =
.

LOOP AT lt_return INTO ls_return.


WRITE:/ ls_return-type,
ls_return-id,
ls_return-number,
ls_return-message.
ENDLOOP.

IF NOT lv_salesdocument IS INITIAL.


COMMIT WORK.
ENDIF.

*&---------------------------------------------------------------------*
*& Form add_schedules
*&---------------------------------------------------------------------*
FORM add_schedules . "add schedules to item

LOOP AT lt_order_schedules_out INTO ls_schedules_out


WHERE itm_number = ls_item_out-itm_number.
ls_order_schedules_in-itm_number = ls_schedules_out-itm_number.

IF NOT pa_qty IS INITIAL AND NOT ls_schedules_out-req_qty = 0.


ls_order_schedules_in-req_qty = pa_qty.
ELSE.
ls_order_schedules_in-req_qty = ls_schedules_out-req_qty.
ENDIF.

ls_order_schedules_in-sched_line = ls_schedules_out-sched_line.
APPEND ls_order_schedules_in TO lt_order_schedules_in.
ENDLOOP.

IF sy-subrc <> 0.
ls_order_schedules_in-itm_number = ls_item_out-itm_number.
ls_order_schedules_in-sched_line = '001'.
ls_order_schedules_in-req_qty = pa_qty.
APPEND ls_order_schedules_in TO lt_order_schedules_in.
ENDIF.

ENDFORM. " add_schedules


*&---------------------------------------------------------------------*
*& Form add_items
*&---------------------------------------------------------------------*
FORM add_items .

ls_order_items_in-itm_number = ls_item_out-itm_number.
ls_order_items_in-material = ls_item_out-material.
ls_order_items_in-ref_doc = pa_key.
ls_order_items_in-ref_doc_it = ls_item_out-itm_number.
ls_order_items_in-ref_doc_ca = ls_header_out-sd_doc_cat.
APPEND ls_order_items_in TO lt_order_items_in.

ENDFORM. " add_items


*&---------------------------------------------------------------------*
*& Form add_conditions
*&---------------------------------------------------------------------*
FORM add_conditions. " add conditions to item
LOOP AT lt_order_conditions_out INTO ls_conditions_out
WHERE itm_number = ls_item_out-itm_number
AND NOT cond_type IS INITIAL.
CLEAR ls_order_conditions_in.
MOVE-CORRESPONDING ls_conditions_out TO ls_order_conditions_in.
ls_order_conditions_in-cond_unit = ls_conditions_out-cond_d_unt.
ls_order_conditions_in-currency_2 = ls_order_header_in-currency.
APPEND ls_order_conditions_in TO lt_order_conditions_in.
ENDLOOP.

ENDFORM. " add_conditions

You might also like