BAPI/FM 按工作中心和日期搜索产品订单确认?
BAPI/FM to search prod orders confirmations by workcenter and date?
我想弄清楚我可以使用哪个 BAPI/FM 来搜索根据日期(如果可能的话加上时间)和工作中心确认的搜索条件确认的金额...
我会使用包含这些信息的 BAPI_PRODORDCONF_GETDETAIL,但根据 BAPI 指南,我只能加载确认编号+确认计数器的数据。
所以选项会是运行BAPI_PRODORDCONF_GETLIST(但我只能输入生产订单范围或确认编号范围),然后过滤什么包括我需要的工作中心和日期,并从那些拿起确认号码 + 柜台和 运行 通过 BAPI_PRODORDCONF_GETDETAIL。
- 但是这个在服务器端没有过滤数据的情况下获取所有内容列表的过程非常耗时,而且在 SAP Gui 之外我有超时错误...因此我需要任何 BAPI/FM 我可以在其中输入工作中心已确认和日期,并且已经过滤了数据...
知道怎么做吗?
据我所知没有这样的标准FM,所以你只能选择定制开发。
如果此信息以方便的形式公开,我建议您 MCPK
交易,但据我所知,您的要求是从外部接收此信息,这不适合您。
确认位于 AFRU
table,工作中心位于 CRHD
,因此要按工作中心查找确认数量,您应该加入这些 table,或使用查看 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-enabled FM 或使用 RFC_READ_TABLE
并使用参数 here is the sample.
获取此视图
另一种方法是使用 RFC_ABAP_INSTALL_AND_RUN
。您必须创建一个使用 WRITE 的 ABAP 程序将结果作为标准列表输出到屏幕。
将此程序的行发送到 RFC_ABAP_INSTALL_AND_RUN
到 PROGRAM
参数,代码将在远程系统上执行,并且此 FM 将 return 屏幕结果作为 table 写。
基于 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
方法。
我想弄清楚我可以使用哪个 BAPI/FM 来搜索根据日期(如果可能的话加上时间)和工作中心确认的搜索条件确认的金额...
我会使用包含这些信息的 BAPI_PRODORDCONF_GETDETAIL,但根据 BAPI 指南,我只能加载确认编号+确认计数器的数据。
所以选项会是运行BAPI_PRODORDCONF_GETLIST(但我只能输入生产订单范围或确认编号范围),然后过滤什么包括我需要的工作中心和日期,并从那些拿起确认号码 + 柜台和 运行 通过 BAPI_PRODORDCONF_GETDETAIL。
- 但是这个在服务器端没有过滤数据的情况下获取所有内容列表的过程非常耗时,而且在 SAP Gui 之外我有超时错误...因此我需要任何 BAPI/FM 我可以在其中输入工作中心已确认和日期,并且已经过滤了数据...
知道怎么做吗?
据我所知没有这样的标准FM,所以你只能选择定制开发。
如果此信息以方便的形式公开,我建议您 MCPK
交易,但据我所知,您的要求是从外部接收此信息,这不适合您。
确认位于 AFRU
table,工作中心位于 CRHD
,因此要按工作中心查找确认数量,您应该加入这些 table,或使用查看 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-enabled FM 或使用 RFC_READ_TABLE
并使用参数 here is the sample.
另一种方法是使用 RFC_ABAP_INSTALL_AND_RUN
。您必须创建一个使用 WRITE 的 ABAP 程序将结果作为标准列表输出到屏幕。
将此程序的行发送到 RFC_ABAP_INSTALL_AND_RUN
到 PROGRAM
参数,代码将在远程系统上执行,并且此 FM 将 return 屏幕结果作为 table 写。
基于 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
方法。