0

如何在网关服务中使用 ENQUEUEGETSTAT 功能模块,这个 fm 返回 3 个参数(ENTRIES_TOTAL、ENTRIES_PEAK、ENTRIES_ACTUAL)

我可以在网关中映射表,但无法弄清楚这一点。如何将这些参数收集到内部表中然后导出?

在此处输入图像描述

4

1 回答 1

1

对我来说它看起来像一个function import用例。

首先,您必须为返回的数据定义一个 ABAP 结构,如下所示

@EndUserText.label : 'ENQUEUEGETSTAT'
@AbapCatalog.enhancementCategory : #NOT_EXTENSIBLE
define structure zza_enqueuegetstat {
    entries_total  : abap.int4;
    entries_peak   : abap.int4;
    entries_actual : abap.int4;
}

在您的 SEGW 项目中,创建ENQUEUEGETSTAT到此结构的实体类型映射。

在此处输入图像描述.

之后,创建一个函数 import ENQUEUEGETSTAT

在此处输入图像描述

转到您的 DPC_EXT 类并重新定义方法/IWBEP/IF_MGW_APPL_SRV_RUNTIME~EXECUTE_ACTION

method /iwbep/if_mgw_appl_srv_runtime~execute_action.

    data ls_enqueuegetstat type zza_enqueuegetstat.

    if iv_action_name = 'ENQUEUEGETSTAT'.
      call function 'ENQUEUEGETSTAT'
        importing
          entries_total  = ls_enqueuegetstat-entries_actual
          entries_peak   = ls_enqueuegetstat-entries_peak
          entries_actual = ls_enqueuegetstat-entries_total.

      copy_data_to_ref(
          exporting
             is_data = ls_enqueuegetstat
          changing
             cr_data = er_data
      ).
   endif.
endmethod.

保存并激活一切。然后你应该能够访问你的函数导入/sap/opu/odata/sap/**YOUR_SERVICE**/ENQUEUEGETSTAT?$format=json

{
    "d": {
        "EntriesTotal": 382,
        "EntriesPeak": 43189,
        "EntriesActual": 500000
    }
}

希望能帮助到你。

于 2017-08-25T01:46:04.570 回答