如何为 BEQUI 和 BTPLN 字段实现用户退出 'EXIT_SAPLIQS0_017'?

How to implement user-exit 'EXIT_SAPLIQS0_017' for fields BEQUI and BTPLN?

更新通知后,我想在 table 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 table 时似乎没有任何变化。有什么想法吗?

您可以检查 EXIT_SAPLIQS0_017 中的 Z "include file"。如果有人已经实现了它(或将其分配给他(她)),最好在注释行中添加您添加的原因以及您放置逻辑的位置。

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

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

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

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

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

您不应手动填写参数(如tq80),系统默认为pre-populated。

  1. 在 CMOD tcode(如果不存在)中为包含您的 user-exit 的增强组件 QQMA0025 创建项目并激活它。这是手册

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