‎2012 Aug 17 9:37 AM
Is it possible the use a splitter container without creating a seperate dynpro with a container on it.
It is possible if you just need a single ALV. But as soon as the splitter container is called I can't get the program to output the ALV.
I saw a demo program where a user was able to display a ALV on the selections screen - and if I modify this example http://www.saptechnical.com/Tutorials/ALV/Selscreen/Display.htm) to use the splitter container the 2 ALV's are displayed. But as soon as i change the "AT SELECTION-SCREEN OUTPUT." to "END-OF-SELECTION" nothing is being displayed.
‎2012 Aug 17 1:42 PM
Hi Kim,
It would not work in End of selection.
1. To use the splitter for a container, you would need a dynpro - this is unavoidable. Containers are used to host front end controls such as ALV's, pictures, Text editors and so on. These controls are tied to the dynpro. The dynpro could be anything - Could be a system generated selection screen or a screen you had created for this program .
2. It would work at Selection screen output because, keep in mind the selection screen itself is a dynpro and it splits that dynpro to show the output . ( I never ever thought of dipslaying an ALV here ! ) . At "End of Selection" you do not have a dynpro to split it up.
I hope this helps.
Thanks,
Venkat.
Message was edited by: Venkat Gowrishankar
‎2012 Aug 17 2:06 PM - edited ‎2025 Mar 05 11:57 AM
You could create a docking container without having to create via screen painter a dynpro with a customer container in it.
DATA: go_dock TYPE REF TO cl_gui_docking_container.
CREATE OBJECT go_dock
EXPORTING
parent = cl_gui_container=>screen0
side = cl_gui_docking_container=>dock_at_left
ratio = 90.Then use the splitter container in it.
Regards,
Raymond
‎2012 Aug 20 7:25 AM
I already tried that. And that is not possible without a screen/dynpro
‎2012 Aug 20 7:51 AM
‎2012 Aug 20 9:09 AM
‎2012 Aug 20 9:17 AM
Of course you have to ...
You'll have to split the screen in a screen-processing event (since this has to be done before the screen is displayed you have to use the PBO event).
END-OF-SELECTION is not a screen processing event & hence it doesn't work!
BR,
Suhas
‎2012 Aug 20 9:22 AM
‎2012 Aug 20 10:05 AM
Suhas,
Do we need to write the controls initialization (Docking & splitter) in PBO explictly ? Since the initialization is to be done only once, can't we embed the initializations in a method in local class and then call the screen ?
START-OF-SELECTION.
<data extraction logic>
IF gt_post[] IS NOT INITIAL.
lr_local->initialize_controls.( ).
CALL SCREEN 100.
ENDIF.
method initialize_controls.
CREATE OBJECT gr_docking
EXPORTING
parent = cl_gui_container=>screen0
extension = 90
CREATE OBJECT gr_splitter
EXPORTING
parent = gr_docking
rows = 3
columns = 1
......
gr_grid_hdr->set_table_for_first_display(
EXPORTING
i_save = abap_true
i_default = abap_true
......
endmethod.
MODULE pbo_0100 OUTPUT.
SET PF-STATUS 'DISC_POST'.
ENDMODULE. " PBO_0100 OUTPUT
MODULE pai_0100 INPUT.
CASE ok_code.
WHEN 'DETL'.
CLEAR : ls_table.
MOVE abap_true TO ls_table-row.
MOVE abap_true TO ls_table-col.
gr_grid_dtl->refresh_table_display(
EXPORTING
is_stable = ls_table
EXCEPTIONS
finished = 1
OTHERS = 2 ).
ENDMODULE.
The above code worked perfectly even though the instance of DOCKING container and SPLITTER container created outside the PBO event. Hope I didn't misunderstood your reply.
Regards, Vinod