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
|
|
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
|
|
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 |
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.
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
Kunde;Artikel;Einheit;Menge
800006;Artikel 1;Stk;5
800000;Artikel 2;Stk;17
//==============================================
// 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;
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.
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
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
|
|
Der Import der 1. Spalte "Verkaufsart" erfolgt ins Freifeld Kopf 08. |
// ==============================================
// 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!');
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).
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
|
|
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!
|
|
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
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;
// ==============================================
// 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
|
|
Im Makro nach Lesen stehen die Felder lt. Import-Vorschau zur Verfügung. Diese können mit der Funktion BMD_VARIMPORT_FIELD gelesen werden. |
Die Feldauswahl beim Standard CSV-Import ist so einzustellen, dass die Spalten lt. Datei mit den Spaltenüberschriften lt. NTCS übereinstimmen.
Am Register Erweitert ist das Makro unter "Makro nach Lesen" zu hinterlegen.
Beim Import werden die Datenzeilen 3 (Wert 0) und 5 (kein Wert) übersprungen.
Nach dem Import sind nur die Datensätze mit einer übergebenen Menge ungleich 0 in der Auftragsvoerfassung ersichtlich.
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.
Kunde;Artikel;Einheit;Menge
K200006;Artikel 1;Stk;5
P200000;Artikel 2;Stk;-17
D200000;Artikel 2;Stk;30
// ==============================================
// 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
|
|
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. |
Die Feldauswahl beim Standard CSV-Import ist so einzustellen, dass die Spalten lt. Datei mit den Spaltenüberschriften lt. NTCS übereinstimmen.
Am Register Erweitert ist das Makro unter "Makro nach Lesen" zu hinterlegen.
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.
Nach dem Import sind nur die Datensätze mit der korrekten numerischen Kundennummer in der Auftragsvoerfassung ersichtlich.
Hinweis
|
|
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. |
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
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
// ==============================================
// 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;
Die Feldauswahl beim CSV-Import ist so einzustellen, dass die Verkaufsart ins Freifeld Kopf 08 und die Kundennummer ins Freifeld Kopf 04 importiert wird.
Am Register Erweitert ist das Makro unter "Makro vor Schreiben" zu hinterlegen.
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.
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.

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!
|
|
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.
// ==============================================
// 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;
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.

Auftragsvorerfassung → Extras → Makros → Aktionsmakros → Aufträge erstellen
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.
// ==============================================
// 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;
Befinden Sich nach der Auftragserstellung noch Datensätze in der Auftragsvorerfassung, so gibt das Makro eine Meldung aus.

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
|
|
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.
// ==============================================
// 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;
Ü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"