Сначала выбираем имя таблицы из настроечной, затем получаем описание структуры, создаем тип структуры и уже таблицу по структуре. А далее ссылочные переменные.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
SELECT SINGLE tabname INTO oph1 FROM /scmb/ordartab WHERE orda = 'FDA1' AND histflg = '' AND active = 'X' AND orc = 'OPH1'. DATA: lo_struct TYPE REF TO cl_abap_structdescr, lo_element TYPE REF TO cl_abap_elemdescr, lo_new_type TYPE REF TO cl_abap_structdescr, lo_new_tab TYPE REF TO cl_abap_tabledescr, lo_data TYPE REF TO data, lt_comp TYPE cl_abap_structdescr=>component_table. FIELD-SYMBOLS: <oph1_tab> TYPE ANY TABLE, <oph1_line> TYPE ANY. "create oph1 * получаем описание структуры из abap словаря lo_struct ?= cl_abap_typedescr=>describe_by_name( oph1 ). lt_comp = lo_struct->get_components( ). * Создаем новый тип структуры по каталогу полей. lo_new_type = cl_abap_structdescr=>create( lt_comp ). * Создаем новую таблицу по структуре lo_new_tab = cl_abap_tabledescr=>create( p_line_type = lo_new_type p_table_kind = cl_abap_tabledescr=>tablekind_std p_unique = abap_false ). * Создаем ссылочные переменные CREATE DATA lo_data TYPE HANDLE lo_new_type. ASSIGN lo_data->* TO <oph1_line>. CREATE DATA lo_data TYPE HANDLE lo_new_tab. ASSIGN lo_data->* TO <oph1_tab>. "create oph1 |
Теперь выборка данных(пример)
1 2 3 4 5 6 7 8 9 10 |
SELECT ordid INTO CORRESPONDING FIELDS OF TABLE <oph1_tab> FROM (oph1) WHERE purchase_grp IN s_grp AND ordid IN ( SELECT ordid FROM (1hdr) WHERE hdrstate IN s_state AND locidfr IN so_ldfr AND locidto IN so_lcdt ). |
loop по таблице и получение значения второго поля ее структуры.
1 2 3 4 5 6 7 |
FIELD-SYMBOLS: <ls_wa> TYPE any, <comp> TYPE any. LOOP AT <oph1_tab> ASSIGNING <ls_wa>. ASSIGN COMPONENT 2 OF STRUCTURE <ls_wa> TO <comp>. ENDLOOP. |
Еще один способ сделать loop (рекомендовано для передачи в ФМ F4IF_INT_TABLE_VALUE_REQUEST)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
FIELD-SYMBOLS: <comp> TYPE /fre/lane-planner_pur. TYPES BEGIN OF record. TYPES planner_pur TYPE /fre/lane-planner_pur. TYPES END OF record. DATA t_record TYPE TABLE OF record WITH HEADER LINE. LOOP AT <oph1_tab> ASSIGNING FIELD-SYMBOL(<ls_wa>). ASSIGN COMPONENT 11 OF STRUCTURE <ls_wa> TO <comp>. CHECK NOT <comp> IS INITIAL. t_record-planner_pur = <comp>. APPEND t_record. ENDLOOP. |