创建Product Order:BAPI_PRODORD_CREATE
*---------------------------------------------------------------------*
* Form FRM_ORDER_CREATE
*---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* p1 text
* p2 text
*----------------------------------------------------------------------*
FORM frm_order_create .
DATA: ls_upload LIKE LINE OF gt_upload,
ls_style TYPE lvc_s_styl,
lv_index LIKE sy-tabix.
DATA: ls_order TYPE bapi_pp_order_create,
ls_return TYPE bapiret2,
lv_ordnum TYPE bapi_order_key-order_number,
lv_ordtyp TYPE bapi_order_copy-order_type.
LOOP AT gt_upload INTO ls_upload WHERE ztype EQ space AND box EQ 'X'.
lv_index = sy-tabix.
CLEAR: ls_order, ls_return, lv_ordnum, lv_ordtyp, ls_style.
IF ls_upload-externind EQ 'X'.
ls_order-order_number = ls_upload-aufnr.
ENDIF.
ls_order-material = ls_upload-plnbez.
ls_order-plant = ls_upload-dwerk.
ls_order-planning_plant = ls_upload-dwerk.
ls_order-order_type = ls_upload-dauat.
ls_order-quantity = ls_upload-gamng.
ls_order-quantity_uom = ls_upload-gmein.
ls_order-basic_start_date = ls_upload-gstps.
ls_order-basic_start_time = ls_upload-gsuzs.
ls_order-basic_end_date = ls_upload-gltps.
ls_order-basic_end_time = ls_upload-gluzs.
ls_order-unloading_point = ls_upload-ablad.
ls_order-sequence_number = ls_upload-cy_seqnr.
IF ls_upload-verid NE space.
ls_order-prod_version = ls_upload-verid.
ENDIF.
IF ls_upload-lgort NE space.
ls_order-storage_location = ls_upload-lgort.
ENDIF.
CALL FUNCTION 'BAPI_PRODORD_CREATE'
EXPORTING
orderdata = ls_order
IMPORTING
return = ls_return
order_number = lv_ordnum
order_type = lv_ordtyp.
IF lv_ordnum NE space.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CLEAR: ls_upload-fstyle, ls_upload-fstyle[].
ls_style-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_style INTO TABLE ls_upload-fstyle.
ls_upload-aufnr = lv_ordnum.
ls_upload-ztype = 'S'.
ls_upload-message = 'Update successfully'.
ELSE.
ls_upload-ztype = ls_return-type.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
IF ls_return-type NE space.
APPEND ls_return TO ls_upload-retmsg.
ENDIF.
IF ls_upload-ztype = 'E' .
ls_upload-zcol = 'C610' .
ENDIF .
MODIFY gt_upload FROM ls_upload INDEX lv_index.
ENDLOOP.
ENDFORM. " FRM_ORDER_CREATE "
修改Product Order:BAPI_PRODORD_CHANGE
*&---------------------------------------------------------------------*
*& Form frm_order_change
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_order_change.
DATA: ls_upload LIKE LINE OF gt_upload,
ls_style TYPE lvc_s_styl,
lv_index LIKE sy-tabix.
DATA: ls_order TYPE bapi_pp_order_change,
ls_orderx TYPE bapi_pp_order_changex,
ls_return TYPE bapiret2,
lv_ordnum TYPE bapi_order_key-order_number,
lv_ordtyp TYPE bapi_order_copy-order_type.
LOOP AT gt_upload INTO ls_upload WHERE box EQ 'X'.
lv_index = sy-tabix.
CLEAR: ls_order, ls_return, lv_ordnum, lv_ordtyp, ls_style, ls_orderx.
ls_order-quantity = ls_upload-gamng.
ls_order-quantity_uom = ls_upload-gmein.
ls_order-basic_start_date = ls_upload-gstps.
ls_upload-gltps = ls_upload-gstps + ls_upload-nlfzt .
ls_order-basic_end_date = ls_upload-gltps .
ls_order-unloading_point = ls_upload-ablad.
ls_order-sequence_number = ls_upload-cy_seqnr.
ls_order-prod_version = ls_upload-verid.
ls_order-storage_location = ls_upload-lgort.
* ls_order-TERKZ
ls_orderx-quantity = 'X'.
ls_orderx-basic_start_date = 'X'.
ls_orderx-basic_end_date = 'X'.
ls_orderx-sequence_number = 'X'.
ls_orderx-unloading_point = 'X'.
ls_orderx-storage_location = 'X'.
ls_orderx-prod_version = 'X'.
CALL FUNCTION 'BAPI_PRODORD_CHANGE'
EXPORTING
number = ls_upload-aufnr
orderdata = ls_order
orderdatax = ls_orderx
IMPORTING
return = ls_return.
IF ls_return-type EQ 'S' OR ls_return-type EQ space.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CLEAR: ls_upload-fstyle, ls_upload-fstyle[].
ls_style-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_style INTO TABLE ls_upload-fstyle.
ls_upload-ztype = 'S'.
ls_upload-id = c_green.
ls_upload-message = 'Updated successfully'.
ELSE.
ls_upload-ztype = ls_return-type.
ls_upload-id = c_red.
ls_upload-message = ls_return-message.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
IF ls_return-type NE space.
APPEND ls_return TO ls_upload-retmsg.
ENDIF.
IF ls_upload-ztype = 'E' .
ls_upload-zcol = 'C610' .
ENDIF .
MODIFY gt_upload FROM ls_upload INDEX lv_index.
ENDLOOP.
ENDFORM. "frm_order_change"
Product Order Release:BAPI_PRODORD_RELEASE
*&---------------------------------------------------------------------*
*& Form frm_order_RELEASE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_order_release.
DATA: ls_upload LIKE LINE OF gt_upload,
ls_style TYPE lvc_s_styl,
lv_index LIKE sy-tabix.
DATA: lt_orders TYPE TABLE OF bapi_order_key WITH HEADER LINE,
ls_return TYPE bapiret2,
lt_detail_return TYPE TABLE OF bapi_order_return WITH HEADER LINE.
LOOP AT gt_upload INTO ls_upload WHERE ztype EQ 'S' AND box EQ 'X'.
lv_index = sy-tabix.
CLEAR:lt_orders.
lt_orders-order_number = ls_upload-aufnr.
APPEND lt_orders .
CALL FUNCTION 'BAPI_PRODORD_RELEASE'
EXPORTING
release_control = '1'
* WORK_PROCESS_GROUP = 'COWORK_BAPI'
* WORK_PROCESS_MAX = 99
IMPORTING
return = ls_return
TABLES
orders = lt_orders
detail_return = lt_detail_return
* APPLICATION_LOG =
.
IF ls_return-number EQ space.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CLEAR: ls_upload-fstyle, ls_upload-fstyle[].
ls_style-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_style INTO TABLE ls_upload-fstyle.
ls_upload-aufnr = lt_orders-order_number.
ls_upload-xtype = 'S'.
ELSE.
"if lt_DETAIL_RETURN-NUMBER eq '093'."
" ls_upload-xtype = lt_DETAIL_RETURN-MESSAGE."
"endif."
IF lt_detail_return-number EQ '086'.
ls_upload-xtype = lt_detail_return-message.
ls_upload-zcol = 'C610' .
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
MODIFY gt_upload FROM ls_upload INDEX lv_index.
ENDLOOP.
ENDFORM. "frm_order_RELEASE"