DirectQuery: Lieferscheinpositionen.Artikelbezeichnung in Bestellung benötigt

L.Mechler

Gut bekanntes Mitglied
14. August 2013
183
1
Hallo zusammen,

Wir sind gerade dabei das Thema Reklamationsbestellung / Belastungsanzeige an den Lieferanten usw. in der Wawi mit den verfügbaren Möglichkeiten sauber abzubilden. Der Ablauf ist soweit geklärt.
Für die zu erstellende Vorlage "Reklamationsbestellung" im Vorlagenset " Lieferantenbestellung" benötige ich jedoch eine standartmäßig nicht verfügbare Variable "Lieferscheinpositionen.Artikelbezeichnung".

Ziel ist es dass ich zu jedem Lieferanten einen Artikel "Reklamationsposition" angelegt/zugeordnet habe. Diese wird in den Reklaauftrag übernommen und die Bezeichnung geändert, z.B. "Teil Nr. XYZ zu Artikel Nr. 123456".
Danach kann der ganz normale Ausliefer/Bestellprozess genutzt werden, überdies ist die Anzahl der Reklamationen je Lieferant/Zeitraum auswertbar und wir beeinflussen mit Bestellung/Auslieferung nicht unsere regulären Bestände.

In der Vorlage "Reklamationsbestellung" wird aber natürlich als Artikelbezeichnung "Positionen.Lieferantenbezeichnung", also die bei meiner Reklamationsposition in der Lieferantenzuordnung angelegte Artikelbezeichnung, gedruckt.
Hier müsste für das was ich vorhabe die Artikelbezeichnung der Lieferscheinposition des zugehörigen Lieferscheins (also meine im Auftrag händisch geänderte Artikelbezeichnung) gedruckt werden.

Kann mir hier jemand mit der richtigen Datenbankabfrage auf die Sprünge helfen um an die nötige Variable zu kommen?

Viele Grüße
 

Weedmaster-Flash

Gut bekanntes Mitglied
5. September 2007
203
6
Schleswig-Holstein
AW: DirectQuery: Lieferscheinpositionen.Artikelbezeichnung in Bestellung benötigt

Hallo zusammen,

ich hole dieses Thema mal wieder hoch. Denn wir beschäftigen uns auch gerade mit dieser Thematik. Und das o.g. klingt auch für uns sehr interessant.
Gibt es hier den einen Lösungsansatz zu?

Viele Grüße
 

Weedmaster-Flash

Gut bekanntes Mitglied
5. September 2007
203
6
Schleswig-Holstein
AW: DirectQuery: Lieferscheinpositionen.Artikelbezeichnung in Bestellung benötigt

Hallo zusammen,

gibt es niemanden der hier eine Lösung oder Idee hat?
Wie habt ihr das denn bei euch euch gelöst??

Ich wäre für jeden Tipp dankbar.

Vielen Dank
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
Hallo Leute,

Ich bin mir zwar nicht 100% sicher, ob ich Eure Herangehensweise aus dem bißchen Beschreibung richtig erraten habe, da das Thema Retourenabwicklung zum Lieferanten hin aber auch mit der Wawi 1.x nicht gelöst ist, interessiert mich das hier auch und deshalb will ich den Faden mal aufnehmen. Gehe ich richtig davon aus, dass die Idee folgende ist:

- Ich habe einen vom Kunden reklamierten Artikel, den ich beim Hersteller/Lieferanten reklamieren und umtauschen möchte.
- Ich will das Ganze innerhalb der Wawi abwickeln, mir dabei aber nicht meine Lager, meine Statistik und z.B. auch die gleitenden Einkaufspreise versauen.
- Also will ich die Ware über einen Auslieferungs-Auftrag an den Lieferanten zurückschicken und gleichzeitig über eine gleichlautende Reklamations-Bestellung den Ersatzartikel anfordern.
- Hierfür definiere ich mir für den Lieferanten A einen Artikel "Lieferant A - Reklamationsartikel" und erstelle den Auslieferungs-Auftrag damit. Hierbei ändere ich die Artikelbezeichnung so ab, dass sie den tatsächlich auszutauschenden Artikel beschreibt.
- Dann erzeuge ich eine Reklamations- Lieferantenbestellung mit dem gleichen Reklamationsartikel. Hierbei stört natürlich, dass die Artikelbezeichnung bei Lieferantenbestellungen automatisch übernommen wird und ich möchte, dass die Beschreibung aus meinem Auslieferungs-Auftrag übernommen wird.

Falls ich das soweit richtig interpretiert habe, klingt das eigentlich ganz vernünftig und schwierig ist das nicht, here we go...

Code:
JTL_DirectQuery("SELECT cString FROM tbestellpos INNER JOIN tbestellung ON tbestellpos.tBestellung_kBestellung=tbestellung.kBestellung INNER JOIN tartikel ON tbestellpos.tArtikel_kArtikel=tartikel.kArtikel WHERE tbestellung.cBestellNr='"+ToString$(Vorgang.Bezugsauftragsnummer)+"' AND tartikel.cArtNr='"+ToString$(Positionen.Artikelnummer)+"'")

Voraussetzungen und Grenzen:

Der Code setzt ZWINGEND voraus, dass Ihr in Eurer Reklamations-Lieferantenbestellung unter "Bezugs-Auftrags-Nr:" die Auftragsnummer Eures Auslieferungs-Auftrags stehen habt, sonst ist es schlicht nicht möglich hier irgendetwas in Bezug zueinander zu setzen. Falls Ihr das Feld der "Bezugs-Auftrags-Nr:" für etwas anderes benötigt, könnt Ihr auch die "Fremdbelegnummer" verwenden und oben "Vorgang.Bezugsauftragsnummer" durch "Vorgang.Fremdbelegnummer" ersetzen.

Der obige Code funktioniert gut, leidet aber darunter, dass die DirectQuery bei mehren Reklamationspositionen immer den Artikeltext der ersten zurückliefert, weil sich die Positionen für die Query nicht unterscheiden. Soll er das können, müssen wir den Code um einen Hack ergänzen, der die Nummer der aktuellen Bestellposition mit der Sortierung des Auslieferauftrags verbindet, also so...

Code:
JTL_DirectQuery("SELECT cString FROM tbestellpos INNER JOIN tbestellung ON tbestellpos.tBestellung_kBestellung=tbestellung.kBestellung INNER JOIN tartikel ON tbestellpos.tArtikel_kArtikel=tartikel.kArtikel WHERE tbestellung.cBestellNr='"+ToString$(Vorgang.Bezugsauftragsnummer)+"' AND tartikel.cArtNr='"+ToString$(Positionen.Artikelnummer)+"' AND tbestellpos.nSort='"+ToString$(Count(Positionen.InterneBestellpositionsNummer,false))+"'")

Weil das aber nicht wirklich SQL Logik sondern nur ein Hack ist, funktioniert das nur, wenn die Bestellpositionen und die Auslieferungs-Auftragspositionen an den gleichen Stellen stehen, also z.B. in beiden Dokumenten die ersten 3 Positionen sind. Weniger Bestell- als Auslieferpositionen funktionieren natürlich, aber umgekehrt natürlich nicht und es würden Leer-Strings zurückgeliefert.

Aber jetzt wo die Begehrlichkeiten erst einmal geweckt sind, wollen wir doch mal sehen, was geht...

1. Integration von Reklamationspositionen in eine normale Lieferantenbestellung.
2. Unterstützung von mehreren Reklamationspositionen in einer Lieferantenbestellung.
3. Unterstützung von Lieferscheinnummern statt Auftragsnummern, wohl eher bei Versehen.
4. Fehlerausgabe, falls eine Reklamationsposition nicht im Auslieferungsauftrag ist.

Code:
Cond(StrPos(Upper$(Positionen.Lieferantenartikelbezeichnung),"REKLAMATION")=-1,Positionen.Lieferantenartikelbezeichnung,Cond(JTL_DirectQuery("SELECT cString FROM tbestellpos INNER JOIN tbestellung ON tbestellpos.tBestellung_kBestellung=tbestellung.kBestellung INNER JOIN tartikel ON tbestellpos.tArtikel_kArtikel=tartikel.kArtikel WHERE tbestellung.cBestellNr='"+ToString$(Cond(StrPos(Vorgang.Bezugsauftragsnummer,"-")=-1,Vorgang.Bezugsauftragsnummer,Left$(Vorgang.Bezugsauftragsnummer,StrPos(Vorgang.Bezugsauftragsnummer,"-")-1)))+"' AND tartikel.cArtNr='"+ToString$(Positionen.Artikelnummer)+"' AND tbestellpos.nSort='"+ToString$(Count(Positionen.InterneBestellpositionsNummer,false))+"'")<>"",JTL_DirectQuery("SELECT cString FROM tbestellpos INNER JOIN tbestellung ON tbestellpos.tBestellung_kBestellung=tbestellung.kBestellung INNER JOIN tartikel ON tbestellpos.tArtikel_kArtikel=tartikel.kArtikel WHERE tbestellung.cBestellNr='"+ToString$(Cond(StrPos(Vorgang.Bezugsauftragsnummer,"-")=-1,Vorgang.Bezugsauftragsnummer,Left$(Vorgang.Bezugsauftragsnummer,StrPos(Vorgang.Bezugsauftragsnummer,"-")-1)))+"' AND tartikel.cArtNr='"+ToString$(Positionen.Artikelnummer)+"' AND tbestellpos.nSort='"+ToString$(Count(Positionen.InterneBestellpositionsNummer,false))+"'"),"Fehler: Keine "+ToString$(Count(Positionen.InterneBestellpositionsNummer,false))+". Reklamationsposition in Auftrag "+ToSTring$(Vorgang.Bezugsauftragsnummer)))

Ok, der obenstehende Code ist schon etwas unübersichtlicher, macht aber folgendes:

1. Er prüft, ob die Lieferantenartikelbezeichnung (nicht Eure geänderte Bezeichnung) irgendwo das Wort "Reklamation" enthält (groß/klein ist egal). Falls ja, wird die JTL_DirectQuery() losgeschickt, falls nein, wird die normale Lieferantenartikelbezeichnung zurückgegeben. Damit ist auch eine gemischte Bestellung von Reklamationsartikeln und regulären Artikeln möglich, die Reklamationsartikel MÜSSEN in der Liste der Positionen aber zuerst kommen, siehe oben.
2. Wenn es sich um eine Reklamationsposition handelt, prüft der Code, ob die JTL_DirectQuery() überhaupt etwas zurückliefert, sonst wird eine beschreibende Fehlermeldung übergeben, z.B. "Fehler: Keine 4. Reklamationsposition in Auftrag AB16091202".
3. Er checkt, ob es sich bei der Bezugsauftragsnummer evtl. um eine LS Nummer handelt. Falls ja, wird das korrigiert. Gesplittete Aufträge wie AB16091202#1, etc. sollten natürlich auch funktionieren.

Das Thema Lieferanten-Reklamationen ist und bleibt auch trotz dieser "Lösung" eine Baustelle und ich mache es im Moment auch selbst noch nicht so, wie hier beschrieben, sondern recht konventionell über Ausliefer-Aufträge und Lieferantenbestellungen mit den realen Artikelnummern, vor allem weil ich praktisch nur mit Seriennummern-Artikeln arbeite und diese Lösung hier dabei nicht 100% geeignet ist. Dass ich mir damit die gesamte Statistik und den GLD zerlege ist mir klar, aber mir fällt zu SN-Artikeln nichts besseres ein.

Aber gerade deshalb weil hier vor allem Fantasie gefragt ist, würde mich wirklich freuen, wenn Ihr mir und allen anderen Interessierten antworten und erläutern könntet, welche konkreten Lösungen ihr für Lieferanten-Reklamationen gefunden und eventuell schon implementiert habt.

Gruß,
Ingmar