Создать внутреннюю таблицу как подмножество столбцов другой внутренней таблицы - PullRequest
0 голосов
/ 16 октября 2019

Как мне получить один столбец таблицы по индексу в ABAP?

Например, у меня есть:

A B C
1 2 3
1 2 3

, и я хочу получить столбец B с [2,2].

РЕДАКТИРОВАТЬ: Это мой код

DATA:
 l_r_data            TYPE REF TO data,
 ld_e_cell_data         TYPE rrws_t_cell.

            CALL FUNCTION 'RRW3_GET_QUERY_VIEW_DATA'
              EXPORTING
*               i_infoprovider          =                  
                i_query                 = l_query_name           
*               i_view_id               =                  
                i_t_parameter           = l_t_parameter                 
              IMPORTING
                e_axis_info             = ld_e_axis_info           
                e_cell_data             = ld_e_cell_data                
                e_axis_data             = ld_e_axis_data                 
                e_txt_symbols           = ld_e_txt_symbols              
              EXCEPTIONS
                no_applicable_data      = 1                
                invalid_variable_values = 2                
                no_authority            = 3                
                abort                   = 4                
                invalid_view            = 6                
                OTHERS                  = 7.
            IF sy-subrc <> 0.
**             MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
**               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
            ENDIF.

Теперь мне просто нужны данные из второго столбца ld_e_cell_data в l_r_data.

Ответы [ 3 ]

2 голосов
/ 16 октября 2019

Предположим, у вас есть внутренняя таблица lt_itab1 со структурой строк field1, field2, ... и вторая таблица lt_itab2 со структурой строк, содержащей только field2. Затем вы можете использовать:

lt_table_2 = CORRESPONDING #( lt_table_1 ).
0 голосов
/ 25 октября 2019

"Версия SAP Netweaver ниже 7.4

REPORT zab_demo.

TYPES:
  BEGIN OF ty_connection,
    connid TYPE s_conn_id,
  END OF ty_connection.

DATA:
  flight                   TYPE sflight,
  flights                  TYPE STANDARD TABLE OF sflight,
  connection_structured    TYPE ty_connection,
  connections_structured   TYPE STANDARD TABLE OF ty_connection,
  connections_unstructured TYPE STANDARD TABLE OF s_conn_id.

SELECT * FROM sflight INTO TABLE flights UP TO 10 ROWS.

LOOP AT flights INTO flight.
  connection_structured-connid = flight-connid.
  APPEND connection_structured TO connections_structured.
ENDLOOP.

LOOP AT flights INTO flight.
  APPEND flight-connid TO connections_unstructured.
ENDLOOP.

" Версия SAP Netweaver выше 7.4 с встроенными объявлениями данных

REPORT zab_demo2.

"Types can be of course from Data Dictionary, here we define types for demonstaration purpose only.
TYPES:
  BEGIN OF ty_connection,
    connid TYPE s_conn_id,
  END OF ty_connection.

TYPES:
  BEGIN OF ty_cat,
    cat TYPE s_conn_id,
  END OF ty_cat.

TYPES ty_connections TYPE STANDARD TABLE OF ty_connection WITH NON-UNIQUE KEY connid.

DATA:
  connections_structured2  TYPE ty_connections,
  connections_unstructured TYPE STANDARD TABLE OF s_conn_id,
  cats_structured          TYPE STANDARD TABLE OF ty_cat WITH NON-UNIQUE KEY cat.

SELECT * FROM sflight INTO TABLE @DATA(flights) UP TO 10 ROWS.

DATA(connections_structured) = CORRESPONDING ty_connections( flights ).

connections_structured2 = CORRESPONDING #( flights ).

"FOR can be combined with REDUCE, WHERE, FILTER and INIT, to get out more from BI Queries
DATA(connections_structured3) = VALUE ty_connections( FOR flight IN flights ( connid = flight-connid  ) ).
"Of course you can cut out 2 of 3 columns also, here we cut only one out
connections_unstructured = VALUE #( FOR flight IN flights ( flight-connid  ) ).

"Move column to other internal table with different field name
cats_structured = CORRESPONDING #( flights MAPPING cat = connid ).

"Move column to other internal table with different type
connections_unstructured = VALUE string_table( FOR flight IN flights ( CONV string( flight-connid ) ) ).
0 голосов
/ 18 октября 2019

"Таблица lt_values ​​содержит записи значения столбца.

   METHOD SEL_B.
        DATA: lt_values             TYPE standard table of rrxfloat  ,
              ld_e_cell_data         TYPE rrws_t_cell.
        FIELD-SYMBOLS: <cell> TYPE rrws_s_cell,
                       <val> TYPE rrxfloat.

        loop at ld_e_cell_data ASSIGNING <cell>.
            APPEND INITIAL LINE TO lt_values ASSIGNING <val>.
            <val> = <cell>-value.
        ENDLOOP.
  ENDMETHOD.  
...