首页 > 解决方案 > 将只读变量传递给 CHANGING 参数

问题描述

我想使用 CL_SALV_TABLE 显示来自类实例的表。但是,我的表是只读的,它要传递给 CHANGING 参数,我不允许这样做。

如何将我的动态引用复制到我可以传递的东西?属性的数据类型可以是任何表。

CL_SALV_TABLE 类的 FACTORY 方法调用失败;T_TABLE 的实际参数是写保护的。

DATA(lv_attribute) = 'mt_attribute'. "Dynamic name of class attribute        
ASSIGN lr_appclass->(lv_attribute) TO FIELD-SYMBOL(<lt_table>).

cl_salv_table=>factory( 
          IMPORTING r_salv_table = DATA(lr_salv_table) 
          CHANGING  t_table      = <lt_table> ).

标签: abap

解决方案


您可以使用RTTS生成动态变量。

要生成具有相同类型原始的动态内部表:

DATA: lo_table_desc TYPE REF TO cl_abap_tabledescr, " RTTS table descriptor
      lrt_copy      TYPE REF TO DATA.               " temp data ref
FIELD-SYMBOLS:
               <lt_copy> TYPE ANY TABLE.

" original type determination
lo_table_desc ?= cl_abap_tabledescr=>describe_by_data( {HERE_GOES_THE_MEMBER_TABLE} ).

" dynamic allocation
CREATE DATA lrt_copy TYPE HANDLE lo_table_desc.
ASSIGN lrt_copy->* TO <lt_copy>.

" {NOW_USE_<lt_copy>}

推荐阅读