PATEDI NT.Bestellungsexport: Unterschied zwischen den Versionen
Schild (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{DISPLAYTITLE:Export von Bestellungen über PATEDI_NT|noerror}}“) |
Schild (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
{{DISPLAYTITLE:Export von Bestellungen über PATEDI_NT|noerror}} | {{DISPLAYTITLE:Export von Bestellungen über PATEDI_NT|noerror}} | ||
+ | |||
+ | |||
+ | |||
+ | siehe auch [Bestellungen_aus_Auftraegen] | ||
+ | == Adressen == | ||
+ | Folgendes wird exportiert: | ||
+ | |||
+ | BY (Buyer): Über B_BESTHEAD.FIRMNR wird die dazugehörige Firma ermittelt und über B_FIRMA.KNDNR dann der Buyer (ILN vom Kundenstamm wird als E_ORDER_ADDRESS.ILN exportiert) | ||
+ | SU (Supplier): Über B_BESTHEAD.LIEFNR wird der dazugehörige Lieferant ermittelt. B_LIEFERANT.ILN wird zu E_ORDER_ADDRESS.ILN | ||
+ | DP (Delivery Partner): Über B_BESTHEAD.KNDNR wird der Delivery Partner ermittelt (B_KNDSTAMM.KNDNR wird zur E_ORDER_ADDRESS.ILN) | ||
+ | DA (Delivery Address): Die Addressdaten aus B_BESTHEAD (E_ORDER_ADDRESS.ILN => Gleich ILN wie für DP) | ||
+ | BA (Broker Address): Diese wird nur geschrieben wenn ein Auftrag zur Bestellung gefunden wird (über B_BESTHEAD.VONAUFTRNR). Wenn ein Auftrag gefunden wird, wird die Adresse von B_AUFTRAG.RKNDNR ermittelt. B_KNDSTAMM.ILNDATENEMPF wird als E_ORDER_ADDRESS.ILN exportiert. | ||
+ | |||
+ | AW: pac Bestellungsexport zu Volmary 7. September 2017, 10:11 Uhr | ||
+ | Von Posch Daniel | ||
+ | |||
+ | == SQL == | ||
+ | Es werden alle Bestellungen exportiert wo folgendes zutrifft: | ||
+ | String stmnt = "SELECT DISTINCT " + selectColumns + " FROM B_BESTHEAD" + | ||
+ | " LEFT OUTER JOIN B_BESTCOL ON B_BESTHEAD.FIRMNR = B_BESTCOL.FIRMNR AND B_BESTHEAD.BESTNR = B_BESTCOL.BESTNR " + | ||
+ | " WHERE B_BESTHEAD.LIEFNR = :LIEFNR " + | ||
+ | " AND ((B_BESTHEAD.EDISTATUS !='E' OR B_BESTHEAD.EDISTATUS IS NULL) OR B_BESTCOL.EXPORTUP ='+')" + | ||
+ | " AND B_BESTCOL.STATUS IN ('BE','ST') AND B_BESTCOL.LFDATUM >= :LFDATUM"; | ||
+ | |||
+ | |||
+ | Es gibt einen Trigger welcher EXPORTUP auf + setzen. Genaueres dazu kann auch denk ich Roland oder Astrid sagen. | ||
+ | |||
+ | |||
+ | == Voraussetzungen == | ||
+ | === Firma, aus der exportiert wird === | ||
+ | Deren Kunde braucht eine ILN | ||
+ | Und der Kunde braucht einen Eintrag für die Firma, aus der exportiert wer den soll | ||
+ | === Lieferant, für den exportiert wird === | ||
+ | Export: ILN, Exporttyp Bestellungen = PO_NT_EXP | ||
+ | Sonstiges: Bestellungen automatisch exportieren | ||
+ | Sonstiges: Bestellungen automatisch erzeugen, wenn gewünscht | ||
+ | === ExchangeGate > Jobs === | ||
+ | Reference: Liefnr (nicht ILN?) | ||
+ | Max. entries per file: 1 | ||
+ | |||
+ | === Prozedur PAT_WRITE_TRANSFER wird u.U benötigt === | ||
+ | <pre> | ||
+ | create or replace | ||
+ | PROCEDURE PAT_WRITE_TRANSFER | ||
+ | /* | ||
+ | | CONCEPT Data Systems GmbH (C) 2011 | ||
+ | | PAT_WRITE_TRANSFER - Die Procedure erzeugt Eintraege im PAT Transfer. | ||
+ | | Author: HB | ||
+ | | Stand: 03.01.2012 Version 1.0 | ||
+ | */ | ||
+ | ( | ||
+ | sTBL_Name IN VARCHAR2, | ||
+ | sDML IN VARCHAR2, | ||
+ | sPK IN VARCHAR2 | ||
+ | ) | ||
+ | AS | ||
+ | ttransfer TRANSFER%ROWTYPE; | ||
+ | |||
+ | CURSOR sFIRMNR_CUR is | ||
+ | select firmnr from b_firma where fl_transfer='J'; | ||
+ | |||
+ | sFIRMNR_REC sFIRMNR_CUR%ROWTYPE; | ||
+ | |||
+ | sTR_FILIALE1_org transfer.tr_filiale1%TYPE; | ||
+ | sTR_FILIALE1 transfer.tr_filiale1%TYPE; | ||
+ | sPosition number(3); | ||
+ | i number(3) := 0; | ||
+ | nBETRIEB varchar2(3); | ||
+ | nZENTRALE varchar2(3); | ||
+ | |||
+ | --Declare for exception block | ||
+ | Ins_Timest b_log.timest%TYPE; | ||
+ | err_msg b_log.text%TYPE; | ||
+ | e_loglevel VARCHAR2(4) := '30'; | ||
+ | |||
+ | BEGIN | ||
+ | select value into nBETRIEB from settings where switch='BETRIEB' and workstation='DEFAULT'; | ||
+ | select value into nZENTRALE from settings where switch='FIRMNR_ZENTRALE' and workstation='DEFAULT'; | ||
+ | sTR_FILIALE1_org :='++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'; | ||
+ | --Get Timest | ||
+ | PAT_TIME.GetTimest (ttransfer.TIMEST); | ||
+ | |||
+ | IF nBETRIEB = nZENTRALE THEN | ||
+ | |||
+ | ttransfer.SRC := nZENTRALE; | ||
+ | ttransfer.DEST := nZENTRALE; | ||
+ | |||
+ | OPEN sFIRMNR_CUR; | ||
+ | LOOP | ||
+ | FETCH sFIRMNR_CUR into sFIRMNR_REC; | ||
+ | EXIT WHEN sFIRMNR_CUR%NOTFOUND; | ||
+ | sPosition := to_number(sfirmnr_rec.firmnr); | ||
+ | IF i < 1 and sfirmnr_rec.firmnr != to_number(nBETRIEB) THEN | ||
+ | SELECT REGEXP_REPLACE(sTR_FILIALE1_org,'\+','-',sPosition,1) into sTR_FILIALE1 from dual; | ||
+ | ELSIF i < 1 and sfirmnr_rec.firmnr = to_number(nBETRIEB) THEN | ||
+ | sTR_FILIALE1 := sTR_FILIALE1_org; | ||
+ | ELSIF i >= 1 and sfirmnr_rec.firmnr != to_number(nBETRIEB) THEN | ||
+ | SELECT REGEXP_REPLACE(sTR_FILIALE1,'\+','-',sPosition,1) into sTR_FILIALE1 from dual; | ||
+ | END IF; | ||
+ | i := i +1; | ||
+ | END LOOP; | ||
+ | CLOSE sFIRMNR_CUR; | ||
+ | |||
+ | ELSE | ||
+ | ttransfer.SRC := nBETRIEB; | ||
+ | ttransfer.DEST := nZENTRALE; | ||
+ | |||
+ | SELECT REGEXP_REPLACE(sTR_FILIALE1_org,'\+','-',to_char(nZENTRALE),1) into sTR_FILIALE1 from dual; | ||
+ | END IF; | ||
+ | |||
+ | ttransfer.TBL := sTBL_Name; | ||
+ | ttransfer.TRANSFLAG := '-'; | ||
+ | ttransfer.TRANSTIMEST := ttransfer.TIMEST; | ||
+ | ttransfer.TR_FILIALE1_IDX := '-'; | ||
+ | ttransfer.TR_VERTRETER1_IDX := '-'; | ||
+ | ttransfer.TR_VERTRETER1 := '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'; | ||
+ | ttransfer.TR_FILIALE1 := sTR_FILIALE1; | ||
+ | ttransfer.ACTION := sDML; | ||
+ | ttransfer.IDX := sPK; | ||
+ | |||
+ | |||
+ | INSERT INTO TRANSFER | ||
+ | (TIMEST, SRC, DEST, TBL, IDX, ACTION, TRANSFLAG, TRANSTIMEST, | ||
+ | TR_FILIALE1_IDX, TR_VERTRETER1_IDX, TR_FILIALE1, TR_VERTRETER1) | ||
+ | VALUES | ||
+ | (ttransfer.TIMEST, ttransfer.SRC, ttransfer.DEST, ttransfer.TBL, ttransfer.IDX, | ||
+ | ttransfer.ACTION, ttransfer.TRANSFLAG, ttransfer.TRANSTIMEST, | ||
+ | ttransfer.TR_FILIALE1_IDX, ttransfer.TR_VERTRETER1_IDX, ttransfer.TR_FILIALE1, | ||
+ | ttransfer.TR_VERTRETER1); | ||
+ | |||
+ | |||
+ | EXCEPTION | ||
+ | |||
+ | when OTHERS then | ||
+ | err_msg := sqlerrm; | ||
+ | --Get timestamp | ||
+ | PAT_TIME.GetTimest (Ins_Timest); | ||
+ | Insert into b_log (Timest,workstation,title,text,loglevel) | ||
+ | Values (Ins_Timest,'PROCEDURE.PAT_WRITE_TRANSFER','ERROR',err_msg,e_loglevel); | ||
+ | end; | ||
+ | / | ||
+ | </pre> |
Version vom 9. Oktober 2020, 16:47 Uhr
siehe auch [Bestellungen_aus_Auftraegen]
Inhaltsverzeichnis
1 Adressen
Folgendes wird exportiert:
BY (Buyer): Über B_BESTHEAD.FIRMNR wird die dazugehörige Firma ermittelt und über B_FIRMA.KNDNR dann der Buyer (ILN vom Kundenstamm wird als E_ORDER_ADDRESS.ILN exportiert) SU (Supplier): Über B_BESTHEAD.LIEFNR wird der dazugehörige Lieferant ermittelt. B_LIEFERANT.ILN wird zu E_ORDER_ADDRESS.ILN DP (Delivery Partner): Über B_BESTHEAD.KNDNR wird der Delivery Partner ermittelt (B_KNDSTAMM.KNDNR wird zur E_ORDER_ADDRESS.ILN) DA (Delivery Address): Die Addressdaten aus B_BESTHEAD (E_ORDER_ADDRESS.ILN => Gleich ILN wie für DP) BA (Broker Address): Diese wird nur geschrieben wenn ein Auftrag zur Bestellung gefunden wird (über B_BESTHEAD.VONAUFTRNR). Wenn ein Auftrag gefunden wird, wird die Adresse von B_AUFTRAG.RKNDNR ermittelt. B_KNDSTAMM.ILNDATENEMPF wird als E_ORDER_ADDRESS.ILN exportiert.
AW: pac Bestellungsexport zu Volmary 7. September 2017, 10:11 Uhr Von Posch Daniel
2 SQL
Es werden alle Bestellungen exportiert wo folgendes zutrifft: String stmnt = "SELECT DISTINCT " + selectColumns + " FROM B_BESTHEAD" +
" LEFT OUTER JOIN B_BESTCOL ON B_BESTHEAD.FIRMNR = B_BESTCOL.FIRMNR AND B_BESTHEAD.BESTNR = B_BESTCOL.BESTNR " + " WHERE B_BESTHEAD.LIEFNR = :LIEFNR " + " AND ((B_BESTHEAD.EDISTATUS !='E' OR B_BESTHEAD.EDISTATUS IS NULL) OR B_BESTCOL.EXPORTUP ='+')" + " AND B_BESTCOL.STATUS IN ('BE','ST') AND B_BESTCOL.LFDATUM >= :LFDATUM";
Es gibt einen Trigger welcher EXPORTUP auf + setzen. Genaueres dazu kann auch denk ich Roland oder Astrid sagen.
3 Voraussetzungen
3.1 Firma, aus der exportiert wird
Deren Kunde braucht eine ILN Und der Kunde braucht einen Eintrag für die Firma, aus der exportiert wer den soll
3.2 Lieferant, für den exportiert wird
Export: ILN, Exporttyp Bestellungen = PO_NT_EXP Sonstiges: Bestellungen automatisch exportieren Sonstiges: Bestellungen automatisch erzeugen, wenn gewünscht
3.3 ExchangeGate > Jobs
Reference: Liefnr (nicht ILN?) Max. entries per file: 1
3.4 Prozedur PAT_WRITE_TRANSFER wird u.U benötigt
create or replace PROCEDURE PAT_WRITE_TRANSFER /* | CONCEPT Data Systems GmbH (C) 2011 | PAT_WRITE_TRANSFER - Die Procedure erzeugt Eintraege im PAT Transfer. | Author: HB | Stand: 03.01.2012 Version 1.0 */ ( sTBL_Name IN VARCHAR2, sDML IN VARCHAR2, sPK IN VARCHAR2 ) AS ttransfer TRANSFER%ROWTYPE; CURSOR sFIRMNR_CUR is select firmnr from b_firma where fl_transfer='J'; sFIRMNR_REC sFIRMNR_CUR%ROWTYPE; sTR_FILIALE1_org transfer.tr_filiale1%TYPE; sTR_FILIALE1 transfer.tr_filiale1%TYPE; sPosition number(3); i number(3) := 0; nBETRIEB varchar2(3); nZENTRALE varchar2(3); --Declare for exception block Ins_Timest b_log.timest%TYPE; err_msg b_log.text%TYPE; e_loglevel VARCHAR2(4) := '30'; BEGIN select value into nBETRIEB from settings where switch='BETRIEB' and workstation='DEFAULT'; select value into nZENTRALE from settings where switch='FIRMNR_ZENTRALE' and workstation='DEFAULT'; sTR_FILIALE1_org :='++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'; --Get Timest PAT_TIME.GetTimest (ttransfer.TIMEST); IF nBETRIEB = nZENTRALE THEN ttransfer.SRC := nZENTRALE; ttransfer.DEST := nZENTRALE; OPEN sFIRMNR_CUR; LOOP FETCH sFIRMNR_CUR into sFIRMNR_REC; EXIT WHEN sFIRMNR_CUR%NOTFOUND; sPosition := to_number(sfirmnr_rec.firmnr); IF i < 1 and sfirmnr_rec.firmnr != to_number(nBETRIEB) THEN SELECT REGEXP_REPLACE(sTR_FILIALE1_org,'\+','-',sPosition,1) into sTR_FILIALE1 from dual; ELSIF i < 1 and sfirmnr_rec.firmnr = to_number(nBETRIEB) THEN sTR_FILIALE1 := sTR_FILIALE1_org; ELSIF i >= 1 and sfirmnr_rec.firmnr != to_number(nBETRIEB) THEN SELECT REGEXP_REPLACE(sTR_FILIALE1,'\+','-',sPosition,1) into sTR_FILIALE1 from dual; END IF; i := i +1; END LOOP; CLOSE sFIRMNR_CUR; ELSE ttransfer.SRC := nBETRIEB; ttransfer.DEST := nZENTRALE; SELECT REGEXP_REPLACE(sTR_FILIALE1_org,'\+','-',to_char(nZENTRALE),1) into sTR_FILIALE1 from dual; END IF; ttransfer.TBL := sTBL_Name; ttransfer.TRANSFLAG := '-'; ttransfer.TRANSTIMEST := ttransfer.TIMEST; ttransfer.TR_FILIALE1_IDX := '-'; ttransfer.TR_VERTRETER1_IDX := '-'; ttransfer.TR_VERTRETER1 := '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'; ttransfer.TR_FILIALE1 := sTR_FILIALE1; ttransfer.ACTION := sDML; ttransfer.IDX := sPK; INSERT INTO TRANSFER (TIMEST, SRC, DEST, TBL, IDX, ACTION, TRANSFLAG, TRANSTIMEST, TR_FILIALE1_IDX, TR_VERTRETER1_IDX, TR_FILIALE1, TR_VERTRETER1) VALUES (ttransfer.TIMEST, ttransfer.SRC, ttransfer.DEST, ttransfer.TBL, ttransfer.IDX, ttransfer.ACTION, ttransfer.TRANSFLAG, ttransfer.TRANSTIMEST, ttransfer.TR_FILIALE1_IDX, ttransfer.TR_VERTRETER1_IDX, ttransfer.TR_FILIALE1, ttransfer.TR_VERTRETER1); EXCEPTION when OTHERS then err_msg := sqlerrm; --Get timestamp PAT_TIME.GetTimest (Ins_Timest); Insert into b_log (Timest,workstation,title,text,loglevel) Values (Ins_Timest,'PROCEDURE.PAT_WRITE_TRANSFER','ERROR',err_msg,e_loglevel); end; /