Lagerbestand Mandantenübergreifend berechnen?

16. Juli 2012 15:33

Hallo!

Für bestimmte Artikelbestellungen möchte ich den Lagerbestand im Hauptmandanten abfragen, abzüglich Menge in Service/Produktionsaufträgen.

Dazu gibt es in der T27 Item die Flowfields Inventory , "Qty. on Prod.Order" und "Qty. on Service Order".

Kann ich diese Felder mit einem Item.Changecompany(Hauptmandant) und anschließenden Calcfields(Inventory)... berechnen? (das habe ich natürlich schon probiert, aber die Menge ist dann immer 0 :-P )

Die Item Tabelle ist nicht mandantenübergreifend.

Bitte um Tips, danke sehr!

Re: Lagerbestand Mandantenübergreifend berechnen?

16. Juli 2012 15:43

Ich verwende da die folgenden Befehle:

ItemAT.CHANGECOMPANY('Vivanco AT');
ItemAT.SETFILTER("Location Filter", 'AUSTRIA'); // Bestände Austria

IF ItemAT.GET(Item."No.") THEN BEGIN

END;

ItemAT.CALCFIELDS(Inventory);

Hier ergibt ItemAT.Inventory die richtige Menge.

Re: Lagerbestand Mandantenübergreifend berechnen?

16. Juli 2012 15:56

Das ist ja das kuriose, ich habs genauso und bei mir zeigt er definitiv den falschen Lagerbestand (0) an

Ich habe das im OnValidate Trigger des Felds Artikelnummer der Tabelle 39 Purchase Line stehen:

Code:
      IF NOT MandantenkonzeptFunktionen.IstHauptmandant(COMPANYNAME) THEN BEGIN
        Restbestand := 0;
        Lagerbestand := 0;
        IF Item.Vertriebssperre AND NOT HideValidationDialog THEN BEGIN
          MandantenkonzeptFunktionen.Hauptmandantholen(Mandant);
          Item_lt.RESET;
          Item_lt.CHANGECOMPANY(Mandant.Name);
          IF Item_lt.GET(Item."No.") THEN;
          Item_lt.CALCFIELDS(Inventory);
          Restbestand := Item_lt.Inventory;
          MESSAGE('%1', Restbestand);


Mit dem Debugger sehe ich das ich im richtigen Mandanten bin und das die lokale Item Recordvariable den GET erfolgreich ausgeführt hat.

Wenn ich das Flowfield manuell nachbaue, zeigt der Bestand korrekt an:
Code:
          ItemLedgerEntry_lt.RESET;
          ItemLedgerEntry_lt.CHANGECOMPANY(Mandant.Name);
          ItemLedgerEntry_lt.SETRANGE("Item No.", Item."No.");
          ItemLedgerEntry_lt.SETCURRENTKEY("Item No.","Variant Code","Drop Shipment","Location Code","Bin Code","Posting Date");
          IF ItemLedgerEntry_lt.FINDSET THEN
            REPEAT
              Lagerbestand := Lagerbestand + ItemLedgerEntry_lt.Quantity;
            UNTIL ItemLedgerEntry_lt.NEXT = 0;


:-(

Re: Lagerbestand Mandantenübergreifend berechnen?

16. Juli 2012 17:37

Hast du natürlich vollkommen Recht, ein Item.CHANGECOMPANY macht noch kein CHANGECOMPANY auf die "Item Ledger Entry" :-(

Gruß, Fiddi

Re: Lagerbestand Mandantenübergreifend berechnen?

16. Juli 2012 19:50

Ja ich hatte gehofft das das Changecompany von der Record-Instanz auf die anderen indirekt aufgerufenen Objekte vererbt wird :shock:

gut dann muss ich mir die Flowfields eben nachbauen..

gruß