我有一个方法,它导入一个结构,从结构中创建一个内部表,并返回这个表。
我已经将其实现为导出方法,但现在我想将其作为返回参数。部分想法是,我不知道任何关于结构被传递到运行时,所以我使用相当数量的泛型。然而,"Returning"方法不喜欢泛型。
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.
我需要改变什么来解决这个问题?
也许现在回复有点晚了,但几分钟前我也遇到了同样的问题。
为了发送一个内部表作为返回参数,你需要在类中定义一个完全类型的表。下面是一个类的公共部分的示例代码:
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
标准表:
TYPE_TABLE_A只能作为导出、导入和更改参数的参数。
TYPE_TABLE_B可用于方法签名中所有可能的参数类型,主要是RETURNING。
因此,作为一种良好的实践,您可以决定声明完全指定的标准表类型。
亲切的问候,
塞萨尔舍
返回参数由Value传递。换句话说,在执行方法时,您始终可以访问返回参数,但调用者可以完全忽略从方法接收值,但方法仍然必须使用该参数。这就是您需要为返回指定完全类型的原因。
作为另一种选择,您可以将表转换为Object引用并将其传递回调用者。
class lcl_Test DEFINITION.
PUBLIC SECTION.
methods: to_Table
returning value(ro_tab) type ref to data .
ENDCLASS.
*
class lcl_Test IMPLEMENTATION.
method to_Table.
ENDMETHOD.
ENDCLASS.
认为,