Ausgabefeld auf Dynpro ohne PBO aktualisieren

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Ausgabefeld auf Dynpro ohne PBO aktualisieren

Beitrag von kkauerau (ForumUser / 50 / 2 / 0 ) »
Hallo.

Ich habe ein verzwicktes - oder einfaches ? - Problem:
Ich baue in einem Report ein einfaches Dynpro mit ein paar Buttons zusammen. Diese starten dann im Nachgang entweder eine SAP-Transaktion oder ein nachgelagertes Dynpro (mit ScreenPainter erstellt)

Nun muß ich auf einem der nachgelagerten Dynpros ein Feld mit dem aufgelösten Namen des Lieferanten füllen, sobald der User in einem Eingabefeld eine Lieferanten-Nr eingetragen hat (die er entweder auswendig weiß oder per F4-Hilfe einträgt). Das wollte ich per CALL FUNCTION 'DYNP_VALUES_UPDATE' lösen.
Ich habe im Web gefunden, daß man das mit folgendem Code aufrufen kann:

Code: Alles auswählen.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR lv_anzg_lief.
PERFORM fill_lief_name USING 'ZLRP_EMC_ANZ_LIEF'.
Nun zu meiner Frage: Wo muß ich diesen Code eintragen, daß das funktioniert? - Im Report mit den Buttons macht das keinen Sinn, da dort das Feld "lv_anzg_lief" nicht bekannt ist. Aber wo muß das hin, damit das auf dem Dynpro funzt?

Danke euch!

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


Re: Ausgabefeld auf Dynpro ohne PBO aktualisieren

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Das AT SELECTION-SCREEN funktioniert, wie der Name schon vermuten lässt, nur auf Selektionsbildern und nicht auf normalen Dynpros.
In Dynpros musst du den Aufruf der F4 Hilfe selbst ausprogrammieren.
https://wiki.scn.sap.com/wiki/display/S ... +statement
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: Ausgabefeld auf Dynpro ohne PBO aktualisieren

Beitrag von kkauerau (ForumUser / 50 / 2 / 0 ) »
.. aber dann wird das Feld doch nicht gesetzt, wenn der User die Nummer ohne F4 einträgt .. oder?

Re: Ausgabefeld auf Dynpro ohne PBO aktualisieren

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Dafür muss ein "normaler" PAI/PBO Lauf her. Zum Beispiel indem der Benutzer die ENTER-Taste drückt und dafür im GUI-Status ein Funktionscode hinterlegt ist. Anders geht das nicht. Der SAPgui kann nicht "sofort" auf Eingabe reagieren. Das würde nur in HTML und JavaScript mit AJAX funktionieren. Ob das z.B. in Webdynpros möglich wäre, müssten dir andere Experten beantworten, aber von der zugrundeliegenden Technologie (HTML) her müsste es gehen.
Meine Antwort bezog sich auf das Problem mit der F4-Taste im SAPgui, die ja nur das aktuelle Feld verarbeitet. Alle weiteren Felder müssen mit DYNP_VALUES_UPDATE versorgt werden.

EDIT:
Über Suchhilfen lassen sich seit einiger Zeit sogenannte Type-Ahead-Eingaben versorgen. Dabei wird schon während der Eingabe überprüft ob Werte existieren und damit Ergänzungsvorschläge angeboten. Das gilt aber nur für das aktuelle Feld und nicht für ein anderes Feld auf dem Dynpro.
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: Ausgabefeld auf Dynpro ohne PBO aktualisieren

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Ich wär ja schon froh, wenn ich das Problem vollständig verstanden hätte. Das ist aber nicht der Fall.
Nun muß ich auf einem der nachgelagerten Dynpros ein Feld mit dem aufgelösten Namen des Lieferanten füllen, sobald der User in einem Eingabefeld eine Lieferanten-Nr eingetragen hat
Wie soll das aussehen? Auf dem linken Monitor das Selektionsbild des Reports, und auf dem rechten Monitor das nachgelagerte Dynpro, und wenn der User links in einem Feld einen Wert einträgt, dann soll rechts ein Name angezeigt werden, oder wie? Auf welche Weise wird jenes "nachgelagerte Dynpro" denn gestartet? Über einen CALL SCREEN im START-OF-SELECTION?

Generell ist in ABAP immer nur ein Dynpro aktiv. Klar können Dynpros sich überlagern (etwa in Form modaler Subfenster), aber dennoch ist dann immer nur das zuletzt geöffnete Fenster aktiv. Dass man in einem aktiven Dynpro etwas einträgt und sich dadurch in irgendeinem anderen Dynpro etwas verändert, ist meines Wissens zumindest mit herkömmlicher Report-Technik nicht zu machen. Sowas wäre allenfalls irgendwie mit Event-Technik denkbar (wenn es überhaupt geht).

Von daher wäre ich dankbar, wenn Du das Problem nochmal ganz präzise beschreiben könntest, damit klar ist, was da unter welchen Umständen in welchem Dynpro abgehen soll. adt hat Dir nach bestem Verständnis geantwortet, aber ich bin noch nicht restlos überzeugt, dass er verstanden hat, was Du gemeint hast - dazu war Dein initialer Fragetext nicht klar genug.

Re: Ausgabefeld auf Dynpro ohne PBO aktualisieren

Beitrag von kkauerau (ForumUser / 50 / 2 / 0 ) »
also ... im Report habe ich einen Screen mit einigen Buttons drauf a la "SELECTION-SCREEN PUSHBUTTON"
Wenn da ein bestimmter gedrück wird, wird der Befehl CALL SCREEN 200 ausgeführt. -> dieses meine ich mit nachgelagertem Dynpro.

Auf dem Dynpro 200 wiederum habe ich eine eigene Variablenstruktur, in der die lifnr vorkommt. Zu der soll das System den Namen raussuchen und daneben in einem zusätzlichen Feld anzeigen. Soweit der Wunsch vom Kunden.

Dazu stellt sich mir jetzt noc hdie Frage, wenn ich F4 komplett nachbauen muß - wie stelle ich das an, daß das Auswahlmenü herzukommt und ich den ausgewähten Eintrag zurück erhalte?
(ist das nicht etwas viel Arbeit für die informative Anzeige des Lieferanten-Namens ???)

Re: Ausgabefeld auf Dynpro ohne PBO aktualisieren

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
also ... im Report habe ich einen Screen mit einigen Buttons drauf a la "SELECTION-SCREEN PUSHBUTTON"
Wenn da ein bestimmter gedrück wird, wird der Befehl CALL SCREEN 200 ausgeführt. -> dieses meine ich mit nachgelagertem Dynpro.
Ok, dann reden wir in der Tat von einem eigenständigen Dynpro mit PBO und PAI, als ob es sich bei Deinem Programm um einen transaktionsgestarteten Modulpool handeln würde. Dass ein Report dahintersteht, ist dann ohne Bedeutung.
Auf dem Dynpro 200 wiederum habe ich eine eigene Variablenstruktur, in der die lifnr vorkommt. Zu der soll das System den Namen raussuchen und daneben in einem zusätzlichen Feld anzeigen. Soweit der Wunsch vom Kunden.
Das ist doch eigentlich kein Problem. Nehmen wir mal an, das Dynprofeld, in das der Kunde die Lieferantennummer eintippt, heißt XLIFNR, und dazu willst Du den Namen im Dynprofeld XNAME darstellen. Da machste in den PBO-Block des Dynpros ein MODULE rein, das einfach nur den Befehl

Code: Alles auswählen.

SELECT SINGLE NAME1 INTO XNAME FROM LFA1
 WHERE LIFNR = XLIFNR.
enthält. In dem Fall brauchste keine Funktionsbausteine für Feldtransport oder ähnliches. Sobald der Benutzer eine Lieferantennummer eintippt und Enter drückt, wird erst PAI durchlaufen und dann das "Folgedynpro" gestartet. Dort solltest Du (wie üblich) das Dynpro selbst als Folgedynpro eingetragen haben, so dass es sich sofort wieder selber startet und sein PBO-Block ausgeführt wird. Fertig.
Dazu stellt sich mir jetzt noc hdie Frage, wenn ich F4 komplett nachbauen muß
Warum solltest Du das wollen? Trag doch einfach beim Feld XLIFNR die Suchhilfe KRED ein, und dann ist das gut!

Re: Ausgabefeld auf Dynpro ohne PBO aktualisieren

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
DeathAndPain hat geschrieben:
kkauerau hat geschrieben:Dazu stellt sich mir jetzt noc hdie Frage, wenn ich F4 komplett nachbauen muß
Warum solltest Du das wollen? Trag doch einfach beim Feld XLIFNR die Suchhilfe KRED ein, und dann ist das gut!
Damit direkt nach der Auswahl über die F4 Hilfe der "beschreibenden" Text gleich übernommen wird und der Benutzer nicht erst ENTER drücken muss.

@kkauerau
Dafür gibt es die Funktionsbausteine F4IF_GET_SHLP_DESCR und F4IF_START_VALUE_REQUEST.
Mit dem ersten kannst du eine Suchhilfe auslesen. Dann befüllst du die Schnittstelle (SHLP-INTERFACE) mit den notwendigen Parametern und verwendest dann den zweiten um die Werte zu bekommen.
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: Ausgabefeld auf Dynpro ohne PBO aktualisieren

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Man kann das wie von Dir beschrieben machen. Aber dann muss man sich fragen, weshalb man sich für SAP entschieden hat, denn dass man nach der Auswahl eines Wertes erts mal Enter drücken muss, bevor etwas passiert, ist elementarer Bestandteil der SAP-Mechanik. Er kann es jetzt mit nicht unerheblichem Aufwand für dieses eine Feld ändern, aber dann bleibt es für den Rest des SAP-Systems immer noch so. Wer sich für SAP entscheidet, sollte auch das Prinzip akzeptieren, nach dem ein SAP-System arbeitet.

Ich würde versuchen, den Nutzer auf diesen Umstand hinzuweisen, möglicherweise sogar wider besseres Wissen behaupten, dass es nicht gehe, um den Kunden von solch unsinnigen Entscheidungen abzuhalten. Ich bin sehr für Usability, aber dieser eine Druck auf Enter hat noch keinen Anwender umgebracht.
Zuletzt geändert von DeathAndPain am 31.01.2018 12:50, insgesamt 1-mal geändert.

Re: Ausgabefeld auf Dynpro ohne PBO aktualisieren

Beitrag von kkauerau (ForumUser / 50 / 2 / 0 ) »
Vielen Dank für eure Hinweise. Dann muß der User halt Enter drücken.

Eine Frage noch zu PBO:
Auf dem Dynpro sind einige Felder, die zu Beginn noch nicht sichtbar sein sollen. Daher schalte ich die in einem PBO-Modul unsichtbar. Nach Drücken von Enter werden sie aber wieder sichtbar. - Wie kann ich das abstellen, damit die Felder weiter unsichtbar bleiben?

Danke!

Re: Ausgabefeld auf Dynpro ohne PBO aktualisieren

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Wen das passiert, dann ist das ein Zeichen dafür, dass Dein PBO-Modul nur einmal durchlaufen wird. Da wirst Du wahrscheinlich irgendeinen IF oder CHECK drin haben, der prüft, ob das Dynpro frisch aufgerufen wurde und dann die Felder initialisiert. Der LOOP AT SCREEN muss aber jedesmal durchlaufen werden, wenn die PBO-Module angesprungen werden, nicht nur beim ersten Mal. Prüfe Deinen Code in dieser Hinsicht.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
3335
Views
Ausgabefeld auf Dynpro per Event ohne PBO aktualisieren?
von RIG » 16.04.2014 13:33 • Verfasst in ABAP® für Anfänger
3
Antw.
3222
Views
Einfaches Ausgabefeld auf Dynpro
von hausi » 20.11.2015 11:42 • Verfasst in ABAP® für Anfänger
1
Antw.
1679
Views
Web Dynpro Tabelle aktualisieren
von Dyrdek » 18.08.2014 10:36 • Verfasst in Web-Dynpro, BSP + BHTML
9
Antw.
2319
Views
Durch Zeilenmarkierung Dynpro TC zweites TC aktualisieren
von Michi83 » 04.03.2013 10:13 • Verfasst in ABAP® für Anfänger
1
Antw.
1608
Views
Dynpro Table Control aktualisieren nach Eingabe
von Michi83 » 25.02.2013 10:21 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

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.