1

我试图弄清楚我可以使用哪个 BAPI/FM 来搜索根据日期搜索条件(如果可能的话 + 时间)确认的金额,并且工作中心确认在哪里确认...

我将使用包含这些信息的BAPI_PRODORDCONF_GETDETAIL,但根据 BAPI 指南,我只能加载确认号+确认计数器的数据。

因此,选项将是运行BAPI_PRODORDCONF_GETLIST(但我只能输入生产订单范围或确认号范围),然后过滤包括我需要的工作中心和日期在内的内容,并从中提取确认号+计数器并通过BAPI_PRODORDCONF_GETDETAIL运行它。

  • 但是这个获取所有内容列表而不在服务器端过滤数据的过程非常耗时,并且在 SAP Gui 之外我有超时错误......因此我需要任何 BAPI/FM 可以输入工作中心的确认和日期,并且有数据已经过滤...

任何想法如何做到这一点?

4

1 回答 1

1

据我所知没有这样的标准FM,所以你唯一的选择是定制开发。

如果此信息以方便的形式公开,我建议您MCPK进行交易,但我看到您的要求是从外部接收此信息,这不适合您。

确认位于AFRU表中,工作中心位于 中CRHD,因此要按工作中心查找确认的数量,您应该加入这些表,或使用u_15673链接此信息的视图:

TYPES: BEGIN OF prod_orders,
            rueck TYPE afru-rueck, "confirmation number
            rmzhl TYPE afru-rmzhl," confirmation counter
            gmnga TYPE afru-gmnga, " quantity
            arbid TYPE crhd-arbpl, " workcenter
          END OF prod_orders.

DATA: orders TYPE TABLE OF prod_orders.

SELECT *
  FROM u_15673
  INTO CORRESPONDING FIELDS OF TABLE orders
WHERE isdd >= '20180101' AND isdz <= '163000'.

要从外部拉取它,您必须创建启用 RFC 的 FM 或使用RFC_READ_TABLE并使用参数获取此视图,这里是示例

另一种方法是使用RFC_ABAP_INSTALL_AND_RUN. 您必须创建一个使用 WRITE 将结果作为标准列表输出到屏幕的 ABAP 程序。

将此程序的行发送RFC_ABAP_INSTALL_AND_RUNPROGRAM参数,代码将在远程系统上执行,此 FM 将返回屏幕结果作为表 WRITES 的行。

基于 MCPK tcode 的可能示例发送到RFC_ABAP_INSTALL_AND_RUN

CLEAR lwa_selection.
lwa_selection-selname = 'SL_SPTAG'.
lwa_selection-sign = 'I'.
lwa_selection-option = 'BT'.
lwa_selection-low = '20180101'.
lwa_selection-high = '20201231'.
APPEND lwa_selection TO li_selection.
CLEAR lwa_selection.
lwa_selection-selname = 'SL_ARBPL'.
lwa_selection-sign = 'I'.
lwa_selection-option = 'EQ'.
lwa_selection-low = '10400001'.
APPEND lwa_selection TO li_selection.


SUBMIT rmcf0200 WITH SELECTION-TABLE li_selection
        with par_stat = abap_true
    EXPORTING LIST TO MEMORY
    AND RETURN.

DATA: xlist TYPE TABLE OF abaplist.
DATA: xtext TYPE TABLE OF char200.

CALL FUNCTION 'LIST_FROM_MEMORY'
  TABLES
    listobject = xlist.

CALL FUNCTION 'LIST_TO_TXT'
  EXPORTING
    list_index = -1
  TABLES
    listtxt    = xtext
    listobject = xlist.

IF sy-subrc = 0.
  LOOP AT xtext ASSIGNING FIELD-SYMBOL(<text>).
    WRITE <xtext>.
  ENDLOOP.
ENDIF.

但是,这种方法并不灵活,因为MCPK标准布局与您想要的有点不同,并且不容易以编程方式进行调整。

因此,我建议坚持这种RFC_READ_TABLE方法。

于 2020-10-23T11:59:10.517 回答