将仅读取变量传递到更改参数

  • 本文关键字:参数 读取 变量 abap
  • 更新时间 :
  • 英文 :


我想使用cl_salv_table从类实例显示一个表。但是,我的表是只读的,并且要传递给一个变化的参数,我不允许这样做。

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

cl_salv_table类的方法工厂的调用失败了;这 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> ).

您可以使用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>}

没有运行时键入:

ASSIGN lr_appclass->('MT_ATTRIBUTE') TO FIELD-SYMBOL(<member>).
DATA(copied_member) = copy( <member> ).
ASSIGN copied_member->* TO FIELD-SYMBOL(<table>).
cl_salv_table=>factory(
  IMPORTING
    r_salv_table = DATA(lr_salv_table)
  CHANGING
    t_table      = <table> ).

METHODS copy
  IMPORTING
    data          TYPE any
  RETURNING
    VALUE(result) TYPE REF TO data.
METHOD copy.
  CREATE DATA result LIKE data.
  ASSIGN result->* TO FIELD-SYMBOL(<result>).
  <result> = data.
ENDMETHOD.

我添加了方法copy来澄清正在发生的事情。它的代码也可以添加到主函数中。

相关内容

  • 没有找到相关文章

最新更新