SM30 Felder Validieren Programieren von Zeitpunkten

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

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

SM30 Felder Validieren Programieren von Zeitpunkten

Beitrag von Anfänger (Specialist / 117 / 0 / 2 ) »
Hallo,
ich habe wieder einmal ein Problem, bei dem ich nicht weiter komme. Ich habe schon viel gegoogelt aber leider habe ich nicht gefunden was mir weiterhilft. Ich habe nochfolgend einmal beschrieben was ich schon rausgefunden habe und was ich machen möchte.
Ich soll eine SM30-Transaktion machen, bei der nur drei Felder editierbar sein sollen.
Das habe ich auch schon soweit umgesetzt. Ich habe einen View angelegt und alle bis auf die drei Felder auf „R“ gesetzt.
Jetzt kommt aber mein Problem bei dem ich nicht weiterkomme. Bei einem Feld soll eine Validierung gemacht werden. Das eingegebene Leistungsdatum muss kleiner oder gleich dem Buchungsdatum sein.
Was ich schon rausgefunden habe:
Es gibt die Zeitpunkt in für die SM30. Es kommt nach meiner Meinung entweder der Zeitpunkt 01 oder Zeitpunkt 05 in Frage.
Ich würde gerne den Zeitpunkt 05(oder wenn es geht beide) verwenden. Habe ich es richtig verstanden, dass dieser Zeitpunkt direkt bei der Eingabe ( nach der Eingabe) angesprochen wird?
Wo oder in welcher Transaktion kann ich diese Zeitpunkte programmieren.
Mein View heißt ZVZZFDJVKW die Tabelle ZZFDJVKW. Die entscheidenden Felder heißen BUDAT und FBUDA.

Als Quelltext habe ich mir gedacht:

*Zeitpunkt 01
FORM Validierung_01.
DATA: LS_ ZZFDJVKW type ZZFDJVKW.
DATA:
LOOP AT extract.
MOVE extract to LS_ ZZFDJVKW.
IF LS_ ZZFDJVKW-FBUDA > LS_ ZZFDJVKW -BUDAT.
vim_abort_saving = ‘X’.
CLEAR sy-subrc.
call function 'POPUP_TO_INFORM'
exporting
titel = 'Validierungsfehler Speichern abgebrochen'
txt1 = 'Änderung wurde nicht gespeichert'
txt2 = 'Fehler: Leistungsdatum > Buchungsdatum'.
ENDIF.
ENDLOOP.
ENDFORM.


*Zeitpunkt 05
FORM Validierung_05.
DATA: LS_ ZZFDJVKW type ZZFDJVKW.
DATA:
LOOP AT extract.
MOVE extract to LS_ ZZFDJVKW.
IF LS_ ZZFDJVKW-FBUDA > LS_ ZZFDJVKW -BUDAT.
CLEAR LS_ ZZFDJVKW-FBUDA
call function 'POPUP_TO_INFORM'
exporting
titel = 'Validierungsfehler Änderung verworfen'
txt1 = 'Änderung nicht möglich.
txt2 = 'Fehler: Leistungsdatum > Buchungsdatum'.
ENDIF.
ENDLOOP.
ENDFORM.

Hier noch einmal meine Fragen:
Wo oder in welcher Transaktion kann ich diese Zeitpunkte für die SM30 programmieren.
Was sagt Ihr zu meinem Quelltext?
Sind die Zeitpunkte richtig bestimmt?
Reicht EXTRACT oder muss ich TOTAL nehmen?
Kann man POP-UPs aus Zeitpunkten aufrufen?
Über eine Vielzahl von Antworten würde ich mich freuen.

Viele Grüße

Thomas

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


Re: SM30 Felder Validieren Programieren von Zeitpunkten

Beitrag von ewx (Top Expert / 4846 / 311 / 641 ) »
Solche Prüfungen sind in der Tat nicht einfach!
Am sichersten ist es, wenn du Zeitpunkt 01 "Vor dem Sichern der Daten" verwendest.
Allerdings ist das auch der anwenderunfreundlichste... Wenn ich Daten eingebe, möchte ich bei so einer Prüfung gerne eine direkte Rückmeldung haben.

Zeitpunkt 05 "Beim Hinzufügen eines neuen Eintrags" wird auch nur genau da angesprungen. Bei einer Änderung greift die Prüfung nicht.
Auch nicht bei "Feldinhalten ändern". Und bei "Eintrag kopieren"? Keine Ahnung.
du musst in jedem Fall sehr gut testen...

Ansonsten spricht auch wenig dagegen, ein eigenes PAI-Modul mit einer entsprechenden Prüfung einzubauen.
Das wäre meiner Meinung nach die einfachste und sicherste Methode (was die Eingabeprüfung angeht).
Du musst das natürlich entsprechend dokumentieren. In SAP selber lässt sich aber keine Dokumentation erfassen. Sehr ärgerlich...
Wenn jemand den Pflegedialog neu generiert, sind deine Änderungen natürlich weg.

Ob du TOTAL oder EXTRACT nehmen musst, hängt davon ab...
100%ig sicher bin ich mir nicht. Aber EXTRACT ist IMHO der reduzierte Datenbestand, wenn du Einträge einschränkst. TOTAL enthält immer alle Tabellen.

du musst immer auch die Update-Flags berücksichtigen und die Zielstruktur entsprechend definieren!!
DATA: LS_ ZZFDJVKW type ZZFDJVKW.
reicht also nicht!

Re: SM30 Felder Validieren Programieren von Zeitpunkten

Beitrag von Anfänger (Specialist / 117 / 0 / 2 ) »
Hallo,

vielen Dank für die Antwort.
Ich weiß aber immer noch nicht, wo oder in welcher Transaktion kann ich diese Zeitpunkte für die SM30 programmieren kann.
Könntest du mir da helfen?

Was meinst du mit:
du musst immer auch die Update-Flags berücksichtigen und die Zielstruktur entsprechend definieren!!
DATA: LS_ ZZFDJVKW type ZZFDJVKW

Wenn ich am Zeitpunkt 05 nur informiere, dann dürfte ich aber doch kein Problem haben.

*Zeitpunkt 05
FORM Validierung_05.
DATA: LS_ ZZFDJVKW type ZZFDJVKW.
DATA:
LOOP AT extract.
MOVE extract to LS_ ZZFDJVKW.
IF LS_ ZZFDJVKW-FBUDA > LS_ ZZFDJVKW -BUDAT.
call function 'POPUP_TO_INFORM'
exporting
titel = 'Validierungsfehler Änderung verworfen'
txt1 = 'Eine spätere Speicherung der Tabelle wird nicht möglich sein.'
txt2 = 'Fehler: Leistungsdatum > Buchungsdatum'.
ENDIF.
ENDLOOP.
ENDFORM.

Viele Grüße

Thomas

Re: SM30 Felder Validieren Programieren von Zeitpunkten

Beitrag von ST22 (Specialist / 279 / 43 / 41 ) »
Hallo,

du kommst aus der Generierungsumgebung über Umfeld->Modifikation->Zeitpunkte
in die Liste der Zeitpunkte / Formroutinen.
Von da aus kannst du auch in den Editor abspringen und die Formroutinen anlegen.
Diese werden in einem eigenen Include innerhalb der Pflegefunktionsgruppe angelegt.

Ich habe das innerhalb einer Anwendung mit reichlich Z-Views auch so realisiert, im Nachhinein sollte man sich vielleicht wirklich was eigenes programmieren oder einen editierbaren ALV benutzen und da entsprechend die Verprobungen ausprogrammieren.

Die SM30 ist zwar mächtig aber auch etwas altbacken. Schon das normale Pflegebild wird so klein definiert, dass man kaum was sieht.
Und die Gefahr, dass jemand anderes mal eben alles wegschmeißt und die Funktionsgruppe neu generiert ist auch nicht von der Hand zu weisen.
Deine Includes dümpeln dann zwar noch im System rum, aber man muss sie halt auch wieder entsprechend einhängen.

Schöne Grüße
Frank

Re: SM30 Felder Validieren Programieren von Zeitpunkten

Beitrag von ewx (Top Expert / 4846 / 311 / 641 ) »
ST22 hat geschrieben:Ich habe das innerhalb einer Anwendung mit reichlich Z-Views auch so realisiert, im Nachhinein sollte man sich vielleicht wirklich was eigenes programmieren oder einen editierbaren ALV benutzen und da entsprechend die Verprobungen ausprogrammieren.
Das finde ich auch sehr arm von SAP, dass es hier keine bessere Alternative gibt.
Und auch keine Verbesserungen.
Gerade das mit dem kleinen TableControl zu ändern, wäre ein Klacks.
Auch dass automatisch immer Listboxen verwendet werden, sobald es für die Felder Domänenfestwerte gibt, finde ich sehr nervig.

Gerade da hat der Eingabe bereite ALV-Grid aber auch das größte Problem: Sobald für ein Feld ein Domänenfestwert vorhanden ist, MUSS man einen Wert eintragen. Man kann das Feld nicht mehr leer lassen. Nur, wenn "Leer" als Domänenfestwert definiert ist, geht es. Aber das ist es fast nie.

Re: SM30 Felder Validieren Programieren von Zeitpunkten

Beitrag von Anfänger (Specialist / 117 / 0 / 2 ) »
Hallo,

Vielen Dank an euch, aber irgendwie stehe ich immer noch auf dem Schlauch.
Ich bin jetzt hier. Welche der drei möglich muss ich wählen.
Wie geht es weiter.JPG
Das mit der ALV hatte ich meinem auch Vorgesetzten auch vorgeschlagen, er wollet es aber mit einer SM30-Transaktion.

Wir sind noch recht hirachisch aufgebaut.

Viele Grüße

Thomas

Re: SM30 Felder Validieren Programieren von Zeitpunkten

Beitrag von ST22 (Specialist / 279 / 43 / 41 ) »
Du solltest neues Include wählen, dann wird in der Pflegefunktionsgruppe ein neues Include angelegt.
Wenn du konsequent dich dadurch klickst, landest du im Editor.
Dort musst du dann deine Form ZZ_FORM_01 oder wie du sie auch immer nennst, ausprogrammieren (FORM ... ENDFORM nicht vergessen!).

Ich weiß nicht, ob es an deiner Hardcopy liegt, deine Form nennt sich dann z.B. Z_VALIDIERUNG_VOR_SPEICHERN, hast du da an Untersriche gedacht? Sieht so aus, als wären da keine.
Das ist im Grunde der Name der Formroutine, die du im neuen Include ausprogrammieren musst:

FORM Z_VALIDIERUNG_VOR_SPEICHERN.
.
.
.
ENDFORM.
...und aktivieren nicht vergessen.
Grüße

Re: SM30 Felder Validieren Programieren von Zeitpunkten

Beitrag von Anfänger (Specialist / 117 / 0 / 2 ) »
Hallo,

vielen Dank für die Schulung. :D
Dank eurer Hilfe konnte ich das Problem lösen. :up:

Viele Grüße

Thomas

Seite 1 von 1

Vergleichbare Themen

1
Antw.
8913
Views
Code-Schnippsel: Richtiger Umgang mit SM30/SM34 Zeitpunkten
von a-dead-trousers » 06.03.2012 13:50 • Verfasst in Tips + Tricks & FAQs
0
Antw.
2272
Views
2
Antw.
361
Views
XML gegen XSD validieren
von ralf.wenzel » 30.05.2022 10:27 • Verfasst in ABAP® Core
5
Antw.
3498
Views
RFC Verbindung validieren
von JohnLocklay » 24.10.2017 16:49 • Verfasst in ABAP® Core
0
Antw.
1576
Views
XML gegen externe DTD validieren
von Bernd Schneider » 06.06.2007 12:48 • 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

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 767
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2389
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8974