2017-08-23 3 views
0

je dois écrire un FM où je vais recevoir le type d'un élément de données en tant que paramètre de chaîne et je voudrais déclarer comme:déclaration de type dynamique

DATA: lt_test TYPE TABLE OF (iv_data_type). 

où le type de iv_data whould être Received type.

+1

Pourquoi - Que voulez-vous faire avec les données? – vwegert

+0

Transmettez-le à la FM TEXT_CONVERT_CSV_TO_SAP qui a besoin d'une table bien définie. –

Répondre

4

Vous devez créer votre table interne dynamique:

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

Merci. Ceci résout le problème mais je dois déclarer le lt_test comme une table pour l'assigner au symbole de champ. créer une table de type de données lt_test de (iv_data_type). –

1

vous pouvez essayer ce qui suit

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

Je pense que cela fonctionne bien, mais c'est plus complexe que nécessaire. –