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.

Unser E-Book zum Thema SAPscript

E-Book: SAPscript

Wann lohnt sich der Umstieg und wie gelingt dieser? Unser SAPscript E-Book beantwortet alle Ihre Fragen!

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.

numerische IF-Abfragen

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.

Maximilian Job

Maximilian Job

Mein Name ist Maximilian Job und ich bin SAP-Consultant im Fachbereich Mindforms. Ich habe mich auf Aufgaben im Bereich Formularentwicklung, hier vor allem die Technologie SAP Interactive Forms by Adobe (SIFbA) spezialisiert.

Sie haben Fragen? Kontaktieren Sie mich!



Das könnte Sie auch interessieren

Die älteste Formulartechnologie von SAP nutzt globale Variablen bzw. DDIC-Strukturen zur Datenübertragung vom Rahmenprogramm zum Formular. Diese erste Generation von Formulartechnologien zeichnet sich durch eine sehr gute Performanz und Zuverlässigkeit […]

weiterlesen

Die Entwicklung von Formularen mit SAPscript ist sicherlich nicht besonders komfortabel. Nützlich bei der Entwicklung ist aber die Verwendung des Debuggers in SAPscript. Wie Sie diesen aktivieren und verwenden, erfahren […]

weiterlesen

Ein interessanter Fehler bei der Verwendung von SAPscript sind Leerseiten in SAPscript Formularen, die durch den Drucker ausgegeben werden, obwohl dies gar nicht erwünscht ist. Im Internet findet man häufig […]

weiterlesen

Dass es keine Versionierung bei dem SAPscript Formulardownload gibt, ist ein bekanntes Problem. Dadurch wird die Arbeit mit den Formularen um einiges schwerer, da man sich jeden Schritt vorher genau überlegen muss. […]

weiterlesen

SAPscript wurde 1980 entwickelt und ist unter den drei SAP-Formulartechnologien die Älteste. Zu den Anfängen wurde entsprechend jedes Formular, welches als Produkt vieler Geschäftsprozesse entsteht, mit SAPscript erzeugt. Mit dem […]

weiterlesen

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

Antworten

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

Antworten

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Kontaktieren Sie uns!
Julia Buecker
Julia Bücker Kundenservice