Scripting MessageBox

Aus SAP-Wiki
Zur Navigation springenZur Suche springen


Siehe Debugging Scriptcode.

Eine Messagebox auszugeben ist eine wichtige Funktion fast jeder Programiersprache.

Die Ausgabe der Messageboxen ist in beiden Programmiersprachen sehr ähnlich.

Bei JavaScript und bei FormCalc ist diese Funktionalität auch wichtig zum Debuggen. Das aus ABAP und den meisten anderen Programmiersprachen bekannte und oft sehr hilfreiches Debugging, ist beim Scripting im LiveCycle Designer leider nicht möglich.

Druckparameter DYNAMIC

  • Um beim Ereignis "initialize" Werte abzufragen und dann in einer Messagebox auszugeben, muss beim Aufruf des Formulars die Druckstruktur SFPDOCPARAMS im Feld DYNAMIC gefüllt werden mit einem "X". Beim Parameter DYNAMIC wird Scripting-Code auch härter geprüft. Syntaxfehler im Scriptingcode werden bei der Formularausgabe angezeigt in Dialogboxen, bevor das Formular dann dennoch ausgeben wird.
  • Das ist einerseits ein Vorteil, da so Syntaxfehler im Scriptingcode transparent werden und folglich bereinigt werden. Es kann aber auch ein Nachteil sein, da vielleicht ungewollt Skriptingfehler-/Warnungen angezeigt werden, die bei der Formularausgabe unnötig verwirren. Im Projekt kam es beim Setzen des Parameters DYNAMIC auch zu Problemen bei Übertragsfeldern, die auf der ersten Übertragsseite viel zu hoch ausgewiesen wurden.
  • Es ist daher ratsam vor dem Produktivtransport zur Sicherheit den Parameter DYNAMIC auf Space zu setzen, sofern man kein interaktives Formular hat. Messageboxen im Scriptingcode werden ignoriert, sofern der Parameter DYNAMIC nicht auf "X" gesetzt wird.
Data: ls_docparams TYPE sfpdocparams.

ls_docparams-DYNAMIC = 'X'.
...
CALL FUNCTION lv_fm_name
  EXPORTING
    /1bcdwb/docparams  = ls_docparams
    ...

Kopiervorlage für MessageBox

Hier werden 2 Variablen hintereinander ausgegeben. Bei FormCalc verknüpft mit "Concat" und bei JavaScript mit "+".

JavaScript

var var1;
var var2;

var1 = "Test1";
var2 = "Test2";

xfa.host.messageBox((var1 + ", " + var2), "Titelzeile", 3); //3=blaues Ausrufezeichen, 2=blaues Fragezeichen, 1=Gelbes Warndreieck
xfa.host.messageBox((var1 + "\n" + var2), "Titelzeile2", 3); // \n bewirkt Zeilenumbruch

FormCalc

var var1
var var2

var1 = "Test1"
var2 = "Test2"

$host.messageBox(Concat (var1, ", ", var2), "Titelzeile", 3) //3=blaues Ausrufezeichen, 2=blaues Fragezeichen, 1=Gelbes Warndreieck

Messagebox in JavaScript

Defaulttyp Anzeige = Error

xfa.host.messageBox("Text in einer Messagebox"); //Messagebox String
xfa.host.messageBox(iVariable);                  //Messagebox Variable

Messagebox mit einem Titel "Titelzeile" und blauen Ausrufezeichen

xfa.host.messageBox(iVariable, "Titelzeile", 3);

Messagebox in FormCalc (u. a. concat)

$host.messageBox("Text in einer Messagebox")     //Messagebox String
$host.messageBox(iVariable)                      //Messagebox Variable

Messagebox mit einem Titel "Titelzeile" und blauen Ausrufezeichen

$host.messageBox(Concat (iVariable, iNummer), "Titelzeile", 3)

Messagebox mit Sonderfunktionen (Zeichenumbruch etc.)

Man kann in einer Messagebox auch mehr als einzeiligen Text ausgeben

  • \n = Zeilenumbruch
  • \r = neue Zeile
  • \t = Tabulator
  • \\ = Backslash

Zum Beispiel

xfa.host.messageBox("Ausgabe in einer Zeile und hier in \n neuer Zeile");

oder

var var1;
var var2;

var1 = "Test1";
var2 = "Test2";

xfa.host.messageBox((var1 + "\n" + var2), "Titelzeile", 2); // \n für Zeilenumbruch

Debugging mit Messageboxen

  • Die Debuggingmöglichkeiten sind in JavaScript und FormCalc sehr begrenzt.
  • Man kann Messageboxen nutzen, um die Werte von Variablen zu überprüfen.
  • Debugging mit Messageboxen hat den Nachteil, dass jede Messagebox bestätigt werden muss
  • Nach dem erfolgreichen Einsatz einer Messagebox sollte häufig die Messagebox nicht komplett gelöscht, sondern nur auskommentiert werden (//..), um sie für späteren Gebrauch schnell wieder aktivieren zu können
xfa.host.messageBox(iVariable);     //Messagebox mit JavaScript
$host.messageBox(iVariable)         //Messagebox mit FormCalc

Literatur