Zwei ALV's im Splittercontainer im Default-Screen

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
17 Beiträge • Seite 1 von 2 (current) Nächste
17 Beiträge Seite 1 von 2 (current) Nächste

Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von juem1 (ForumUser / 13 / 13 / 0 ) »
Hallo zusammen,
ich beschäftige mich erst sehr kurz mit ABAP und habe ein Problem :
ich würde gerne einen Splittercontainer,in dem zwei ALV's angezeigt werden sollen, dem Default-Screen zuweisen. Leider wird aber nichts angezeigt. Auch nicht nachdem ich set_visible aufgerufen habe. Seltsamerweise funktioniert es, wenn ich einen ALV direkt dem Default-Screen (also ohne Einbettung in zusätzlichen Container) zuweise. Den Weg mit einem zusätzlichen Dynpro kenne ich,ich muss aber in meinem Fall ohne Dynpro auskommen und kann nur den Default-Screen benutzen. Ich muss also aus dem Report heraus den Splitter-Container(genauer gesagt einen Easy Splitter) anlegen (PARENT = CL_GUI_CONTAINER=>DEFAULT_SCREEN), die zwei Grids erzeugen, dem Splitter hinzufügen und im Default-Screen anzeigen.Da ich so gut wie keine Erfahrung habe,bin ich mir nicht sicher,ob das überhaupt so funktioniert (ohne zusätzliches Dynpro). Weiß jemand, was da eigentlich genau abläuft (warum in meinem Fall nichts angezeigt wird) und wie ich mein Problem lösen kann (CL_GUI_CFW=>FLUSH habe ich auch schon probiert,hatte keine Wirkung)?
Viele Grüße
Jörn

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


Re: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von a-dead-trousers (Top Expert / 4451 / 227 / 1197 ) »
Probiers mal mit einem CL_GUI_CUSTOM_CONTAINER als Parent des Splitter anstatt dem CL_GUI_CONTAINER=>DEFAULT_SCREEN.
Beim Custom-Container im Constructor kannst du nämlich alternativ zum CONTAINER_NAME des Dynpro auch REPID und DYNNR angeben, damit kannst du ein Control direkt über den gesamten Bildschirm ausgeben.

Ich weiß leider nicht ob das seitens SAP überhaupt (noch) erlaubt ist, da wir bei uns im Haus so eine ähnliche Konstellation hatten die leider nicht mehr funktionierte und wir desshalb auf Dynpro mit Container umsteigen mussten. Kann aber auch am eingesetzten Control (von uns selbst entwickelt) gelegen haben :roll:

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
juem1

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: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von juem1 (ForumUser / 13 / 13 / 0 ) »
Hallo,
erstmal vielen Dank für deine Hilfestellung. Ich habs nun mit nem Custom-Container versucht,der erwartet aber den Namen des Custom-Controls. Was gebe ich denn da an?
Gruß
J.
Edit : ich habs nun auch mit nem Docking-Container probiert (hier muss man keinen Namen fürs Custom-Control angeben), das funktioniert aber leider auch nicht ... weiß jemand zufällig,was dieses Custom-Control aus rein technischer Sicht eigentlich darstellt und für was es genau gut ist?

Re: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von a-dead-trousers (Top Expert / 4451 / 227 / 1197 ) »
hoppla, sry!

Im Dynpro musst du ein CustomControl-Feld platzieren. Diesem gibst einen Namen und diesem Namen verwendest du im Constructor des CL_GUI_CUSTOM_CONTAINER. Dann wird der Container im Bereich den du im Dynpro für das CustomControl definiert hast angezeigt.

Bei diesem CustomControl-Feld kannst du auch einstellen, dass es sich an die Größe des GUI-Fensters anpasst (Resizing in den erweiterten Attributen)
Wobei du aber beachten solltest, dass sich das ganze an der linken oberen Ecke des Dynpros orienteiert. Sprich wenn du rechts vom CustomControl noch Felder platzierst funktioniert das Resizing nicht.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
juem1

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: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von juem1 (ForumUser / 13 / 13 / 0 ) »
Hallo,
nur dann müsste ich ja ein neues Dynpro anlegen.Ziel ist es aber ohne zusätzliches Dynpro auszukommen und den Default-Screen zu benutzen.Gibt es auf dem Default-Screen ein Custom-Control,das sich irgendwie benutzen lässt?
Viele Grüße!
J.

Re: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von Prego (Specialist / 106 / 22 / 1 ) »
Hallo juem1,

was ist für Dich der Defaultscreen? Ein Dynpro hast Du doch auf jeden Fall, auf dem Du den Container hinterlegst.
Diesen einfach über

[code] DATA: l_tree_container_name(30) TYPE c,
l_custom_container TYPE REF TO cl_gui_custom_container,
event TYPE cntl_simple_event,
events TYPE cntl_simple_events,
hierarchy_header TYPE treev_hhdr.

* Hauptcontainer erstellen
l_container_name = 'TREE1'.
IF sy-batch IS INITIAL.
CREATE OBJECT l_custom_container
EXPORTING
container_name = l_container_name
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'.
ENDIF.
ENDIF.

* Dieses soll einen Splittercontrol enthalten mit 2 Teilen enthalten
CREATE OBJECT splitter
EXPORTING parent = l_custom_container
rows = 1
columns = 2.
* Container für 1. Spalte holen
CALL METHOD splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = container_1.
* Container für 2. Spalte holen
CALL METHOD splitter->get_container
EXPORTING
row = 1
column = 2
RECEIVING
container = container_2.[/code]

Danach hast Du in Deinem eine Dynpro 2 Splitter mit 2 Containern, die Du mit unterschiedlichen ALV's befüllen kannst.

Folgende Benutzer bedankten sich beim Autor Prego für den Beitrag:
juem1


Re: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von black_adept (Top Expert / 4133 / 130 / 956 ) »
Hallo J.

was du machen könntest, wäre einen Splitter zu nehmen, der auf allen! Dynpros angezeigt werden würde (also auch auf der Liste ) , den du aber erst dann erzeugst, wenn du ihn wirklich benötigst.
Leider kann der CL_GUI_EASY_SPLITTER_CONTAINER das nicht - aber der CL_GUI_SPLITTER_CONTAINER ist dazu in der Lage.

Ich häng dir mal ein sehr stark gekürztes Coding an, welches demonstriert, wie das aussehen muss.

Code: Alles auswählen.

REPORT.

DATA: cl_grid1      TYPE REF TO cl_gui_alv_grid,
      cl_grid2      TYPE REF TO cl_gui_alv_grid,
      cl_split      TYPE REF TO cl_gui_splitter_container,
      cl_container  TYPE REF TO cl_gui_container.

START-OF-SELECTION.

  WRITE:/ sy-tabix.   " Damit das Programm hält


  CREATE OBJECT cl_split
    EXPORTING
      parent                  = cl_gui_container=>default_screen
      rows                    = 1
      columns                 = 2
      no_autodef_progid_dynnr = 'X'.

  cl_container = cl_split->get_container( row = 1 column = 1 ).

  CREATE OBJECT cl_grid1
    EXPORTING
      i_parent = cl_container.

  cl_container = cl_split->get_container( row = 1 column = 2 ).

  CREATE OBJECT cl_grid2
    EXPORTING
      i_parent = cl_container.


*Grummel* was ist denn das für ein Script, dass das Wort "column" im funktionalen Methodenaufruf in Großbuchstaben konvertiert? In meinem Coding war das klein geschrieben und so sollte es auch sein.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
juem1

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von juem1 (ForumUser / 13 / 13 / 0 ) »
Hallo black_adept!
Das hat funktioniert :up: , vielen Dank! Ich hatte das auch schonmal probiert, aber ohne den Zusatz no_autodef_progid_dynnr = 'X' . Da wurde aber dann nichts angezeigt. Was genau passiert denn, wenn man das 'X' nicht setzt? Verlinkt er dann auf irgendne automatisch generierte Dynpronummer oder wie muss man sich das vorstellen?
Nochmals ganz dickes Dankeschön an alle!!
Gruß
Jörn

Re: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Hallo juem,

habs grad mal gegooglet...

Den Zusatz gibt man anscheinend an, um das Control fest mit dem Dynpro zu verknüpfen.
Das setzen des X anstatt des Default-Werts (Space) sorgt dann dafür, dass die Zuordnung nicht automatisch geschieht.

Ich hoffe, das hilft dir weiter...

Folgende Benutzer bedankten sich beim Autor km216 für den Beitrag:
juem1


Re: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von black_adept (Top Expert / 4133 / 130 / 956 ) »
Hallo Jörn,

ich erklärs mal so gut, wie ich es mir aus den Dokus zusammengereimt habe.

Zur Darstellung eines Controls benötigt man immer einen Container. Dafür gibt es ja die ganzen verschiedenen Containerarten CL_GUI_...._CONTAINER
die ( alle? ) vom CL_GUI_CONTAINER abgeleitet sind.

Jeder Container ist nun entweder ein "Top-Level" Container oder er hängt in einem anderen Container drin und kann nur dann dargestellt werden, wenn der übergeordnete Container dargestellt wird.

Für die "Top-Level" Container scheint SAP nun 2 Fälle zu unterscheiden.
Einerseits diejenigen Container, die sich an einen speziellen Dynpro andocken und solche, die sich an a alle Dynpros desselben Popuplevels docken.
Für den ersten Fall muss man dann im Konstruktor dementsprechend Dynpro und Programm mitgeben, für den letzteren Fall halt dieses Kennzeichen no_autodef_progid_dynnr.
Hier verhält sich der CL_SPLITTER_CONTAINER übrigens m.E. falsch, da nach obigen Ausführungen eigentlich der Parameter "Parent" weggelassen werden könnte, da er sich ja an alle Dynpros andocken soll. Aber wenn man ihn weglässt gibt es eine Exception.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
juem1

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von juem1 (ForumUser / 13 / 13 / 0 ) »
km216,black_adept : worauf ich mir irgendwie keinen Reim machen kann,ist die Tatsache,dass ich in meinem Programm ja überhaupt keinen weiteren Screen (oder Dynpro) verwende. Es gibt nur den Default-Screen (also der Screen auf dem eine write-Anweisung landet,wenn keine anderen Dynpros o.ä.verwendet werden),d.h. selbst wenn ich die Option wegließe,so könnte er doch meinen Container mit gar keinen anderen Screen verlinken,oder etwa doch?

Re: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Prego hat geschrieben: was ist für Dich der Defaultscreen? Ein Dynpro hast Du doch auf jeden Fall, auf dem Du den Container hinterlegst.

Seh ich ähnlich, also einen Dynpro musst du ja mindestens haben.

Wenn du das "X" weglässt, zieht der Container sich ja automatisch Programm und Dynpro-Nummer, eventuell versucht er da sich Dynpro-Nummer "0000" zu ziehen oder sonstiges.

Aber wenn du das "X" weglässt und Dynpro-Nummer und Programm-ID manuell mitgibst, sollte es auch funktionieren...

Folgende Benutzer bedankten sich beim Autor km216 für den Beitrag:
juem1


Re: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von a-dead-trousers (Top Expert / 4451 / 227 / 1197 ) »
naja, das mit CL_GUI_CONTAINER und dem DEFAULT_SCREEN ist nicht ganz richtig:
- DEFAULT_SCREEN ist das aktuelle Fenster
- SCREEN0..9 sind die dazugehörigen Popup-level des Fensters
- DESKTOP ist wie schon zu erwarten der Windows-Desktop (Hab da auch schon mal was drangehängt)
- Und der WRITE Befehl schreibt in den LISTPROZESSOR (den man vom Dynpro aus mittels PBO - SUPPRESS DIALOG und PAI - LEAVE TO LIST-PROCESSING erreicht) und der ist selbst wieder eine "Art von Dynpro" mit PAI, PBO usw.

Dynpros selbst sind streng genommen keine Fenster im eingentlichen Sinn.
Das sieht man vorallem wenn man sich die Objekthierachie auf seiten von Windows anschaut, da hat nämlich z.B. der Gui-Status und das Dynpro eigene Window-Handles die unter dem eigentlich angezeigten Hauptfenster liegen 8)

Wenn man sich die Verarbeitung von NO_AUTODEF_PROGID_DYNNR anschaut, wird hier versucht, wenn kein PARENT angegeben wurde, das Control mittels LINK auf das aktuelle Dynpro zu verlinken. Das kann aber nur der CL_GUI_CUSTOM_CONTAINER (siehe auch dessen LINK-Methode). Alle anderen Container benötigen immer einen PARENT.

lg ADT

P.S.: Ich weiß, ich weiß, ... Der altkluge Streber soll sich bitte wieder setzen :roll:

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
juem1

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: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von ewx (Top Expert / 4884 / 318 / 644 ) »
a-dead-trousers hat geschrieben: - DESKTOP ist wie schon zu erwarten der Windows-Desktop (Hab da auch schon mal was drangehängt)
Wie das denn? :?
...also außer einer Dialogbox...?

Re: Zwei ALV's im Splittercontainer im Default-Screen

Beitrag von a-dead-trousers (Top Expert / 4451 / 227 / 1197 ) »
ewx hat geschrieben:
a-dead-trousers hat geschrieben: - DESKTOP ist wie schon zu erwarten der Windows-Desktop (Hab da auch schon mal was drangehängt)
Wie das denn? :?
...also außer einer Dialogbox...?
Ich wollte ein (nicht sichtbares) Control so positionieren, dass es über mehrere Modi angesprochen werden kann!
War aber im Endeffekt ein Reinfall :oops:
Wenn man das Control auf anzeigen geschalten hat, hat man es zwar gesehen aber es konnten nicht mal im selben Modus die Events verarbeitet werden und daher wars dann unbrauchbar.
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

Vergleichbare Themen

1
Antw.
4355
Views
2
Antw.
7057
Views
Kein Varianten-Admin im Splitter-Container auf Default Screen
von tonyparzonka » 09.03.2023 12:45 • Verfasst in ABAP Objects®
3
Antw.
340
Views
zwei Pushbuttons in einem screen - sy-subrc16 ?
von sap_koun » 16.06.2022 20:31 • Verfasst in ABAP® für Anfänger
3
Antw.
2668
Views
SplitterContainer ein/ausblenden
von RantanplanFX » 02.09.2014 20:05 • Verfasst in ABAP Objects®
2
Antw.
1850
Views
Dynpro in Splittercontainer laden
von TomSd » 22.11.2007 14:24 • Verfasst in ABAP Objects®

Aktuelle Forenbeiträge

FOR mit CORRESPONDING
vor 4 Stunden von black_adept 9 / 606
SALV: Titel zu lang
vor 5 Stunden von ralf.wenzel 3 / 50
Web Feature Services (WFS) im SAP
vor 3 Tagen von msfox 1 / 267

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

FOR mit CORRESPONDING
vor 4 Stunden von black_adept 9 / 606
SALV: Titel zu lang
vor 5 Stunden von ralf.wenzel 3 / 50
Web Feature Services (WFS) im SAP
vor 3 Tagen von msfox 1 / 267

Unbeantwortete Forenbeiträge

Web Feature Services (WFS) im SAP
vor 3 Tagen von msfox 1 / 267
Erweiterung in ME51N/ME52N:
vor 3 Wochen von ABAPlerv 1 / 2548
Erweiterung in ME51N/ME52N:
vor 3 Wochen von ABAPlerv 1 / 2424