BAPI_ALM_ORDER_MAINTAIN IT_SRULE以错误结尾

2020-09-20 21:26发布

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

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


大家好

我正在尝试使用'BAPI_ALM_ORDER_MAINTAIN'更新生产订单结算规则。

我需要更改结算规则的数量,但BAPI总是返回错误。

IWO_BAPI 402使用外部号码读取结算规则时发生错误
IWO_BAPI2 113处理BAPI方法期间发生错误

这是用于测试BAPI的示例代码。

数据:lt_srule bapi_alm_order_srule的类型表,
         ls_srules与lt_srule类似,
         lt_srule_up bapi_alm_order_srule_up的类型表,
         ls_srule_up与lt_srule_up类似,
         lt_methods bapi_alm_order_method的类型表,
         ls_methods与lt_method类似,
         lt_return bapiret2的标准类型表,
         ls_return TYPE bapiret2,
         ls_cobrb TYPE cobrb。

   数据:lv_aufnr TYPE aufnr VALUE'000000501576'。

   SELECT * INTO ls_cobrb从cobrb
                         在哪里aufnr = lv_aufnr
                           AND lfdnr ='001'。
     清除ls_srules。
     ls_srules-objnr = ls_cobrb-objnr。
     ls_srules-lfdnr = ls_cobrb-lfdnr。
     ls_srules-equiv_number = 0。
     ls_srules-orderid = ls_cobrb-aufnr。
     将ls_srules附加到lt_srule。

     ls_srule_up-equiv_number ='X'。
     附加ls_srule_up至lt_srule_up。
   ENDSELECT。

   清除ls_methods。
   ls_methods-refnumber = 1。
   ls_methods-objecttype ='SRULE'。
   ls_methods-method ='CHANGE'。
   ls_methods-objectkey = lv_aufnr。
   将ls_methods附加到lt_methods。

   清除ls_methods。
   ls_methods-refnumber = 1。
   ls_methods-objecttype =空间。
   ls_methods-method ='保存'。
   ls_methods-objectkey = lv_aufnr。
   将ls_methods附加到lt_methods。

   通话功能'BAPI_ALM_ORDER_MAINTAIN'
     桌子
       it_methods = lt_methods
       it_srule = lt_srule
       it_srule_up = lt_srule_up
       返回= lt_return
     。

   读取表lt_return进入具有键类型='A'的ls_return。
   检查sy-subrc <> 0。
   读取表lt_return进入具有键类型='E'的ls_return。
   检查sy-subrc <> 0。

   通话功能'BAPI_TRANSACTION_COMMIT'
     出口
       等待='X'
     。
 

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

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


大家好

我正在尝试使用'BAPI_ALM_ORDER_MAINTAIN'更新生产订单结算规则。

我需要更改结算规则的数量,但BAPI总是返回错误。

IWO_BAPI 402使用外部号码读取结算规则时发生错误
IWO_BAPI2 113处理BAPI方法期间发生错误

这是用于测试BAPI的示例代码。

数据:lt_srule bapi_alm_order_srule的类型表,
         ls_srules与lt_srule类似,
         lt_srule_up bapi_alm_order_srule_up的类型表,
         ls_srule_up与lt_srule_up类似,
         lt_methods bapi_alm_order_method的类型表,
         ls_methods与lt_method类似,
         lt_return bapiret2的标准类型表,
         ls_return TYPE bapiret2,
         ls_cobrb TYPE cobrb。

   数据:lv_aufnr TYPE aufnr VALUE'000000501576'。

   SELECT * INTO ls_cobrb从cobrb
                         在哪里aufnr = lv_aufnr
                           AND lfdnr ='001'。
     清除ls_srules。
     ls_srules-objnr = ls_cobrb-objnr。
     ls_srules-lfdnr = ls_cobrb-lfdnr。
     ls_srules-equiv_number = 0。
     ls_srules-orderid = ls_cobrb-aufnr。
     将ls_srules附加到lt_srule。

     ls_srule_up-equiv_number ='X'。
     附加ls_srule_up至lt_srule_up。
   ENDSELECT。

   清除ls_methods。
   ls_methods-refnumber = 1。
   ls_methods-objecttype ='SRULE'。
   ls_methods-method ='CHANGE'。
   ls_methods-objectkey = lv_aufnr。
   将ls_methods附加到lt_methods。

   清除ls_methods。
   ls_methods-refnumber = 1。
   ls_methods-objecttype =空间。
   ls_methods-method ='保存'。
   ls_methods-objectkey = lv_aufnr。
   将ls_methods附加到lt_methods。

   通话功能'BAPI_ALM_ORDER_MAINTAIN'
     桌子
       it_methods = lt_methods
       it_srule = lt_srule
       it_srule_up = lt_srule_up
       返回= lt_return
     。

   读取表lt_return进入具有键类型='A'的ls_return。
   检查sy-subrc <> 0。
   读取表lt_return进入具有键类型='E'的ls_return。
   检查sy-subrc <> 0。

   通话功能'BAPI_TRANSACTION_COMMIT'
     出口
       等待='X'
     。
 
付费偷看设置
发送
5条回答
宇峰科技
1楼 · 2020-09-20 21:54.采纳回答

在SAP将提供OSS注释以更正此问题之前,我们已直接采取行动并更新了表格。

我们不推荐这种解决方案,但目前我们别无选择。

 * uv_order_number类型aufnr
  更新COBRB SET AQZIF = 0时aufnr = uv_order_number AND lfdnr ='001'。
蓋茨
2楼-- · 2020-09-20 21:51

嗨,丹妮

您是否能够找到问题的原因和解决方案。

能在这里分享您的发现吗?

感谢
Navin

宇峰科技
3楼-- · 2020-09-20 21:37

我刚刚看到您已经发布了此内容,此处 ...

您已经看到错误在" IBAPI_ALM_ORDERSRULE_CHANGE"中引发。...

与该BAPI结合使用,我对订单结算的经验很少,但是您可能要检查一下:

  • 是否存在用于影响同一对象的活动BAdI/出口=> UserExit" EXIT_SAPLCOI1_027"(" ZXWOCU14")...
  • 在方法"对话框"中添加步骤时,有帮助吗? (基于SAP-KBA 1496760和1494862:链接/链接


如果无法使其正常工作,则可能需要研究一些较旧的SAP-KBA的"结算规则更正报告",以了解如何在其中执行CRUD操作...

樱桃小丸子0093
4楼-- · 2020-09-20 21:33

很抱歉,我对您没有经验,我只能找到一些较旧的SAP-KBA提及与外部号码和特征有关的"可能" 值...

  • SAP-KBA 2447493:链接(" BAPI BAPI_ALM_ORDER_MAINTAIN不提供 PSG作为结算接收方的选项。您可能必须使用客户代码程序才能满足您的要求")
  • SAP-KBA 1270258:链接
  • SAP-KBA 1660309:链接(...提到了UExit" EXIT_SAPLCOI1_027 ")
  • SAP-KBA 579461:链接
  • SAP-KBA 733135:链接
  • SAP-KBA 853144:链接
  • SAP-KBA 480280:链接(2016年更新)
  • SAP-KBA 1709315:链接(...提到了 在执行更新BAPI之前先执行FM" COPA_PROFITABILITY_SEGMENT"


(只有某些KBA实际上是指HANA系统)

说实话,我有种感觉,您将无法不借助附加开发(UserExit或BAdI" WORKORDER_UPDATE"之类的东西)进行所需的更改? 如果问题仍然存在,您可以随时向SAP支持人员提出问题,希望能通过此或其他BAPI明确解释可以做什么和不能做什么...


我对您或SAP支持人员提出的建议感兴趣。

Nic T。

追夢秋陽
5楼-- · 2020-09-20 21:52

你好Nic

谢谢您的回答。 我实际上是错误地发布了两次,而且我不知道如何删除帖子。

同时,我被告知不要直接使用功能IBAPI_ALM_ORDERSRULE_CHANGE。 我应该使用函数BAPI_ALM_ORDER_MAINTENANCE。 帖子的创建位置。

但是使用此功能时,返回表包含以下错误记录:

IWO_BAPI 402使用外部号码读取结算规则时发生错误
IWO_BAPI2 113处理BAPI方法期间发生错误

我仍然在同一时间。 我无法更新结算值,并且我不理解错误。

我可以直接从tcode CO02而不是从BAPI更改值。

按照您的建议,我在方法对话框中添加了一个步骤。 它在返回表中以相同的错误结尾。

您建议的用户出口未激活。

两个SAP注释都与组件EA-APPL有关,其中该组件似乎不在SPAM中提供的组件列表中。 我们在S4/HANA下。

所有建议将不胜感激。


致谢

丹尼尔

一周热门 更多>