BAPI_PRODORD_CREATE_FROM_REF 参考创建生产订单
参考创建可以修改订单类型自带commit 无需commit,call前如果有没提交的先commit掉如果报错(前推式计划)之后,再返回上一个屏幕会dump不会复制“分配”页签的WBS要素建议直接BDCDEMOloopatgt_alv2whereaufnr_newisinitial.*参考创建新工单*BAPIdatals_refcopytypebapi_order_copy.datalv_order
- 参考创建可以修改订单类型
- 自带commit 无需commit,call前如果有没提交的先commit掉
- 如果报错(前推式计划)之后,再返回上一个屏幕会dump
- 不会复制“分配”页签的WBS要素
- 建议直接BDC
DEMO
loop at gt_alv2 where aufnr_new is initial.
*参考创建新工单
*BAPI
data ls_refcopy type bapi_order_copy.
data lv_order_number type bapi_order_copy-order_number.
data lv_order_type type bapi_order_copy-order_type.
data ls_return type bapiret2.
clear:ls_refcopy,lv_order_type,ls_return.
ls_refcopy-reference_order = gt_alv2-aufnr.
ls_refcopy-basic_end_date = gt_alv2-gltrp_new.
set update task local.
call function 'BAPI_PRODORD_CREATE_FROM_REF'
exporting
refcopy = ls_refcopy
importing
order_number = lv_order_number
order_type = lv_order_type
return = ls_return.
if lv_order_number is not initial.
perform frm_lock using lv_order_number.
gt_alv2-rtype = 'S'.
gt_alv2-rtmsg = '订单创建成功;'.
gt_alv2-aufnr_new = lv_order_number.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.
*修改工单数量
perform frm_pro_quantity_change using lv_order_number gt_alv2-gamng_new changing gt_alv2-rtype gt_alv2-rtmsg.
else.
call function 'BAPI_TRANSACTION_ROLLBACK'.
gt_alv2-rtype = 'E'.
message id ls_return-id type ls_return-type number ls_return-number
with ls_return-message_v1 ls_return-message_v2
ls_return-message_v3 ls_return-message_v4
into gt_alv2-rtmsg.
endif.
modify gt_alv2.
endloop.
*修改原工单数量
read table gt_alv2 into data(ls_alv2) with key rtype = 'E'.
if sy-subrc ne 0.
read table gt_alv2 into ls_alv2 index 1.
if ls_alv2-gamng_new = 0. "打删除标识
perform frm_pro_del using ls_alv2-aufnr changing ls_alv2-rtype ls_alv2-rtmsg.
else. "修改数量
perform frm_pro_quantity_change using ls_alv2-aufnr ls_alv2-gamng_new changing ls_alv2-rtype ls_alv2-rtmsg.
endif.
modify gt_alv2 from ls_alv2 index 1 transporting rtype rtmsg.
endif.
form frm_lock using uv_key .
data mode_aufk type enqmode.
data mandt type aufk-mandt.
data aufnr type aufk-aufnr.
aufnr = uv_key.
call function 'ENQUEUE_ESORDER'
exporting
mode_aufk = 'E'
mandt = sy-mandt
aufnr = aufnr
x_aufnr = ' '
_scope = '1'
_wait = ' '
_collect = ' '
exceptions
foreign_lock = 1
system_failure = 2.
if sy-subrc ne 0.
* cv_rtype = 'E'.
message id sy-msgid
type sy-msgty
number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
* into cv_rtmsg
.
return.
endif.
endform.
更多推荐
所有评论(0)