【问题标题】:How to implement user-exit 'EXIT_SAPLIQS0_017' for fields BEQUI and BTPLN?如何为字段 BEQUI 和 BTPLN 实现用户退出“EXIT_SAPLIQS0_017”?
【发布时间】:2019-06-04 11:21:10
【问题描述】:

更新通知后,我想在表 VIQMEL 中插入受影响的设备 (BEQUI) 和功能位置 (BTPLN)。我阅读了一些提到用户出口 EXIT_SAPLIQS0_017 的主题。但是,我从未见过它的实现,我的也不起作用。

这是迄今为止尝试过的;我知道这是非常基本的,但我对用户出口非常缺乏经验。

  data: ls_notif  type viqmel.
  data: lt_qmfe   type table of wqmfe.
  data: lt_qmur   type table of wqmur.
  data: lt_qmma   type table of wqmma.
  data: lt_qmsm   type table of wqmsm.

  select single * from viqmel into @data(ls_viqmel) where qmnum eq '000010000719'.
  select single * from tq80 into @data(ls_tq80) where qmart eq @ls_viqmel-qmart.

  ls_viqmel-bequi = '1000069'.
  ls_viqmel-btpln = '1010'.

  call function 'EXIT_SAPLIQS0_017'
    exporting
      i_viqmel = ls_viqmel
      i_tq80   = ls_tq80
    importing
      e_viqmel = ls_notif
    tables
      t_viqmfe = lt_qmfe
      t_viqmur = lt_qmur
      t_viqmma = lt_qmma
      t_viqmsm = lt_qmsm.

我恢复了 viqmel 结构,但是当我检查 VIQMEL 表时似乎没有任何改变。有什么想法吗?

【问题讨论】:

  • EXIT_*_### 是用户出口自己的功能模块,您可以实现。你不能打电话给他们。您通过事务代码CMOD 实现这些用户出口(创建一个项目,分配增强功能,转到功能模块并为空的INCLUDE 源单元添加代码)。在您的情况下,它是增强 QQMA0025 和包含 ZXWOCU21

标签: abap netweaver


【解决方案1】:

正如 Sandra 正确指出的那样,您不直接调用出口,而是实现它们。

  1. 创建ZXWOCU21 include where 只写这两行代码

    e_viqmel-bequi = '1000069'.
    e_viqmel-btpln = '1010'.
    

您不应该手动填写参数(如tq80),它们是系统默认预填充的。

  1. 在 CMOD tcode(如果不存在)中为增强组件 QQMA0025 创建项目,其中包含您的用户退出并激活它。这是手册

Create Enhancement Project for SAP User Exit Function using CMOD in ABAP

【讨论】:

  • QQMA0014 是 BAPI_ALM_NOTIF_DATA_MODIFY 的相应增强吗?
  • 通常 BAPI 是独立的模块,不属于增强功能的一部分,与出口不同,它们应该手动调用。出口的命名模式是EXIT_XXXXXX。您可以检查 SMOD tcode 中某个出口中包含哪些模块,输入增强名称并选择组件
  • 好的,QQMA0025 由 IW21 和 'BAPI_ALM_NOTIF_CREATE' 触发。但是 QQMA0014 仅由 IW22 触发,而不是由 'BAPI_ALM_NOTIF_DATA_MODIFY。知道为什么会这样,或者我可以如何解决它吗?
  • Any idea whywhy 是一个反问,只能由 SAP 回答,这是他们的标准代码。你怎么能解决它?没门。您不能通过退出来执行此操作,它们的调用点是固定的并且无法更改,但是您可以修改 BAPI_ALM_NOTIF_DATA_MODIFY 并将您的自定义代码从退出放入 explicit/implicit enhancement,例如在此 BAPI 的第 38 行中
【解决方案2】:

您可以检查来自EXIT_SAPLIQS0_017 的 Z“包含文件”。如果有人已经实现它(或将其分配给他(她),最好在注释行中说明添加的原因以及逻辑的放置位置。

从 ABAP 方面,基本上你在你的包中实现这个 Z 包含。当您双击它时,GUI(或 Eclipse)将导航它或给您一个弹出窗口(您会创建它吗?)

如何查找很简单,您可以使用cmodsmod 作为标准,但是您已经知道退出名称,请尝试事务代码SE37。填写EXIT_SAPLIQS0_017,查看里面的INCLUDE z...

【讨论】:

    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 2014-10-27
    • 2023-01-11
    • 1970-01-01
    • 2020-08-09
    • 2013-06-06
    • 2010-10-03
    • 1970-01-01
    相关资源
    最近更新 更多