[gelöst] Problem mit Array Feld

8. Dezember 2009 11:35

In einem Report befinden sich 2 Array Felder, CustAddr und ShipToAddr.

Beide werden mit gleichem Inhalt gefüllt, nämlich mit Sell-to informationen (z.B. Sell-to Customer usw.). Wo kann ich hier eine Änderung vornehmen?
Zuletzt geändert von misterelektro1981 am 8. Dezember 2009 16:59, insgesamt 1-mal geändert.

Re: Problem mit Array Feld

8. Dezember 2009 11:43

In der Codeunit, die die Arrays füllt 365 "Format Address".
Bitte beachte, das Änderungen alle Objekte betrifft, die diese CodeUnit nutzen.

MisterElektro1981 hat geschrieben:Beide werden mit gleichem Inhalt gefüllt, nämlich mit Sell-to informationen (z.B. Sell-to Customer usw.). Wo kann ich hier eine Änderung vornehmen?

Stimmt nicht, die können gleich sein müssen es aber nicht. Die Lieferadresse kann abweichen von der Debitorenadresse!

Beispielsweise aus dem Report 206 "Verkauf - Rechnung":
Code:
FormatAddr.SalesInvBillTo(CustAddr,"Sales Invoice Header");
FormatAddr.SalesInvShipTo(ShipToAddr,"Sales Invoice Header");


Wie du siehst, werden hier unterschiedliche Felder angesprochen.

Re: Problem mit Array Feld

8. Dezember 2009 12:28

Du hattest mich falsch verstanden. Die Leiferaddresse weicht ja in dem Fall von ich spreche von der Debitorenaddresse ab, es wird jedoch die Debitorenaddresse an beiden stellen angedruckt.

Kann ich das einfach in der Code Unit 365 ändern?

Re: Problem mit Array Feld

8. Dezember 2009 15:24

Normalerweise gibt es hier kein Problem,
Könnte es sein, das der Report selbst modifiziert wurde und die falschen Felder angedruckt werden bzw. der falsche Wert an die CU zum konvertieren gegeben wird.

Wenn die Felder in den Sections Ok sind, prüfe den Aufruf. Evtl. wird hier der falsche Wert übergeben?

Ob du das Ändern kannst, klar wenn Eure Lizenz das hergibt ja. Nur wie ich bereits geschrieben habe, könnte es in anderen Berichten zu unerwünschten "Seitenefekten" kommen.

Bevor du mit irgendwelchen Änderungen anfängst, solltest du die genaue Ursache herausfinden!

Re: Problem mit Array Feld

8. Dezember 2009 15:25

Die Codeunit 365 arbeitet m.E. ganz korrekt. Da würde ich nichts ändern. Wird die Codeunit überhaupt in Deinem Report angesprochen? Dann schau doch mal den Aufruf der CU an. Du rufst konkret eine Funktion in der Codeunit auf und übergibst dabei Dein zu füllendes Array. Allein die aufgerufene Funktion der Codeunit steuert, welche Adresse (Bill-to, Ship-to, Sell-to)in das Array übertragen wird. Wenn es bei Dir so aussieht:
Code:
FormatAddr.SalesInvSellTo(CustAddr,"Sales Invoice Header");
FormatAddr.SalesInvSellTo(ShipToAddr,"Sales Invoice Header");

...dann steht die Debitorenadresse in beiden Arrays gleichermaßen.

Kannst Du ggf. Deinen Code zum Füllen der Arrays mal einstellen?

Re: Problem mit Array Feld

8. Dezember 2009 15:56

Ich hoffe das ist der richtige Code.

Code:
IF Job.GET("Job Structure Header"."Job No.") THEN;
IF Customer.GET(Job."Sell-to Customer No.") THEN;
FormatAddr.Customer(CustAddr,Customer);

FormatAddr.Customer(ShipToAddr,Customer);
ShowShippingAddr := Job."Sell-to Customer No." <> Job."Bill-to Customer No.";
FOR i := 1 TO ARRAYLEN(ShipToAddr) DO
  IF ShipToAddr[i] <> CustAddr[i] THEN
    ShowShippingAddr := TRUE;

Re: Problem mit Array Feld

8. Dezember 2009 16:44

Ich sehe da zwei abgefangene GET, könnte es sein, das der Report kein GET ausführen kann und dir falsche Daten anzeigt?

Re: Problem mit Array Feld

8. Dezember 2009 16:59

Ja, danke das war es gewesen.

Re: [gelöst] Problem mit Array Feld

8. Dezember 2009 17:14

Na siehste, Ende gut alles gut :-)
Und die CodeUnit lassen wir so wie sie ist 8-)