繁体   English   中英

创建内部表作为另一个内部表的列的子集

[英]Create internal table as subset of columns of another internal table

如何在 ABAP 中按索引获取表的单列?

例如我有:

A B C
1 2 3
1 2 3

我想用[2,2]得到B列。

编辑:这是我的代码

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.

现在我只需要 l_r_data 中 ld_e_cell_data 第二列的数据。

假设您有一个内部表lt_itab1具有行结构field1field2 ,...和第二个表lt_itab2 ,其行结构仅包含field2 然后你可以使用:

lt_table_2 = CORRESPONDING #( lt_table_1 ).

“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 ) ) ).

" 表 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.  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM