一般我们用到的ALV有两种方法,FUNCTION,和容器的方法。
在FUNCTION中,我们有下面的方法实现
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
i_callback_program = pgm
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = fieldcat
it_sort = sortcat
i_save = 'A'
it_events = eventcat
tables
t_outtab = itab
exceptions
program_error = 1
others = 2.
endform. "alvdisplay
在用到容器方面,以下方法实现
create object container_1
exporting container_name = 'CONTAINER1'.
* ENDIF.
* IF alv_grid IS INITIAL."ALV放入容器
create object alv_grid
exporting i_parent = container_1.
call method alv_grid->set_table_for_first_display "ALV显示
exporting
is_variant = gs_variant
is_layout = is_layout "布局
i_save = 'A'
changing
it_outtab = item[]
it_fieldcatalog = it_fieldcat.
if sy-subrc <> 0.
exit.
endif.
本文对其他一种方法进行介绍,对以上两种方法就不详细介绍内容了
DATA: it_sflight TYPE TABLE OF sflight.
* Workarea for data fetch
DATA: wa_sflight LIKE LINE OF it_sflight.
* Switch for list display yes / no
DATA: list_display TYPE sap_bool.
* Reference for container control
DATA: gr_cont TYPE REF TO cl_gui_custom_container.
* Reference for ALV instance
DATA: gr_alv TYPE REF TO cl_salv_table.
* Reference for error situations
DATA: gr_error TYPE REF TO cx_salv_error.
* user-command from dynpro
DATA: ok_code LIKE sy-ucomm.
* retrieve data into internal table
SELECT *
FROM sflight
INTO TABLE it_sflight
WHERE carrid IN so_car
AND connid IN so_con.
CREATE OBJECT gr_cont
EXPORTING
container_name = 'MY_CONTAINER'
EXCEPTIONS
OTHERS = 1
.
IF sy-subrc <> 0.
MESSAGE a015(bc405).
* Error when creating the container object.
ENDIF.
* create ALV and
* link it to the container control
TRY.
cl_salv_table=>factory(
EXPORTING
* LIST_DISPLAY = IF_SALV_C_BOOL_SAP=>FALSE
r_container = gr_cont
* CONTAINER_NAME =
IMPORTING
r_salv_table = gr_alv
CHANGING
t_table = it_sflight
).
CATCH cx_salv_msg INTO gr_error.
ENDTRY.
* display ALV
gr_alv->display( ).