我需要更新一个对象的两个信息:数量(PLAF-gsmng)并通过模块函数' MD_SET_ACTION_PLAF'刷新计划订单。 我成功地找到了分别更新每个数据的方法。但是当我执行这两个解决方案时,第二个修改不会保存在数据库中。
你知道如何改变数量和数量吗?在PLAF(计划订单)表上设置操作?
您是否知道其他模块功能只更新数量?
可能缺少参数?
如果第二个对象被锁定(sm12为空,没有sy-subrc =已锁定)......并且未提交修改。
我试图:
这是当前的代码:
1)阅读数据
lv_plannedorder = '00000000001'
"Read PLAF data
SELECT SINGLE * FROM PLAF INTO ls_plaf WHERE plnum = lv_plannedorder.
2)更新数量数据
" Standard configuration for FM MD_PLANNED_ORDER_CHANGE
CLEAR ls_610.
ls_610-nodia = 'X'. " No dialog display
ls_610-bapco = space. " BAPI type. Do not use mode 2 -> Action PLAF-MDACC will be autmatically set up to APCH by the FM
ls_610-bapix = 'X'. " Run BAPI
ls_610-unlox = 'X'. " Update PLAF
" Customize values
MOVE p_gsmng TO ls_plaf-gsmng. " Change quantity value
MOVE sy-datlo TO ls_plaf-mdacd. " Change by/datetime, because ls_610-bapco <> 2.
MOVE sy-uzeit TO ls_plaf-mdact.
CALL FUNCTION 'MD_PLANNED_ORDER_CHANGE'
EXPORTING
ecm61o = ls_610
eplaf = ls_plaf
EXCEPTIONS
locked = 1
locking_error = 2
OTHERS = 3.
" Already committed on the module function
" sy-subrc = 0
如果我进入PLAF表,我可以看到数量被编辑。它的工作:)
3)刷新BOM&amp;更改操作(MDACC)和其他字段
CLEAR ls_imdcd.
ls_imdcd-pafxl = 'X'.
CALL FUNCTION 'MD_SET_ACTION_PLAF'
EXPORTING
iplnum = lv_plannedorder
iaccto = 'BOME'
iaenkz = 'X'
imdcd = ls_imdcd
EXCEPTIONS
illegal_interface = 1
system_failure = 2
error_message = 3
OTHERS = 4.
IF sy-subrc = 0.
COMMIT WORK.
ENDIF.
如果我去桌面,没有修改(只能找到第2部分的修改版本。)
有什么想法吗? 也许是因为ls_610-bapco = space?
答案 0 :(得分:1)
应该可以使用MD_SET_ACTION_PLAF
更新计划订单数量,至少SAP帮助tells us如此。你为什么不这样用呢?
它要求更改数量可能如下所示:
DATA: lt_acct LIKE TABLE OF MDACCTO,
ls_acct LIKE LINE OF lt_acct.
ls_acct-accto = 'BOME'.
APPEND lt_acct.
ls_acct-accto = 'CPOD'.
APPEND lt_acct.
is_mdcd-GSMNG = 'value' "updated quantity value
CALL FUNCTION 'MD_SET_ACTION_PLAF'
EXPORTING
iplnum = iv_plnum
iaenkz = 'X'
IVBKZ = 'X'
imdcd = is_mdcd "filled with your BOME-related data + new quantity
TABLES
TMDACCTO = lt_accto
EXCEPTIONS
illegal_interface = 1
system_failure = 2
error_message = 3.
因此不再需要单独调用MD_PLANNED_ORDER_CHANGE
而不再需要更新问题。
我使用了可能这个词,因为我没有在Web上找到这个FM调用的任何例子(而且SAP文档非常模糊),所以我建议这个解决方案只是 / strong>,未经验证。
P.S。 T46AS
表中列出了可能的操作,可以在imdcd
事务中检查MDAC
字段对订单的可能影响。对于单个订单,它有点像这个FM的GUI。