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.