Monday, October 25, 2010

Dialog Box Container Program

PROGRAM zdialog_box_cont.

CLASS lcl_event_receiver DEFINITION DEFERRED.

DATA: ok_code LIKE sy-ucomm,
save_ok LIKE sy-ucomm,
g_max TYPE i VALUE 100,
gt_sflight TYPE TABLE OF sflight,
gt_sbook TYPE TABLE OF sbook,
g_repid LIKE sy-repid,
gs_layout TYPE lvc_s_layo,
cont_for_flights TYPE scrfname VALUE 'BCALV_GRID_02_100',
grid1 TYPE REF TO cl_gui_alv_grid,
custom_container TYPE REF TO cl_gui_custom_container,
grid2 TYPE REF TO cl_gui_alv_grid,
dialogbox_container TYPE REF TO cl_gui_dialogbox_container,
event_receiver TYPE REF TO lcl_event_receiver.

* Set initial dynpro
SET SCREEN 100.
* class definition
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
* method to close dialog box
METHODS handle_close
FOR EVENT close OF cl_gui_dialogbox_container
IMPORTING sender.
ENDCLASS. "lcl_event_receiver DEFINITION
* class implementation
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_close.
CALL METHOD sender->set_visible
EXPORTING
visible = space.
ENDMETHOD. "handle_close
ENDCLASS. "lcl_event_receiver IMPLEMENTATION

*&---------------------------------------------------------------------*
*& Module PBO_100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE pbo_100 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
g_repid = sy-repid.
ENDMODULE. " PBO_100 OUTPUT
*&---------------------------------------------------------------------*
*& Module PAI_100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE pai_100 INPUT.
DATA: dialogbox_status TYPE c. "'X': does exist, SPACE: does not ex.
save_ok = ok_code.
CASE save_ok.
WHEN 'EXIT'.
PERFORM exit_program.
WHEN 'DIALOG'.
IF dialogbox_status IS INITIAL.
dialogbox_status = 'X'.
PERFORM create_detail_list.
ELSE.
CALL METHOD dialogbox_container->set_visible
EXPORTING
visible = 'X'.
CALL METHOD grid2->refresh_table_display.
ENDIF.
ENDCASE.
CLEAR save_ok.
ENDMODULE. " PAI_100 INPUT

*&---------------------------------------------------------------------*
*& Form SELECT_TABLE_SBOOK
*&---------------------------------------------------------------------*
FORM select_table_sbook.
SELECT * FROM sbook INTO TABLE gt_sbook UP TO 10 ROWS.
ENDFORM. " SELECT_TABLE_SBOOK

*&---------------------------------------------------------------------*
*& Form create_detail_list
*&---------------------------------------------------------------------*
FORM create_detail_list.

PERFORM select_table_sbook.

* Object Creation for dialog box
CREATE OBJECT dialogbox_container
EXPORTING
top = 150
left = 150
lifetime = cntl_lifetime_dynpro
caption = 'Bookings'(200)
width = 800
height = 200.

* Object for ALV Grid
CREATE OBJECT grid2
EXPORTING
i_parent = dialogbox_container.

* Object For Event Handler
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_close FOR dialogbox_container.

* display data
gs_layout-grid_title = space.

CALL METHOD grid2->set_table_for_first_display
EXPORTING
i_structure_name = 'SBOOK'
is_layout = gs_layout
CHANGING
it_outtab = gt_sbook.

CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = grid2.

ENDFORM. " create_detail_list

Reference:
Standard Program : BCALV_GRID_02

No comments: