Willkommen auf schweda.net | EN | DE
 
 
 
 
 

Im folgenden Szenario sollen an ein SysOperation-Konstrukt alle Datensätze einer temporären Tabelle übergeben werden.

Dafür brauchen wir:

  • Im DataContract eine Zugriffsmethode (parm-Methode), die einen Container aufnimmt
  • Im Controller eine Logik, welche die Datensätze einer aufrufenden Datenquelle iteriert und in einen Container packt, und diesen über die obige Methode an das Service übergibt
  • In der Service-Klasse Logik, welche den übergebenen Container auspackt und verarbeitet

 

Controller

class TutorialSysOperationController extends SysOperationServiceController
{
}

Eine häufige Anforderung in Projekten ist es, daß Auftrags- oder Bestellpositionen durch irgendeine Programmlogik erstellt werden sollen, beispielsweise durch Datenimporte o.ä.

Zuletzt hatte ich erstmalig die Anforderung, daß per Code generierten Auftragspositionen anschließend aber manuell bearbeitet werden sollen, wobei die Preisinformationen wie Verkaufspreis und -rabatt aber unbedingt erhalten bleiben sollten.

Bearbeitet man in Dynamics AX aber bestimmte Felder einer Position, löst dies aber u.U. eine Preisfindung aus. Diese galt es also zu verhindern bzw. durch eine Abfrage den Benutzer zumindest davor hinzuweisen. Glücklicherweise gibt es eine solche Abfrage bereits, die über die folgenden Felder gesteuert wird:

Feld Beschreibung
ManualEntryChangepolicy Referenz auf Tabelle PriceDiscChangePolicy
SystemEntryChangePolicy Referenz auf Tabelle PriceDiscChangePolicy
SystemEntrySource BaseEnum

Die nachstehenden Snippets sollen zeigen, wie man aus einem String mit fixen Trennzeichen die einzelnen Elemente extrahieren kann.

Variante 1: Den String mithilfe der Funktion str2con() in einen Container umwandeln

static void Job1(Args _args)
{
    str paramAsStr = "Wert1@@Wert2@@Wert3";
    container paramAsCon;
    int i;

    paramAsCon = str2con(paramAsStr, "@@");
    
    for (i=1;i<=conLen(paramAsCon);i++)
    {
        info(conPeek(paramAsCon, i));    
    }
}


Variante 2: Den String unter Verwendung der Funktion strSplit() in eine List umzuwandeln

static void Job1(Args _args)
{
    str paramAsStr = "Value 1|Value 2|Value 3";
    List paramAsList;
    ListEnumerator le;

    paramAsList = strSplit(paramAsStr, "|");
    
    le = paramAsList.getEnumerator();
    while(le.moveNext())
    {
        info(le.current());    
    }
}

 


Das folgende Code-Schnipsel zeigt, wie man per Code Wellen und Arbeiten für eine oder mehrere Lieferungen erzeugen kann. Dies wird normalerweise auch aufgerufen, wenn man die Funktion "Für Lagerort freigeben" ausführt.

WHSWaveTable::buildWaveFromShipments(['USMF-000006','USMF-000007']);

Vor kurzem habe ich mein lokal installiertes AX 2012 R3 CU8 auf einen aktuelleren Programmstand bringen wollen. Dazu wird folgendes benötigt:

  • Zugang zu den Lifecycle Services (LCS)
  • Zumindest ein paar Stunden Zeit

Nachstehend findet Ihr einige Screenshots sowie Anmerkungen die ich während der Aktualisierung gemacht habe.

Anmeldung in LCS und Downloaden des Installers

Screenshot


Häufig wird eine Funktion, die über das SysOperation-Framework abgebildet wurde, aus einem Formular heraus über eine Schaltfläche aufgerufen. Dabei hat man meist die Anforderung, daß die angezeigten Daten im Formular nach der Ausführung aktualisiert werden sollen.

Ich benutze dafür gerne die folgende Logik. Diese geht davon aus, daß der Aufruf der Funktion über eine Schalfläche erfolgt ist und dadurch die main()-Methode getriggert wird.

Die eigentliche Aktualisierug erfolgt über eine Sub-Methode und könnte wie folgt aussehen:

private void refreshCallingForm(args _args)
{
    FormRun callerFormRun;
    #Task

    if(_args && _args.caller() && _args.caller() is formRun)
    {
        callerFormRun = _args.caller();
        callerFormRun.task(#taskF5);
    }
}

Das folgende Code-Snippet führt die Funktion "Für Lagerort freigeben" einer Ladung aus, allerdings ohne die Wellen/Arbeiten zu generieren. 

static void Job1(Args _args)
{
    ttsBegin;
    WHSLoadPostEngine::post(whsLoadTable::find('USMF-000004', true));
    ttsCommit;
}

 


Seiten 1 2 3 4 ... 50 » 

 

 
Kategorien / Themen
Feeds
RSS RSS-Feed
 
 
Beiträge des aktuellen Monats
August 2018
MoDiMiDoFrSaSo
 12345
6789101112
13141516171819
20212223242526
2728293031 
 
 
© 2006-2018 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu. Mehr dazu