Modales Dialogfenster schliessen

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

Modales Dialogfenster schliessen

Beitrag von cuncon (Specialist / 143 / 98 / 1 ) »
Hallo zusammen,

ich habe ein Problem und kann nicht weiter kommen und zwar ich habe 2 Modales Dialogfenster angelegt. Auf einem Button von dem 1.Modales Dialogfenster soll das 2. Modales Dialogfenster aufgerufen werden, aber das erste Fenster soll geschlossen werden. Im Moment ist es bei mir, dass beide Fenster angezeigt sind. Ich konnte das erste Fenster nicht schließen.

zB: Das 1.Fenster hat Dynpro 310
Das 2. Fenster hat Dynpro 410

in PAI von 310 habe ich folgendes geschrieben:

CALL SCREEN 410
STARTING AT 4 10
ENDING AT 200 450.

LEAVE SCREEN.

Hat jemand eine Idee für mich?

Ich bedanke mich für jede Antwort von Euch.

cuncon

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


Re: Modales Dialogfenster schliessen

Beitrag von DeathAndPain (Top Expert / 1944 / 257 / 413 ) »
Das geht prinzipbedingt aus dem ersten Fenster nicht, eben weil es ein modales Fenster, also dem rufenden Fenster untergeordnet, ist. Würdest Du das zweite Fenster direkt daraus rufen, dann wäre es dem ersten modal untergeordnet, was eine vorherige Schließung des ersten Fenster ausschließt.

Wenn, dann musst Du das erste Fenster schließen und das zweite Fenster dann aus dem rufenden Hauptfenster öffnen lassen.

Das heißt, im Hauptfenster muss stehen:

Code: Alles auswählen.

CALL SCREEN 310
  STARTING AT 4 10
  ENDING AT 200 450.

IF zweites Fenster soll geöffnet werden.
  CALL SCREEN 410
  STARTING AT 4 10
  ENDING AT 200 450.
ENDIF.
Dann kannst Du beide Unterfenster ganz normal per LEAVE TO SCREEN '0'. beenden.

Re: Modales Dialogfenster schliessen

Beitrag von cuncon (Specialist / 143 / 98 / 1 ) »
vielen Dank für deine schnelle Antwort.

schade, dass es für meinen Fall nicht geht. Ich möchte auf einem Button aus dem ersten Modales Fenster klickt und dann wird das zweite Modales Fenster geöffnet und das erste Fenster soll geschlossen sein. Aber ich habe einfach mit folgender Coding probiert und es hat geklappt.

Im PAI von 310 habe ich geschrieben:

LEAVE TO SCREEN 410.

CALL SCREEN 410
STARTING AT 4 10
ENDING AT 200 450.

Die Coding sieht schon etwas komisch aus, aber es hat geklappt. Ich weiß nicht, ob später ich andere Fehler entdecke wegen dieser Coding. Das 2.Fenster wurde aufgerufen und gleichzeitig das 1. Fenster wurde geschlossen.

cuncon

Re: Modales Dialogfenster schliessen

Beitrag von DeathAndPain (Top Expert / 1944 / 257 / 413 ) »
LEAVE TO SCREEN '0410'. geht natürlich. (Syntaktisch erwartet der Befehl da ein Char-Feld, weswegen es unschön ist, die 410 als Zahl zu übergeben, auch wenn der ABAP-Interpreter das automatisch wandelt. Wahrscheinlich kostet Dich die Wandlung auch eine Mikrosekunde Rechenzeit. ;-) )

Ich hatte diesen Befehl auch im Auge, habe ihn aber nicht genannt, weil man da ja kein STARTING AT angeben kann. Wenn das Folgefenster das vom vorherigen erbt, um so besser. Das wäre mir dann nicht bekannt gewesen.

Ich bin aber ziemlich sicher, dass Du das nachfolgende

Code: Alles auswählen.

CALL SCREEN 410
STARTING AT 4 10
ENDING AT 200 450.
weglassen kannst. Dieser Code wird nie erreicht, weil er sich bei dem LEAVE-Befehl schon aus Deinem Dynpro 310 final verabschiedet.

Re: Modales Dialogfenster schliessen

Beitrag von cuncon (Specialist / 143 / 98 / 1 ) »
Hallo DeathAndPain,

vielen Dank für deine Tipps. Ich wusste nicht, dass man die Dynpronr als String schreiben soll. Tatsächlich kann ich den Befehl
CALL SCREEN 410
STARTING AT 4 10
ENDING AT 200 450.
wegmachen. Mit dem Befehl LEAVE TO SCREEN 410 im PAI 310 habe ich erreicht, dass ein Fenster geschlossen wurde und der Inhalt vom Dynpro 410 wird auf dem Dynpro 310 angezeigt, dh. wie du sagte das Folgefenster das vom vorherigen erbt.
Trotz dieser Lösung habe ich nicht 100% erreicht, wie ich möchte, zB: das 1.Fenster soll viel kleiner sein als das 2. Fenster. Um alle Daten vom 2.Fenster anzuzeigen musste ich die Größe vom 1.Fenster groß wie das 2.Fenster machen. Das ist auch nicht so schön für mich, aber ich muss diese Lösung nehmen, andere Lösung habe ich nicht.

Viele Grüße

cuncon

Re: Modales Dialogfenster schliessen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Nein, musst du nicht.
Du nimmst einfach D&Ps erste Lösung.
Zum Verlassen deines ersten Fensters rufst du einfach nur LEVAE TO SCREEN 0 auf und der Programmlauf wird nach dem ersten CALL SCREEN fortgesetzt. Somit kommst du dann zur Abfrage ob das zweite Fenster aufgerufen werden soll.
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: Modales Dialogfenster schliessen

Beitrag von ewx (Top Expert / 4848 / 312 / 642 ) »
cuncon hat geschrieben:
12.04.2019 10:09
Trotz dieser Lösung habe ich nicht 100% erreicht, wie ich möchte, zB: das 1.Fenster soll viel kleiner sein als das 2. Fenster. Um alle Daten vom 2.Fenster anzuzeigen musste ich die Größe vom 1.Fenster groß wie das 2.Fenster machen. Das ist auch nicht so schön für mich, aber ich muss diese Lösung nehmen, andere Lösung habe ich nicht.
Ich finde die Lösung viel besser!!
Mich nervt bei verschiedenen Popups regelmäßig, dass man sich immer neu orientieren muss, wo irgendwelche Buttons sind, um weiter zu kommen.

Mein Paradebeispiel ist das Löschen von Objekten aus einem Transportauftrag:
* Info-Message oben links: Aktive Version stimmt nicht mit der aktuellen überein. [ OK ]
* Info-Message oben links: Objekt xyz ist gesperrt. [ OK ]
* Popup 10 cm oben darüber: Objekt ist gesperrt. Löschen? [ Ja ] [ Nein ] [ Abbrechen ]
* Popup mitte links: An folgende Einträge wurden Sperren verteilt... [ OK ].

Wenn man das Ganze für mehrere Objekte machen muss...

Alternative wäre auch, dass du mit EINEM Popup arbeitest und Subscreen x anzeigst . Nach Klick auf [ Weiter ] bleibst du im Popup, zeigst aber subscreen y an.

Re: Modales Dialogfenster schliessen

Beitrag von cuncon (Specialist / 143 / 98 / 1 ) »
a-dead-trousers hat geschrieben:
12.04.2019 10:27
Nein, musst du nicht.
Du nimmst einfach D&Ps erste Lösung.
Zum Verlassen deines ersten Fensters rufst du einfach nur LEVAE TO SCREEN 0 auf und der Programmlauf wird nach dem ersten CALL SCREEN fortgesetzt. Somit kommst du dann zur Abfrage ob das zweite Fenster aufgerufen werden soll.
Hallo dead-trosers,
ich habe gestern mit dieser Lösung auch probiert:
LEAVE TO SCREEN 0.
CALL SCREEN '0410'
STARTING AT 4 10
ENDING AT 200 450.
Aber leider hat es nicht funktioniert, weil beide Modales Fenster danach geschlossen wurden. Oder habe ich etwas falsch gemacht?

Viele Grüße
cuncon

Re: Modales Dialogfenster schliessen

Beitrag von cuncon (Specialist / 143 / 98 / 1 ) »
ewx hat geschrieben:
12.04.2019 10:33
cuncon hat geschrieben:
12.04.2019 10:09
Trotz dieser Lösung habe ich nicht 100% erreicht, wie ich möchte, zB: das 1.Fenster soll viel kleiner sein als das 2. Fenster. Um alle Daten vom 2.Fenster anzuzeigen musste ich die Größe vom 1.Fenster groß wie das 2.Fenster machen. Das ist auch nicht so schön für mich, aber ich muss diese Lösung nehmen, andere Lösung habe ich nicht.
Ich finde die Lösung viel besser!!
Mich nervt bei verschiedenen Popups regelmäßig, dass man sich immer neu orientieren muss, wo irgendwelche Buttons sind, um weiter zu kommen.

Mein Paradebeispiel ist das Löschen von Objekten aus einem Transportauftrag:
* Info-Message oben links: Aktive Version stimmt nicht mit der aktuellen überein. [ OK ]
* Info-Message oben links: Objekt xyz ist gesperrt. [ OK ]
* Popup 10 cm oben darüber: Objekt ist gesperrt. Löschen? [ Ja ] [ Nein ] [ Abbrechen ]
* Popup mitte links: An folgende Einträge wurden Sperren verteilt... [ OK ].

Wenn man das Ganze für mehrere Objekte machen muss...

Alternative wäre auch, dass du mit EINEM Popup arbeitest und Subscreen x anzeigst . Nach Klick auf [ Weiter ] bleibst du im Popup, zeigst aber subscreen y an.
Hallo ewx,

du hast Recht. Gestern habe ich an Subscreen gedacht, nur ich bin nicht so fit bei diesem Thema. Ich dachte Subscreen ist nur für Tabtripcontrol geeignet, daher habe sein gelassen. Vielleicht werde ich mit Subscreen für diese Aufgabe ausprobieren.

Viele Grüße

cuncon

Re: Modales Dialogfenster schliessen

Beitrag von DeathAndPain (Top Expert / 1944 / 257 / 413 ) »
ich habe gestern mit dieser Lösung auch probiert:
LEAVE TO SCREEN 0.
CALL SCREEN '0410'
STARTING AT 4 10
ENDING AT 200 450.
Aber leider hat es nicht funktioniert, weil beide Modales Fenster danach geschlossen wurden. Oder habe ich etwas falsch gemacht?
Ja. ;-) Eigentlich hatte ich es in meinem ersten Lösungsvorschlag auch erläutert.

Hinter dem LEAVE TO SCREEN '0'. brauchst Du nichts mehr zu schreiben, denn da haben wir wieder die Situation, dass es da sowieso nicht mehr weitergeht. Mit dem LEAVE verlässt Du das Dynpro; etwaiger nachfolgender Code wird nicht mehr ausgeführt. Damit ist klar, dass Dein obenstehender Code so nicht funktionieren kann.

Aber Dein modales Fenster 310 wäre ja kein modales Fenster, wenn es nicht ein Haupfenster geben würde, von dem aus Dynpro 310 aufgerufen wird. Nachdem Du in Deinem Dynpro 310 Deinen LEAVE TO SCREEN '0' abgesetzt hast, fährt ABAP in Deinem Hauptfenster hinter der Anweisung CALL SCREEN '0310'... fort. Dort kannst Du (ggf. nach einer Abprüfung der Umstände mit einem IF) problemlos einen CALL SCREEN '0410' unterbringen, der dann auch das STARTING AT haben kann. Damit wird genau das erreicht, was Du haben willst: Dynpro 310 schließt sich, und an seiner Stelle erscheint mit von Dir wählbaren Eckdaten Dynpro 410.

Es ist ja auch von der Logik her richtig: Wenn Du willst, dass Dynpro 310 geschlossen werden soll, bevor Dynpro 410 sich auftut, dann kann 410 ja kein modales Unterdynpro von 310 sein. Folglich muss es ein modales Unterdynpro Deines Hauptdynpros sein, das zuvor auch 310 gerufen hat. Und damit ist klar, dass auch der CALL SCREEN '0410' im Code Deines Hauptdynpros stehen muss.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
4748
Views
modales dialogfenster schließen
von dawns » 19.01.2007 08:35 • Verfasst in ABAP Objects®
3
Antw.
5285
Views
Modales Dialogfenster schliessen
von Abap Noob » 30.05.2005 11:08 • Verfasst in Dialogprogrammierung
1
Antw.
1237
Views
CALL TRANSACTION: Modales Dialogfenster
von Charadin » 11.12.2006 14:28 • Verfasst in ABAP® Core
2
Antw.
1289
Views
Modales Fenster mit Drucktasten
von cuncon » 05.11.2018 23:09 • Verfasst in ABAP® für Anfänger
5
Antw.
3293
Views
Elemente im modalen Dialogfenster
von newbie007 » 16.02.2012 22:28 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

User Exit EXIT_RQCPRM10_001
vor 2 Stunden von Manfred K. 1 / 66
Trennen Strasse und Hausnummer
vor 4 Stunden von payten 13 / 10340
Dialog-Container mit Toolbar/Status
vor 18 Stunden von DeathAndPain gelöst 22 / 3305
Daten an Tabelle binden
vor 23 Stunden von Lukas Sanders 2 / 1129

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

User Exit EXIT_RQCPRM10_001
vor 2 Stunden von Manfred K. 1 / 66
Trennen Strasse und Hausnummer
vor 4 Stunden von payten 13 / 10340
Dialog-Container mit Toolbar/Status
vor 18 Stunden von DeathAndPain gelöst 22 / 3305
Daten an Tabelle binden
vor 23 Stunden von Lukas Sanders 2 / 1129

Unbeantwortete Forenbeiträge

User Exit EXIT_RQCPRM10_001
vor 2 Stunden von Manfred K. 1 / 66
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2689
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9275