Dynamic 动态表类型声明

Dynamic 动态表类型声明,dynamic,declaration,abap,function-module,Dynamic,Declaration,Abap,Function Module,我需要编写一个FM,在这里我将接收作为字符串参数的元素的数据类型,我想声明如下: DATA: lt_test TYPE TABLE OF (iv_data_type). 其中iv_数据类型应为接收类型。您应动态创建内部表: DATA lt_test type ref to data. FIELD-SYMBOLS: <lts_test> type standard table. CREATE DATA lt_test type (iv_data_type). ASSIGN lt_te

我需要编写一个FM,在这里我将接收作为字符串参数的元素的数据类型,我想声明如下:

DATA: lt_test TYPE TABLE OF (iv_data_type).

其中iv_数据类型应为接收类型。

您应动态创建内部表:

DATA lt_test type ref to data.
FIELD-SYMBOLS: <lts_test> type standard table.
CREATE DATA lt_test type (iv_data_type).
ASSIGN lt_test->* to <lts_test>.


CALL FUNCTION 'TEXT_CONVERT_CSV_TO_SAP'
  EXPORTING
    I_TAB_RAW_DATA             = lt_raw_data
  TABLES
    I_TAB_CONVERTED_DATA       =  <lts_table>
  EXCEPTIONS
    CONVERSION_FAILED          = 1
    OTHERS                     = 2.
数据lt\u测试类型参考数据。
字段符号:类型标准表。
创建lt_测试类型的数据(iv_数据类型)。
将lt_测试->*分配给。
调用函数“TEXT\u CONVERT\u CSV\u TO\u SAP”
出口
I_选项卡_RAW_DATA=lt_RAW_DATA
桌子
I\u选项卡\u转换的\u数据=
例外情况
转换_失败=1
其他=2。

您应该动态创建内部表:

DATA lt_test type ref to data.
FIELD-SYMBOLS: <lts_test> type standard table.
CREATE DATA lt_test type (iv_data_type).
ASSIGN lt_test->* to <lts_test>.


CALL FUNCTION 'TEXT_CONVERT_CSV_TO_SAP'
  EXPORTING
    I_TAB_RAW_DATA             = lt_raw_data
  TABLES
    I_TAB_CONVERTED_DATA       =  <lts_table>
  EXCEPTIONS
    CONVERSION_FAILED          = 1
    OTHERS                     = 2.
数据lt\u测试类型参考数据。
字段符号:类型标准表。
创建lt_测试类型的数据(iv_数据类型)。
将lt_测试->*分配给。
调用函数“TEXT\u CONVERT\u CSV\u TO\u SAP”
出口
I_选项卡_RAW_DATA=lt_RAW_DATA
桌子
I\u选项卡\u转换的\u数据=
例外情况
转换_失败=1
其他=2。

您可以尝试以下方法

DATA : lo_struct_des    TYPE REF TO cl_abap_structdescr,
           lo_result_struct TYPE REF TO cl_abap_structdescr.

DATA: lo_new_tab    TYPE REF TO cl_abap_tabledescr .

DATA: lt_struct_tab TYPE abap_component_tab.

DATA: tab  TYPE REF TO data,
      line TYPE REF TO data.

FIELD-SYMBOLS: <fs_data> TYPE ANY TABLE,
               <fs_line> TYPE any.

lo_struct_des ?=  cl_abap_typedescr=>describe_by_name( 'your_Structure_name_here' ).
lt_struct_tab = lo_struct_des->get_components( ) .

lo_result_struct = cl_abap_structdescr=>create( p_components = lt_struct_tab ) .


lo_new_tab = cl_abap_tabledescr=>create( p_line_type  = lo_result_struct
                                         p_table_kind = cl_abap_tabledescr=>tablekind_std
                                         p_unique     = abap_false ).

CREATE DATA tab TYPE HANDLE lo_new_tab.

CREATE DATA line TYPE HANDLE lo_result_struct .

ASSIGN tab->* TO <fs_data>.
ASSIGN line->* TO <fs_line> .
数据:结构类型参考至结构描述,
lo_结果结构类型引用到cl_abap_结构描述。
数据:lo_new_选项卡类型参考cl_abap_tabledescr。
数据:lt_结构选项卡类型abap_组件选项卡。
数据:选项卡类型REF TO DATA,
数据的线型参考。
字段符号:键入任何表格,
键入任何。
lo_struct_des?=cl_abap_typedescr=>按名称描述(此处为“您的结构名称”)。
lt_struct_tab=lo_struct_des->get_components()。
lo_result_struct=cl_abap_structdescr=>create(p_components=lt_struct_选项卡)。
lo_new_tab=cl_abap_tabledescr=>create(p_line_type=lo_result_struct
p_table_kind=cl_abap_tabledescr=>tablekind_std
p_unique=abap_false)。
创建数据选项卡类型句柄lou\u new\u选项卡。
创建数据行类型句柄lo_result_struct。
将选项卡->*分配给。
将第->*行分配给。

您可以尝试以下方法

DATA : lo_struct_des    TYPE REF TO cl_abap_structdescr,
           lo_result_struct TYPE REF TO cl_abap_structdescr.

DATA: lo_new_tab    TYPE REF TO cl_abap_tabledescr .

DATA: lt_struct_tab TYPE abap_component_tab.

DATA: tab  TYPE REF TO data,
      line TYPE REF TO data.

FIELD-SYMBOLS: <fs_data> TYPE ANY TABLE,
               <fs_line> TYPE any.

lo_struct_des ?=  cl_abap_typedescr=>describe_by_name( 'your_Structure_name_here' ).
lt_struct_tab = lo_struct_des->get_components( ) .

lo_result_struct = cl_abap_structdescr=>create( p_components = lt_struct_tab ) .


lo_new_tab = cl_abap_tabledescr=>create( p_line_type  = lo_result_struct
                                         p_table_kind = cl_abap_tabledescr=>tablekind_std
                                         p_unique     = abap_false ).

CREATE DATA tab TYPE HANDLE lo_new_tab.

CREATE DATA line TYPE HANDLE lo_result_struct .

ASSIGN tab->* TO <fs_data>.
ASSIGN line->* TO <fs_line> .
数据:结构类型参考至结构描述,
lo_结果结构类型引用到cl_abap_结构描述。
数据:lo_new_选项卡类型参考cl_abap_tabledescr。
数据:lt_结构选项卡类型abap_组件选项卡。
数据:选项卡类型REF TO DATA,
数据的线型参考。
字段符号:键入任何表格,
键入任何。
lo_struct_des?=cl_abap_typedescr=>按名称描述(此处为“您的结构名称”)。
lt_struct_tab=lo_struct_des->get_components()。
lo_result_struct=cl_abap_structdescr=>create(p_components=lt_struct_选项卡)。
lo_new_tab=cl_abap_tabledescr=>create(p_line_type=lo_result_struct
p_table_kind=cl_abap_tabledescr=>tablekind_std
p_unique=abap_false)。
创建数据选项卡类型句柄lou\u new\u选项卡。
创建数据行类型句柄lo_result_struct。
将选项卡->*分配给。
将第->*行分配给。

为什么-您想对数据做什么?将其传递到需要定义良好的表格的文本\u CONVERT\u CSV\u to\u SAP FM。为什么-您想对数据做什么?将其传递到需要定义良好的表格的文本\u CONVERT\u CSV\u to\u SAP FM。谢谢。这解决了问题,但我必须将lt_测试声明为一个表,以将其分配给字段符号。创建数据lt_测试类型表(iv_数据类型)。谢谢。这解决了问题,但我必须将lt_测试声明为一个表,以将其分配给字段符号。创建(iv_data_type)的数据lt_测试类型表。我认为这很有效,但比需要的复杂。我认为这很有效,但比需要的复杂。