PATEDI NT.Bestellungsexport: Unterschied zwischen den Versionen
Aus PPwiki
Schild (Diskussion | Beiträge) (→Adressmappings) |
Schild (Diskussion | Beiträge) (→Adressmappings) |
||
| Zeile 21: | Zeile 21: | ||
** In der ersten Combobox wird die ILN des Lieferanten ausgewählt werden (oder PATEDI_NT für alle?). | ** In der ersten Combobox wird die ILN des Lieferanten ausgewählt werden (oder PATEDI_NT für alle?). | ||
** Dort sollten u.a. alle ILNs von Lieferanten angezeigt werden. | ** Dort sollten u.a. alle ILNs von Lieferanten angezeigt werden. | ||
| − | |||
** In der zweiten Combobox wird ''Kundenmaping'' ausgewählt. | ** In der zweiten Combobox wird ''Kundenmaping'' ausgewählt. | ||
** ''Eigene ID'' ist die ILN aus dem PAT, ''Fremde ILN'' entsprechend die ILN die stattdessen in den Export eingetragen werden soll | ** ''Eigene ID'' ist die ILN aus dem PAT, ''Fremde ILN'' entsprechend die ILN die stattdessen in den Export eingetragen werden soll | ||
Version vom 9. Oktober 2020, 17:29 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.
(von Daniel Posch 7.9.2017 )
2 Adressmappings
- Ab ExchangeGate Versionen von November 2019, z.B. 9.n.n.nnnn.
- Über PAT > Wartung -> Mappings PATEDEC
- In der ersten Combobox wird die ILN des Lieferanten ausgewählt werden (oder PATEDI_NT für alle?).
- Dort sollten u.a. alle ILNs von Lieferanten angezeigt werden.
- In der zweiten Combobox wird Kundenmaping ausgewählt.
- Eigene ID ist die ILN aus dem PAT, Fremde ILN entsprechend die ILN die stattdessen in den Export eingetragen werden soll
- Alle(?) Adressen im Export können gemappt werden
- Schreibt in b_konvert
- b_konvert.firmnr wird nicht berücksichtigt(?)
3 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.
4 Voraussetzungen
4.1 Firma, aus der exportiert wird
- Deren Kunde braucht eine ILN
- Dieser Kunde braucht einen Eintrag für die Firma (b_kndfirm,a), aus der exportiert werden soll
4.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
4.3 ExchangeGate > Jobs
- Reference: Liefnr (nicht ILN?)
- Max. entries per file: 1
4.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: 10.10.2013 Version 1.1
*/
(
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;
nStandortExist number;
sBETRIEB varchar2(3);
sZENTRALE varchar2(3);
--Declare for exception block
err_msg b_log.text%TYPE;
e_loglevel VARCHAR2(4) := '30';
BEGIN
select count(value) into nStandortExist from settings where switch='TRANSFER_FIRMNR_STANDORT' and workstation='DEFAULT' and value is not null;
IF nStandortExist = 1 THEN
select value into sBetrieb from settings where switch='TRANSFER_FIRMNR_STANDORT' and workstation='DEFAULT';
ELSE
select value into sBetrieb from settings where switch='BETRIEB' and workstation='DEFAULT';
END IF;
select value into sZENTRALE from settings where switch='FIRMNR_ZENTRALE' and workstation='DEFAULT';
sTR_FILIALE1_org :='++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++';
--Get Timest
PAT_TIME.GetTimest (ttransfer.TIMEST);
IF sBETRIEB = sZENTRALE THEN
ttransfer.SRC := sZENTRALE;
ttransfer.DEST := sZENTRALE;
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(sBETRIEB) THEN
SELECT REGEXP_REPLACE(sTR_FILIALE1_org,'\+','-',sPosition,1) into sTR_FILIALE1 from dual;
ELSIF i < 1 and sfirmnr_rec.firmnr = to_number(sBETRIEB) THEN
sTR_FILIALE1 := sTR_FILIALE1_org;
ELSIF i >= 1 and sfirmnr_rec.firmnr != to_number(sBETRIEB) 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 := sBETRIEB;
ttransfer.DEST := sZENTRALE;
SELECT REGEXP_REPLACE(sTR_FILIALE1_org,'\+','-',to_char(sZENTRALE),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;
Insert into b_log (Timest,workstation,title,text,loglevel)
Values (pat_time.fgettimest,'PROCEDURE.PAT_WRITE_TRANSFER','ERROR',err_msg,e_loglevel);
end;