Zum Inhalt

MDE Miniform - Nutzung individuelle Codeunit und Ergebnis Code

Nutzung

Jede Codeunit benötigt Voraussetzungen, um als Miniform-Prozesscodeunit funktionieren zu können.

Codeunit

Die Prozesscodeunit muss dem System als gültige Codeunit bekannt gemacht werden. Dazu ist das Event

  OnBeforeGetValidProcessCodeunitIds(var ProcessCodeunitIdList: List of [Integer])

aus der Codeunit "ADCSMiniformMgtTDCS" abonniert und die Codeunit-Id der Liste hinzugefügt werden.

Weiterhin benötigt die Codeunit eine Funktion, die sich um das Management der Funktionen kümmert (RegisterAction).

  ADCSMgt.RegisterAction(TRANSFER_VOUCHERLESS,TEXT0001,l_PbVAction.Type::Scanner,CODEUNIT::"ADCS Miniform Transfer");

Als erstes wird der Code der Funktion übergeben (vgl. OnRun-Trigger). Anschließend eine Beschreibung, was die Funktion macht. Dann der Type Scanner, da die Actions für Piccolink und Pick-by-Voice in der selben Tabelle gespeichert werden und schließlich noch die Codeunit, in der die Funktion zu finden ist.

Anschließend muss in der Codeunit "ScannerBasicFunctionsTDCS" (5371157) noch in der Funktion RegisterActions() die Codeunit hinterlegt werden. Hier werden auch allgemeingültige Funktionen registriert.

In der Anwendung erfolgt das Registrieren der Funktionen über die Seite [MDE Scannervorgänge].

Aufruf

Jede Codeunit wird über den OnRun-Trigger aufgerufen. Als Table muss dabei in den Properties die "ADCS Device Activity" (5371158) hinterlegt werden. Der OnRun-Trigger benötigt dann folgenen Aufbau:

  WITH Rec DO BEGIN
    l_Function := MiniformMgt.GetFunction(Rec);
    CASE l_Function OF
      TRANSFER_VOUCHERLESS: GetReceiptVoucherless(Rec);
      UNPAUSE: DoUnpause(Rec);

    else
      MiniformMgt.GetNextMiniformFromResultCode(Rec);
  END;

Die Variable l_Function enthält dabei den Code der hinterlegten Funktion. Dieser muss mit dem registrierten Code übereinstimmen.

Ergebnis Code

Zusätzlich kann in der Codeunit eine Funktion implementiert werden, die sich um das Erstellen und um das Management von individuellen Ergebnis Codes kümmert (RegisterResultCode). Diese muss den folgenden Aufruf haben, um neue Ergebnis Codes registrieren zu können:

  ADCSMgt.RegisterResultCode(Enum::"ADCS Result Code TextTDCS"::TESTResultCode, ADCSAction.SystemId, ResultCodeDescription, ResultCodeNode);

Als erstes wird der Ergebnis Code, der über das Enum erweitert werden kann, übergeben. Anschließend die System ID des zugeordneten Scannervorgangs. Dann optional eine Beschreibung, für was der Ergebnis Code steht und schließlich noch eine optionale Anmerkung, welche Berechtigungs-Variablen (Bool1, Bool2 und Bool3) ggfls. noch im Programmcode gesetzt werden.

Anschließend muss in der Codeunit "ScannerBasicFunctionsTDCS" (5371157) noch in der Funktion RegisterResultCodes() die Codeunit hinterlegt werden.

In der Anwendund erfolgt das Registrieren der Ergebnis Codes über die Seite [MDE Miniform-Subzeilen].

Auswahl nächster Miniform

Je Miniformzeile, die vom Typ "Eingabe", oder "Auswahl" ist, werden Miniform-Subzeilen hinterlegt. In der Codeunit werden die Ergebnis Codes dann jeweils per Set-Funktion in der Tabelle "ADCS Device Activity" (5371158) an der korrekten Stelle gesetzt:

    if DelChr(ADCSDeviceActivity."Message (In)") <> '' then
        if ScannerWhseDoc.SetPickDocument(ADCSDeviceActivity.GetMessageInAsCode20(), ADCSDeviceActivity."Employee No.") then
            ADCSDeviceActivity.SetOKResultCode()
        else
            ADCSDeviceActivity.SetNotOKResultCode()
    else
        ADCSDeviceActivity.SetScannerErrorResultCode();
    MiniformMgt.GetNextMiniformFromResultCode(ADCSDeviceActivity);