简体   繁体   中英

ALV Grid for In-Line Declaration

How do you display an in-line declared data type in an ALV grid?

eg:

SELECT *
INTO TABLE @DATA(lt_result)
FROM table.

How can the lt_result be displayed in an ALV grid?

Here is a basic example:

DATA: alv TYPE REF TO cl_salv_table.   

SELECT *
INTO TABLE @DATA(lt_result)
FROM table.

cl_salv_table=>factory( IMPORTING r_salv_table = alv
                        CHANGING  t_table      = lt_result ).

alv->display( ).

You can find other examples using the SALV Object Model in package SALV_OM_OBJECTS.

This is a more modern approach than using 'REUSE_ALV_GRID_DISPLAY' and you will not need to define a field catalog.

You have to do the same thing regardless of how you created lt_result. A select * as in your example will result in lt_result being equal to if you did DATA lt_result type table of tablename

In this case you can send in the name of the structure. But this only works if the structure type is defined in SE11, ie if you do a select * without any joins or aliases.

Otherwise you have to create and send in a field catalog with all the fields in lt_result you wish to display.

Example:

SELECT * FROM mara
UP TO 10 ROWS
INTO TABLE @DATA(lt_mara).

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_callback_program = sy-repid
    i_structure_name   = 'MARA'
*    it_fieldcat  => use this if i_structure_name is not sufficient
  TABLES
    t_outtab           = lt_mara
  EXCEPTIONS
    OTHERS             = 1.

The same thing applies if you use cl_gui_alv_grid.

Edit: You can fill the field-catalog dynamically like this:

DATA:
  lo_t_struct TYPE REF TO cl_abap_tabledescr,
  lo_struct   TYPE REF TO cl_abap_structdescr.

lo_t_struct ?= cl_abap_tabledescr=>describe_by_data( lt_result ).
lo_struct ?= lo_t_struct->get_table_line_type( ).

LOOP AT lo_struct->components ASSIGNING FIELD-SYMBOL(<comp>).
  "Fill a range-table with <comp>-name
ENDLOOP.

Use the range table to get field-descriptions from table dd04t.

Then loop at lo_struct->components again, and fill the field catalog with fieldname and description. Here you can also add special logic for any given fields.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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