Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Help for splitter and subscreen

tafkap95
Explorer

Hi,

I need to develop an application with the following GUI:

- on the left, an ALV (SALV)
- right I need to have two subscreens, stacked one on top of the other but resizable

001.jpg

To tell the truth, I don't really know what to use as an object (splitter class, subscreen?)

Thanks for your precious advice.

 

7 REPLIES 7

Sandra_Rossi
Active Contributor

Thank you to have included an image of what you want to achieve, it makes your question very clear.

I'm not sure what you want to have in "Details", I assume you want these 2 subscreens to NOT BE a control (child of CL_GUI_CONTROL).

In classic Dynpro, you have the Splitter element (CL_DYNPRO_SPLITTER) to split the two subscreens on the right, there will be a moveable bar ("sash") between the two subscreens.

For the left part, as you want a moveable bar again, you must use CL_GUI_DOCKING_CONTAINER.

I don't see any other solution which corresponds to your exact question (unless one of the 2 Details is to be a GUI control).

EDIT: another solution is to have CL_DYNPRO_SPLITTER twice, one in the main screen, and one in the subscreen.

  • Main screen containing a CL_DYNPRO_SPLITTER with left part containing the ALV, and right part being a subscreen area containing the subscreen below
  • Subscreen containing a CL_DYNPRO_SPLITTER with top and bottom parts containing the two Details

0 Kudos

Hi Sandra,

thank you very much for responding.

I will try to implement this today, thanks for the valuable advice, I also found some program demos.

I am attaching a graphic again to explain my need. Both subscreens will have simple fields but one of the subscreens must support drag&drop.

By clicking on an ALV line, the AREA 1 and AREA 2 zones will be refreshed using the data from the ALV line.

 

002.jpg

Here, it's a different question, drag & drop is only supported by GUI controls (CL_GUI_CONTROL). You should understand and list the many limits of the very old SAP GUI technology and tell your client. "Switch" to SAPUI5 if the client wants modern UI.

0 Kudos

 Hello, sorry for this late response.

I understand the advice to switch to SAPUI5, it is planned but not before 1 or 2 years (many architectural and security constraints) so no choice to start with SAP GUI, but using the MVC design pattern for less suffer during the passage to Fiori.

Coming back to my need, I understood that I must have a cl_gui_docking_container container on the left for my ALV, it's ok, I have it. But on the right I don't have the choice of having two sub-screens, but how can I "join" them via a splitter? I tried using the cl_dynpro_splitter class without success, and there aren't many examples.

Thanks for your help.

0 Kudos

Demo program DEMO_DYNPRO_SPLITTER_CONTROL.

  1. Create a special element of type splitter in your screen, any name, SASH 50% for instance anyway you'll set it by program, choose "vertical", give names for the splitter and the two subscreen areas (top and bottom). If I remember well, use CALL SUBSCREEN to include the subscreens you want in the top and bottom subscreen areas.
  2. Before the CALL SCREEN or during PBO, create the instance of CL_DYNPRO_SPLITTER with the name of the element. Possibly, call SET_SASH method to set the SASH % (use 50 the first time), assign 
  3. In the PAI, call GET_SASH method to get the SASH %, you will use it for the next SET_SASH in the PBO.

0 Kudos

Hi, thanks, i found the TEXTEDIT_DEMO_DRAGDROPF01 demo program  which implements this.

0 Kudos

To clarify what you just said, in case anybody reads the thread, when you say that the program SAPTEXTEDIT_DEMO_DRAGDROP "implements this", you mean that it implements the drag & drop from a Tree control to a Text Edit control (both are CL_GUI_CONTROL elements).

Now back to CL_DYNPRO_SPLITTER, please confirm to the other people that you could implement successfully CL_DYNPRO_SPLITTER because as you said "there aren't many examples". Thank you.