我有一个ABAP-OO类,我想调用一个方法foo()中的函数模块。有两种情况(A & B),我必须使用方法foo()。比方说,情况A是默认的,并使用需要的功能模块是这样的:ABAP:如何在调用功能时使用可选参数并减少冗余?
" importing something something_else
METHOD FOO.
CALL FUNCTION 'A_FUNCTION'
EXPORTING
required_param_x = something
required_param_y = something_else
* optional_param = " i am commeted out and only need for case B
.
ENDMETHOD.
案例B“是特”,还需要optional_param以上进行设置。
我现在的情况是有一个这样的第二种方法:
" importing something something_else case_b_stuff
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”?
如果您的FM具有该可选参数的默认值,那么在使用初始值调用FM时,您可能会覆盖该默认值。您可以使用默认值(如果有,否则初始状态良好)定义您的可选参数,并在必要时覆盖它。 – 2014-11-06 09:09:13
我检查了FM。据我所知,只有当可选参数不是初始值时才会执行某些操作。所以使用初始参数应该没问题。谢谢。 – SDD64 2014-11-06 09:25:59