FORM update_quotation USING p_vbeln TYPE vbeln.
DATA: lt_preventivo TYPE TABLE OF it_preventivi,
ls_preventivo LIKE LINE OF gt_preventivo,
lv_item TYPE etenr,
lv_offerta TYPE bapivbeln-vbeln,
ls_header TYPE bapisdhd1,
ls_header_x LIKE bapisdh1x,
lt_items TYPE TABLE OF bapisditm,
ls_items LIKE LINE OF lt_items,
lt_items_x TYPE TABLE OF bapisditmx,
ls_items_x LIKE LINE OF lt_items_x,
lt_sales_partners TYPE TABLE OF bapiparnr,
ls_sales_partners LIKE LINE OF lt_sales_partners,
lt_condition TYPE TABLE OF bapicond,
ls_condition LIKE LINE OF lt_condition,
lt_condition_x TYPE TABLE OF bapicondx,
ls_condition_x LIKE LINE OF lt_condition_x,
lt_schedules TYPE TABLE OF bapischdl,
ls_schedules LIKE LINE OF lt_schedules,
lt_schedules_x TYPE TABLE OF bapischdlx,
ls_schedules_x LIKE LINE OF lt_schedules_x,
lt_extension TYPE TABLE OF bapiparex,
ls_extension LIKE LINE OF lt_extension,
ls_bape_vbap TYPE bape_vbap,
ls_bape_vbapx TYPE bape_vbapx,
lv_char_string TYPE string,
lt_return TYPE TABLE OF bapiret2,
ls_return LIKE LINE OF lt_return
.
FIELD-SYMBOLS: <lfs_preventivo> LIKE LINE OF gt_preventivo
.
LOOP AT gt_preventivo INTO ls_preventivo WHERE sel IS NOT INITIAL.
*Items
ls_items-itm_number = ls_preventivo-id_riga.
ls_items-material = ls_preventivo-matnr.
ls_items-target_qty = ls_preventivo-quantita.
ls_items-target_qu = ls_preventivo-um.
ls_items-gross_wght = '100'.
ls_items-net_weight = '80'.
ls_items-untof_wght = 'KG'.
APPEND ls_items TO lt_items.
CLEAR ls_items.
* ls_items_x-updateflag = 'I'.
ls_items_x-itm_number = ls_preventivo-id_riga.
ls_items_x-material = abap_true.
ls_items_x-target_qty = abap_true.
ls_items_x-target_qu = abap_true.
ls_items_x-gross_wght = abap_true.
ls_items_x-net_weight = abap_true.
ls_items_x-untof_wght = abap_true.
APPEND ls_items_x TO lt_items_x.
CLEAR ls_items_x.
*Price Condition
ls_condition-itm_number = ls_preventivo-id_riga.
ls_condition-cond_type = 'ZPR0'.
ls_condition-cond_value = '12.0'.
ls_condition-currency = 'EUR'.
APPEND ls_condition TO lt_condition.
CLEAR ls_condition.
* ls_condition_x-updateflag = 'I'.
ls_condition_x-itm_number = ls_preventivo-id_riga.
ls_condition_x-cond_type = abap_true.
ls_condition_x-cond_value = abap_true.
ls_condition_x-currency = abap_true.
APPEND ls_condition_x TO lt_condition_x.
CLEAR ls_condition_x.
*Schedules Items
ADD 1 TO lv_item.
ls_schedules-itm_number = ls_preventivo-id_riga.
ls_schedules-sched_line = lv_item.
ls_schedules-req_date = '20200212'.
ls_schedules-dlv_date = '20200212'.
ls_schedules-req_qty = ls_preventivo-quantita.
APPEND ls_schedules TO lt_schedules.
CLEAR ls_schedules.
* ls_schedules_x-updateflag = 'I'.
ls_schedules_x-itm_number = ls_preventivo-id_riga.
ls_schedules_x-sched_line = lv_item.
ls_schedules_x-req_date = abap_true.
ls_schedules_x-dlv_date = abap_true.
ls_schedules_x-req_qty = abap_true.
APPEND ls_schedules_x TO lt_schedules_x.
CLEAR ls_schedules_x.
*Extension
PERFORM fill_extension CHANGING ls_bape_vbap
ls_bape_vbapx
ls_preventivo.
CALL FUNCTION 'C147_WORKAREA_TO_CHARFIELD'
EXPORTING
i_workarea = ls_bape_vbap
IMPORTING
e_charfield = ls_extension+30(960).
ls_extension-structure = 'BAPE_VBAP'.
APPEND ls_extension TO lt_extension.
CLEAR ls_extension.
ls_extension-structure = 'BAPE_VBAPX'.
ls_extension+30(960) = ls_bape_vbapx.
APPEND ls_extension TO lt_extension.
CLEAR ls_extension.
ENDLOOP.
IF lt_items[] IS NOT INITIAL.
ls_header_x-updateflag = 'U'.
ENDIF.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = p_vbeln
* ORDER_HEADER_IN =
order_header_inx = ls_header_x
* SIMULATION =
* BEHAVE_WHEN_ERROR = ' '
* INT_NUMBER_ASSIGNMENT = ' '
* LOGIC_SWITCH =
* NO_STATUS_BUF_INIT = ' '
TABLES
return = lt_return
order_item_in = lt_items
order_item_inx = lt_items_x
* 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 = lt_schedules
schedule_linesx = lt_schedules_x
* ORDER_TEXT =
* ORDER_KEYS =
conditions_in = lt_condition
conditions_inx = lt_condition_x
extensionin = lt_extension
* EXTENSIONEX =
* NFMETALLITMS =
.
READ TABLE lt_return INTO ls_return
WITH KEY type = 'E'.
IF sy-subrc EQ 0.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
LOOP AT gt_preventivo ASSIGNING <lfs_preventivo> WHERE sel EQ abap_true.
CLEAR <lfs_preventivo>-sel.
<lfs_preventivo>-vbeln = lv_offerta.
<lfs_preventivo>-posnr = <lfs_preventivo>-id_riga.
ENDLOOP.
PERFORM save.
ENDIF.
ENDFORM.