Dynpro Fragen

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

Dynpro Fragen

Beitrag von stony007_de (Specialist / 108 / 6 / 0 ) »
Hi

ich habe über die SE51 einen screen erstellt.
Er beinhaltet eine Listbox welche via vrm gefüllt wird.
Weiterhin gibt es einen Checkbox welche einen Speicher Kommand rufen soll.

1. Frage: Kann ich an das Event "Wert aus der Listbox wählen" einen Command triggern?
z.B. Check ob er der gewählte wert in einer anderen Tablle exisitiert.

2. Frage: Kann ich ein Command an das "Auswählen der Checkbox" hängen? in meinem Fall, soll der User den Haken setzten um somit bestätigen, das die Aktion zu dem Wert in der Listbox abgeschlossen ist.
An dieser stelle ohne zusätzlichen Button.

3. Frage: wie kann ich in meinem Code, dann die Werte der Forms (z.B. der Checkbox) ansprechen? Nutze ich die Beziechnung aus der SE51, kennt er diese nicht. Sind in dem Eigentlichem Program unbekannt.

vielen dank im voraus

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


Re: Dynpro Fragen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
stony007_de hat geschrieben:Hi

ich habe über die SE51 einen screen erstellt.
Er beinhaltet eine Listbox welche via vrm gefüllt wird.
Weiterhin gibt es einen Checkbox welche einen Speicher Kommand rufen soll.

1. Frage: Kann ich an das Event "Wert aus der Listbox wählen" einen Command triggern?
z.B. Check ob er der gewählte wert in einer anderen Tablle exisitiert.

2. Frage: Kann ich ein Command an das "Auswählen der Checkbox" hängen? in meinem Fall, soll der User den Haken setzten um somit bestätigen, das die Aktion zu dem Wert in der Listbox abgeschlossen ist.
An dieser stelle ohne zusätzlichen Button.

3. Frage: wie kann ich in meinem Code, dann die Werte der Forms (z.B. der Checkbox) ansprechen? Nutze ich die Beziechnung aus der SE51, kennt er diese nicht. Sind in dem Eigentlichem Program unbekannt.

vielen dank im voraus
Zu 1. Du solltest die Werte checken bevorDu sie in der Listbox anbietest.

Zu 2. Empfehle die F1 Hilfe zu "PARAMETERS - {AS CHECKBOX [USER-COMMAND fcode]}

Zu 3. Verstehe die Frage nicht. Forms? Beziehungen? Wenn sie wirklich in Programm unbekannt sind, muss man sie bekannt machen.

Re: Dynpro Fragen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
ad 1 und 2) Setze bei beiden einfach einen Funktionscode und schon wird bei einer Wertänderung PAI/PBO ausgelöst
ad 3) Alle Felder am Dynpro werden bei PAI/PBO mit Feldern des selben Namens im Programm abgeglichen.
Das funktioniert sowohl mit Strukturen (STRUKTUR-FELD), Instanzattributen (OBJECT->ATTRIBUTE) und statischen Attributen (CLASS=>ATTRIBUTE)
Wichtig ist, dass die Felder vom Programm aus erreichbar sind.
Unit605 hat geschrieben:Zu 2. Empfehle die F1 Hilfe zu "PARAMETERS - {AS CHECKBOX [USER-COMMAND fcode]}
Ist SE51 nicht der Screenpainter? Da gibt es keine "PARAMETERS".

lg ADT
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: Dynpro Fragen

Beitrag von stony007_de (Specialist / 108 / 6 / 0 ) »
Vielen Dank für die Antworten.

Ich glaube ich habe es trotzdem noch nicht so ganz verstanden.
In meinen im Dynpro Habe ich eine Checkbox mit den Namen "TEST_CBX". Mein Screen trägt den Namen "ZTEST_SCREEN".
Nun möchte ich über die SE38 eine if Abfrage, ob diese Box gesetzt wurde.

IF ZSK_EXT_CODIER-TEST_CBX EQ 'X'.

Leider funktioniert das nicht. Wenn ich die Felder Über die Funktion "Parameters" erneut definiere, Erscheinen diese doppelt.


Über weitere Tipps wäre sehr dankbar

Re: Dynpro Fragen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Verwende statt PARAMETERS eine Variable (DATA).
Diese nennst du gleich wie dein Feld am Dynpro; also

Code: Alles auswählen.

DATA: TEST_CBX type C length 1.
Im PAI kannst du dann mit

Code: Alles auswählen.

IF TEST_CBX EQ 'X'.
abfragen ob die Checkbox vom Benutzer ausgewählt wurde.

Wenn du das Feld am Dynpro in einer Struktur defininiert hast (ZTEST_SCREEN-TEST_CBX) musst du dann logischerweise deine Variable im Program auch entsprechend definieren; also

Code: Alles auswählen.

DATA: ZTEST_SCREEN type ...
wobei der Datentyp den du für die Struktur verwendest ein Feld mit dem Namen TEST_CBX haben muss.
z.B.:

Code: Alles auswählen.

TYPES:
  BEGIN OF ts_TEST_SCREEN,
    TEST_CBX type C length 1,
  END OF ts_TEST_SCREEN.
DATA: ZTEST_SCREEN type ts_TEST_SCREEN.

Code: Alles auswählen.

IF ZTEST_SCREEN-TEST_CBX EQ 'X'.
lg ADT.

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

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: Dynpro Fragen

Beitrag von stony007_de (Specialist / 108 / 6 / 0 ) »
sehr gut!
jetzt hab ichs.
Die Namen der "Formen" aus dem Dynpro Screen werden beim Start mit denen im Code abgeglichen und können dann dort verwendet werden.

Das mit Zugriff auf Strukturen mit "-" ist mir klar!
Womit ich noch keine erfahrung hab sind die sachen wie "Instanzattributen (OBJECT->ATTRIBUTE) und statischen Attributen (CLASS=>ATTRIBUTE)".

Danke

Re: Dynpro Fragen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
stony007_de hat geschrieben:Womit ich noch keine erfahrung hab sind die sachen wie "Instanzattributen (OBJECT->ATTRIBUTE) und statischen Attributen (CLASS=>ATTRIBUTE)".
Die werden in der "offiziellen" Hilfe auch nicht erwähnt ;)
Da sind wir bei uns in der Firma eher durch Zufall drauf gekommen, dass man damit auch arbeiten kann. Wenn man gerne mit Klassen und Objekten anstatt mit Programmen arbeitet, kann man die oben erwähnte Syntax alternativ zu im Programm "fix" definierten Variablen verwenden. Man kann also mit OBJECT->ATTRIBUTE bzw. CLASS=>ATTRIBUTE auf die Attribute von Objekten bzw. Klassen zugreifen. Wobei die Attribute PUBLIC definiert werden müssen und im Programm bei der OBJECT-Variante trotzdem noch zumindest eine globale Variable vorhaden sein muss, die auf das eigentlich Objekt zeigt:

Code: Alles auswählen.

data: gr_screen type ref to zcl_screen.
Sofern das Objekt dann instanziert wurde und ein entsprechendes Attribut existiert kann man im Dynpro mit ZCL_SCREEN->GD_CHECKBOX darauf zugreifen.
Bei der CLASS-Variante entfällt die zusätzliche Variable im Programm, dafür kann man dann aber auch nicht mit der Objekt-Instanzierung eine Mehrfachverwendung des Dynpros erreichen.

lg ADT
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: Dynpro Fragen

Beitrag von stony007_de (Specialist / 108 / 6 / 0 ) »
Danke, werd ich bei Gelegenheit mal ausprobieren.

jetzt versuche ich gerade im Programm die in der PBO gefüllte Listbox zu leeren um diese dann durch eine andere abfrage zu füllen.
Zum befüllen der Liste nutz ich die Funktion "VRM_SET_VALUES" funktioniert auch.

Jetzt kommt im PBO "select ID from table". Also alles was in der Tabelle steht. In dem Screen gibt es 2 Radiobuttons und einen Refresh button.
Die beidem Auswahlmöglichkeiten sollen nun ermöglichen, RBTN_SEL1 = "select ID from table where tag = 1" und RBTN_SEL2 = "select ID from table where tag = 2".
Wenn also RBTN 1 gewählt ist und der Refresh button gewählt wir, soll die List gecleart werden und durch die Werte der spezifischen Abfrage gefüllt werden.

Um zu leeren will ich die Funktion "VRM_DELETE_VALUES" nutzen, leider bislang ohne Erfolg.
Idee wie man diese richtig nutzt oder ob man eine andere nutzen sollte?

"*********** edit ****************
Noch ein paare Randinfos
Gefüllt wird erfolgreich im PBO mit:

Code: Alles auswählen.

      
CALL FUNCTION 'VRM_SET_VALUES'
      EXPORTING
      id     = IL_ID
      values = IL_ID_LIST.
gelöscht werden soll im PAI

Code: Alles auswählen.

CALL FUNCTION 'VRM_DELETE_VALUES'
      EXPORTING
        id     = IL_ID.
leider läuft es nicht

Re: Dynpro Fragen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
PBO wird immer NACH PAI ausgeführt, daher vermute ich mal, dass deswegen das VRM_DELETE_VALUES nicht funktioniert weil gleich danach wieder das VRM_SET_VALUES ausgeführt wird.

Grundsatzfrage: Was möchtest du damit erreichen?
Dass die Werte die zur AUSWAHL stehen gelöscht werden oder dass der vom Benutzer AUSGEWÄHLTE Wert gelöscht wird?
Ersteres ereichst du eben durch VRM_DELETE_VALUES, zweiteres ereichst du durch Löschen der Variable (mit demselben Namen wie die Listbox) in deinem Programm.

lg ADT

EDIT:
Wenn du die Werte sowieso ersetzt, kannst du dir das VRM_DELETE_VALUES überhaupt sparen und nur mit VRM_SET_VALUES arbeiten. Evetl. musst du dann trotzdem noch die Variable in deinem Programm löschen, sonst wird der alte und durch die Aktualisierung ungültige Wert auch angezeigt.
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: Dynpro Fragen

Beitrag von RainerW (ForumUser / 16 / 4 / 0 ) »
Hallo,
ich hole diesen Thread noch einmal nach oben und ergänze hier den Code, wie man die Listbox füllt:

PARAMETERS:
listbox(1) AS LISTBOX VISIBLE LENGTH 10 DEFAULT 'N'.
AT SELECTION-SCREEN OUTPUT.
DATA:
name TYPE vrm_id,
list TYPE vrm_values,
value TYPE vrm_value.
name = 'LISTBOX'. " Name should be in UPPER CASE

value-key = '1'.
value-text = 'Text 1'.
APPEND value TO list.
value-key = '2'.
value-text = 'Text 2'.
APPEND value TO list.

CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = name
values = list
EXCEPTIONS
id_illegal_name = 0
OTHERS = 0.


Quelle: https://scn.sap.com/thread/982310

Was mich ein wenig ärgert ist der Umstand, dass auch immer ein Eintrag initial ist, was bei einem Mussfeld nicht wirklich benötigt wird. Aber ansonsten funktioniert es prima.
Z'erschd wird g'veschbert. G'schafft isch glei!

Schöne Grüße aus Marbach,
Rainer

Re: Dynpro Fragen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
RainerW hat geschrieben:Was mich ein wenig ärgert ist der Umstand, dass auch immer ein Eintrag initial ist, was bei einem Mussfeld nicht wirklich benötigt wird.
Ich kenn das auch. Ist ziemlich ärgerlich. Hab mir (vorallem bei Mussfeldern) dadurch beholfen, indem ich einen zusätzlichen Leerwert in die VRM-Tabelle reinschreib mit dem Text "Bitte auswählen!". Damit gibt es dann keine "leere Zeile" mehr in der Listbox und der Benutzer sieht zumindest einen kleinen Hinweis darauf, dass hier noch etwas auszuwählen ist.

lg ADT
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

Seite 1 von 1

Vergleichbare Themen

11
Antw.
4653
Views
Einfache Fragen zu Dynpro
von Trulchen » 10.09.2012 09:12 • Verfasst in ABAP® für Anfänger
2
Antw.
419
Views
GUI Fragen
von il.ost » 09.07.2019 13:23 • Verfasst in ABAP® für Anfänger
2
Antw.
2908
Views
Fragen zum ALV
von ABAP_User » 10.04.2012 19:41 • Verfasst in ABAP® für Anfänger
1
Antw.
7870
Views
Fragen zum Entwicklerschlüssel
von Karlito » 28.03.2008 15:04 • Verfasst in SAP - Allgemeines
0
Antw.
745
Views
SIMPLE_LIST_TREE -> Fragen...
von Mavrix » 17.07.2007 07:24 • Verfasst in ABAP® Core

Ü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

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