PATEDI NT.Bestellungsexport: Unterschied zwischen den Versionen

Aus PPwiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „{{DISPLAYTITLE:Export von Bestellungen über PATEDI_NT|noerror}}“)
 
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]

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;
/