cl_gui_docking_container auf neue ebene anzeigen

Getting started ... Alles für einen gelungenen Start.
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

cl_gui_docking_container auf neue ebene anzeigen

Beitrag von Abapanfänger (ForumUser / 59 / 16 / 1 ) »
Hallo zusammen

Ich habe mit dem SALV eine Ausgabe erzeugt und möchte 2 Einträge auswählen und danach auf einen Button klicken.
Der Button sollte ein Splitscreen öffnen. Ich habe einige Varianten ausprobiert und finde den cl_gui_docking_container dafür am angenehmsten.

Jedoch habe ich das Problem dass es in mein Defaulscreen den neuen ALV neben meinem bestehenden SALV aufbaut.
Gibt es eine Möglichkeit, wie ich eine Art neue Ebene haben kann ohne Dynpros und anschliessend und dort meinen Splitscreen anzeigen kann ?

Im Splitscreen sollten der Status funktionieren, damit ich mit dem Back Button auf das erste SALV zurückkomme.

Das gleiche funktioniert einwandfrei, wenn man auf einen SALV nochmals ein neues SALVobjekt über oalv_>Display( ). ausgibt. Jedoch habe ich es mit einem Splitter noch nicht hinbekommen.

Ich wäre über eine Hilfestellung sehr froh.
Hat jemand ein Codingbeispiel?

Vielen Dank und Beste Grüsse,

Abapanfänger

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: cl_gui_docking_container auf neue ebene anzeigen

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
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

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Legxis


Re: cl_gui_docking_container auf neue ebene anzeigen

Beitrag von Abapanfänger (ForumUser / 59 / 16 / 1 ) »
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

Hallo Danke für deine Hilfe
Kann der CL_GUI_EASY_SPLITTER auch wie eine neue ebene Angeheftet werden? Hast du dazu ein Example?

Ich habe beide Versionen bereits angeschaut und ausprobiert. Die erste Variante benötigt einen Customcontainer und dementsprechend entspricht es nicht den Anforderungen und bei der 2ten Variante hatte ich das Problem, dass es den Container hinter meinen SALV aufbaut.

Re: cl_gui_docking_container auf neue ebene anzeigen

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
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[...]
Bei der Verwendung sind alles "Container". Da ist es egal, ob es ein Docking-Container oder Custom-Container ist.

Re: cl_gui_docking_container auf neue ebene anzeigen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
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.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: cl_gui_docking_container auf neue ebene anzeigen

Beitrag von Abapanfänger (ForumUser / 59 / 16 / 1 ) »
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.
Es sollte kein kein Popup sein. Ich möchte einfach auf die bestende SALV noch abspringen. Das Split SALV funktioniert im Dockingcontainer einwandfrei.

Re: cl_gui_docking_container auf neue ebene anzeigen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
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.
Okeee.... Schön langsam verstehe ich worauf du hinaus willst.

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.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: cl_gui_docking_container auf neue ebene anzeigen

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Abapanfänger hat geschrieben: Kann der CL_GUI_EASY_SPLITTER auch wie eine neue ebene Angeheftet werden? Hast du dazu ein Example?
Du kannst Beispiel ziemlich einfach finden, indem du einen Verwendungsnachweis auf die jeweilige Klasse machst und dann in der Ergebnisliste nach "DEMO" suchst.

Der Splitter ist ein CONTROL, also kein eigener Container. Du brauchst einen bestehenden Container, in den du diesen Splitter setzt. Der Splitter bietet dir dann wieder Controls, in die du andere Controls packen kannst.

Am einfachsten ist es, erst einmal alle Container zu definieren, die man braucht. Hinterher kann man dann noch so Spielereien machen, wie ausblenden und Größe anpassen, wenn irgendwo geklickt wird.

Re: cl_gui_docking_container auf neue ebene anzeigen

Beitrag von Abapanfänger (ForumUser / 59 / 16 / 1 ) »
a-dead-trousers hat geschrieben:
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.
Okeee.... Schön langsam verstehe ich worauf du hinaus willst.

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.
Die Idee hört sich gut an, aber passt leider nicht zu den Anforderungen.
Ich habe es jetzt so umgesetzt.
Die Anzeige ist wie gewünscht nur würde ich gerne wieder auf den ersten SALV switchen falls Back gedrückt wird.

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( ).


Seite 1 von 1

Vergleichbare Themen

3
Antw.
3091
Views
Docking Container im Docking Container
von GreatEMU » 25.04.2013 11:54 • Verfasst in ABAP Objects®
6
Antw.
5955
Views
Gesplitteter Docking-Container
von ralf.wenzel » 26.05.2013 18:33 • Verfasst in ABAP Objects®
0
Antw.
1431
Views
Abstand zum Top bei Docking Container
von Gotti » 30.04.2008 11:14 • Verfasst in ABAP Objects®
2
Antw.
2028
Views
Tree im Docking Container
von Balflear » 12.09.2017 10:29 • Verfasst in ABAP® Core
2
Antw.
4877
Views
Docking-Container im Subscreen
von eschi78 » 10.11.2004 11:53 • Verfasst in ABAP Objects®

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140