Hi,
Accidentally developer has forgot to set Temporary = Yes for Record object of Table 480 - "Dimension Set Entry".
He created record variable for table 480 - dimension set entry :
TempDimSetEntry - Record (Temporary = <No>)
Then executed standard GetDimneisonSet function:
DimMgt.GetDimensionSet(TempDimSetEntry,"Dimension Set ID");
And if run this code using developers license then it will delete all the records from Dimension Set Entr Table (because Temporary = False it should be True)
This happen in UAT database of customer than it start giving error everywhere in the system and this impacted our UAT Session.
But after analyzing and we found that we can create the dimension set entry from dimension set tree node table.
Below is the Batch report which we used to create the dimension set entries from dimension tree node table.
OBJECT Report 50000 CreateDimensionSetID
{
OBJECT-PROPERTIES
{
Date=;
Time=;
Modified=Yes;
Version List=;
}
PROPERTIES
{
Permissions=TableData 480=ri;
ProcessingOnly=Yes;
OnPostReport=BEGIN
Window.CLOSE;
MESSAGE('Done');
END;
}
DATASET
{
{ 33027920;;DataItem; ;
DataItemTable=Table481;
DataItemTableView=SORTING(Parent Dimension Set ID,Dimension Value ID)
WHERE(In Use=FILTER(Yes));
OnPreDataItem=BEGIN
Window.OPEN(Text000);
END;
OnAfterGetRecord=VAR
DimensionSetEntry_lRec@33027921 : Record 480;
LastID@33027922 : Integer;
BEGIN
Window.UPDATE(1,"Dimension Set Tree Node"."Dimension Set ID");
DimensionSetEntry_lRec.SETRANGE("Dimension Set ID","Dimension Set ID");
IF NOT DimensionSetEntry_lRec.ISEMPTY THEN
CurrReport.SKIP;
TempDimSetTreeNode_lRecTmp.RESET;
TempDimSetTreeNode_lRecTmp.DELETEALL;
LastID := "Dimension Set Tree Node"."Parent Dimension Set ID";
TempDimSetTreeNode_lRecTmp.Number := "Dimension Set Tree Node"."Dimension Value ID";
TempDimSetTreeNode_lRecTmp.INSERT;
WHILE LastID <> 0 DO BEGIN
LastID := FindParentSetID(LastID);
END;
IF LastID = 0 THEN BEGIN
TempDimSetTreeNode_lRecTmp.RESET;
IF TempDimSetTreeNode_lRecTmp.FINDSET THEN BEGIN
REPEAT
DimensionValue_gRec.SETRANGE("Dimension Value ID",TempDimSetTreeNode_lRecTmp.Number);
DimensionValue_gRec.FINDFIRST;
DimensionSetEntry_lRec.INIT;
DimensionSetEntry_lRec."Dimension Code" := DimensionValue_gRec."Dimension Code";
DimensionSetEntry_lRec."Dimension Value Code" := DimensionValue_gRec.Code;
DimensionSetEntry_lRec."Dimension Set ID" := "Dimension Set Tree Node"."Dimension Set ID";
DimensionSetEntry_lRec."Dimension Value ID" := DimensionValue_gRec."Dimension Value ID";
DimensionSetEntry_lRec.INSERT;
UNTIL TempDimSetTreeNode_lRecTmp.NEXT = 0;
END;
END;
END;
ReqFilterFields=Dimension Set ID }
}
REQUESTPAGE
{
PROPERTIES
{
}
CONTROLS
{
}
}
LABELS
{
}
CODE
{
VAR
TempDimSetTreeNode_lRecTmp@33027920 : TEMPORARY Record 2000000026;
DimSetEntry_gRec@33027922 : Record 480;
DimensionValue_gRec@33027921 : Record 349;
Window@33027923 : Dialog;
Text000@33027924 : TextConst 'ENU=#1###############';
PROCEDURE FindParentSetID@33027923(SetEntryNo@33027920 : Integer) : Integer;
VAR
DimSetTreeNode_lRec@33027921 : Record 481;
BEGIN
DimSetTreeNode_lRec.SETRANGE("Dimension Set ID",SetEntryNo);
DimSetTreeNode_lRec.FINDLAST;
TempDimSetTreeNode_lRecTmp.Number := DimSetTreeNode_lRec."Dimension Value ID";
TempDimSetTreeNode_lRecTmp.INSERT;
EXIT(DimSetTreeNode_lRec."Parent Dimension Set ID");
END;
BEGIN
END.
}
RDLDATA
{
}
}
Comments
Post a Comment