关于 SAP BMBC 批次查询结果 BADI - BIC_ADDITIONAL_DATA 的案例

发布时间 2023-11-19 20:24:19作者: JerryWang_汪子熙

在 SAP 中,BADI(Business Add-In)是一种用户扩展点,可以使用它来插入我们自己的业务逻辑,而不会影响到标准的应用程序。在 ABAP 中,我们经常需要使用 BADI 来满足特定的业务需求。在本文中,我们将介绍一个关于 BMBC 批次查询结果 BADI - BIC_ADDITIONAL_DATA 的案例。

BMBC 是 SAP 的一个标准交易代码,用于批次查询。在查询结果中,我们可能需要显示一些额外的数据,这就需要使用 BIC_ADDITIONAL_DATA BADI。该 BADI 的定义如下:

INTERFACE IF_EX_BIC_ADDITIONAL_DATA.
  METHODS ADDITIONAL_DATA
    IMPORTING
      VALUE(I_BATCHES) TYPE BICSDATA
    EXPORTING
      VALUE(E_ADD_DATA) TYPE BICS_ADD_DATA.
ENDINTERFACE.

在使用这个 BADI 时,我们需要创建一个实现(Implementation),并在实现中编写我们的业务逻辑。

现在,假设我们的业务需求是这样的:在 BMBC 批次查询结果中,我们需要显示每个批次的创建日期和创建者。这些信息在标准的查询结果中并没有显示,所以我们需要使用 BADI 来实现这个需求。

首先,我们需要创建一个 BADI 实现。在 SE18 交易代码中输入 BIC_ADDITIONAL_DATA,然后选择 创建实现。给新的实现命名,比如 ZBIC_ADDITIONAL_DATA,并为其创建一个实现类,比如 ZCL_BIC_ADDITIONAL_DATA。

在 ZCL_BIC_ADDITIONAL_DATA 类中,我们需要重写 ADDITIONAL_DATA 方法。在该方法中,我们将查询数据库,获取批次的创建日期和创建者,然后添加到 E_ADD_DATA 导出参数中。代码如下:

CLASS ZCL_BIC_ADDITIONAL_DATA DEFINITION.
  PUBLIC SECTION.
    INTERFACES IF_EX_BIC_ADDITIONAL_DATA.
ENDCLASS.

CLASS ZCL_BIC_ADDITIONAL_DATA IMPLEMENTATION.
  METHOD IF_EX_BIC_ADDITIONAL_DATA~ADDITIONAL_DATA.
    DATA: lt_mchb TYPE TABLE OF mchb,
          ls_mchb TYPE mchb,
          lt_add_data LIKE E_ADD_DATA.

    LOOP AT I_BATCHES ASSIGNING FIELD-SYMBOL(<fs_batch>).
      SELECT SINGLE * FROM mchb INTO ls_mchb WHERE charg = <fs_batch>-batch.
      IF sy-subrc = 0.
        APPEND INITIAL LINE TO lt_add_data ASSIGNING FIELD-SYMBOL(<fs_add_data>).
        <fs_add_data>-batch = ls_mchb-charg.
        <fs_add_data>-creation_date = ls_mchb-ersda.
        <fs_add_data>-created_by = ls_mchb-ernam.
      ENDIF.
    ENDLOOP.

    E_ADD_DATA = lt_add_data.
  ENDMETHOD.
ENDCLASS.

以上就是 BIC_ADDITIONAL_DATA BADI 的一个实现案例。在这个案例中,我们使用 BADI 在 BMBC 批次查询结果中添加了额外的数据。这个案例展示了在 ABAP 中,如何使用 BADI 来满足特定的业务需求。

上面是 ChatGPT 4.0 的回复结果,可惜根据群友反馈,不能用: