abap:从现有表创建动态内部表
我有以下内部表格:abap:从现有表创建动态内部表,abap,netweaver,Abap,Netweaver,我有以下内部表格: VBELN POSNR ELEMENT VALUE 4711 10 E1 12 4711 10 E2 23 ABAP(框架、类等)中是否存在任何可能性,因此我可以在运行时快速创建一个新的内部表,如下所示: VBELN POSNR E1 E2 4711 10 12 23 非常感谢您的帮助 谢谢,BR。是的。您需要的是ABAP运行时类型服务(RTTS),更准确地说是 对。您
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运行时类型服务(RTTS),更准确地说是
非常感谢你的快速反应,弗洛里安!一个小问题。我在第4行得到一个语法错误,说“VBELN_Dexcript”的类型不能在“type”的类型中转换“。您有相同的问题吗?仅在文本编辑器中将其放在一起,因此可能会有轻微的语法错误。”。但它是有效的。这样做了好几次。在第1行和第2行中添加了一个
CAST
,以解决您提到的问题。请注意,我不知道VALUE
列后面的数据字典数据元素。您可能想用数据元素的真实名称来交换它。再次感谢您,Florian。我刚刚检查了RTTC,它是一个非常强大的框架。我还在学习,如果我问一个小问题,希望没问题:现在我得到了和以前一样的错误,但在第12行,但我想我不能在那里施放,或者?我在第8行做了如下更改:数据(值描述符)=CAST cl\u abap\u typedescr(cl\u abap\u typedescr=>description by_name('value'))。但是仍然会得到错误。@dyz这可能是一个警告而不是错误,因为当强制类型与原始结果类型相同时,强制类型转换是无用的!非常感谢你的快速反应,弗洛里安!一个小问题。我在第4行得到一个语法错误,说“VBELN_Dexcript”的类型不能在“type”的类型中转换“。您有相同的问题吗?仅在文本编辑器中将其放在一起,因此可能会有轻微的语法错误。”。但它是有效的。这样做了好几次。在第1行和第2行中添加了一个CAST
,以解决您提到的问题。请注意,我不知道VALUE
列后面的数据字典数据元素。您可能想用数据元素的真实名称来交换它。再次感谢您,Florian。我刚刚检查了RTTC,它是一个非常强大的框架。我还在学习,如果我问一个小问题,希望没问题:现在我得到了和以前一样的错误,但在第12行,但我想我不能在那里施放,或者?我在第8行做了如下更改:数据(值描述符)=CAST cl\u abap\u typedescr(cl\u abap\u typedescr=>description by_name('value'))。但是仍然会得到错误。@dyz这可能是一个警告而不是错误,因为当强制类型与原始结果类型相同时,强制类型转换是无用的!
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.