ewx hat geschrieben:der cl_gui_docking_container eignet sich immer gut, wenn man Controls an ein Dynpro "papsen" möchte. Das ist aber kein Splitter in dem Sinne.
Du musst einen Container haben, in dem du den Splitter erzeugst. Hier ein Beispiel mit vier Containern:
http://www.tricktresor.de/blog/alv-grid-mit-splitter/
Schau dir am besten mal Beispiele mit dem CL_GUI_EASY_SPLITTER an. Der kann nur "teilen": links/rechts und oben/unten:
https://www.abapforum.com/forum/viewtop ... =3&t=17024
Bei der Verwendung sind alles "Container". Da ist es egal, ob es ein Docking-Container oder Custom-Container ist.Abapanfänger hat geschrieben: Ich habe beide Versionen bereits angeschaut und ausprobiert. Die erste Variante benötigt einen Customcontainer und dementsprechend entspricht es nicht den Anforderungen[...]
Es sollte kein kein Popup sein. Ich möchte einfach auf die bestende SALV noch abspringen. Das Split SALV funktioniert im Dockingcontainer einwandfrei.a-dead-trousers hat geschrieben:Ich glaube Abapanfänger sucht nach einem CL_GUI_DIALOGBOX_CONTAINER um eine neue "Ebene" (Popup?) zu öffnen.
Trotzdem würde ich eher davon abraten und stattdessen ein echtes Dynpro (CALL SCREEN) für die Detaildaten aufzurufen.
Okeee.... Schön langsam verstehe ich worauf du hinaus willst.Abapanfänger hat geschrieben:Es sollte kein kein Popup sein. Ich möchte einfach auf die bestende SALV noch abspringen. Das Split SALV funktioniert im Dockingcontainer einwandfrei.
Du kannst Beispiel ziemlich einfach finden, indem du einen Verwendungsnachweis auf die jeweilige Klasse machst und dann in der Ergebnisliste nach "DEMO" suchst.Abapanfänger hat geschrieben: Kann der CL_GUI_EASY_SPLITTER auch wie eine neue ebene Angeheftet werden? Hast du dazu ein Example?
Die Idee hört sich gut an, aber passt leider nicht zu den Anforderungen.a-dead-trousers hat geschrieben:Okeee.... Schön langsam verstehe ich worauf du hinaus willst.Abapanfänger hat geschrieben:Es sollte kein kein Popup sein. Ich möchte einfach auf die bestende SALV noch abspringen. Das Split SALV funktioniert im Dockingcontainer einwandfrei.
Was hältst du davon:
Ein Splitter Control mit X Zeilen oder Spalten (je nachdem was du brauchst). Die Schieber (Sash) sind ausgeblendet (oder zumindest nicht manuell schiebbar) und in jedem Container lebt eine andere ALV-Grid-Instanz. Je nachdem welches Grid du angezeigt haben möchtest vergrößerst du die Zeile oder Spalte des Grids auf 100% und verkleinerst die vorherige auf 0%.
So ähnlich funktioniert übrigens das "Schubladenmenü" links in der SE80. Das ist auch ein großer Splitter und je nachdem auf welchen Abschnitt (= Toolbar mit einem einizgen Button) der Benutzer klickt wird der entsprechende Teil "maximiert" und der vorherige ausgeblendet.
lg ADT
EDIT:
Die Klasse für das Menü in der SE80 lautet CL_GUI_CONTAINER_BAR bzw. CL_GUI_CONTAINER_BAR_2. Wenn du die nicht verwenden möchtest, kannst du dir zumindest (so wie ich) Anregungen für mögliche Verwendungen eines Splitter-Controls holen.
Code: Alles auswählen.
DATA:
lo_alv1 TYPE REF TO cl_salv_table,
lo_alv2 TYPE REF TO cl_salv_table,
lo_dock1 TYPE REF TO cl_gui_docking_container,
lo_dock2 TYPE REF TO cl_gui_docking_container,
lo_error TYPE REF TO cx_root.
TRY .
* Docking links aufbauen
CREATE OBJECT lo_dock1
EXPORTING
side = cl_gui_easy_splitter_container=>align_at_left
extension = 1000
no_autodef_progid_dynnr = abap_true "nur der Wert 'X'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
* Docking rechts aufbauen
CREATE OBJECT lo_dock2
EXPORTING
side = cl_gui_easy_splitter_container=>align_at_right
extension = 1000
no_autodef_progid_dynnr = abap_true "nur der Wert 'X'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
*Objektinstants des ALVS aufbauen
TRY.
cl_salv_table=>factory(
EXPORTING
r_container = lo_dock1
IMPORTING
r_salv_table = lo_alv1
CHANGING
t_table = it_table1 ).
CATCH cx_salv_msg.
ENDTRY.
set_functions( CHANGING c_alv = lo_alv1 ).
set_optimize_column( CHANGING c_alv = lo_alv1 ).
TRY.
cl_salv_table=>factory(
EXPORTING
r_container = lo_dock2
IMPORTING
r_salv_table = lo_alv2
CHANGING
t_table = it_table1 ).
CATCH cx_salv_msg.
ENDTRY.
" ALV Anzeigen
lo_alv1->display( ).
lo_alv2->display( ).