Report 1235 Get File Structure, source in 29
Source29
src/Layers/W1/BaseApp/System/DataExchange/GetFileStructure.Report.al123 lines, Copyright (c) Microsoft Corporation. MIT
namespace System.IO;
report 1235 "Get File Structure"
{
Caption = 'Get File Structure';
ProcessingOnly = true;
dataset
{
}
requestpage
{
layout
{
area(content)
{
field(FileType; FileType)
{
ApplicationArea = Basic, Suite;
Caption = 'File Type';
OptionCaption = ' ,,Xml,,Json';
ToolTip = 'Specifies the file type whose structure will be reused to fill the Data Column Definitions FastTab. XML and Json are supported.';
trigger OnValidate()
begin
CheckFileType(DataExchDef);
end;
}
field(FilePath; FilePath)
{
ApplicationArea = Basic, Suite;
Caption = 'Path';
ExtendedDatatype = URL;
ToolTip = 'Specifies the path or URL of the file that will be processed with this data exchange definition.';
}
field(DataExchDefCode; DataExchLineDef."Data Exch. Def Code")
{
ApplicationArea = Basic, Suite;
Caption = 'Data Exch. Def. Code';
Editable = false;
ToolTip = 'Specifies the data exchange definition for the file that will be processed.';
}
field("Code"; DataExchLineDef.Code)
{
ApplicationArea = Basic, Suite;
Caption = 'Line Definition Code';
Editable = false;
ToolTip = 'Specifies the value in the Code field on the Line Definitions FastTab.';
}
}
}
actions
{
}
}
labels
{
}
trigger OnPostReport()
begin
CheckFileType(DataExchDef);
case FileType of
FileType::Xsd:
;
FileType::Xml:
SuggestColDefinitionXML.GenerateDataExchColDef(FilePath, DataExchLineDef);
FileType::Csv:
;
FileType::Json:
SuggestColDefinitionJson.GenerateDataExchColDef(FilePath, DataExchLineDef);
end;
end;
var
DataExchLineDef: Record "Data Exch. Line Def";
DataExchDef: Record "Data Exch. Def";
SuggestColDefinitionXML: Codeunit "Suggest Col. Definition - XML";
SuggestColDefinitionJson: Codeunit "Suggest Col. Definition - Json";
FileType: Option " ",Xsd,Xml,Csv,Json;
FilePath: Text;
FileTypeCannotBeSelectedErr: Label ' You cannot select %1 when File Type is %2 in %3.', Comment = '%1 is XML, JSON, etc, %2 is simlar to %1, and %3 will be Data Exch. Definition. ';
FileTypeNotSupportedErr: Label ' File type %1 is not supported.', Comment = '%1 is XML, JSON, etc';
procedure Initialize(NewDataExchLineDef: Record "Data Exch. Line Def")
begin
DataExchLineDef := NewDataExchLineDef;
DataExchDef.Get(DataExchLineDef."Data Exch. Def Code");
SetFileType(DataExchDef);
end;
local procedure CheckFileType(DataExchDef: Record "Data Exch. Def")
begin
case DataExchDef."File Type" of
DataExchDef."File Type"::Xml:
if not (FileType in [FileType::Xml]) then
Error(FileTypeCannotBeSelectedErr, FileType, DataExchDef."File Type", DataExchDef.TableCaption);
DataExchDef."File Type"::Json:
if not (FileType in [FileType::Json]) then
Error(FileTypeCannotBeSelectedErr, FileType, DataExchDef."File Type", DataExchDef.TableCaption);
end;
end;
local procedure SetFileType(DataExchDef: Record "Data Exch. Def")
begin
case DataExchDef."File Type" of
DataExchDef."File Type"::Xml:
FileType := FileType::Xml;
DataExchDef."File Type"::Json:
FileType := FileType::Json;
else
Error(FileTypeNotSupportedErr, DataExchDef."File Type");
end;
end;
}