动态调用 SAP Function Module 的方法
在 SAP 系统中,标准表 FUPARAREF 存储了 Function Module 的输入输出参数信息。通过查询此表并结合动态调用技术,可以实现灵活的 Function Module 调用

以下代码部分
DATA:lv_req TYPE REF TO data,
lv_resp TYPE REF TO data.
FIELD-SYMBOLS:<fs_req> TYPE any,
<fs_resp> TYPE any,
<fs_value> TYPE any.
“可在此维护相关function名称
SELECT SINGLE * FROM ztif_prog WHERE cid = @sscrfields-ucomm INTO @DATA(gs_tab).
IF gs_tab IS INITIAL .
MESSAGE '请维护表 ztif_prog' TYPE 'E'.
ELSE.
SELECT * FROM fupararef WHERE funcname = @gs_tab-fun INTO TABLE @DATA(gt_fconf).
TRY.
LOOP AT gt_fconf INTO DATA(gs_fconf).
IF gs_fconf-parameter = 'INPUT'.
CREATE DATA lv_req TYPE (gs_fconf-structure).
ASSIGN lv_req->* TO <fs_req>.
ENDIF.
IF gs_fconf-parameter = 'OUTPUT'.
CREATE DATA lv_req TYPE (gs_fconf-structure).
ASSIGN lv_resp->* TO <fs_resp>.
ENDIF.
ENDLOOP.
CALL FUNCTION gs_fconf-funcname
EXPORTING
i_req = <fs_req>
IMPORTING
o_resp = <fs_resp>.
CATCH cx_root.
ENDTRY.
ENDIF.
--- 注意事项
- 确保 Function Module 存在且参数正确
- 处理异常情况
- 对于大量数据考虑性能优化
这种方法适用于需要根据运行时条件决定调用哪个 Function Module 的场景,提供了更大的灵活性。
2155

被折叠的 条评论
为什么被折叠?



