如何在方法中完全指定返回参数的类型



我有一个方法,它导入一个结构,从结构中创建一个内部表,并返回这个表。

我已经将其实现为导出方法,但现在我想将其作为返回参数。部分想法是,我不知道任何关于结构被传递到运行时,所以我使用相当数量的泛型。然而,"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.  

认为,

相关内容

  • 没有找到相关文章

最新更新