UebergeordnetesD.bmp Grundlegende Informationen zur Auftragsvorerfassung finden Sie unter Auftragsvorerfassung.

 

 Überblick

In der Auftragsvorerfassung können Datensätze an mehreren Stellen mittels Makro manipuliert werden. Grundsätzlich wird unterschieden, ob die Importdateien vor dem Import mittels Makro verändert werden sollen, ob eine Anpassung der Importdaten während des Imports erfolgen soll oder ob die importierten Daten nach dem Import in der Auftragsvorerfassung verändert werden sollen. Weiters ist es auch möglich Makros erst zum Zeitpunkt der Auftrags(positions)anlage zu starten.
 
Grundsätzlich gilt, umso früher ein Datensatz in das gewünschte Format gebracht wird umso besser. Unterschiedliche Anforderungen bedingen aber unterschiedliche Umsetzungsvarianten.
 
Die nachfolgend dargestellten Makros dienen zur Veranschaulichung der unterschiedlichen Möglichkeiten und Einstiegspunkte von Makros im Zusammenhang mit dem Auftragsimport und -verarbeitung. Wo genau ein Makro zu hinterlegen ist und welche Funktionalität das zu erstellende Makro aufweisen muss ist immer abhängig von der konkreten Anforderung.
 
Die Beispiele geben einen Überblick wo Makros in der Auftragsvorerfassung hinterlegt werden können bzw. wie Makros für die Manipulation von Importdaten bzw. importierten Daten herangezogen werden können.
 
Hinweis 
Hinweis.png
Im Hinblick auf die Möglichkeit der Hinterlegung von Aktionsmakros sind die Ausführungen zu Makros in der Auftragsvorerfassung nicht erschöpfend. Prinzipiell können in der NTCS zu (fast) jeder Funktion Aktionsmakros für die Ausführung vor/nach der jeweiligen Funktion hinterlegt werden.
 
Hinweis 
Hinweis.png
Um Fenster- und Aktionsmakros nutzen zu können müssen Makros in der NTCS aktiviert sein. Folgender Parameter muss auf 1- Ja gesetzt sein: Tools →  Überblick über alle Tools-Parameter → Gesamtsystem → Gesamtsystem → Makros aktivieren
 
Die Makroverwaltung für die Auftragsvorerfassung wird über das Menü Extras in der Auftragsvorerfassung aufgerufen:
Warenwirtschaft → Verkauf → Diverse → Auftragsvorerfassung → Menü Extras → Makro Makros


1097582601000001570.png

 Fenstermakros Auftragsvorerfassung 

Fenstermakros sind Makros, die im jeweiligen Fenster manuell aufgerufen werden können. Fenstermakros werden im Menü Extras → Makro angelegt, angezeigt bzw. können dort aufgerufen werden.

 Bearbeitung Importdaten vor Import (Makro-Beispiel 1)

Fenstermakro Fenster Auftragsvorerfassung
 
Mittels eines Fenstermakros kann eine Datei in eine importierbare Datei konvertiert werden. Das Makro zur Konvertierung muss manuell vom Anweder gestartet werden. Anschließend wird dann vom Anwender der Import der Datei in die Auftragsvorerfassung durchgeführt bzw. angestoßen.
 
Beispiel 1: Fenstermakro Auftragsvorerfassung - Anpassung Datei vor Import
 
Importdatei: Beispiel 1.csv
 
Anforderung:
  • Konvertierung der Datei als Vorbereitung für Import in AVE
  • Spalte Kunde: erste Ziffer von 8 auf 2 ändern, d.h. aus 800000 wird 200000, aus 800006 wird 200006
  • Originaldatei nach Konvertierung verschieben/umbenennen


 Importdatei Beispiel 1.csv

Kunde;Artikel;Einheit;Menge
800006;Artikel 1;Stk;5
800000;Artikel 2;Stk;17
 

 Makro Beispiel 1

//==============================================
// Beschreibung : AVE-Makro-Muster - Beispiel 1
//==============================================

ABasisFile := 'Y:\huber\MakrosAVE\Test\Beispiel1.csv' // Datei, die konvertiert werden soll
AZielFile := 'Y:\huber\MakrosAVE\Test\Konvert\Beispiel1.csv' // Zieldatei für Konvertierung
ARename := 'Y:\huber\MakrosAVE\Test\Konvert\Beispiel1-' // Pfad und Beginn Dateiname für Umbennenung Zieldatei, wenn diese bereits vorhanden ist

//Meldung ausgeben, wenn Datei nicht existiert
if(not BMD_FILEEXISTS(ABasisFile))then begin
 BMD_SHOWMESSAGE('Die Datei \n'+ABasisFile+'\n wurde nicht gefunden'); //ShowMessage
end;

if(BMD_FILEEXISTS(ABasisFile))then begin 

 //bereits existierende Zielfile ggf. umbenennen 
 if(BMD_FILEEXISTS(AZielFile))then begin //Neuanlage 
  lTimeStamp := BMD_STRINGREPLACE(BMD_DATE,'.','') +'_'+BMD_STRINGREPLACE(BMD_TIME,':','');
  BMD_RENAMEFILE(AZielFile,ARename+lTimeStamp+'.old'); //RenameFile 
 end; 

 //Zielfile anlegen und öffnen 
 if(not BMD_FILEEXISTS(AZielFile))then begin //Neuanlage 
  BMD_CREATEFILE(AZielFile); 
 end; 

 BMD_ASSIGNFILE(1, AZielFile); 
 BMD_OPENFILE_APPEND(1); 

 //Quellfile mittels CSV-Objekt öffnen: 
 lBasisCSV := MacroObject.CreateMacroCSVFile(ABasisFile); //CreateMacroCSVFile 
 lBasisCSV.Open(); //Open 

 //Überschriften einfügen
 BMD_WRITELN(1,'Kunde;Artikel;Einheit;Menge;');

 lZeilen := lBasisCSV.GetNoOfLines();
 lSpalten := lBasisCSV.GetNoOfCols(); 

 FOR I := 1 TO lZeilen - 1 do begin
  lKunde := BMD_TEXTTONUMDEF(lBasisCSV.GetValue(I,0)); //GetValue 
  lArtikel := lBasisCSV.GetValue(I,1); //GetValue 
  lEinheit := lBasisCSV.GetValue(I,2);
  lMenge := lBasisCSV.GetValue(I,3); 

  lKunde := BMD_FORMATNUM('####', lKunde - 600000);

  BMD_WRITELN(1,lKunde +';'+ lArtikel + ';' + lEinheit + ';' + lMenge + ';'); 
 END; 

 BMD_CLOSEFILE(1);

 //Kontrolle Zielfile und Basisfile umbenennen 
 if(BMD_FILEEXISTS(AZielFile))then begin 
  lTimeStamp := BMD_STRINGREPLACE(BMD_DATE,'.','') +'_'+BMD_STRINGREPLACE(BMD_TIME,':','');
  BMD_RENAMEFILE(ABasisFile,BRename+'_konv_'+lTimeStamp+'.old'); //RenameFile
  BMD_SHOWMESSAGE('Die Konvertierung wurde durchgeführt.\nBitte überprüfen Sie die Zieledatei:\n'+AZielFile);
  //Meldung ausgeben, dass Konvertierung durchgeführt wurde. 
 end; 
 else begin 
  BMD_SHOWMESSAGE('Es gab Probleme bei der Konvertierung.\nBitte überprüfen Sie den Pfad für die Zieldatei.\n'+AZielFile);^
  //Meldung ausgeben, dass es Probleme bei der Konvertierung gab.
 end;

end;

 Konvertierte Datei Beispiel 1.csv

Nach erfolgreicher Ausführung des Makros befindet sich im Zielverzeichnis die Datei Beispiel 1.csv mit folgendem Inhalt:
 
Kunde;Artikel;Einheit;Menge;
200006;Artikel 1;Stk;5;
200000;Artikel 2;Stk;17;
 
Diese Datei kann nun in die Auftragsvorerfassung importiert werden.

 Bearbeitung importierter Daten (Makro-Beispiel 2)

Fenstermakro Fenster Auftragsvorerfassung
 
Mittels eines Fenstermakros können bereits importierte Daten überprüft bzw. vor der weiteren Verarbeitung (Auftagserstellung) angepasst werden. Das Makro wird dabei vom Anwender manuell angestoßen. Die geänderten bzw. kontrollierten Daten können anschließend vom Anwender in der Auftragsvorerfassung begutachtet werden. Anschließend erfolgt die automatisierte Auftragserstellung.
 
Beispiel 2: Fenstermakro Auftragsvorerfassung - Anpassung Daten nach Import
 
Importdatei: Beispiel 2.csv
 
Anforderung:
  • Setzen des Erfassungskennzeichen bei bereits angelegten/importieren Auftragspositionen in Abhängigkeit der Verkaufsart (Freifeld Kopf 08)
  • Feld Erf-Kz nach folgender Logik setzen:
    • Freifeld Kopf 08 = Diensleistung →  DLR
    • Freifeld Kopf 08 = Verkauf →  AUF
    • Freifeld Kopf 08 = Rücksendung →  AOR
  • Meldung ausgeben, dass Setzen des Feldes Erf-Kz erfolgt ist

 Importdatei Beispiel 2.csv

Verkaufsart;Kunde;Artikel;Einheit;Menge
Dienstleistung;200006;Artikel 1;Stk;5
Rücksendung;200000;Artikel 2;Stk;-17
Verkauf;200000;Artikel 3;Stk;3
Verkauf;200000;Artikel 2;Stk;30
 
Hinweis 
Hinweis.png
Der Import der 1. Spalte "Verkaufsart" erfolgt ins Freifeld Kopf 08.
1301418784000018280_1.png
 

 Daten in AVE nach Import und vor Ausführung des Makros Beispiel 2

 
1301420828000018280.png

 Makro Beispiel 2

// ==============================================
// Beschreibung : AVE-Makro-Muster - Beispiel 2
// ==============================================

lPosModel := MacroObject.CreateMacroModel('TBMDMDAuftragsVorErfassungMgr');

lPosModel.First();

while not lPosModel.Eof() do begin 
 lArt := lPosModel.GetValue('MCA_AVE_AUFTRKOPF_FREIFELD8');
 lPosModel.Edit(); //Edit 

 if (lArt = 'Dienstleistung') then begin 
  lPosModel.SetValue('MCA_AVE_ERZ_ERFASSUNGSKZ','DLR'); //SetValue
 end;
 else if (lArt = 'Verkauf') then begin 
  lPosModel.SetValue('MCA_AVE_ERZ_ERFASSUNGSKZ','AUF'); //SetValue
 end;

 else if (lArt = 'Rücksendung') then begin 
  lPosModel.SetValue('MCA_AVE_ERZ_ERFASSUNGSKZ','AOR'); //SetValue
 end;

 lPosModel.Save(); //Save

 lPosModel.Next();
end;
 
BMD_SHOWMESSAGE('Bei allen angezeigten/gefilterten Datensätze wurde das Erfassungskennzeichen\nin Abhängigkeit vom Freifeld Kopf 08 gesetzt!');
 
 

 Daten in AVE nach Ausführung des Makros Beispiel 2

422792379528595.png

 Makros beim Import

 Hinweise zu Makro nach Lesen bzw. vor Schreiben beim CSV-Import

Grundsätzlich gibt es bei einem CSV-Import zwei Einstiegspunkte für die Hinterlegung von Makros, und zwar "nach dem Lesen" und "vor dem Schreiben".
 
Beim "Makro nach Lesen" wurde der Datensatz erst aus der Datei gelesen, es hat noch keine Validierung etc. in der NTCS stattgefunden. Mittels eines hier hinterlegten Makros können die eingelesenen Daten verändert werden, so dass eine anschließende Validierung der Daten in der NTCS ohne Fehler verläuft. (siehe Makro-Beispiel 3a). Weiters können auch Datensätze aussortiert werden, die nicht importiert werden sollen. (siehe Makro-Beispiel 3) 
 
Beim "Makro vor Schreiben" wurden die Daten bereits in die entsprechenden Felder importiert und validiert, vor der Speicherung des Datensatzes können jedoch Daten noch verändert bzw. weitere Datenfelder mittels Makro befüllt werden. (siehe Makro-Beispiel 4).
 

 Standard CSV-Import - Makro nach Lesen zur Datensatzaussonderung (Makro-Beispiel 3)

Makro bei Auswahl Importdatei Reg. Erweitert →  Makro nach Lesen
 
Beim Standard CSV-Import kann ein Makro nach Lesen hinterlegt werden. Dieses Makro wird ausgeführt, während die Datensätze aus der Datei gelesen werden. Das Makro wird für jeden Datensatz aufgerufen. Damit der Datensatz weiterverarbeitet wird, muss ein Resultwert angegeben werden:
  • Bei Result := true wird der Datensatz eingelesen.
  • Bei Result := false wird der Datensatz nicht importiert. Es entsteht ein Log Eintrag:
    „Zeile 1 beim Import übersprungen (keine Berechtigung?)“
Makros nach Lesen können verwendet werden um Datensätze vor der Weiterverarbeitung auszusortieren.
 
Hinweis 
Hinweis.png
Grundsätzlich sollte hinterfragt werden, ob ein Makro für die Filterung der Datei nach Datensäzten, die nicht importiert werden sollen, unbedingt notwendig ist, oder ob die Importdatei Importdatei nicht bereits anders, d.h. ohne diese Datensätze, angeliefert werden kann.
 
Achtung! 
Achtung.png
Die beschriebene Funktionalität des Filterns/Überspringes von Datensätzen während des Imports ist bei der Funktion "CSV Import Aufträge" nicht zielführend. Durch das Überspringen von Datensätzen (Result := false) wird ein Fehler-Eintrag im Logfile generiert. Kommt es beim CSV Auftragsimport zu einem Fehler, dann wird der gesamte Auftragsimport abgebrochen.
 
 
Beispiel 3: Makro nach Lesen bei Standard-Import Textdatei - Filterung Daten während Import
 
Importdatei: Beispiel 3.csv
 
Anforderung:
  • Es sollten nur Datensätze importiert werden bei denen die Menge übergeben wird bzw. nicht 0 ist

 Importdatei Beispiel 3.csv

Kunde;Artikel;Einheit;Menge
200006;Artikel 1;Stk;5
200000;Artikel 2;Stk;-17
200000;Artikel 3;Stk;0
200000;Artikel 2;Stk;30
200006;Artikel 2;Stk;
 

 Makro Beispiel 3

// ==============================================
// Beschreibung : AVE-Makro-Muster - Beispiel 3
// ==============================================

// Wert Feld Menge laden
Menge := BMD_textToNumDef(BMD_VARIMPORT_FIELD('MCA_AVE_MENGE'));

if (Menge = 0) then begin 
 Result := false;
end;
else begin
 Result := true;
end;
 
Hinweis 
Hinweis.png
Im Makro nach Lesen stehen die Felder lt. Import-Vorschau zur Verfügung. Diese können mit der Funktion BMD_VARIMPORT_FIELD gelesen werden.

 Anmerkungen zur Umsetzung Import Beispiel 3

Die Feldauswahl beim Standard CSV-Import ist so einzustellen, dass die Spalten lt. Datei mit den Spaltenüberschriften lt. NTCS übereinstimmen.
 
1301838377000103170.png
 
Am Register Erweitert ist das Makro unter "Makro nach Lesen" zu hinterlegen.
 
1301838377000103170_0.png
 
Beim Import werden die Datenzeilen 3 (Wert 0) und 5 (kein Wert) übersprungen.
 

 Daten in AVE nach Import Beispiel 3

Nach dem Import sind nur die Datensätze mit einer übergebenen Menge ungleich 0 in der Auftragsvoerfassung ersichtlich.
 
475632429993321.png

 Standard CSV-Import / Funktion CSV Import Aufträge - Makro nach Lesen mit Datenmanipulation (Makro-Beispiel 3a) 

Makro bei Auswahl Importdatei Reg. Erweitert →  Makro nach Lesen
 
Beim Standard CSV-Import und der Funktion CSV Import Aufträge kann beim CSV-Import ein Makro nach Lesen hinterlegt werden. So können die Daten bereits nach dem Lesen noch vor der Validierung in der NTCS angepasst werden. Nach dem Import sind die bereits geänderten Daten in der Aufragsvorerfassung ersichtlich.
Beispiel 3: Makro nach Lesen bei Standard-Import Textdatei - Filterung Daten während Import
 
Importdatei: Beispiel 3a.csv
 
Anforderung:
  • Die in der Datei gelieferte Kundennummer beginnt jeweils mit einem Buchstaben. Dieser Buchstaben soll entfernt und nur der numerische Teil als Kundennummer verwendet werden.

 Importdatei Beispiel 3a.csv

Kunde;Artikel;Einheit;Menge
K200006;Artikel 1;Stk;5
P200000;Artikel 2;Stk;-17
D200000;Artikel 2;Stk;30
 

 Makro Beispiel 3a

// ==============================================
// Beschreibung : AVE-Makro-Muster - Beispiel 3a
// ==============================================

KdNr := BMD_VARIMPORT_FIELD('MCU_AVE_AUFTRAGGEB_KNR'); //ExtCSVDatenfeld
KdNr := BMD_COPY(lValue,2,6); //Copy
BMD_SET_IMPORT_FIELD('MCU_AVE_AUFTRAGGEB_KNR',KdNr); //SetExtCSVWert

result := True;
Hinweis 
Hinweis.png
Bei der Aktion nach Lesen muss für das Auslesen eines Wertes statt der Model-Funktion die Funktion BMD_VARIMPORT_FIELD verwendet werden, fürs Setzen eines geänderten Wertes die Funktion BMD_SET_IMPORT_FIELD.

 Anmerkungen zur Umsetzung Import Beispiel 3a

Die Feldauswahl beim Standard CSV-Import ist so einzustellen, dass die Spalten lt. Datei mit den Spaltenüberschriften lt. NTCS übereinstimmen.
 
1308577475000008870.png
 
Am Register Erweitert ist das Makro unter "Makro nach Lesen" zu hinterlegen.
 
1308577475000008870_0.png
 
Ohne das hinterlegte Makro wäre der Import der Daten so nicht möglich, da in der NTCS die Kundennummer numerisch ist, aber ein alphanumerischer Wert in der Importdatei geliefert wird. Nach dem Lesen des Datensatzes wird durch das Makro die Kundennummer in einen numerischen Wert überführt und dadurch kann die Kundennummer dann in der NTCS erfolgreich validiert werden.
 

 Daten in AVE nach Import Beispiel 3a 

Nach dem Import sind nur die Datensätze mit der korrekten numerischen Kundennummer in der Auftragsvoerfassung ersichtlich.
 
1308577492000008870.png
 
Hinweis 
Hinweis.png
Die alphanumerische Kundennummer lt. Importfile ist in diesem Fall nicht in der NTCS ersichtlich, da der importierte Wert während des Importes verändert wurde.

Ist gewünscht, dass auch der ursprüngliche alphanumerische Wert in der NTCS ersichtlich ist, dann muss der ursprüngliche Wert in ein Freifeld importiert werden, sieh dazu Makro-Beispiel 4.
 
  

 Standard CSV-Import / Funktion CSV Import Aufträge - Makro vor Schreiben (Makro-Beispiel 4)

Makro bei Auswahl Importdatei Reg. Erweitert →  Makro vor Schreiben
 
Beim Standard CSV-Import und der Funktion CSV Import Aufträge kann beim CSV-Import ein Makro vor Schreiben hinterlegt werden. So können die Daten bereits während des Import angepasst werden. Nach dem Import sind die bereits geänderten Daten in der Aufragsvorerfassung ersichtlich.
 
Beispiel 5: Makro vor Schreiben bei Standard-Import Textdatei - Anpassung Daten während Import
 
Importdatei: Beispiel 4.csv
 
Anforderung:
  • Setzen des Erfassungskennzeichen in Abhängigkeit der Verkaufsart
  • Feld Erf-Kz nach folgender Logik setzen:
    • Freifeld Kopf 08 = Diensleistung →  DLR
    • Freifeld Kopf 08 = Verkauf →  AUF
    • Freifeld Kopf 08 = Rücksendung →  AOR
  • Kunde: erste Ziffer von 8 auf 2 ändern, d.h. aus 800000 wird 200000, aus 800006 wird 200006


 Importdatei Beispiel 4.csv

Verkaufsart;Kunde;Artikel;Einheit;Menge
Dienstleistung;800006;Artikel 1;Stk;5
Rücksendung;800000;Artikel 2;Stk;-17
Verkauf;800000;Artikel 3;Stk;3
Verkauf;800000;Artikel 2;Stk;30
 

 Makro Beispiel 4

// ==============================================
// Beschreibung : AVE-Makro-Muster - Beispiel 4
// ==============================================

lPosModel := MacroObject.CreateMacroModel('TBMDMDAuftragsVorErfassungMgr');

// Werte von Freifeld Kopf 08 und Freifeld Kopf 04 laden
lArt := lPosModel.GetValue('MCA_AVE_AUFTRKOPF_FREIFELD8');
KdNr := BMD_TEXTTONUMDEF(lPosModel.GetValue('MCA_AVE_AUFTRKOPF_FREIFELD4'));

// Erfassungskennzeichen in Abhängigkeit von Werte Freifeld Kopf 08 setzten
if (lArt = 'Dienstleistung') then begin
 lPosModel.SetValue('MCA_AVE_ERZ_ERFASSUNGSKZ','DLR'); //SetValue
end;
if (lArt = 'Verkauf') then begin 
 lPosModel.SetValue('MCA_AVE_ERZ_ERFASSUNGSKZ','AUF'); //SetValue
end;
if (lArt = 'Rücksendung') then begin 
 lPosModel.SetValue('MCA_AVE_ERZ_ERFASSUNGSKZ','AOR'); //SetValue
end;

// Kundennummer in Abhängigkeit von Freifeld Kopf 04 berechnen und sezten
KdNr_neu := KdNr - 600000;
lPosModel.SetValue('MCU_AVE_AUFTRAGGEB_KNR',KdNr_neu);

// Rückgabe, dass Datensatz in AVE übernommen/gespeichert werden kann
Result := true;

 Anmerkungen zur Umsetzung Import Beispiel 4

Die Feldauswahl beim CSV-Import ist so einzustellen, dass die Verkaufsart ins Freifeld Kopf 08 und die Kundennummer ins Freifeld Kopf 04 importiert wird.
 
1301487955000017240_3.png
 
Am Register Erweitert ist das Makro unter "Makro vor Schreiben" zu hinterlegen.
 
1301487955000017240_4.png
 
Beim Import werden die Werte der Felder Freifeld Kopf 08 und Freifeld Kopf 04 vom Makro ausgelesen und die Werte für die Felder Erf-kz und Kunde entsprechend gesetzt.
 

 Daten in AVE nach Import Beispiel 4

Nach dem Import sind die Felder Erf-Kz und Kunde bereits befüllt. Die Werte aus der Importdatei bleiben in Freifeldern für Kontrollzwecke erhalten.
 
1301488668000117240_0.png

 Funktion "Import Externe Auftragsdaten BMD 5.5"

Im Kapitel Import Externe Auftragsdaten BMD 5.5 ist der Import von Daten aus der BMD 5.5. dargestellt.
 
Im Dialogfenster Import Externe Auftragsdaten BMD 5.5. kann für den Import ein Makro hinterlegt werden. Über dieses Makro kann eine Konvertierung von Werten beim Import erfolgen. Ein Beispiel ist im Kapitel Konvertierung von Werten beim Import dargestellt.
 

 Makros bei Auftragsanlage

 Aktionsmakro zur Funktion Prüfung Datensatz vor Aufträge erstellen (Makro Beispiel 5)

Auftragsvorerfassung → Extras → Makros → Aktionsmakros → Prüfung Datensatz vor Aufträge erstellen
 
Diese Makro wird bei der Aktion "Aufträge erstellen“ in der Auftragsvorerfassung ausgeführt. Das Makro wird je Datensatz 1 x aufgerufen. Je nach gewältem Startzeitpunkt (Vor Beginn der Aktion, Vor Ende der Aktion) wird das Makro vor oder nach der Standardprüfung des Datensatzes gestartet.
 
  • Bei Result := true wird der Datensatz in den Auftrag übernommen, sofern die Standardprüfung erfolgreich war.
  • Bei Result := false entsteht ein Notizeintrag:
    "* Das Makro [ Vor Begin der Aktion (37067) Auftragsvorerfassung-Prüfung Datensatz vor Aufträge erstellen ] hat einen Fehler gemeldet!"
Achtung! 
Achtung.png
Werden zwingende Felder für die Auftragserstellung erst durch das Makro befüllt, zB das Erfassungskennzeichen, dann muss das Makro vor der Standardprüfung mit "Vor Beginn der Aktion" gestartet werden. Die Auftragserstellung würde mit Start des Makros "Vor Ende der Aktion" aufgrund eines unvollständigen Datensatzes durch die Standardprüfung abgebrochen werden.
 
 
Beispiel 5: Aktionsmakro zur Funktion Prüfung Datensatz vor Aufträge erstellen

 
Anforderung:
  • Es sollen nur Datensätze mit Erfkz "AOR" zu Aufträgen verarbeitet werden.
  • Vor der Verarbeitung soll das Erfassungskennzeichen "FAK" ersetzt werden.
  • Bei den Aufträgen mit abweichendem Erfkz soll der Grund für die Nicht-Verarbeitung in der Notiz des Datensatzes ersichtlich sein.

 Makro Beispiel 5

// ==============================================
// Beschreibung : AVE-Makro-Muster - Beispiel 5 
// ==============================================
 
lModel := MacroObject.CreateMacroModel('TBMDMDAuftragsVorErfassungMgr');
// Auslesen Werte Feld Erfassungskennzeichen
lErfKz := lModel.getValue('MCA_AVE_ERZ_ERFASSUNGSKZ');

// Setzen Werte Feld Erfkz = AOR, dann Feld Erfkz auf FAK setzen
if(lErfKz = 'AOR') then begin
 lModel.setValue('MCA_AVE_ERZ_ERFASSUNGSKZ','FAK'); 
 Result := true;
end;
else begin
 Result := false;
 lModel.SetPostItText('Die Auftragsposition wurde nicht verarbeitet, da als Erfassungskennzeichen nicht AOR gesetzt ist.');
end;

 Fehlerhafte Daten nach Aufträge erstellen in Auftragsvorerfassung

Nach Ausführung der Funktion "Aufträge erstellen" sind die korrekten Datensätze verschwunden, die erstellten Aufträge bzw. Auftragspositionen sind in den Aufträgen ersichtlich. In der Auftragsvorerfassung verbleiben die fehlerhaften Datensätze. In der Notiz ist der Grund dafür vermerkt.
 
1301848201000203170.png

 Aktionsmakro zur Funktion Aufträge erstellen (Makro Beispiel 6)

Auftragsvorerfassung → Extras → Makros → Aktionsmakros → Aufträge erstellen
 
Das Aktionsmakro zur Funktion "Aufträge erstellen" wird, im Gegensatz zum Aktionsmakro zur Funktion Prüfung Datensatz vor Aufträge erstellen, nur einmal je Funktionsaufruf (und nicht 1 x je Datensatz) ausgeführt.
 
An dieser Stelle kann ein Aktionsmakro mit Startzeitpunkt "Vor Beginn der Aktion" zur Befüllung von Auftragskopf- und Auftragspositionsfelder mit bestimmten Werten, auch in Abhängigkeit von anderen Feldwerten, Verwendung finden (vgl. Makro Beispiel 2).
 
Liefert das Makro mit Startzeitpunkt "Vor/Nach Beginn der Aktion" als Result den Wert false dann wird die Funktion abgebrochen und es wird kein Auftrag erstellt.
 
Mit Startzeitpunkt "Nach Ende der Aktion" können für den Anwender sinnvolle Hinweismeldungen ausgegeben werden.
 
Beispiel 6: Aktionsmakro zur Funktion Aufträge erstellen (Startzeitpunkt "Nach Ende der Aktion")
 
Anforderung:
  • Befinden sich nach Durchführung der Funktion Aufträge erstellen noch Datensätze in der Auftragsvorerfassung, so soll dem Anwender eine Meldung ausgegeben werden.
 

 Makro Beispiel 6

// ==============================================
// Beschreibung : AVE-Makro-Muster - Beispiel 6
// ==============================================
 
lModel := MacroObject.CreateMacroModel('1');
lquery := lModel.GetModelQuery(); //GetModelQuery
Anzahl := lquery.recordcount();

if (Anzahl > 0) then begin
BMD_SHOWMESSAGE('Nach der Auftragserstellung befinden sich noch '+BMD_FORMATNum('#',Anzahl)+' Datensätze in der Auftragsvorerfassung.
\n Bitte kontrollieren Sie diese Datensätze auf Vollständigkeit!'); //ShowMessage

end;

 Meldung Makro Beispiel 6

Befinden Sich nach der Auftragserstellung noch Datensätze in der Auftragsvorerfassung, so gibt das Makro eine Meldung aus.
 
238942421311102.png

 Aktionsmakros Erfassungskopf-Neu und Erfassungspositionen-Neu

Bei der (manuellen) Auftragsanlage gibt es auch die Möglichkeit Felder des Auftragskopfes bzw. der Auftragspositionen mittels Makro automatisch befüllen zu lassen.
 
In den Aufträgen kann dafür ein Aktionsmakro Erfassungskopf-Neu und/oder Erfassungspositionen-Neu hinterlegt werden, welches bei Neuanlage eines Auftragskopfes oder bei Neuanlage einer Auftragspostion ausgeführt wird. In den Aufträgen wird dazu ein Aktionsmakro für die Aktion Erfassungskopf-Neu (MCS_MDAUFTRAGSKOPFWWSMGR_NEW) und/oder Erfassungspositionen-Neu (MCS_MDERFASSPOSMGR_NEW) hinterlegt.
 
Es können Auftragsfelder mit bestimmten Werten, auch in Abhängigkeit von anderen Feldwerten, befüllt werden.
 
Ob ein solches im Auftragswesen hinterlegtes Makro neben der manuellen Neuanlage auch bei automatischer Auftragsanlage über die Auftragsvorerfassung ausgeführt werden soll wird über folgenden Parameter Auftragsvorerfassung gesteuert:
 
Warenwirtschaft → Stammdaten → Einstellungen → WWS Parameter → Auftragserfassung →  Auftragsvorerfassung (Kontrolle)
 
Definition, ob bei der Funktion "Aufträge erstellen" Aktionsmakros für die Neuanlage des Auftragskopf ausgeführt werden sollen.

0 - Nein: Definierte Aktionsmakros werden nicht berücksichtigt.

1 - Ja: Definierte Aktionsmakros werden ausgeführt.
Definition, ob bei der Funktion "Aufträge erstellen" Aktionsmakros für die Neuanlage der Erfassungsposition ausgeführt werden sollen.

0 - Nein: Definierte Aktionsmakros werden nicht berücksichtigt.

1 - Ja: Definierte Aktionsmakros werden ausgeführt.
 
 
Hinweis 
Hinweis.png
Bei der Erstellung von Aufträgen aus den AVE-Datensätzen wird eine neue Auftragsposition erstellt. Ist die Auftragsposition einem bereits vorhandenen Auftrag zugeordnet (über das Feld Auftrag Erf-Nr), wird kein neuer Auftragskopf angelegt.
 
 
Beispiel 7: Aktionsmakro Erfassungskopf-Neu:
 
Anforderung:
  • Bei Neuanlage eines Auftrages soll der Datenbesitzer Bearbeiten des Kunden auf den Auftragskopf übernommen werden.

 

 Makro Beispiel 7

// ==============================================
// Beschreibung : AVE-Makro-Muster - Beispiel 7
// ==============================================

//aktuelles Fenster als Objekt anlegen
lModel := MacroObject.CreateMacroModel('1');

//Hole Schlüsselfelder des Kunden
lFirmenNr := lModel.getValue('MCA_EFK_AUFTRAGGEBER_FIRMENNR');
lKunde := lModel.getValue('MCA_EFK_AUFTRAGGEBER_KLID');

if(lFirmenNr <> '') and (lKunde <> '') then begin

//hole die Datenbesitzergruppe die auf der Person hinterlegt ist 
lQuery := MacroObject.CreateMacroQuery('get');
lQuery.setSQLText(' SELECT PER_SHOW_DOG, PER_EDIT_DOG' + ' FROM BUERO.PER_PERSON ' + ' WHERE PER_FIRMENNR = :FirmenNr ' + ' AND PER_PERSONENID = :Klid ');

lQuery.setParamAsString('FirmenNr', lFirmenNr);
lQuery.setParamAsString('Klid', lKunde);

lQuery.Open(); lRecCnt := lQuery.RecordCount();

// Eintrag gefunden?
if(lRecCnt = 1) then begin
  // Setze die DOG des Kunden auf den Auftrag  
lDOGs := lQuery.getAsString('PER_SHOW_DOG');
lDOGe := lQuery.getAsString('PER_EDIT_DOG');
lModel.setValue('MCA_EFK_SHOW_DOG',lDOGs);
lModel.setValue('MCA_EFK_EDIT_DOG',lDOGe);   
end;

lQuery.Close();
end;
 

 Makros bei Auftragsimport/-anlage über MDE

Über die Mobile Datenerfassung können externe Daten aus einer CSV-Datei eingelesen, kontrolliert und verarbeitet werden.
 
Bei den MDE-Arten ist für den Auftragsimport die Verarbeitungsart Auftragsvorerfassung anzulegen. Hier wird der Verzeichnispfad, die Feldauswahl für den Import etc. hinterlegt.
 
Die Verarbeitung der importierten Daten aus der MDE zu Aufträgen erfolgt im Hintergrund über die Auftragsvorerfassung, jedoch scheinen diese Daten nicht in der Auftragsvorerfassung auf. Es erfolgt direkt die Erstellung der Aufträge aus den Daten der MDE. 
 
In der Mobilen Datenerfassung gibt es mehrere Möglichkeiten Makros zu hinterlegen:
  • Fenstermakros, die manuell vom Benutzer angestoßen werden können (vgl. Fenstermakros Auftragsvorerfassung)
  • Aktionsmakro bei Funktion "AutoImport starten" (zB kann hier ein Makro hinterlegt werden, welches bei Durchführung des Imports zuerst die Importdatei  in ein importierfähiges Format überführt, vgl. Bearbeiten Importdaten vor Import (Makro-Beispiel 1))
  • Aktionsmakro bei Funktion "Daten Kontrolle"
  • Aktionsmakro bei Funktion "Verarbeitung starten"
 

1097582601000001570.png