Mussfeld gefüllt oder nicht???

Benutzeroberflächen in SAP®-Systemen.
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Mussfeld gefüllt oder nicht???

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Hallo,

ich habe hier ein interessantes Problem. Ich habe ein Dynpro mit folgendem Coding:

Code: Alles auswählen.

PROCESS AFTER INPUT.
  LOOP WITH CONTROL tc_demo.
    CHAIN.
      FIELD: dynpstruc-feld1, dynpstruc-feld2, dynpstruc-feld3,
             dynpstruc-feld4, dynpstruc-feld5, dynpstruc-feld6
    MODULE pai_loop ON CHAIN-REQUEST.
    ENDCHAIN.
  ENDLOOP.
  MODULE exit AT EXIT-COMMAND.
  MODULE user_command.
PBO ist hier nicht relevant, ich habe mir erlaubt, das Coding zu anonymisieren.

Auf dem Dynpro findet sich ein Table Control, in dem eine Tabelle gepflegt wird, die sich 1:1 im DDIC wiederfindet. Wenn ich jetzt in die Tabelle einen Eintrag schreibe, dessen Key es schon gibt, kommt korrekt die Meldung "Eintrag schon vorhanden" als Fehlermeldung ? eben wie ich es programmiert
habe. Der fragliche Satz ist eingabebereit, der Rest ist gesperrt, ganz wie man es erwarten würde.

Solange die Fehlermeldung aktiv ist, kann der Anwender den Satz nicht markieren, um ihn zu löschen, das scheint grundsätzlich nicht zu gehen. Also geht der Anwender hin, entfernt alle Inhalte aus den Tabellenzellen mit der
Entf-Taste (die e-Message ist immer noch aktiv, also die eine Zeile ist bearbeitbar, die anderen sind nach wie vor gesperrt), bis alle leer sind und drückt Enter, in der Hoffnung, dass jetzt, wo die Zeile wieder leer ist,
wird das Table Control wieder frei.

Denkste! Es kommt die Meldung "Bitte alle Mussfelder ausfüllen!" und im Debugger sehe ich auch, warum. Obwohl alle Feldinhalte mit "Entf"-Taste weggelöscht wurden, haben die Felder "dynpstruc-?" nach wie vor die alten Inhalte!!!

Das System scheint sich (mal platt ausgedrückt) nicht entscheiden zu können, ob die Werte nun da sind oder nicht.

Ich komme da nirgends ran, weil der erste Einzelschritt die Mussfeldprüfung (SAP-Standard) ist, ich bin also nichtmal in der Lage, ein Modul dazwischenzusetzen, dass die in Wahrheit ja leeren Feldinhalte auf dem Dynpro ausliest, um dann entsprechend zu reagieren. Wenn die Felder alle
leer sind und ich Enter drücke, lande ich bei der FIELD-Anweisung und bekomme sofort die Fehlermeldung angezeigt, ein davorgesetztes Modul wird gar nicht angesprungen.

Wie zum Geier löse ich dieses Problem??? Beholfen habe ich mir einstweilen damit, die Felder als SOLLfelder zu deklarieren, dann findet aber keine Mussfeldprüfung statt, die müsste ich von Hand programmieren -- ist das der einzige Weg?


Vielen Dank für jeden Tip


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Beitrag von ewx (Top Expert / 4871 / 314 / 644 ) »
Hi Ralf,

wenn der Anwender eh nach der Meldung die Zeile löschen muss, denn mach das doch im Programm.
Meldung: "Eintrag existiert bereits und wird gelöscht".

Die Fehlerbehandlung für die einzelne Zeile solltest du im LOOP machen.
Ich nehme an, da du das nicht machst, kann auch wegen der E-Meldung der Datentransport aus der Dynpro-Struktur in die DDIC-Struktur erfolgen.

Falls es gar nicht funktioniert, kannst du immer noch eine Warn- oder Info-Meldung ausgeben und den Satz in einem extra-Feld markieren um ihn dann später aussortieren zu können.

Übrigens muss "MODULE AT EXIT-COMMAND" als erste Anweisung im PAI stehen!

Gruß,
Enno

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
ewx hat geschrieben:wenn der Anwender eh nach der Meldung die Zeile löschen muss, denn mach das doch im Programm.
Meldung: "Eintrag existiert bereits und wird gelöscht".
hmhmhm - das haut mir der Anwender um die Ohren, da bin ich mir sicher. Da find ich die Sollfeldlösung eigentlich besser.
ewx hat geschrieben:Die Fehlerbehandlung für die einzelne Zeile solltest du im LOOP machen.
Ich nehme an, da du das nicht machst, kann auch wegen der E-Meldung der Datentransport aus der Dynpro-Struktur in die DDIC-Struktur erfolgen.
Ich mache die Fehlerbehandlung im Loop, da stelle ich ja z.B. fest dass ein Eintrag schon vorhanden ist. Wie kommst du darauf, dass ich das nicht tue?

Das Problem ist, dass die Mussfeldmeldung dafür sorgt, dass es nach der FIELD-Anweisung gar nicht mehr weitergeht und mein Modul gar nicht angesprungen wird.
ewx hat geschrieben:Falls es gar nicht funktioniert, kannst du immer noch eine Warn- oder Info-Meldung ausgeben und den Satz in einem extra-Feld markieren um ihn dann später aussortieren zu können.
Jo, dazu hat mir ein Kollege auch geraten, find ich aber unschön.
ewx hat geschrieben:Übrigens muss "MODULE AT EXIT-COMMAND" als erste Anweisung im PAI stehen!
Hab ich auch gedacht - funktioniert aber auch so. Finde ich selbst erstaunlich ;)


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von ewx (Top Expert / 4871 / 314 / 644 ) »
tja, denn war ich ja keine große Hilfe... :(
Poste doch noch mal das Coding von PAI_LOOP.

Warum sollte der Anwender dir dein Proggi um die Ohren hauen, wenn du eine ungültige Eingabe löschst, wo er das doch anscheinend selbst machen muss, um weiter zu machen... :?:

Gruß,
Enno

Beitrag von olli-x (Specialist / 166 / 0 / 1 ) »
Hi,
Sorry, ich möchte wirklich nicht abschweifen, aber:
Übrigens muss "MODULE AT EXIT-COMMAND" als erste Anweisung im PAI stehen!
Wo steht das? Ich mache das immer so, weil ich es für sauber halte, aber gelesen habe ich das noch nicht :?: Für mich war bisher klar, das das irgendwo! im PAI stehen muß, falls ich Exit-Commands habe... Die Frage ist mein Ernst.

Viele Grüße,
Olli

Beitrag von ewx (Top Expert / 4871 / 314 / 644 ) »
Übrigens muss "MODULE AT EXIT-COMMAND" als erste Anweisung im PAI stehen!
Bei so viel Protest, entschuldige ich mich für die unqualifizierte Äusserung...!
Ihr habt recht! :? AT EXIT-COMMAND kann irgendwo im PAI stehen. :oops:

Gruß,
Enno.

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
ewx hat geschrieben:Warum sollte der Anwender dir dein Proggi um die Ohren hauen, wenn du eine ungültige Eingabe löschst, wo er das doch anscheinend selbst machen muss, um weiter zu machen... :?:
Weil es sein kann, dass er sich nur verschrieben hat und die Eingabe ÄNDERN will, statt sie zu löschen und neu einzugeben.

Ich habe das Problem so gelöst:

* Sollfeld statt Mussfeld
* Eigene Mussfeldprüfung


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

8
Antw.
4315
Views
Feld wird nicht gefüllt
von KleinerEisbaer » 17.07.2008 11:29 • Verfasst in ABAP® für Anfänger
3
Antw.
2434
Views
Feld wird im Join nicht gefüllt
von Barney » 14.12.2016 10:10 • Verfasst in ABAP® für Anfänger
3
Antw.
2020
Views
IDoc-Feld wird nicht gefüllt
von Margolwes » 09.08.2019 16:04 • Verfasst in ABAP® Core
2
Antw.
2078
Views
Wann wird VBFA-MATNR gefüllt?
von deejey » 19.08.2019 21:14 • Verfasst in Sales and Distribution
5
Antw.
804
Views
Feld wird mir nicht richtig gefüllt
von Bernd_AD » 25.06.2020 15:02 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1738
HR-Entgeltnachweis
Gestern von ChrisB 4 / 2291

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

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1738
HR-Entgeltnachweis
Gestern von ChrisB 4 / 2291

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 279
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 866
MS-Word als Editor
letzen Monat von tekko 1 / 4375