[Gelöst] Zusteller Transportart

12. Januar 2008 10:19

Hallo,

ich hab folgendes Problem:

Ich möchte in den Reports 205/206 jeweils Zusteller und Zusteller Transportart andrucken.

Zusteller stellte kein Problem da. Ich habe einfach eine Globale Variable mit Record definiert und die Tabelle 291 (Shipping Agent) eingefügt.

Mit ein bisschen Programmcode konnte ich dann den Zustellernamen andrucken. Dasselbe hab ich mit der Zusteller Transportart über Tabelle 5790 versucht - funktioniert aber nicht.

IF "Shipping Agent Code" = '' THEN
Zusteller.INIT
ELSE
Zusteller.GET("Shipping Agent Code");


IF "Shipping Agent Services Code" = '' THEN
ZustellerTransport.INIT
ELSE
ZustellerTransport.GET("Shipping Agent Services Code");


Die Fehlermeldung die dann erscheint befindet sich im Anhang. Die Fehlermeldung wird aber nur ausgegeben wenn der untere Programmcode eingefügt ist.
Ist der Zusteller-Programmcode alleine vorhanden funktionierts.

Danke im Vorraus

Gruß
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Harrison am 14. Januar 2008 17:58, insgesamt 1-mal geändert.

12. Januar 2008 11:20

Gib mal bitte allen Code bekannt, der was mit den Zustellern zu tun hat.
Insbesondere interessiert mich, wo und als was "Shipping Agent Services Code" bei dir auftaucht.

12. Januar 2008 12:41

Mehr Code gibt es nicht - das ist alles.

Zusteller (Shipping Agent = Tabelle 291)
ZustellerTransportart (Shipping Agent Services = Tabelle 5790)

In der Tabelle 291: Zusteller (z.B.: UPS, DPD, Spedition)
In der Tabelle 5790: ZustellerTransportart zu jedem Zusteller die Verpackungsarten (z.B: Paket für Post oder UPS, GiBo und Palette für Spedition).

Im SalesHeader (Tabelle 36) ist der Code z.B. 01 UPS hinterlegt und 02 für das UPS-Paket. Mit der Variablen Zusteller greife ich direkt auf die Tabelle zu und kann mir den Namen des Codes 01 herausziehen und andrucken. Den Code habe ich von den Lieferbedingungen kopiert.

Das habe ich genauso bei der Variablen ZustellerTransportart probiert - doch leider ohne Erfolgt. Ich vermute es liegt daran, dass ich mit dem hinterlegten Wert 02 im SalesHeader nicht an den direkten Index der Tabelle Shipping Agent Services rankomme, da er sich im "Hintergrund" der Tabelle Shipping Agent befindet.
Shipping Agent ist direkt initialisiert über 01 und Shipping Agent Services kann nur initialisiert werden zusammen mit Shipping Agent und SalesHeader.

12. Januar 2008 14:06

Die Ursache ist ein ordinäres S
Das Feld heißt
shipping agent service code
und nicht
shipping agent services code

14. Januar 2008 16:00

Hallo
und erstmal Danke. Ich bin jetzt noch nicht dahinter gekommen warum die Tabelle "Shipping Agent Services" heißt und im Code "Shipping Agent Service Code" eingegeben werden muß.

So nun habe ich das Problem, welches ich schon früher erwartet habe.
in meinem Beispiel habe ich beim Zusteller den Code 09 = Spedition XY,
als Verpackung habe ich mit dem Code 03 die GiBo hinterlegt. Um jetzt diesen Wert aus der Tabelle zu filtern benötige ich nun Code 09 und 03.

Folgende Fehlermeldung ist nun vorhanden.

schon mal im Vorraus Danke
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

14. Januar 2008 17:05

Du musst den Aufruf korrigieren der stimmt nicht,

Du brauchst
Code:
ShipAgentService.GET("Hier Dein Zustellercode","Hier dein GiBo oder was auch immer");

14. Januar 2008 17:11

Der Fehler liegt in deinem Code:

Code:
ELSE
ZustellerTransport.GET("Shipping Agent Service Code");

Tabelle 5790 hat einen Primärschlüssel, der aus zwei Felder besteht (Shipping Agent Code,Code).
Dein GET ist aber mit nur einem Feld gefüllt.

So ist es richtig (achte auch auf die BEGINs und ENDs):

Code:
IF "Shipping Agent Code" = '' THEN
  Zusteller.INIT
ELSE BEGIN
  Zusteller.GET("Shipping Agent Code"); // brauchst du das überhaupt?

  IF "Shipping Agent Service Code" = '' THEN
    ZustellerTransport.INIT
  ELSE
    ZustellerTransport.GET("Shipping Agent Code", "Shipping Agent Service Code");
END;


Statt Record.INIT würd ich außerdem mit CLEAR(Record) arbeiten, damit auch die Schlüsselfelder geleert werden.

14. Januar 2008 17:25

Vielen Dank. Problem gelöst.
Funktioniert einwandfrei