5. März 2013 16:09
InsertOrModifyDimensionValueToDimensionSet(p_DimensionSetID : Integer;p_DimensionCode : Code[20];p_DimensionValue : Code[20]) : Integer
l_TempDimensionSetEntry.INIT;
l_TempDimensionSetEntry.VALIDATE("Dimension Code",p_DimensionCode);
l_TempDimensionSetEntry.VALIDATE("Dimension Value Code",p_DimensionValue);
l_TempDimensionSetEntry.INSERT(TRUE);
EXIT(EditDimensionSetSilence(p_DimensionSetID,l_TempDimensionSetEntry));
EditDimensionSetSilence(p_DimSetID : Integer;VAR v_DimensionSetEntry : Record "Dimension Set Entry") : Integer
l_NewDimSetID := p_DimSetID;
GetDimensionSet(l_TempDimensionSetEntry,p_DimSetID);
IF v_DimensionSetEntry.FINDSET THEN
REPEAT
IF l_TempDimensionSetEntry.GET(p_DimSetID,v_DimensionSetEntry."Dimension Code") THEN BEGIN
IF v_DimensionSetEntry."Dimension Value Code" = '' THEN
l_TempDimensionSetEntry.DELETE
ELSE
IF v_DimensionSetEntry."Dimension Value Code" <> l_TempDimensionSetEntry."Dimension Value Code" THEN BEGIN
l_TempDimensionSetEntry.VALIDATE("Dimension Value Code",v_DimensionSetEntry."Dimension Value Code");
l_TempDimensionSetEntry.MODIFY;
END;
END ELSE BEGIN
l_TempDimensionSetEntry.INIT;
l_TempDimensionSetEntry := v_DimensionSetEntry;
l_TempDimensionSetEntry.INSERT;
END;
UNTIL v_DimensionSetEntry.NEXT = 0;
l_NewDimSetID := GetDimensionSetID(l_TempDimensionSetEntry);
EXIT(l_NewDimSetID);
6. März 2013 14:45
Rene.Kern hat geschrieben:Hallo,
ich habe mir eine (besser gesagt zwei) Funktion in CU 408 erstellt, die die Dimensionen eines bereits bestehenden Dimensionssatzes ändert und die "neue" Dimensionssatz ID zurück gibt. Ich konnte es noch nicht testen, aber ich habe mir das Vorgehen von der Funktion EditDimensionSet abgeschaut. Die erste Funktion erzeugt oder ändert einen Dim-Wert eines bereits bestehenden Sets indem sie einen temporären Dimensionssatz erstellt. die zweite Funktion fügt beide temporären Dimensionssets zusammen und erzeugft daraus einen neuen Dimensionssatz. Das jedoch im Silencemodus ohne aufrufen einer Page, wie in EditDimensionSet.
- Code:
InsertOrModifyDimensionValueToDimensionSet(p_DimensionSetID : Integer;p_DimensionCode : Code[20];p_DimensionValue : Code[20]) : Integer
l_TempDimensionSetEntry.INIT;
l_TempDimensionSetEntry.VALIDATE("Dimension Code",p_DimensionCode);
l_TempDimensionSetEntry.VALIDATE("Dimension Value Code",p_DimensionValue);
l_TempDimensionSetEntry.INSERT(TRUE);
EXIT(EditDimensionSetSilence(p_DimensionSetID,l_TempDimensionSetEntry));
- Code:
EditDimensionSetSilence(p_DimSetID : Integer;VAR v_DimensionSetEntry : Record "Dimension Set Entry") : Integer
l_NewDimSetID := p_DimSetID;
GetDimensionSet(l_TempDimensionSetEntry,p_DimSetID);
IF v_DimensionSetEntry.FINDSET THEN
REPEAT
IF l_TempDimensionSetEntry.GET(p_DimSetID,v_DimensionSetEntry."Dimension Code") THEN BEGIN
IF v_DimensionSetEntry."Dimension Value Code" = '' THEN
l_TempDimensionSetEntry.DELETE
ELSE
IF v_DimensionSetEntry."Dimension Value Code" <> l_TempDimensionSetEntry."Dimension Value Code" THEN BEGIN
l_TempDimensionSetEntry.VALIDATE("Dimension Value Code",v_DimensionSetEntry."Dimension Value Code");
l_TempDimensionSetEntry.MODIFY;
END;
END ELSE BEGIN
l_TempDimensionSetEntry.INIT;
l_TempDimensionSetEntry := v_DimensionSetEntry;
l_TempDimensionSetEntry.INSERT;
END;
UNTIL v_DimensionSetEntry.NEXT = 0;
l_NewDimSetID := GetDimensionSetID(l_TempDimensionSetEntry);
EXIT(l_NewDimSetID);
Gibt es diesen Workflow vielleicht schon als Standardfunktion und ich hab das nur übersehen? Was macht die Funktion GetDeltaDimSetID? Die macht das doch eigentlich auch oder? Ich war mir da nicht sicher.
Grüße Rene
6. März 2013 18:16