Grundlegende Informationen zum Paket Produktionsplanung und -steuerung finden Sie unter Erste Schritte PPS.![]() | Hier finden Sie einen Makrotext, wie die Archivierung einer Produktionsliste zum Lieferanten "Eigenproduktion" ausgelöst werden kann. // Aufruf Archivierung je Produktionsliste Params := '(* Drucker *):102410=Microsoft XPS Document Writer,' + '(* Firma: *):382071=472,' + '(* Planungsgruppe von: *):382004=' + PLos_Nr + ',' + '(* Planungsgruppe bis: *):382005=' + PLos_Nr + ',' + '(* Sortierung: *):382019=1,' + '(* Produktionsdaten fixieren: *):382015=0,' + '(* Standard *):102400=0,' + '(* Report *):102401=5378,' + '(* Art *):102412=2'+ // Ersetzen durch Firmennummer, in welcher der Lieferant "Eigenproduktion" geführt ist 'PPS_DC_FIRMENNR=1,' + 'PPS_DC_PER_FIRMENNR=1,'+ // Ersetzen durch Personen_ID, in welcher der Lieferant "Eigenproduktion" geführt ist, diese ist am Lieferantenstamm einsehbar 'PPS_DC_PER_ID=KL2000302001,'+ // Eindeutige Nummer (ID) der Druckoptionen, in welcher die Archivierung ausgelöst wird // Die Druckoption muss zuvor manuell in den Druckoptionen angelegt werden 'PPS_DC_OPT_ID=493572861280481,'+// Pfad-Generierungsmethode: // 0 = keine Erweiterung // 1 = ArtikelNr / P.-Los x 1000 + KombiNr MOD 1000 // 2 = P.-Los // 3 = P.-Gruppe // 4 = ArtikelSachMerkmal04 / P.-Los x 1000 + KombiNr MOD 1000 'PPS_DC_OPT_PATHGENMODE = 4,'+ // PRINTTODIALOG = Hintergrundaufbereitung, Druckerauswahl wird geöffnet // PRINTTODEFAULT = Druck komplett im Hintergrund, auf Windows-Standarddrucker 'PPS_DC_OPENMODE=PRINTTODEFAULT'; // Aufruf des Drucks BMD_STARTPRINTFUNCTION('MCS_FRMPRODPAP_CREATE', Params); |
![]() |
Für den Artikel 4711 soll die Menge 500.000 g in kg umgeschlüsselt werden.
Result := BMD_GET_QUANTITY_IN_UNIT(1, '4711', 500000, 'g', 'kg'); Liefert den Wert: 500000 (g). |
![]() | Beispiel 1: BMD_SHOWMESSAGE( 'Die Aufstellung für 3000.2 kg in der Einheiten-Tabelle 152 lautet: ' + BMD_GET_UNITASSEMBLY(50 ,152, 3000.2, 'kg') ); Liefert den Text: "Die Aufstellung für 3000.2 kg in der Einheiten-Tabelle 152 lautet: 3 t 0,2 kg". Beispiel 2: BMD_SHOWMESSAGE( 'Die Einheitenaufstellung für 981.9 kg lautet für Artikel "Erdbeeren": ' + BMD_GET_ARTICLE_UNITASSEMBLY(1,'Erdbeeren', 981.9, 'kg') ); Liefert den Text: "Die Einheitenaufstellung für 981.9 kg lautet für Artikel "Erdbeeren": 1 Container 181,9 kg". |
Wert-ID | Nur in 5.5 (J/N) | Beschreibung |
| OVERALL-STOCK | Lagermenge | |
AVAILABLE-STOCK | verfügbare Lagermenge | |
ACQUISITION_DATE | J | Zugangsdatum |
STOCK-TAKING-QUANTITY | J | Inventurmenge |
RECEIVED_QUANTITY | J | Zugangsmenge |
ISSUED-QUANTITY | J | Abgangsmenge |
| CORRECTED-QUANTITY | J | Korrekturmenge |
| PLANNED-LEAVING | geplanter Abgang | |
PLANNED-AQUISITION | geplanter Zugang | |
AVERAGE-PRICE | J | Durchschnittspreis |
COST-PRICE | J | Einstandspreis |
| Parameter | Beschreibung |
| Firma | Firma, in der die Chargenmischung durchgeführt werden soll und in der sich das Lager befindet. |
| Lager | Lagerort, der gemischt werden soll. |
| Lagerplatz | Lagerplatz, der gemischt werden soll. |
| Artikelnummer | Artikelnummer, die für das Ergebnis (= Erzeugnis) der Mischung verwendet werden soll . |
Einheit | Einheit, in welche die Einzelmengen umgerechnet werden. Die Summe der Einzelmengen wird dann als Menge für die Produktzubuchung verwendet. |
![]() | // ============================================== // Erstelldatum : 16.03.2020 13:42:21 // Ersteller : BMDWWS#1 // Eingerichtet von/am : // Beschreibung : Fenstermakro im Fenster Produkte pro Produktionslos (MCS_MDPRODFPMGR_CREATE) // ============================================== lProdukt := MacroObject.CreateMacroModel('1'); //CreateMacroModel lFirmenNr := lProdukt.GetValue('MCA_PCP_FIRMENNR'); lArtikelNr := lProdukt.GetValue('MCA_PCP_ARL_ARTIKELNR'); lLager := lProdukt.GetValue('MCA_PCP_LAGERNR'); lLagerpl := lProdukt.GetValue('MCA_PCP_LAGERPLATZ'); if (lLager <> '') AND (lLagerpl <> '') then begin lAbfragetext := 'Soll die Chargenmischung für Lager ' + BMD_FORMATNUM('0', lLager) + BMD_CONCAT(', Lagerplatz ', lLagerpl) + ' ausgeführt werden? \n\n' + BMD_CONCAT('Es wird Artikel ', lArtikelNr) + ' als Erzeugnis der Mischung zugebucht.'; lStartChgMix := BMD_TEXTTONUMDEF(BMD_ASKVALUEBOOL(lAbfragetext,'Chargenmischung starten')) if (lStartChgMix = 1) then begin result := BMD_PLC_MIX(lFirmenNr, lLager, lLagerpl, lArtikelNr, 'kg'); end; else begin BMD_SHOWMESSAGE('Chargenmischung abgebrochen.'); end; end; else begin BMD_SHOWMESSAGE('Es konnte kein gültiger Lagerplatz ermittelt werden.'); end; Ausgangszustand am Lager: ![]() Aufruf Chargenmischung: ![]() Meldungsausgabe nach der Mischung: ![]() Es wurde ein neues Produktionslos (ohne Bezug zu einem Auftrag, dh. die Felder "Erf.Kz." und "Erf.Nr" sind leer) angelegt: → Als Materialeinsatz wurden die Lagerkonten vom Tank 1 verwendet. ![]() → Als Produkt wurde die Nougatfülle zugebucht: ![]() |
| Wert | Beschreibung |
| MCA_PCP_EP | Einstandspreis des Produkts |
| MCA_PCP_FERT_EP | Fertigungseinstandspreis des Produkts |
| MCA_PCP_SSCC | SSCC des Produkts |
| MCA_PCP_WARENEINGKOPFID | Verweis auf einen Wareneingangskopf |
MCA_PCP_LEISTUNGSDATUM | Leistungsdatum des Produkts |
MCA_PCP_QTY_REG_DATUM | Buchungsdatum des Produkts |
MCA_PCP_MIT_FIRMENNR | Firmennummer des Mitarbeiters |
MCA_PCP_MITARBEITERID | Mitarbeiter-ID, die am Produkt gespeichert werden soll |
MCA_AID_STATUS_QUALI | Qualitätsstatus des Produkts |
RECORD_MATERIAL_CONSUMPTION | Retrograde Materialrückmeldung für das erzeugte Produkt wird gebucht, Achtung nur mit Wert "1" |
sämtliche Freifelder des Produkts - z. B. MCA_PCP_FREIFELDA01_120 | Freifelder 1 bis 5 des Produkts |
TRANSFERMATERIAL_TO_HIGHERLEVEL | Materialweitergabe (autom. Abbuchung) an das übergeordnete Produktionslos kann mit diesem Parameter unterbunden werden. Achtung: Nur mit Wert <> "1", z. B. "0". Ist der Parameter nicht in den Zusatzdaten vorhanden, erfolgt die Materialweitergabe und automatische Abbuchung. Gibt es kein übergeordnetes Produktionslos, ist der Parameter nicht relevant. |
![]() | // ============================================== // Erstelldatum des Ausweises : 19.05.2017 08:49 // Ersteller : BMDWWS#1 // Beschreibung : Übergabe Zusatzdaten für Produktanlage // ============================================== Zusatzdaten := 'MCA_PCP_QTY_REG_DATUM=19.05.2017;MCA_PCP_FREIFELDA01_120=via Makro angelegt'; result := BMD_PCP_INSERT(1, 'nb012', 342440848000208, 1, 'Stk', 1, '', '2017-000354', Zusatzdaten); |
![]() | // ============================================== // Erstelldatum des Ausweises : 19.05.2017 08:49 // Ersteller : BMDWWS#1 // Beschreibung : Materialeinsatz buchen // ============================================== lPLosId := MCA_PLC_PCHARGENID; BMD_EPS_INSERT(1, 'dru007', lPLosId, 1, 'Stk', 2, '', '', ''); // Hinzufügen einer erweiterten Materialeinsatzzeile: // Übergabe mit Farbe, Größe BMD_EPS_INSERT_EXT ( lFirma, lArtikelFirma, lArtikelNr, lPLosId, lMenge, lEh, lLagerFirma, lLagerNr, lLagerPl, lChargenFirma, lChargenNr, lFarbenFirma, lFarbe, lGroessenFirma, lGroesse ); |
![]() | // ============================================== // Erstelldatum : 14.06.2018 09:34:48 // Ersteller : BMDWWS#1 // Eingerichtet von/am : // Beschreibung : Fenstermakro im Fenster Produktionslose (MCS_MDPPSPRODCHARGEMGR_LIST_CREATE) // ============================================== lFirmenNr := MCA_PLC_FIRMENNR(); lPLosId := MCA_PLC_PCHARGENID(); lLagerNr := 1; lLagerPl := ''; lArtikelNr := 'Roh1'; lFarbenNr := -1; lGroessenKBez := ''; lProzessNr := ''; lQStatus := 21; lAIDMerkmal1 := ''; lAIDMerkmal2 := ''; lChargenNr := '' lSerienNr := ''; lMenge := 10; lEinheit := 'kg'; lSSCC := ''; lVerarbeiter := 'BMD'; lKommissionierer := 'BMD'; lVerarbeitDatum := '01.06.2018'; // BMD_DATE(); lKommissDatum := '01.06.2018'; // BMD_DATE(); lMaterial := WwsPpsMacroClasses.CreateMaterialConsumption(); // Erzeugt ein Objekt zur Nacherfassung von Materialeinsätzen // alles bisher gesetzte löschen (eig. nur bei einem weiteren Aufruf nötig) lMaterial.ClearKeys(); // optional: Informationen zum Lager lMaterial.SetStockKey(lFirmenNr, lLagerNr, lLagerPl); // LagerKey setzen lMaterial.SetAccountingText('Buchungstext für Stkl-Position und Lagerbuchung'); // Buchungstext setzen // optional: AID if lFarbenNr <> '' then lMaterial.SetArticleColorKey(lFirmenNr, lFarbenNr); // Farbe setzen if lGroessenKBez <> '' then lMaterial.SetArticleSizeKey(lFirmenNr, lGroessenKBez); // Groesse setzen if lProzessNr <> '' then lMaterial.SetArticleProcessKey(lFirmenNr, lProzessNr); // Prozess setzen if lQStatus <> '' then lMaterial.SetArticleQStatus(lQStatus); // Q.Status if (lAIDMerkmal1 <> '') OR (lAIDMerkmal2 <> '') then begin lMaterial.SetArticleAttributes(lAIDMerkmal1, lAIDMerkmal2); // M1+M2 end; // optional: Alternative zum Setzen der AID-Informationen {lMaterial.SetArticleIdentification( lFirmenNr, lFarbenNr, // Farbe lFirmenNr, lGroessenKBez, // Groesse lFirmenNr, lProzessNr, // Prozess lQStatus, // Q.Status lAIDMerkmal1, lAIDMerkmal2);} // optional: Charge lMaterial.SetLotKey(lFirmenNr, lChargenNr); // optional: Seriennummer lMaterial.SetSerialKey(lFirmenNr, lSerienNr); // optional: SSCC lMaterial.SetSSCC(lSSCC); // optional: Verarbeiter und Vorbereiter lMaterial.SetAssembleUser(lVerarbeiter); lMaterial.SetAssembleDate(lVerarbeitDatum); lMaterial.SetPreparationUser(lKommissionierer); lMaterial.SetPreparationDate(lKommissDatum); // Aufruf der Erzeugung/Rückmeldung, die folgenden Übergaben sind zwingend. // auf lOk wird TRUE/FALSE (1/0), je nach Erfolg der Methode zugewiesen lOk := lMaterial.RecordMaterialConsumption(lFirmenNr, lFirmenNr, lArtikelNr, lPLosId, lMenge, lEinheit); if lOk = 1 then begin // Liefert die zuletzt erzeugte EPSId, falls man damit weiterarbeiten möchte/muss lEpsId := lMaterial.GetLastRecordedPieceListId() BMD_SHOWMESSAGE(BMD_CONCAT('Buchung erfolgreich ausgeführt - gebuchte Stücklisten-Id: ', lEpsId ) ); end; |
Registrierungswert | Typ | Beschreibung |
NETTO | Float | |
| BRUTTO | Float | |
| TARA | Float | |
UNIT | String | spezifiziert die Mengeneinheit |
PROTOKOLL_REG_NR | String | kennzeichnet Registriernummer des Eichprotokolls der Waage |
TOOL | String | kennzeichnet eine WerkzeugId |
| TRANSPORTTYPE-1 | String | klassifiziert den Transporttyp 1 |
| QUANT.-TRANSPORTTYPE-1 | Integer | Anzahl Transporttypen 1 |
| TRANSPORTTYPE-2 | String | klassifiziert den Transporttyp 2 |
QUANT.-TRANSPORTTYPE-2 | Integer | Anzahl Transporttypen 2 |
PIECE | Float | Zweitmengenangabe |
CHARGE | Integer | Chargennummer |
SSCC | String | Nummer der Transporteinheit (Serial Shipping Container Code) |
![]() |
Beispiele für die übergebenen Parameter:
REGISTER_WEIGHT(
) |
Wert-ID | Beschreibung |
NETTO | Gibt das Nettogewicht nach einer Wiegung zurück. |
BRUTTO | Gibt das Bruttogewicht nach einer Wiegung zurück. |
TARA | Gibt das Taragewicht (aufgrund der Eingabe in BDE-Gewicht) zurück. |
UNIT | Bezeichnet die Maßeinheit, in der die Wiegung vorgenommen wird. |
STATUS | Liefert den augenblicklichen Waagenstatus zurück. Entweder 'stable' oder 'dynamic'. |
Wert-ID | Beschreibung |
TOOL | kennzeichnet eine WerkzeugId |
TOOL-UNIT | spezifiziert die Waageneinheit |
TRANSPORTTYPE-1 | klassifiziert den Transporttyp-1 |
QUANT.-TRANSPORTTYPE-1 | Anzahl - Transporttyp-1 |
TRANSPORTTYPE-2 | klassifiziert den Transporttyp-2 |
QUANT.-TRANSPORTTYPE-2 | Anzahl - Transporttyp-2 |
NUMBER-OF-WEIGHING | spezifiziert die Anzahl der automat. Wiegungen |
Wert-ID | Beschreibung |
COMMAND | Bezeichnet den letzten durchgeführten Befehl. |
COMMAND-PARAM | Beschreibt den Parameter für den letzten durchgeführten Befehl. |
STATUS | Beschreibt den Status der Befehlsausführung. |
ERROR | Liefert Fehlerbeschreibung, falls Befehlsausführung fehlgeschlagen ist |
Wert-ID | Beschreibung |
TRANSPORTTYP-NAME | Bezeichnung des Transporttyps, der durch <Werkzeug> identifiziert wird |
WIDTH | Breite der Transporttype |
HEIGHT | Höhe der Transporttype |
LENGTH | Länge der Transporttype |
MAX-WEIGHT | Höchsterlaubtes Gewicht, mit der die Transporttype beladen werden darf |
TARA | Taragewicht der Transporttype |
Rundungsmodus | Beschreibung |
ARITHMETIC | kaufmännisches Runden |
UP | Aufrunden |
DOWN | Abrunden |
![]() | Für den folgenden Einsatz wird die Funktion "Einlasten" aufgerufen: ![]() ![]() Ergebnis in der Zwischenablage: "DispatchFunction=pdfPlc;DispatchMode=5;DispatchDateType=pddNone;DispatchDate=44986;DispatchDateRev=-1; SingleVgElTyp=-1;DispatchRelative=pdrNone;ApplyOn=1;ConcatDate=False;Manual=False;DispatchCombined=False; ResetOverride=True;DispatchUnplaned=False;DispatchDateRel=0;DispatchDateRevRel=0;DispatchPpc=True; DispatchOp=True;SaveToExpected=False;ResetFixed=False;DispatchActive=True" Im Fenster "Einsätze" wurde dann dieses Fenstermakro erstellt, das dann im Anschluss für den ausgewählten Einsatz ausgeführt wird. Anmerkung: Unten wurde aus Gründen der einfacheren Lesbarkeit, die Definition der Einlastparameter auf mehrere Zeilen aufgeteilt. // ============================================== // MacroNo : 249544014346809 // Erstelldatum : 29.12.20XX // Ersteller : BMDWWS // Eingerichtet von/am : BMDWWS, 29.12.20XX // Beschreibung : Fenstermakro im Fenster Einsätze (MCS_FRMPEPEEAGMGR_CREATE) // ============================================== lDispatchParams := 'DispatchFunction=pdfSingle;DispatchMode=5;DispatchDateType=pddNone;'; lDispatchParams := lDispatchParams + 'DispatchDate=44986;DispatchDateRev=-1;SingleVgElTyp=-1;DispatchRelative=pdrVp; ApplyOn=0;'; lDispatchParams := lDispatchParams + 'ConcatDate=False;Manual=False;DispatchCombined=False;ResetOverride=True; DispatchUnplaned=False;'; lDispatchParams := lDispatchParams + 'DispatchDateRel=0;DispatchDateRevRel=0;DispatchPpc=True;DispatchOp=True; SaveToExpected=False;'; lDispatchParams := lDispatchParams + 'ResetFixed=False;DispatchActive=True'; lEinsatz := MacroObject.CreateMacroModel('TBMDMDPepEeAgMgr'); lVorgang := WwsPpsMacroClasses.CreateVorgang2(lEinsatz); lVorgang.DsDispatch(lDispatchParams); Das Ergebnis am Einsatz nach Ausführen des Makros: ![]() "SAnfang-Tg" sowie "SEnde-Tg" wurden durch die Einlastung neu bestimmt. |
![]() | Mit dem Ausdruck eines PPS-Produktetiketts soll der Unterschied verdeutlicht werden. Auf Seite 1 des Produktetiketts beginnt der PPS-Zähler bereits bei 3, obwohl bei beiden als Startwert 0 angenommen wurde. ![]() Makrotexte der beiden Zähler: // für VAR1 var1 := BMD_TEXTTONUMDEF(var1) + 1; result := var1; // für PPS-Zähler BMD_C_X_ADD('zaehler','1'); result := BMD_C_X_R('zaehler','1'); |
![]() | Siehe auch: |