更新PM订单操作项目服务ABAP中的价格

2020-09-21 11:56发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大师们, 我需要在PM订...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大师们,

我需要在PM订单操作中更新外部服务行价格。

我有一个使用BAPI_ALM_ORDER_MAINTAIN的实现。 基本上,我只需要将服务行详细信息传递给表it_servicelines和it_servicelines_up。 我使用BAPI_ALM_ORDER_GET_DETAIL获得的服务线详细信息。

我代码中的摘录:

连接l_aufnr l_vornr INTO l_objectkey。

清除:w_methods。

w_methods-refnumber = l_refnumber。

w_methods-objecttype = c_serviceline。

w_methods-method = c_change。

w_methods-objectkey = l_objectkey。

APPEND将t_method转换为t_method。

清除:w_servicelines。

w_servicelines-activity = w_servicos_upd-vornr。

w_servicelines-outline = w_servicos_upd-outline。

w_servicelines-srv_line = w_servicos_upd-srv_line。

w_servicelines-gross_price = w_servicos_upd-netwr。

APPEND w_servicelines至t_servicelines。

清除:w_servicelines_up。

w_servicelines_up-activity = w_servicos_upd-vornr。

w_servicelines_up-outline = w_servicos_upd-outline。

w_servicelines_up-srv_line = w_servicos_upd-srv_line。

w_servicelines_up-gross_price = c_x。

APPEND w_servicelines_up至t_servicelines_up。

当操作只有一条服务线时,它可以正常工作。

但是当操作有多个服务行(不一定更新多个服务)时,我收到消息 E SRV 007"字段PRICE_UNIT被定制为隐藏模式"。

调试:

在方法 CL_SERVICE_LINE_MMSRV => CHECK_FIELD_SELECTION 中触发了错误(该字段实际上是自定义为"隐藏"模式)。 好吧。

但是问题是:

IM方法 CL_SERVICE_LINE_MMSRV => SET_SERVICE_LINE ,我发现了一个问题。 尝试更新两个正在运行的第一行:

内部表 imt_service_line imt_service_linex 保存来自表it_servicelines和it_servicelines_up的数据。 好吧。

为每个正在运行的服务线迭代此方法。

在第一行中,可以。 在imt_service_linex中,只有字段GROSS_PRICE被标记为" X"。 CL_SERVICE_LINE_MMSRV => CHECK_FIELD_SELECTION可以。

在第二行中,几个字段标记有" X"。 但是我没有为第二条服务线填写表it_servicelines_up。 来到CL_SERVICE_LINE_MMSRV => CHECK_FIELD_SELECTION时,它会返回错误。

这是BAPI中的错误还是局限性?

我的代码类似于以下示例:

http://saptuts.com/abap-function-module-example/example-program-how-to-update-price-in-pm-order-operations-item -services-abap.html

我已经和其他人一起来了。

https://archive.sap.com/discussions/thread/3241240

https://apps.support .sap.com/sap/support/knowledge/preview/zh/2524622