创建ALV有3种方法:
1.函数方式(REUSE_ALV_GRID_DISPLAY)
2.类方式(cl_gui_alv_grid)
3.类方式(cl_salv_table)
如果用到了我们自己创建的屏幕来生成ALV,在跑background job的时候为了避免出错,需要按照下面的方式写:
DATA: lv_container TYPE REF TO cl_gui_custom_container,
lv_table TYPE REF TO cl_salv_table,
or_doc type ref to cl_gui_docking_container.
IF cl_gui_alv_grid=>offline( ) is INITIAL.
IF lv_container IS INITIAL.
CREATE OBJECT lv_container
EXPORTING
container_name = 'GCONTAINER'.
ENDIF.
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
r_container = lv_container
container_name = 'GD_CONTAINER'
IMPORTING
r_salv_table = lv_table
CHANGING
t_table = p_output[].
CATCH cx_salv_msg .
ENDTRY."
ELSE.
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
r_container = or_doc
container_name = 'GD_CONTAINER'
IMPORTING
r_salv_table = lv_table
CHANGING
t_table = p_output[].
CATCH cx_salv_msg .
ENDTRY."
ENDIF.