abap - 功能模块中的可选参数?

标签 abap function-module

我有一个 ABAP-OO 类,我想在方法 foo() 中调用一个函数模块。有两种情况(A 和 B)我必须使用方法 foo()。假设案例 A 是默认的,并且使用需要这样的功能模块:

METHOD foo.
  CALL FUNCTION 'A_FUNCTION'
    EXPORTING
      required_param_x = something
      required_param_y = something_else.
      " optional_param = " i am commented out and only need for case B
ENDMETHOD.

案例 B “很特殊”,还需要设置上面的 optional_param。我目前的情况是有第二种方法:
METHOD foo_b_case.
  CALL FUNCTION 'A_FUNCTION'
    EXPORTING
      required_param_x = something
      required_param_y = something_else
      optional_param = case_b_stuff.
ENDMETHOD.

当然,这是非常多余的。如上所示,我的现实生活中的编码也更加复杂。我的问题是,我怎样才能摆脱这种方法 foo_b_case( ) 并使 foo( ) 适合这两种情况?

可以说,我将参数“case_b_stuff”设为可选,并在每种情况下传递它。如果“case_b_stuff”是初始值,ABAP 如何处理“optional_param”?

最佳答案

要动态选择功能模块的参数,请查看 PARAMETER-TABLE关键词。不幸的是,这不适用于 RFC 调用,但对于本地调用,您可以将它与 IS SUPPLIED 一起使用健康)状况。

IF case_b_stuff IS SUPPLIED.
  "add the parameter to the table to be included in PARAMETER-TABLE call
ENDIF.
CALL FUNCTION 'A_FUNCTION'
  PARAMETER-TABLE
    lt_parameter
  EXCEPTION-TABLE
    lt_exception.

这样你就可以只有一个 foo方法。这种方法的主体是否整洁,是另一个问题。这都是因为 ABAP 不允许像在 Java 或 C++ 中那样重载方法名称。

关于abap - 功能模块中的可选参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26775278/

相关文章:

abap - 循环删除内表中的当前行

abap - 如何获得发货日期前14天的到期日?

methods - 从 FM 调用方法时,参数与形参类型不兼容

abap - 根据 SAP ABAP 中的复选框选择显示数据字段

abap - 如何在动态内部表上循环?

abap - 慢速选择所有条目

data-structures - 按值检查结构与另一个结构

abap - 为什么在内置功能模块中允许这种结构声明,而在新功能模块中却不允许?

testing - 有没有办法从 SE37 导出测试参数?

abap - MM中计算模式的功能模块