Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member

Issue: Create a Report with 2 ALV tables. These should open in full screen and take the maximum amount of space available on the screen. This one is for ABAP beginners.

There is a Report by Ruchi Tiwari which do nearly the same, but use a fixed sized custom control.

  • Create an empty Dynpro with screen number 2000. Create the PBO (status_2000) and PAI (user_command_2000) within forward navigation. I didn’t change the names. You can use includes but is quiet a god idea for real life use, but in this example I’ll put all code in my program “file”.
  • Add a status, because there will be a point in time, where you wish to leave the program( or not :smile: )

  • Add the PAI code for the exit. Your PBO and PAi should now look like this.

          Now you should be able to call the programm and leave it with the exit button.

  • Add the code to the Programm:



"Data for output
DATA: gr_container TYPE REF TO cl_gui_docking_container.   "The carrier for the split container
DATA: lv_splitter TYPE REF TO cl_gui_splitter_container"The splitter itself
DATA: lv_parent1 TYPE REF TO cl_gui_container.           "parent 1 and 2
DATA: lv_parent2 TYPE REF TO cl_gui_container.

DATA ref_grid1 TYPE REF TO cl_gui_alv_grid.
DATA ref_grid2 TYPE REF TO cl_gui_alv_grid.
DATA: gr_table1 TYPE REF TO cl_salv_table.
DATA: gr_table2 TYPE REF TO cl_salv_table.

"Some data used for DB query
DATA: gt_mara TYPE STANDARD TABLE OF mara.
DATA: gt_mard TYPE STANDARD TABLE OF mard.


START-OF-SELECTION.

SELECT * FROM mara INTO TABLE gt_mara UP TO 200 ROWS.
SELECT * FROM mard INTO TABLE gt_mard UP TO 200 ROWS.

CALL SCREEN 2000.


*&---------------------------------------------------------------------*
*&      Module STATUS_2000  OUTPUT
*&---------------------------------------------------------------------*
MODULE status_2000 OUTPUT.
SET PF-STATUS 'STATUS'.

"Now we create a docking container which will use the hole screen. So the Dynpro 2000 can't be seen anymore.
CREATE OBJECT gr_container
EXPORTING
*     parent                      = g_grid_main
repid                       = sy-repid                                  "needs report id
dynnr                       = sy-dynnr                                  "need dynpro number
side                        = cl_gui_docking_container=>dock_at_bottom  "we want to add the docking on the bottom of the screen 2000
extension                   = cl_gui_docking_container=>ws_maximizebox "The Dockingcontainer should use the hole screen
*     style                       =
*     lifetime                    = lifetime_default
*     caption                     =
*     metric                      = 0
*     ratio                       = 70
*     no_autodef_progid_dynnr     =
*     name                        =
EXCEPTIONS
cntl_error                  = 1
cntl_system_error           = 2
create_error                = 3
lifetime_error              = 4
lifetime_dynpro_dynpro_link = 5
OTHERS                      = 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.


**   create splitter container in which we'll place the alv table
CREATE OBJECT lv_splitter
EXPORTING
parent  = gr_container
rows    = 2
columns = 1
align   = 15. " (splitter fills the hole custom container)
**   get part of splitter container for 1st table
CALL METHOD lv_splitter->get_container
EXPORTING
row       = 1
column    = 1
RECEIVING
container = lv_parent1.
**   get part of splitter container for 2nd table
CALL METHOD lv_splitter->get_container
EXPORTING
row       = 2
column    = 1
RECEIVING
container = lv_parent2.

***  Display first ALV
PERFORM set_display.
***  Display second ALV
PERFORM set_display1.

ENDMODULE.                 " STATUS_2000  OUTPUT
*&---------------------------------------------------------------------*
*&      Module USER_COMMAND_2000  INPUT
*&---------------------------------------------------------------------*
MODULE user_command_2000 INPUT.
IF sy-ucomm = 'EXIT'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.                 " USER_COMMAND_2000  INPUT
*&---------------------------------------------------------------------*
*&      Form SET_DISPLAY
*&---------------------------------------------------------------------*
FORM set_display .
*... Create Instance
CALL METHOD cl_salv_table=>factory
EXPORTING
r_container  = lv_parent1
IMPORTING
r_salv_table = gr_table1
CHANGING
t_table      = gt_mara.

*... Display table
gr_table1->display( ).
ENDFORM. " SET_DISPLAY

FORM set_display1 .
*... Create Instance
CALL METHOD cl_salv_table=>factory
EXPORTING
r_container  = lv_parent2
IMPORTING
r_salv_table = gr_table2
CHANGING
t_table      = gt_mard.

*... Display table
gr_table2->display( ).
ENDFORM.

1 Comment