【问题标题】:Pass expression values as input parameter of function module将表达式值作为功能模块的输入参数传递
【发布时间】:2014-07-22 18:43:26
【问题描述】:

我有一个关于将函数和表达式作为实际参数传递给函数模块的问题。
为了学习目的,我运行了一个函数模块,其中传递了简单的算术表达式(减号)。有一个错误“在'-'之后等待'=...'”。该功能模块有一个类型为 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。

【问题讨论】:

  • 你有什么版本?为什么要链接到第 3 方副本而不是原始文档?
  • @IvanRyazanov 好的,现在我明白了。您的系统很可能是较旧的系统。在我的情况下,SAP_ABA 组件是版本 711,级别 0009,SP SAPKA71109。在我工作的系统中,编译这样的表达式是没有问题的。
  • @IvanRyazanov 您能否尝试将表达式传递给方法参数而不是函数模块,看看它是否适合您?
  • @Jagger,它有相同的结果,但返回消息看起来更有效:““参数“Somenum”不能传递算术计算的结果”
  • @IvanRyazanov 试试这个 SAP 文档的part 中的示例。我想在你的情况下,只能将表达式传递给所谓的函数方法(换句话说,调用而不使用 CALL METHOD)。

标签: abap


【解决方案1】:

在带有SAP_ABA Release 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 Release 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,为什么还要使用功能模块,对吧? ;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    相关资源
    最近更新 更多