跳转到内容
技术文章
作者头像张继刚张吉万博新体育手机客户端刚

仅在合作伙伴处更改后重新触发销售订单输出

当系统中某些重要字段发生变化时,有必要提醒用户。Sap提供了事务OMFS,您可以在其中维护表名和表字段的组合以及控制标志,以控制是否应该触发采购订单打印输出。你可以查看我之前的博客如果你对这个话题感兴趣。

现在的一个需求是,仅当在报头级别更改联系人的某些特定字段时,才重新触发销售订单的输出(合作伙伴函数是AP)。不幸的是,我没有找到相应的交易销售订单处理输出重新触发后,一些变化。SAP确实在注释395569中提供了解决方案CHECKLISTSD:更改输出。

这个话题已经讨论过很多次了,但是在一个地方得到所有的答案仍然不容易。本文试图总结有关重新触发与联系伙伴相关的SO输出的相关要点。

1.允许多个输出的发布

没有人希望一直收到特定订单的订单确认。默认情况下,系统会阻止将相同的输出发送给同一个伙伴一次以上。所以在输出类型配置时,要勾选Multiply下发指示灯。

2.输出控制与过滤条件的自定义例程

当然,我们不需要在销售订单发生每次更改后重新触发输出。所以只有在特定的条件下才能过滤输出重新触发。这是由T685B表中的两个字段(approg和AROUT)控制的。

对于销售订单,在包含程序MV45AFZZ中创建一个名为ZZ_ITEM_CHECK的例程。通过比较从YVBAP获取的旧值和从XVBAP获取的新值,设置特定字段更改时的返回码。

ZZ_ITEM_CHECK形式。Sy-subrc = 4。“所有更改默认不输出!”在xvbap处循环。If (updkz = ' i ') or (updkz = ' d ')检查项目级别是否有任何更改<为特定字段添加自定义条件!> sy-subrc = 0。“设置为0意味着需要此更改的输出!退出。ENDIF。ENDLOOP。 ENDFORM.

然后在相应的输出设置中维护程序名和例程名。

3.为合作伙伴更改场地

对于可以通过上述例程和输出设置实现的项目级字段。但对于联系人的变化,一个领域的VBPA-ADRDA可能需要注意。我不确定它是否涵盖了所有的情况,如果我错了请指正。

场景1:未修改默认值的初始订单创建联系人

当使用默认主数据创建订单时,该字段VBPA-ADRDA将为' D '。联系人数据来自表KNVK,客户数据来自表KNA1。(注意用户退出可能会影响此过程)。请注意,由于没有选择联系人,此处ADRNP为空白。(顺便说一下,VAP2的变化将根据ADRC-ADRNR更新联系人,但与订单级别完全无关。)

场景2:订单创建后更改联系人

当用户选择不同的联系人而不是下面屏幕中的默认联系人时,这个字段VBPA-ADRDA仍然等于' D '。

在VBPA表中,字段ADRNP被更新为一个新选择的伙伴。这里的表源是ADRP。

场景3:在创建订单后手动更改联系人详细信息

当用户在下面的屏幕修改联系人详细信息时,这个字段VBPA-ADRDA将变成' E '。

在VBPA表中,我们可以发现ADRNR被替换为一个新的地址编号9000080912,该地址编号是与此订单的save事件一起创建的,而不是更新之前的地址编号0201342374。

在变更日志表CDPOS中,在ADR*表中对这个新地址号有几个新的插入。对象类是addresse,对象ID是' SD01 '加上这个新地址号。

指定的标签

      4评论
      你一定是登录评论:评论或回复一篇文章
      作者简介照片Jel万博新体育手机客户端ena Perfiljeva
      伊莲娜Perfiljeva

      谢谢分享,吉刚!采购和SD共享如此多的组件(例如基于条件的技术),但为POs开发的一些良好且相对简单的功能却无法用于SOs。我猜SAP有很多竖井。

      我想知道S4中新的基于brf的输出是否解决了这个功能,或者我们仍然必须使用这些变通方法。

      作者头像张继刚张吉万博新体育手机客户端刚
      张继刚张吉刚
      博客作者
      伊莲娜Perfiljeva谢谢你的评论。对于S4上的输出管理,我指的是这个博客
      • 你不需要改变任何东西。-至少现在是这样:)
      作者的资料照片雅各万博新体育手机客户端布齐默尔曼
      雅各布·齐默尔曼

      谢谢你提供的信息!这很有帮助。

      作者头像张继刚张吉万博新体育手机客户端刚
      张继刚张吉刚
      博客作者

      @Jacob齐默尔曼

      谢谢,我的荣幸