返回ABAP中的内表

ix.*_*trc 2 abap

调用类的方法时是否可以返回内部表?

这个想法如下:在我的方法中,我计算特定日期范围内的所有周期。例如,我的范围是:2020年1月1日 - 2020年3月31日,所以我想获得一个包含以下结果的内部表:

01.01.2020 - 31.01.2020
01.02.2020 - 28.02.2020
01.03.2020 - 31.03.2021
Run Code Online (Sandbox Code Playgroud)

计算已经有效,我可以通过WRITE语句显示结果,但我不确定如何返回结果。我创建了一个具有以下结构的内部表:

TYPES: BEGIN OF periods, 
       begda TYPE dats,
       endda TYPE dats,
       END OF periods.
DATA: lt_periods TYPE STANDARD TABLE OF periods.
Run Code Online (Sandbox Code Playgroud)

但我不明白如何返回数据以在另一种方法中使用它。先感谢您。

Józ*_*zai 8

是的,可以有一个内部表作为方法的返回参数。返回参数的类型必须是表类型,因此必须声明表类型:

TYPES tt_periods TYPE STANDARD TABLE OF periods WITH DEFAULT KEY. "As pointed out by Sandra, see below :)
Run Code Online (Sandbox Code Playgroud)

该方法的声明如下:

METHODS method
  ...               "IMPORTING parameters (if exist)
  RETURNING
    VALUE(rt_periods) TYPE tt_periods.
Run Code Online (Sandbox Code Playgroud)

  • RETURNING 参数必须使用**完整**数据类型(即非通用)键入。为了使表类型完整,您必须指示表类别(“STANDARD”)、行类型(“句点”)和 **键,例如“WITH EMPTY KEY”或“WITH DEFAULT KEY”** 。 (4认同)
  • 如果您更正语法错误,我会投票支持您的答案;-) (2认同)