abap - abap:从现有的一个创建动态内部表
问题描述
我有以下内部表:
VBELN POSNR ELEMENT VALUE
4711 10 E1 12
4711 10 E2 23
ABAP(框架、类等)中是否有任何可能性,所以我可以在运行时快速创建一个新的内部表,如下所示:
VBELN POSNR E1 E2
4711 10 12 23
将不胜感激任何帮助。
谢谢和BR。
解决方案
是的。您想要的是 ABAP 运行时类型服务 (RTTS),更准确地说是ABAP 运行时类型创建 (RTTC)。
DATA(vbeln_descriptor) = CAST cl_abap_datadescr( cl_abap_typedescr=>describe_by_name( 'VBELN' ) ).
DATA(posnr_descriptor) = CAST cl_abap_datadescr( cl_abap_typedescr=>describe_by_name( 'POSNR' ) ).
DATA(components) = VALUE abap_component_tab( ( name = 'VBELN'
type = vbeln_descriptor )
( name = 'POSNR'
type = posnr_descriptor ) ).
DATA(value_descriptor) = cl_abap_typedescr=>describe_by_name( 'VALUE' ).
LOOP AT vbeln_rows INTO DATA(vbeln_row).
INSERT VALUE #(
name = vbeln_row-element
type = value_descriptor )
INTO TABLE components.
ENDLOOP.
DATA(row_descriptor) = cl_abap_structdescr=>get( components ).
DATA(table_descriptor) = cl_abap_tabledescr=>create( row_descriptor ).
DATA itab TYPE REF TO data.
CREATE DATA itab TYPE HANDLE table_descriptor.
推荐阅读
- kotlin - Kotlin:如何从 View 中恢复此声明
- .net-core - .NET 5 SDK 发布自包含尝试恢复 2.0.0 运行时?
- docker - Docker 映像通过 docker run 启动正常,但 docker-compose 失败并出现“$PATH 中找不到可执行文件:未知”错误
- flutter - 水平列表视图/网格视图中不同尺寸的图像,在颤动中具有固定高度和动态宽度
- google-translate - 如何用罗马字母翻译成日文?
- r - 如何从随机分布中生成和采样,以适应 R 中的观察值?
- javascript - 使用 selenium 的 javascript 自动化
- react-native - React 原生自定义日历列表
- firebase - Firebase authentification without login
- javascript - 如何在 HTML 中制作可编辑的段落?