如何完全指定返回参数abap的类型

Rob*_*raw 4 abap

noobie在这里学习.我有一个导入结构的方法,从结构中创建一个内部表,并返回该表.

我已将其实现为导出方法,但现在我想将其作为返回参数.部分想法是我对运行结构直到运行时都不知道,所以我使用了大量的泛型.但是,"返回"方法不喜欢泛型.

method Parameters:
  Importing struct_data TYPE any 
  Returning table_data TYPE STANDARD TABLE 

method STRUCT_TO_TABLE_R.

  FIELD-SYMBOLS:
    <f_fs>    TYPE any,
    <table>   TYPE STANDARD TABLE .

  DO.

    ASSIGN COMPONENT sy-index OF STRUCTURE struct_data TO <f_fs>.

    IF NOT sy-subrc EQ 0.
      EXIT.
    ENDIF.

    APPEND <f_fs> TO <table>.

  ENDDO.

  table_data = <table>.

endmethod.
Run Code Online (Sandbox Code Playgroud)

我需要改变什么来解决这个问题?

Cés*_*llo 15

也许是因为适当的反应迟了,但几分钟前我遇到了同样的问题.

要将内部表作为RETURNING参数发送,您需要定义在类中完全键入的表.以下是类的公共部分的示例代码:

PUBLIC SECTION.
    TYPES:
      type_table_A TYPE STANDARD TABLE OF T001, //<----- NOT FULLY SPECIFIED
      type_table_B TYPE STANDARD TABLE OF T001 WITH DEFAULT KEY. //<---- FULLY SPECIFIED
Run Code Online (Sandbox Code Playgroud)

在标准表方面:

TYPE_TABLE_A可以仅作为EXPORTING,IMPORTING和CHANGING参数的参数.

TYPE_TABLE_B可用于方法签名中的所有可能类型的参数,主要是RETURNING.

因此,作为一种好的做法,您可以决定声明完全指定的标准表类型.

亲切的问候,

CésarScheck

  • 这是唯一真正正确的答案,非常感谢! (3认同)