I have used 2 tables SFLIGHT(IF gv_error_log = 'X'.) and SBOOK(IF gv_success_log = 'X'.).
I have just modify your program with data selection part and It is working fine for me.
Code:
REPORT zdi_test2.
DATA: gt_sflight TYPE TABLE OF sflight.
DATA: gt_sbook TYPE TABLE OF sbook.
SELECT * FROM sflight INTO TABLE gt_sflight UP TO 10 ROWS.
SELECT * FROM sbook INTO TABLE gt_sbook UP TO 10 ROWS.
END-OF-SELECTION.
CALL SCREEN 100.
*----------------------------------------------------------------------*
* MODULE STATUS_0100 OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZSTATUS'.
SET TITLEBAR 'XXX'.
ENDMODULE. " STATUS_0100 OUTPUT
*----------------------------------------------------------------------*
* MODULE LIST OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE list OUTPUT.
DATA: r_container TYPE REF TO cl_gui_custom_container,
r_grid TYPE REF TO cl_gui_alv_grid.
DATA: gv_success_log TYPE c,
gv_error_log TYPE c.
IF r_container IS INITIAL.
CREATE OBJECT r_container
EXPORTING
container_name = 'CONTAINER'.
CREATE OBJECT r_grid
EXPORTING
i_parent = r_container.
IF gv_error_log = 'X'.
CALL METHOD r_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
* is_layout = is_layout
CHANGING
it_outtab = gt_sflight.
ELSEIF gv_success_log = 'X'.
CALL METHOD r_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SBOOK'
* is_layout = is_layout
CHANGING
it_outtab = gt_sbook.
ELSE.
CALL METHOD r_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
* is_layout = is_layout
CHANGING
it_outtab = gt_sflight.
ENDIF.
ENDIF.
ENDMODULE. " LIST OUTPUT
*----------------------------------------------------------------------*
* MODULE USER_COMMAND_0100 INPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BCK'.
LEAVE PROGRAM.
WHEN 'ERRORLOG'.
IF gv_success_log = 'X'.
CLEAR gv_success_log.
ENDIF.
gv_error_log = 'X'.
CALL METHOD r_grid->free( ).
FREE r_grid.
CALL METHOD r_container->free( ).
FREE r_container.
CALL SCREEN 100.
WHEN 'SUCCESSLOG'.
IF gv_error_log = 'X'.
CLEAR gv_error_log.
ENDIF.
gv_success_log = 'X'.
CALL METHOD r_grid->free( ).
FREE r_grid.
CALL METHOD r_container->free( ).
FREE r_container.
CALL SCREEN 100.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
Flow logic for screen 100.
PROCESS BEFORE OUTPUT.
MODULE list.
MODULE status_0100.
PROCESS AFTER INPUT.
MODULE user_command_0100.
SE41:
SE51: Place custom container with Name 'CONTAINER'
I guess this sample program willl help you to identify your mistake in se38/se41/se51.
Best Regards,
Digesh