Report 7150 Item Dimensions - Detail, source in 29
Source29
src/Layers/W1/BaseApp/Inventory/Reports/ItemDimensionsDetail.Report.al815 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Inventory.Reports;
using Microsoft.Finance.Dimension;
using Microsoft.Foundation.Period;
using Microsoft.Inventory.Analysis;
using Microsoft.Inventory.Item;
using Microsoft.Inventory.Ledger;
using Microsoft.Inventory.Location;
using System.Text;
using System.Utilities;
report 7150 "Item Dimensions - Detail"
{
ApplicationArea = Dimensions;
Caption = 'Item Dimensions - Detail';
ToolTip = 'Run the Item Dimensions - Detail report.';
UsageCategory = ReportsAndAnalysis;
DefaultRenderingLayout = RDLCLayout;
dataset
{
dataitem("Item Analysis View"; "Item Analysis View")
{
DataItemTableView = sorting("Analysis Area", Code);
column(ViewLastUpdatedText; ViewLastUpdatedText)
{
}
column(Name_ItemAnalysisView; Name)
{
}
column(Code_ItemAnalysisView; Code)
{
}
column(DateFilter; DateFilter)
{
}
column(CompanyName; COMPANYPROPERTY.DisplayName())
{
}
column(TodayFormatted; Format(Today, 0, 4))
{
}
column(DimFilterText; DimFilterText)
{
}
column(PeriodCaption; PeriodCaptionLbl)
{
}
column(AnalysisViewCaption; AnalysisViewCaptionLbl)
{
}
column(LastDateUpdatedCaption; LastDateUpdatedCaptionLbl)
{
}
column(PageCaption; PageCaptionLbl)
{
}
column(ItemDimsDetailCptn; ItemDimsDetailCptnLbl)
{
}
column(FiltersCaption; FiltersCaptionLbl)
{
}
column(CostAmtCaption; CostAmtCaptionLbl)
{
}
column(SalesAmtCaption; SalesAmtCaptionLbl)
{
}
column(DescriptionCaption; DescriptionCaptionLbl)
{
}
column(PostingDateCaption; PostingDateCaptionLbl)
{
}
column(ItemNoCaption; ItemNoCaptionLbl)
{
}
column(EntryNoCaption; EntryNoCaptionLbl)
{
}
column(QuantityCaption; QuantityCaptionLbl)
{
}
dataitem(Level1; "Integer")
{
DataItemTableView = sorting(Number);
column(DimValCode1; DimValCode[1])
{
}
column(DimCode1; DimCode[1])
{
}
column(DimValName1; DimValName[1])
{
}
dataitem(Level2; "Integer")
{
DataItemTableView = sorting(Number);
column(DimValCode2; DimValCode[2])
{
}
column(DimCode2; DimCode[2])
{
}
column(DimValName2; DimValName[2])
{
}
column(TempValueEntryItemNo; TempValueEntry."Item No.")
{
}
column(TempValueEntryPostingDate; Format(TempValueEntry."Posting Date"))
{
}
column(TempValueEntryDescription; TempValueEntry.Description)
{
}
column(TempValEntrySaleAmtActExp; TempValueEntry."Sales Amount (Actual)" + TempValueEntry."Sales Amount (Expected)")
{
}
column(TVECostAmtActExpNonInvtbl; TempValueEntry."Cost Amount (Actual)" + TempValueEntry."Cost Amount (Expected)" + TempValueEntry."Cost Amount (Non-Invtbl.)")
{
}
column(TempValueEntryEntryNo; TempValueEntry."Entry No.")
{
}
column(TempValueEntryValuedQty; TempValueEntry."Valued Quantity")
{
DecimalPlaces = 0 : 5;
}
dataitem(Level3; "Integer")
{
DataItemTableView = sorting(Number);
column(DimValCode3; DimValCode[3])
{
}
column(DimCode3; DimCode[3])
{
}
column(DimValName3; DimValName[3])
{
}
dataitem(Level4; "Integer")
{
DataItemTableView = sorting(Number);
column(DimValCode4; DimValCode[4])
{
}
column(DimCode4; DimCode[4])
{
}
column(DimValName4; DimValName[4])
{
}
trigger OnAfterGetRecord()
begin
if DimCode[4] <> '' then begin
if not CalcLine(4) and not PrintEmptyLines then
CurrReport.Skip();
end else
if not PrintDetail(4) then
CurrReport.Break();
end;
trigger OnPreDataItem()
begin
if DimCode[3] = '' then
CurrReport.Break();
FindFirstDim[4] := true;
FindFirstValueEntry[4] := true;
end;
}
dataitem(Level3e; "Integer")
{
DataItemTableView = sorting(Number) where(Number = const(1));
column(SalesAmtTotal3; SalesAmtTotal[3])
{
AutoFormatType = 1;
}
column(CostAmtTotal3; CostAmtTotal[3])
{
AutoFormatType = 1;
}
column(QtyTotal3; QtyTotal[3])
{
AutoFormatType = 1;
DecimalPlaces = 0 : 5;
}
trigger OnPostDataItem()
begin
SalesAmtTotal[3] := 0;
CostAmtTotal[3] := 0;
QtyTotal[3] := 0;
end;
}
trigger OnAfterGetRecord()
begin
if DimCode[3] <> '' then begin
if not CalcLine(3) and not PrintEmptyLines then
CurrReport.Skip();
end else
if not PrintDetail(3) then
CurrReport.Break();
end;
trigger OnPreDataItem()
begin
if DimCode[2] = '' then
CurrReport.Break();
FindFirstDim[3] := true;
FindFirstValueEntry[3] := true;
end;
}
dataitem(Level2e; "Integer")
{
DataItemTableView = sorting(Number) where(Number = const(1));
column(SalesAmtTotal2; SalesAmtTotal[2])
{
AutoFormatType = 1;
}
column(CostAmtTotal2; CostAmtTotal[2])
{
AutoFormatType = 1;
}
column(QtyTotal2; QtyTotal[2])
{
AutoFormatType = 1;
DecimalPlaces = 0 : 5;
}
trigger OnPostDataItem()
begin
SalesAmtTotal[2] := 0;
CostAmtTotal[2] := 0;
QtyTotal[2] := 0;
end;
}
trigger OnAfterGetRecord()
begin
if DimCode[2] <> '' then begin
if not CalcLine(2) and not PrintEmptyLines then
CurrReport.Skip();
end else
if not PrintDetail(2) then
CurrReport.Break();
end;
trigger OnPreDataItem()
begin
if DimCode[1] = '' then
CurrReport.Break();
FindFirstDim[2] := true;
FindFirstValueEntry[2] := true;
end;
}
dataitem(Level1e; "Integer")
{
DataItemTableView = sorting(Number) where(Number = const(1));
column(CostAmtTotal1; CostAmtTotal[1])
{
AutoFormatType = 1;
}
column(SalesAmtTotal1; SalesAmtTotal[1])
{
AutoFormatType = 1;
}
column(QtyTotal1; QtyTotal[1])
{
AutoFormatType = 1;
DecimalPlaces = 0 : 5;
}
trigger OnPostDataItem()
begin
SalesAmtTotal[1] := 0;
CostAmtTotal[1] := 0;
QtyTotal[1] := 0;
end;
}
trigger OnAfterGetRecord()
begin
if not CalcLine(1) and not PrintEmptyLines then
CurrReport.Skip();
end;
trigger OnPreDataItem()
begin
if DimCode[1] = '' then
CurrReport.Break();
FindFirstDim[1] := true;
FindFirstValueEntry[1] := true;
end;
}
trigger OnAfterGetRecord()
var
AccountingPeriod: Record "Accounting Period";
i: Integer;
StartDate: Date;
EndDate: Date;
ThisFilter: Text[250];
begin
if "Last Date Updated" <> 0D then
ViewLastUpdatedText :=
StrSubstNo('%1', "Last Date Updated")
else
ViewLastUpdatedText := Text004;
ItemAnalysisViewEntry.Reset();
ItemAnalysisViewEntry.SetRange("Analysis Area", "Analysis Area");
ItemAnalysisViewEntry.SetRange("Analysis View Code", Code);
ItemAnalysisViewEntry.SetFilter("Posting Date", DateFilter);
StartDate := ItemAnalysisViewEntry.GetRangeMin("Posting Date");
EndDate := ItemAnalysisViewEntry.GetRangeMax("Posting Date");
case "Date Compression" of
"Date Compression"::Week:
begin
StartDate := CalcDate('<CW+1D-1W>', StartDate);
EndDate := ClosingDate(CalcDate('<CW>', EndDate));
end;
"Date Compression"::Month:
begin
StartDate := CalcDate('<CM+1D-1M>', StartDate);
EndDate := ClosingDate(CalcDate('<CM>', EndDate));
end;
"Date Compression"::Quarter:
begin
StartDate := CalcDate('<CQ+1D-1Q>', StartDate);
EndDate := ClosingDate(CalcDate('<CQ>', EndDate));
end;
"Date Compression"::Year:
begin
StartDate := CalcDate('<CY+1D-1Y>', StartDate);
EndDate := ClosingDate(CalcDate('<CY>', EndDate));
end;
"Date Compression"::Period:
begin
AccountingPeriod.SetRange("Starting Date", 0D, StartDate);
if AccountingPeriod.Find('+') then
StartDate := AccountingPeriod."Starting Date";
AccountingPeriod.SetRange("Starting Date", EndDate, DMY2Date(31, 12, 9999));
if AccountingPeriod.Find('-') then
if AccountingPeriod.Next() <> 0 then
EndDate := ClosingDate(AccountingPeriod."Starting Date" - 1);
end;
end;
ItemAnalysisViewEntry.SetRange("Posting Date", StartDate, EndDate);
ItemAnalysisViewEntry.FilterGroup(2);
TempAnalysisSelectedDim.Reset();
TempAnalysisSelectedDim.SetCurrentKey(
"User ID", "Object Type", "Object ID", "Analysis Area", "Analysis View Code", Level);
TempAnalysisSelectedDim.SetFilter("Dimension Value Filter", '<>%1', '');
DimFilterText := '';
if TempAnalysisSelectedDim.Find('-') then
repeat
ThisFilter := '';
if DimFilterText <> '' then
ThisFilter := ', ';
ThisFilter :=
ThisFilter +
TempAnalysisSelectedDim."Dimension Code" + ': ' +
TempAnalysisSelectedDim."Dimension Value Filter";
if StrLen(DimFilterText) + StrLen(ThisFilter) <= 250 then
DimFilterText := DimFilterText + ThisFilter;
SetItemAnalysisViewEntryFilter(
TempAnalysisSelectedDim."Dimension Code", TempAnalysisSelectedDim."Dimension Value Filter");
until TempAnalysisSelectedDim.Next() = 0;
ItemAnalysisViewEntry.FilterGroup(0);
TempAnalysisSelectedDim.Reset();
TempAnalysisSelectedDim.SetCurrentKey(
"User ID", "Object Type", "Object ID", "Analysis Area", "Analysis View Code", Level);
TempAnalysisSelectedDim.SetFilter(Level, '<>%1', TempAnalysisSelectedDim.Level::" ");
i := 1;
if TempAnalysisSelectedDim.Find('-') then
repeat
DimCode[i] := TempAnalysisSelectedDim."Dimension Code";
LevelFilter[i] := TempAnalysisSelectedDim."Dimension Value Filter";
i := i + 1;
until (TempAnalysisSelectedDim.Next() = 0) or (i > 3);
end;
trigger OnPreDataItem()
begin
SetRange("Analysis Area", AnalysisArea);
SetRange(Code, ItemAnalysisViewCode);
end;
}
}
requestpage
{
AboutTitle = 'About Item Dimensions - Detail';
AboutText = 'Build a grouping of dimensions for each permutation of dimension values, defined through a hierarchy of dimension levels from an analysis view, and list all GL entries for each group.';
SaveValues = true;
layout
{
area(content)
{
group(Options)
{
Caption = 'Options';
field(AnalysisArea; AnalysisArea)
{
ApplicationArea = Dimensions;
Caption = 'Analysis Area';
ToolTip = 'Specifies if the analysis area is set up in the Sales, Purchasing, or Inventory application area.';
trigger OnValidate()
begin
ItemAnalysisViewCode := '';
UpdateColumnDim();
end;
}
field(AnalysisViewCode; ItemAnalysisViewCode)
{
ApplicationArea = Dimensions;
Caption = 'Analysis View Code';
ToolTip = 'Specifies the code for the analysis view that the filter belongs to.';
trigger OnLookup(var Text: Text): Boolean
var
ItemAnalysisView: Record "Item Analysis View";
begin
ItemAnalysisView.FilterGroup := 2;
ItemAnalysisView.SetRange("Analysis Area", AnalysisArea);
ItemAnalysisView.FilterGroup := 0;
if PAGE.RunModal(0, ItemAnalysisView) = ACTION::LookupOK then begin
Text := ItemAnalysisView.Code;
UpdateColumnDim();
exit(true);
end;
end;
trigger OnValidate()
var
ItemAnalysisView: Record "Item Analysis View";
begin
if ItemAnalysisViewCode <> '' then
ItemAnalysisView.Get(AnalysisArea, ItemAnalysisViewCode);
UpdateColumnDim();
end;
}
field(IncludeDimensions; ColumnDim)
{
ApplicationArea = Dimensions;
Caption = 'Include Dimensions';
Editable = false;
ToolTip = 'Specifies the dimensions that you want to include in the report. You can only select dimensions included in the analysis view that you selected in the Analysis View field.';
trigger OnAssistEdit()
begin
AnalysisDimSelectionBuf.SetDimSelectionLevel(
3, REPORT::"Item Dimensions - Detail", AnalysisArea.AsInteger(), ItemAnalysisViewCode, ColumnDim);
end;
}
field(DateFilterCtrl; DateFilter)
{
ApplicationArea = Dimensions;
Caption = 'Date Filter';
ToolTip = 'Specifies a filter, that will filter entries by date. You can enter a particular date or a time interval.';
trigger OnValidate()
var
FilterTokens: Codeunit "Filter Tokens";
begin
FilterTokens.MakeDateFilter(DateFilter);
TempItem.SetFilter("Date Filter", DateFilter);
DateFilter := TempItem.GetFilter("Date Filter");
end;
}
field(PrintEmptyLines; PrintEmptyLines)
{
ApplicationArea = Dimensions;
Caption = 'Print Empty Lines';
MultiLine = true;
ToolTip = 'Specifies if you want the report to include dimensions and dimension values that have a balance equal to zero.';
}
}
}
}
actions
{
}
trigger OnOpenPage()
begin
UpdateColumnDim();
end;
}
rendering
{
layout(RDLCLayout)
{
Type = RDLC;
LayoutFile = './Inventory/Reports/ItemDimensionsDetail.rdlc';
Summary = 'Report layout made in the legacy RDLC format. Use an RDLC editor to modify the layout.';
}
}
labels
{
}
trigger OnPreReport()
var
AnalysisSelectedDim: Record "Analysis Selected Dimension";
begin
if ItemAnalysisViewCode = '' then
Error(Text000);
if DateFilter = '' then
Error(Text001);
AnalysisDimSelectionBuf.CompareDimText(
3, REPORT::"Item Dimensions - Detail", AnalysisArea.AsInteger(), ItemAnalysisViewCode, ColumnDim, Text002);
TempAnalysisSelectedDim.Reset();
TempAnalysisSelectedDim.SetFilter("Dimension Value Filter", '<>%1', '');
TempAnalysisSelectedDim.SetFilter("Dimension Code", TempItem.TableCaption());
if TempAnalysisSelectedDim.Find('-') then
Item.SetFilter("No.", TempAnalysisSelectedDim."Dimension Value Filter");
if Item.Find('-') then
repeat
TempItem.Init();
TempItem := Item;
TempItem.Insert();
until Item.Next() = 0;
TempLocation.Init();
TempLocation.Insert();
TempAnalysisSelectedDim.SetFilter("Dimension Code", Location.TableCaption());
if TempAnalysisSelectedDim.Find('-') then
Location.SetFilter(Code, TempAnalysisSelectedDim."Dimension Value Filter");
if Location.Find('-') then
repeat
TempLocation.Init();
TempLocation := Location;
TempLocation.Insert();
until Location.Next() = 0;
AnalysisSelectedDim.GetSelectedDim(
UserId, 3, REPORT::"Item Dimensions - Detail", AnalysisArea.AsInteger(), ItemAnalysisViewCode, TempAnalysisSelectedDim);
TempAnalysisSelectedDim.Reset();
TempAnalysisSelectedDim.SetCurrentKey(
"User ID", "Object Type", "Object ID", "Analysis Area", "Analysis View Code", Level);
TempAnalysisSelectedDim.SetFilter(Level, '<>%1', TempAnalysisSelectedDim.Level::" ");
DimVal.SetRange("Dimension Value Type", DimVal."Dimension Value Type"::Standard);
if TempAnalysisSelectedDim.Find('-') then
repeat
TempDimVal.Init();
TempDimVal.Code := '';
TempDimVal."Dimension Code" := TempAnalysisSelectedDim."Dimension Code";
TempDimVal.Name := Text003;
TempDimVal.Insert();
DimVal.SetRange("Dimension Code", TempAnalysisSelectedDim."Dimension Code");
if TempAnalysisSelectedDim."Dimension Value Filter" <> '' then
DimVal.SetFilter(Code, TempAnalysisSelectedDim."Dimension Value Filter")
else
DimVal.SetRange(Code);
if DimVal.Find('-') then
repeat
TempDimVal.Init();
TempDimVal := DimVal;
TempDimVal.Insert();
until DimVal.Next() = 0;
until TempAnalysisSelectedDim.Next() = 0;
end;
var
ItemAnalysisViewEntry: Record "Item Analysis View Entry";
TempAnalysisSelectedDim: Record "Analysis Selected Dimension" temporary;
Item: Record Item;
Location: Record Location;
DimVal: Record "Dimension Value";
TempValueEntry: Record "Value Entry" temporary;
TempItem: Record Item temporary;
TempLocation: Record Location temporary;
TempDimVal: Record "Dimension Value" temporary;
AnalysisDimSelectionBuf: Record "Analysis Dim. Selection Buffer";
PrintEmptyLines: Boolean;
ViewLastUpdatedText: Text[30];
ColumnDim: Text[250];
AnalysisArea: Enum "Analysis Area Type";
ItemAnalysisViewCode: Code[10];
DateFilter: Text;
FindFirstDim: array[4] of Boolean;
FindFirstValueEntry: array[4] of Boolean;
DimCode: array[4] of Text[30];
DimValCode: array[4] of Code[20];
DimValName: array[4] of Text[100];
LevelFilter: array[3] of Text[250];
SalesAmtTotal: array[3] of Decimal;
CostAmtTotal: array[3] of Decimal;
QtyTotal: array[3] of Decimal;
DimFilterText: Text[250];
#pragma warning disable AA0074
Text000: Label 'Enter an analysis view code.';
Text001: Label 'Enter a date filter.';
Text002: Label 'Include Dimensions';
Text003: Label '(no dimension value)';
Text004: Label 'Not updated';
Text014: Label '(no location code)';
#pragma warning restore AA0074
PeriodCaptionLbl: Label 'Period';
AnalysisViewCaptionLbl: Label 'Analysis View';
LastDateUpdatedCaptionLbl: Label 'Last Date Updated';
PageCaptionLbl: Label 'Page';
ItemDimsDetailCptnLbl: Label 'Item Dimensions - Detail';
FiltersCaptionLbl: Label 'Filters';
CostAmtCaptionLbl: Label 'Cost Amount';
SalesAmtCaptionLbl: Label 'Sales Amount';
DescriptionCaptionLbl: Label 'Description';
PostingDateCaptionLbl: Label 'Posting Date';
ItemNoCaptionLbl: Label 'Item No.';
EntryNoCaptionLbl: Label 'Entry No.';
QuantityCaptionLbl: Label 'Quantity';
local procedure CalcLine(Level: Integer): Boolean
var
HasEntries: Boolean;
i: Integer;
begin
if Level < 3 then
for i := Level + 1 to 3 do
SetItemAnalysisViewEntryFilter(DimCode[i], '*');
if Iteration(
FindFirstDim[Level], DimCode[Level], DimValCode[Level], DimValName[Level], LevelFilter[Level])
then begin
SetItemAnalysisViewEntryFilter(DimCode[Level], DimValCode[Level]);
HasEntries := ItemAnalysisViewEntry.Find('-');
end else
CurrReport.Break();
exit(HasEntries);
end;
local procedure PrintDetail(Level: Integer): Boolean
var
ItemAViewEntryToValueEntries: Codeunit ItemAViewEntryToValueEntries;
begin
if FindFirstValueEntry[Level] then begin
FindFirstValueEntry[Level] := false;
TempValueEntry.Reset();
TempValueEntry.DeleteAll();
if ItemAnalysisViewEntry.Find('-') then
repeat
ItemAViewEntryToValueEntries.GetValueEntries(ItemAnalysisViewEntry, TempValueEntry);
until ItemAnalysisViewEntry.Next() = 0;
TempValueEntry.SetCurrentKey("Item No.", "Posting Date");
TempValueEntry.SetFilter("Posting Date", DateFilter);
if not TempValueEntry.Find('-') then
exit(false);
end else
if TempValueEntry.Next() = 0 then
exit(false);
if Level > 1 then
CalcTotalValues(Level - 1);
exit(true);
end;
local procedure CalcTotalValues(Level: Integer)
var
i: Integer;
begin
for i := 1 to Level do begin
SalesAmtTotal[i] :=
SalesAmtTotal[i] +
TempValueEntry."Sales Amount (Actual)" +
TempValueEntry."Sales Amount (Expected)";
CostAmtTotal[i] :=
CostAmtTotal[i] +
TempValueEntry."Cost Amount (Actual)" +
TempValueEntry."Cost Amount (Expected)" +
TempValueEntry."Cost Amount (Non-Invtbl.)";
QtyTotal[i] :=
QtyTotal[i] +
TempValueEntry."Valued Quantity";
end;
end;
local procedure UpdateColumnDim()
var
AnalysisSelectedDim: Record "Analysis Selected Dimension";
TempAnalysisDimSelectionBuf: Record "Analysis Dim. Selection Buffer" temporary;
ItemAnalysisView: Record "Item Analysis View";
begin
ItemAnalysisView.CopyAnalysisViewFilters(3, REPORT::"Item Dimensions - Detail", AnalysisArea.AsInteger(), ItemAnalysisViewCode);
ColumnDim := '';
AnalysisSelectedDim.SetRange("User ID", UserId);
AnalysisSelectedDim.SetRange("Object Type", 3);
AnalysisSelectedDim.SetRange("Object ID", REPORT::"Item Dimensions - Detail");
AnalysisSelectedDim.SetRange("Analysis Area", AnalysisArea);
AnalysisSelectedDim.SetRange("Analysis View Code", ItemAnalysisViewCode);
if AnalysisSelectedDim.Find('-') then begin
repeat
TempAnalysisDimSelectionBuf.Init();
TempAnalysisDimSelectionBuf.Code := AnalysisSelectedDim."Dimension Code";
TempAnalysisDimSelectionBuf.Selected := true;
TempAnalysisDimSelectionBuf."Dimension Value Filter" := AnalysisSelectedDim."Dimension Value Filter";
TempAnalysisDimSelectionBuf.Level := AnalysisSelectedDim.Level;
TempAnalysisDimSelectionBuf.Insert();
until AnalysisSelectedDim.Next() = 0;
TempAnalysisDimSelectionBuf.SetDimSelection(
3, REPORT::"Item Dimensions - Detail", AnalysisArea.AsInteger(), ItemAnalysisViewCode, ColumnDim, TempAnalysisDimSelectionBuf);
end;
end;
local procedure Iteration(var FindFirstRec: Boolean; IterationDimCode: Text[30]; var IterationDimValCode: Code[20]; var IterationDimValName: Text[100]; IterationFilter: Text[250]): Boolean
var
SearchResult: Boolean;
begin
case IterationDimCode of
TempItem.TableCaption:
begin
TempItem.Reset();
TempItem.SetFilter("No.", IterationFilter);
if FindFirstRec then
SearchResult := TempItem.Find('-')
else
if TempItem.Get(IterationDimValCode) then
SearchResult := TempItem.Next() <> 0;
if SearchResult then begin
IterationDimValCode := TempItem."No.";
IterationDimValName := TempItem.Description;
end;
end;
TempLocation.TableCaption:
begin
TempLocation.Reset();
TempLocation.SetFilter(Code, IterationFilter);
if FindFirstRec then
SearchResult := TempLocation.Find('-')
else
if TempLocation.Get(IterationDimValCode) then
SearchResult := TempLocation.Next() <> 0;
if SearchResult then begin
IterationDimValCode := TempLocation.Code;
if TempLocation.Code <> '' then
IterationDimValName := TempLocation.Name
else
IterationDimValName := Text014;
end;
end;
else begin
TempDimVal.Reset();
TempDimVal.SetRange("Dimension Code", IterationDimCode);
TempDimVal.SetFilter(Code, IterationFilter);
if FindFirstRec then
SearchResult := TempDimVal.Find('-')
else
if TempDimVal.Get(IterationDimCode, IterationDimValCode) then
SearchResult := TempDimVal.Next() <> 0;
if SearchResult then begin
IterationDimValCode := TempDimVal.Code;
IterationDimValName := TempDimVal.Name;
end;
end;
end;
if not SearchResult then begin
IterationDimValCode := '';
IterationDimValName := '';
end;
FindFirstRec := false;
exit(SearchResult);
end;
local procedure SetItemAnalysisViewEntryFilter(ItemAnalysisViewDimCode: Text[30]; ItemAnalysisViewFilter: Text[250])
begin
if ItemAnalysisViewFilter = '' then
ItemAnalysisViewFilter := '''''';
case ItemAnalysisViewDimCode of
TempItem.TableCaption:
if ItemAnalysisViewFilter = '*' then
ItemAnalysisViewEntry.SetRange("Item No.")
else
ItemAnalysisViewEntry.SetFilter("Item No.", ItemAnalysisViewFilter);
TempLocation.TableCaption:
if ItemAnalysisViewFilter = '*' then
ItemAnalysisViewEntry.SetRange("Location Code")
else
ItemAnalysisViewEntry.SetFilter("Location Code", ItemAnalysisViewFilter);
"Item Analysis View"."Dimension 1 Code":
if ItemAnalysisViewFilter = '*' then
ItemAnalysisViewEntry.SetRange("Dimension 1 Value Code")
else
ItemAnalysisViewEntry.SetFilter("Dimension 1 Value Code", ItemAnalysisViewFilter);
"Item Analysis View"."Dimension 2 Code":
if ItemAnalysisViewFilter = '*' then
ItemAnalysisViewEntry.SetRange("Dimension 2 Value Code")
else
ItemAnalysisViewEntry.SetFilter("Dimension 2 Value Code", ItemAnalysisViewFilter);
"Item Analysis View"."Dimension 3 Code":
if ItemAnalysisViewFilter = '*' then
ItemAnalysisViewEntry.SetRange("Dimension 3 Value Code")
else
ItemAnalysisViewEntry.SetFilter("Dimension 3 Value Code", ItemAnalysisViewFilter);
end;
end;
}