12. Februar 2020 13:25
12. Februar 2020 18:49
13. Februar 2020 08:56
13. Februar 2020 17:03
 
 13. Februar 2020 19:22
WITH GLEntryL DO
BEGIN
  SETCURRENTKEY("G/L Account No.","Global Dimension 1 Code","Global Dimension 2 Code","Posting Date");
  SETRANGE("G/L Account No.",'400000','899999');  // Filter auf Konto-Nr., man könnte auch über das Sachkonto kommen und dort auf GuV filtern, hier war das nötig da noch andere Funktionen ablaufen, die ich hier im Code Beispiel aber rausgelöscht habe...
  SETFILTER("Global Dimension 1 Code",'%1','');
  IF FINDSET THEN
  REPEAT
    CASE "G/L Account No." OF
      '411111','411112' : // Skontoertrag und Skontoaufwand
        BEGIN
          Kostenträger := 'XXXX';
          IF DimensionValueL.GET('KOSTENTRÄGER',Kostenträger) THEN
          BEGIN
            DimSetID := GLEntryL."Dimension Set ID";
            TempDimSetEntry.RESET;
            DimMgt.GetDimensionSet(TempDimSetEntry,DimSetID);
            TempDimSetEntry."Dimension Set ID" := DimSetID;
            TempDimSetEntry."Dimension Code" := 'KOSTENTRÄGER';
            TempDimSetEntry.VALIDATE("Dimension Value Code",Kostenträger);
            IF NOT TempDimSetEntry.INSERT THEN;
            GLEntryL2.GET(GLEntryL."Entry No.");
            GLEntryL2."Dimension Set ID" := DimMgt.GetDimensionSetID(TempDimSetEntry);
            DimMgt.UpdateGlobalDimFromDimSetID(GLEntryL2."Dimension Set ID",GLEntryL2."Global Dimension 1 Code",GLEntryL2."Global Dimension 2 Code");
            GLEntryL2.MODIFY;
          END;
        END;
      '811111','811112' : // Währungsgewinn/-verlust
        BEGIN
          Kostenträger := 'YYYY';
          IF DimensionValueL.GET('KOSTENTRÄGER',Kostenträger) THEN
          BEGIN
            DimSetID := GLEntryL."Dimension Set ID";
            TempDimSetEntry.RESET;
            DimMgt.GetDimensionSet(TempDimSetEntry,DimSetID);
            TempDimSetEntry."Dimension Set ID" := DimSetID;
            TempDimSetEntry."Dimension Code" := 'KOSTENTRÄGER';
            TempDimSetEntry.VALIDATE("Dimension Value Code",Kostenträger);
            IF NOT TempDimSetEntry.INSERT THEN;
            GLEntryL2.GET(GLEntryL."Entry No.");
            GLEntryL2."Dimension Set ID" := DimMgt.GetDimensionSetID(TempDimSetEntry);
            DimMgt.UpdateGlobalDimFromDimSetID(GLEntryL2."Dimension Set ID",GLEntryL2."Global Dimension 1 Code",GLEntryL2."Global Dimension 2 Code");
            GLEntryL2.MODIFY;
          END;
        END;
    END;
  UNTIL NEXT = 0;
END;
JRenz hat geschrieben:Hallo Michael,
wenn die betreffenden Sachposten gar keine Dimensionen zugeordnet haben, dann müsste das Feld "Dimension Set ID" (Feld 480) in den Posten den Wert 0 (Null) haben.
Eventuell kannst du dies als Filterbedingung in deinem Kontenschemata verwenden.