IBOS innerhalb von F-Script Blöcken ausführen

IBOS lassen sich auch innerhalb von F-Script Blöcken ausführen.
Notiz
Notiz
Aktuell bestehen noch folgende Ausnahmen: VER-xxx und EIN-xxx
Das bedeutet, dass sich aktuell die VER- und EIN-IBOS noch nicht innerhalb von F-Script Blöcken ausführen lassen.
Die Ausführung eines IBOS innerhalb eines F-Script Blocks erfolgt dabei folgendermassen:
Beispiel
{
// Neue Adresse erstellen
IS.SetIbosAndArgs('ADR-NEU', '2021','1')
var newEmployeeNumber := IS.Execute(FALSE)
}
In diesem Zusammenhang stehen Ihnen bei der Ausführung eines IBOS innerhalb eines F-Script Blocks, zusätzliche Funktionen zur Verfügung.
Funktion
Parameter
Beschreibung
IS
Ausführen eines IBOS innerhalb eines F-Script Blocks.
IS.AddArg(ibosArg)
IBOS-Argument hinzufügen.
IS.AddArg("Arg1")
IS.AddArgs(ibosArgs)
IBOS-Argumente hinzufügen.
IS.AddArgs("Arg1", "Arg2", ...)
IS.AppendArg(argValueToAppend)
Argumentwert zum letzten IBOS-Argument hinzufügen bzw. den bestehenden Argumentwert ergänzen. Ist noch kein Argument vorhanden, wird eine Exception geworfen.
IS.AppendArg("LastArg_Addendum")
IS.AppendArgByNo(oneBasedArgNo, argValueToAppend)
Argumentwert zu einem, durch die Nummer, bestimmten IBOS-Argument hinzufügen bzw. den bestehenden Argumentwert ergänzen. Ist das Argument noch nicht vorhanden, wird eine Exception geworfen.
IS.AppendArgByNo(42, "Arg42_Addendum")
IS.Clear()
IBOS-Objekt zurücksetzen.
IS.Clear()
IS.Execute(isTest) - returns string
IBOS ausführen. Die IBOS-Rückgabe (falls vorhanden) erfolgt als String oder (falls nicht vorhanden) als Leerstring. Falls isTest=TRUE, wird nur die Argumentenprüfung durchgeführt.
// Effektive Ausführung
IS.Execute()
IS.Execute(FALSE)

// Effektive Ausführung mit Rückgabe
returnValue := IS.Execute(FALSE)

// Nur Argument-Prüfung
IS.Execute(TRUE)

// Nur Argument-Prüfung mit Rückgabe
returnValue := IS.Execute(TRUE)
Notiz
Notiz
Beim Ausführen im "Test-Modus" wird bewusst eine Exception geworfen.
IS.GetArgByNo(oneBasedArgNo) - returns string
Liefert den Wert eines bestimmten Arguments. Ist das Argument nicht vorhanden, wird eine Exception geworfen.
argValue := IS.GetArgByNo(5)
IS.GetIbos() - returns string
Liefert den aktuell gesetzten IBOS-Aufruf.
ibosValue := IS.GetIbos()
IS.GetIbosAndArgs() - returns string
Liefert den aktuell gesetzten IBOS-Aufruf mit dessen Namen und den übergebenen Argumenten.
ibosAndArgValues := IS.GetIbosAndArgs()
IS.GetOk() - returns string
Liefert die Information, ob der IBOS erfolgreich ausgeführt werden konnte (analog zu "GETI:OK").
okValue := IS.GetOk()
IS.GetMsgKey() - returns string
Liefert den Meldungs-Schlüssel (analog "GETI:ERR_KEY").
errKey := IS.GetMsgKey()
IS.GetMsgText() - returns string
Liefert den Meldungs-Text (analog "GETI:ERR_TXT").
errText := IS.GetMsgText()
IS.IsDefined() - returns bool
Ermittelt, ob ein bestimmtes IBOS-Objekt existiert.
existIbosObj := IS.IsDefined()
IS.SetArgByNo(oneBasedArgNo, argValue)
Setzt, ein anhand der Nummer, ein bestimmtes IBOS-Argument.
IS.SetArgByNo(42, "Arg42")
IS.SetArgs(ibosArgs)
Setzen der IBOS-Argumente. Allfällig bereits vorhandene Argumente werden zurückgesetzt.
IS.SetArgs("Arg1", "Arg2", ...)
IS.SetIbos(ibosName, clearArgs)
Setzen des IBOS (Name) für die Ausführung. Über das zweite Argument wird gesteuert, ob bereits vorhandene Argumente zurückgesetzt (TRUE), oder beibehalten (FALSE) werden.
IS.SetIbos("ADR-NEU", TRUE)
IS.SetIbosAndArgs(ibosName, ibosArgs)
Gleichzeitiges Setzen des IBOS (Name) und der Argumente für die Ausführung. Allfällig bereits vorhandene Argumente werden zurückgesetzt.
IS.SetIbosAndArgs("ADR-NEU", "Arg1", "Arg2", ...)
IS.SuppressExceptions(suppressException)
Manuelles Fehlerhandling. Fehler führen in der Folge nicht zu einem Abbruch des Scripts. Allfällige Meldungs-Informationen können via GetOK, GetMsgKey und GetMsgText ausgelesen werden. Die Einstellung wird durch IS.Clear() nicht zurückgesetzt.
IS.SuppressExceptions(TRUE)
Beispiel
{
  function IBOS_ADR() : void
  {
    var addrNo := 1092

    // Setzen des IBOS
    IS.SetIbos("ADR-MUT-POST", TRUE)

    // Setzen der beiden zwingenden Attribute
    IS.SetArgByNo(1, addrNo)
    IS.SetArgByNo(2, "1")

    // Setzen der beiden zu mutierenden Attribute E-Mail und Homepage (Nummer gemäss Manuals)
    IS.SetArgByNo(19, "info@opacc.ch")
    IS.SetArgByNo(20, "www.opacc.ch")

    // Ausführen im Testmodus (Validierung der Argumente und des "Datensatzes")
    IS.Execute(TRUE)
    if(IS.GetOk() = TRUE)
    { 
      IS.Execute(FALSE) 
    }
    else
    { 
      SYS('MSG CRIT Mutieren der Adresse '+string(addrNo)+' nicht möglich!' + character(10) +IS.GetMsgText()) 
    }
  }

  // Ausführen des IBOS mit vorgängiger Attributrüfung
  IBOS_ADR()
}
Wird innerhalb eines F-Script Blocks ein IBOS ausgeführt, betrifft dies nicht den Buffer/Datensatz (z.B. Adresse oder Artikel), welcher vor dem F-Script Block aktiv war. Das bedeutet, dass nach der Ausführung des F-Script Blocks wieder der vorher aktive Datensatz aktiv ist.
Beispiel
/headerreport
# Adresse aktivieren
«nz ADR-ACTIVE(2020)\I»
# ------------------------------------------------------------------------------------------------------
«
{
    // Neue Adresse erstellen
    IS.SetIbosAndArgs('ADR-NEU', '2022','1')
    var newAddr := IS.Execute(FALSE)
    var ibosErrorMessage := IS.GetMsgText()
    
    SYS('MSG INFO BlockScript - Neue Adresse: ' + newAddr)
}
»
# Nach dem Block ist wieder die "ursprünglich aktivierte" Adresse (2020) aktiv!
«SYS(MSG INFO LegacyCode - Aktive Adresse: «ADRNR»)»
/