我有一个关于将函数和表达式作为实际参数传递给函数模块的问题。
对于学习目标,我运行一个函数模块,其中传递简单的算术表达式(减号)。有一个错误“After' - 'wait'= ...'”。功能模块具有n型的一个通过值输入参数。但是在这篇文章link中说它有可能。也许我有一个旧版本的ABAP?
例如,创建函数ZOUT,它在屏幕上写入其导入参数
FUNCTION ZOUT.
*"-----------------------------------------------------------------
*" IMPORTING
*" VALUE(SOMENUM) TYPE N
*"----------------------------------------------------------------------
WRITE: / somenum.
ENDFUNCTION.
从一些报告电话:
CALL FUNCTION 'ZOUT'
EXPORTING
somenum = ( ld_a - ld_b ).
其中ld_a
和ld_b
是局部变量。
ABAP版本 - 702。
答案 0 :(得分:1)
在SAP_ABA
版本740 SP-Level 004 SP SAPKA74004的系统上,我甚至可以在不使用括号的情况下做到这一点。
DATA: l_n1 TYPE n VALUE '3'.
DATA: l_n2 TYPE n VALUE '1'.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = l_n1 - l_n2
txt1 = l_n2 - l_n1
txt2 = l_n1 - l_n1.
然而,在SAP_ABA
版本711,SP-Level 0009,SP SAPKA71109的系统上,即使用括号也不编译。
DATA: l_n1 TYPE n VALUE '3'.
DATA: l_n2 TYPE n VALUE '1'.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = ( l_n1 - l_n2 )
txt1 = ( l_n2 - l_n1 )
txt2 = ( l_n1 - l_n1 ).
因此,您的问题的答案是:看起来它只能在全新版本的ABAP中使用。但是,在旧版本中使用方法调用时,可以将参数值作为表达式传递。如果有非常好的ABAP OO,为什么还要使用功能模块呢? ; - )