将表达式值作为功能模块的输入参数传递

时间:2014-07-22 06:12:52

标签: abap

我有一个关于将函数和表达式作为实际参数传递给函数模块的问题。
对于学习目标,我运行一个函数模块,其中传递简单的算术表达式(减号)。有一个错误“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_ald_b是局部变量。

ABAP版本 - 702。

1 个答案:

答案 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,为什么还要使用功能模块呢? ; - )