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

2020-09-21 11:56发布

         点击此处--->   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

         点击此处--->   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

付费偷看设置
发送
3条回答
小灯塔
1楼-- · 2020-09-21 12:46

"我遇到了 https://apps.support.sap.com/sap/support/knowledge/preview/zh/2524622 是什么意思?

这是预览而不是完整的KBA。 它甚至希望您阅读其他OSS注释。 您是否登录到启动板并阅读了解决方案,您是否按照解决方案中的说明进行操作?

您是否尝试过使用BAPI手动执行正常交易? 您在正常交易中没有收到SRV007错误吗? 根据这些信息,可以决定下一步,无论您是要查看自己的编码还是SAP定制和程序。


xfwsx85
2楼-- · 2020-09-21 12:22

您好,我确实阅读了注释2524622。更改自定义选项不是一种选择。 就像我说的 对于第二行,许多字段都带有" X"来更新。

原因

  • 在自定义MM服务时,字段COST_ELEMENT设置为隐藏。
  • 此外,更正注释可能不适用。

分辨率

  1. 如果未应用注释 2108786 (且对您的版本有效) ,应用更正。
  2. 输入交易SPRO(或OLMSRV,跳至第3点)
  3. 选择物料管理。
  4. 选择外部服务管理。
  5. 选择"定义屏幕布局"。
  6. 双击字段选择:第8行-操作。
  7. 双击条目表。
  8. 找到"内部条目表编号"字段。
  9. 将字段更改为"可选"。

就像我说的那样。 它适用于单个服务线。 但前提是该操作只有一条服务线。

在正常事务中-IW32-它可以正常工作。
在早期版本中,BAPI文档中指出"服务线无法更新"。 但是不是我的版本。

悻福寶寶
3楼-- · 2020-09-21 12:30

对此有任何帮助或想法吗?

一周热门 更多>