abap - 将只读变量传递给 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> ).
解决方案
您可以使用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>}
推荐阅读
- matlab - 读取大量数据的最佳方式
- c# - 按子字符串将字符串列表排序到Excel工作表中
- c - 如何在 Linux 中定义具有非默认返回类型的系统调用?
- python-3.x - 如何指定 gspread 在运行 import_csv 函数以分隔字段时使用的分隔符?
- select - 如何使用 yq 根据子键值选择所有 YAML 键?
- python - 将什么 python 集合发送到 winrt `Windows.Storage.Streams.DataReader` readbytes() 方法?
- reactjs - Google Analytics/React GA:History 对象随着每次位置变化发送越来越多的点击
- python - 使用计算机视觉进行距离测量
- python - 不确定 CSV 文件是否使用 csv.writer 编码为 utf-8
- javascript - NodeJS 14.x - 原生 AWS Lambda 导入/导出支持