Vor kurzem habe ich mein lokal installiertes AX 2012 R3 CU8 auf einen aktuelleren Programmstand bringen wollen. Dazu wird folgendes benötigt:
Nachstehend findet Ihr einige Screenshots sowie Anmerkungen die ich während der Aktualisierung gemacht habe. Anmeldung in LCS und Downloaden des Installers |
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; }
|
Mit Hilfe des folgenden Code, kann man eine Welle verarbeiten. Dies wird abhängig von den WHS-Parametern bei Aufruf der Funktion "Für Lagerort freigeben" ausgeführt. WHSPostEngine::post(WaveTable::find('USMF-000000003')); |
In diesem Beitrag möchte ich zeigen, wie man alle Positionen eines Auftrages bzw. auch nur einzelne Auftragspositionen per Code zu einer bestehenden Ladung hinzufügen kann. |
Eine häufige Anforderung ist es, daß zu einem bestimmten Zeitpunkt ein Bericht/Report vollautomatisch ausgedruckt werden soll. Dabei gilt es meist, dem auszudruckenden Bericht bestimmte Parameter mitgeben zu können und je nachdem wie der Bericht entwicklungsseitig aufgebaut ist, kann dies mehr oder weniger aufwendig sein. Der folgende Code ruft einen relativ einfachen Dataprovider-basierten Bericht auf: TutorialMyReportDataContract dataContract;
SrsReportDataContract srsReportDataContract; controller = new SrsReportRunController(); controller.parmReportName(ssrsReportStr(TutorialMyReport, MyDesign)); controller.parmShowDialog(false); controller.parmLoadFromSysLastValue(false); srsReportDataContract = controller.parmReportContract(); dataContract = srsReportDataContract.parmRdpContract(); dataContract.parmSalesId("S1000"); Das nächste Beispiel ruft den Standardbericht Buchungen (Debitorenkonten > Berichte > Buchungen > Debitor) auf. Die Besonderheit dieses Berichtes ist es, daß hier ein Query innerhalb des Dataproviders verwendet wird. Auf diesen zuzugreifen war die Herausforderung: |
|
||
|
||
|
|
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.