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 / 137 / 98 / 0 ) » 11. Apr 2019 14:47

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


Re: Modales Dialogfenster schliessen

Beitrag von DeathAndPain (Top Expert / 1064 / 123 / 232 ) » 11. Apr 2019 14:59

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 / 137 / 98 / 0 ) » 11. Apr 2019 19:48

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 / 1064 / 123 / 232 ) » 12. Apr 2019 07:56

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 / 137 / 98 / 0 ) » 12. Apr 2019 10:09

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 / 3233 / 81 / 813 ) » 12. Apr 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.
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.07
Basis: 7.40

Re: Modales Dialogfenster schliessen

Beitrag von ewx (Top Expert / 3982 / 164 / 373 ) » 12. Apr 2019 10:33

cuncon hat geschrieben:
12. Apr 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 / 137 / 98 / 0 ) » 12. Apr 2019 11:29

a-dead-trousers hat geschrieben:
12. Apr 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 / 137 / 98 / 0 ) » 12. Apr 2019 11:33

ewx hat geschrieben:
12. Apr 2019 10:33
cuncon hat geschrieben:
12. Apr 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 / 1064 / 123 / 232 ) » 12. Apr 2019 12:05

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

Aktuelle Forenbeiträge

Datenquelle einer Query ändern
vor 20 Stunden von Level83 3 / 65
Spaltennummer-Umwandlung Excel.
Gestern von il.ost 7 / 168
Black out im Bereich Objekterzeugung bei Vererbung gelöst
Gestern von Thomas R. 4 / 101

Unbeantwortete Forenbeiträge

Transaktion VL06 Verteilung ausgehender Lieferungen
vor 2 Tagen von SAP_ENTWICKLER 1 / 53
FuBa EXIT_SAPLVEDC_003 S/4 1809
vor 4 Tagen von SAP_ENTWICKLER 1 / 87
CDS VIEW mit BOPF Framework update
vor einer Woche von Abapanfänger 1 / 85
SAP Document Builder: Dokumenterzeugung
vor einer Woche von robin.heidrich 1 / 202
Lohnsteuerbescheinigung
vor einer Woche von kaim77 1 / 121