Workaround: numerische IF-Abfragen in SAPscript
Oftmals wird ein einzelnes SAPscript Formular genutzt, um mehrere Anwendungsszenarien abzubilden (bspw. MEDRUCK für Bestellungen, Anfragen, Mengenkontrakte, …).Der Aufbau dieser Formulare wird dabei nicht nur über das entsprechende Druckprogramm, sondern teilweise auch das Formular selber gesteuert.
Zu diesem Zweck ist es möglich über den Zeilentyp ‘/:’ Kommandozeilen einzufügen und in diesen bspw. numerische IF-Abfragen durchzuführen.
Dieser IF-Befehl unterscheidet sich allerdings in einigen Punkten von dem Standard ABAP IF.
Projektleitung, Projektbegleitung oder einfach nur Unterstützung in der Entwicklung. Unsere Mitarbeiter haben langjährige Erfahrungen in der SAP Formulargestaltung und Sie können von unserem gesamten Knowhow profitieren. Unser passendes Angebot finden sie hier: Formular-Experten von MINDFORMS buchen
Kontaktieren Sie mich: Telefon 0211 946 285 72-35 oder per E-Mail info@mindforms.de
In einem unverbindlichen Gespräch kann ich mit Ihnen über Ihre Ausgangslage sprechen und Ihnen Möglichkeiten aufzeigen. Selbstverständlich können wir danach auch ein unverbindliches Angebot unterbreiten.
Das Problem – numerische Vergleiche nicht möglich
Möchte man bspw. numerische Werte mit einander vergleichen, stößt man schnell auf eine solche Einschränkung.
Während einfache Vergleiche mit ‚’=’ oder ‚’EQ’ noch funktionieren, ist es nicht möglich, numerische Vergleiche wie ‘>’ oder ‘GE’ (größer oder gleich) durchzuführen.
Grund hierfür ist die Tatsache, dass alle Werte, die in das Formular fließen, im Layout als Character Werte umgewandelt werden.
Um dieses Problem zu umgehen und das Formular dennoch anhand numerischer Werte und Vergleiche aufzubauen bzw. zu steuern, gibt es jedoch einen einfachen Trick.
Der Workaround – die Abfrage auslagern
Voraussetzung hierfür ist, dass wir die Möglichkeit haben das entsprechende Druckprogramm oder einen dort verwendeten Funktionsbaustein anzupassen.
Dort fügen wir zuerst ein neues Feld hinzu.
Über den hier vergebenen Namen können wir das entsprechende Feld später in unserem SAPscript ansprechen und auslesen.
Durch bestätigen wird im angegebenen Include eine entsprechende Variable angelegt.
Diese ergänzen wir nun noch um den von uns benötigten Datentyp (in unserem Fall ein Character der Länge 1).
Innerhalb des Druckprogramms bzw. Funktionsbausteins stehen uns alle Funktionen des normalen ABAP IF-Befehls zur Verfügung, sodass wir hier unsere Abfrage abbilden können.
Abhängig davon, ob diese Abfrage wahr oder falsch ist, setzen wir nun den Wert der erstellten Variablen auf ‘X’ oder ‘ ‘.
Das Ergebnis – zeichenartige Abfrage als Ersatz
Da numerische IF-Abfragen auf zeichenartige Inhalte in SAPscript problemlos funktionieren, können wir nun im Formular den Wert des gesetzten Flags überprüfen und anhand dieser Information den Aufbau des Formulars steuern.
Dazu binden wir das erstellte Feld über den Button ‚Programmsymbole’ ein.
Hier wählen wir das Druckprogramm bzw. die Funktionsgruppe, die wir um das Feld erweitert haben und selektieren “Globale Daten”.
Falls der gewünschte Eintrag nicht vorhanden ist, lässt sich dieser über einen Klick auf “Druckprog hinzufügen” ergänzen.
Nun bekommen wir eine Liste aller verfügbaren Felder zur Auswahl, in der wir auch das neu angelegte Element ‘LV_FLAG’ finden.
Durch Bestätigen des Dialogs binden wir dieses in unser SAPscript Coding ein und können dieses zur gewünschten Abfrage erweitern.
Über diesen Weg lässt sich die technische Eigenschaft des SAPscript Codings, alle Informationen in Character Werte umzuwandeln, umgehen und eine entsprechende Abfrage mit numerischen Vergleichen in SAPscript abbilden.
Ihre Meinung
Fanden Sie diesen Workaround hilfreichoder haben Sie andere Probleme bei Ihrer täglichen Arbeit mit SAPscript Formularen?
Ich freue mich über Ihre Anregungen in den Kommentaren.
2 Kommentare zu "Workaround: numerische IF-Abfragen in SAPscript"
Hallo Herr Job,
ich habe das mit float zahlen ausprobiert, leider geht das nicht, wissen Sie warum?
Beste Grüße
Jacqueline
Hallo Jacqueline,
können Sie mir sagen an welcher Stelle Sie mit Float Zahlen arbeiten möchten und wie Ihr Vergleich aufgebaut ist?
Innerhalb des Druckprogramms bzw. Funktionsbausteins sollte eine derartige Abfrage problemlos möglich sein.
Viele Grüße,
Maximilian Job