2017-08-23 150 views
0

我需要編寫一個FM其中我將收到一個元素的數據類型作爲字符串參數和我想申報它喜歡:動態類型聲明

DATA: lt_test TYPE TABLE OF (iv_data_type). 

其中iv_data類型對子級是接收的類型。

+1

爲什麼 - 你想用數據做什麼? – vwegert

+0

將它傳遞給TEXT_CONVERT_CSV_TO_SAP FM,它需要一個定義良好的表格。 –

回答

4

你應該動態地創建你的內部表:

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. 
+0

謝謝。這是解決問題的方法,但我必須將lt_test聲明爲表格以將其分配給字段符號。創建(iv_data_type)的數據lt_test類型表。 –

1

你可以試試下面的

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> . 
+0

我認爲這很好,但它比需要更復雜。 –