Purpose:
The purpose of this post is to demonstrate how we can read a CSV file from Azure File Share in X++.Application:
Dynamics 365 Finance and OperationsPrerequisites:
- Azure file storage account must be configured in Azure Portal
- File shares must be configured under this Azure file storage account
- Access permissions must be configured for this Azure file storage account
Disclaimer:
This post is only for sharing knowledge. Do not use this code as is in a Production environment.Business requirement:
Read a CSV file from Azure file share.Solution:
Please find the code below to read a CSV file from Azure File Share. The code reads ABN numbers from a CSV file. The file has only a single column of ABN numbers with a single number per line.Code
using Microsoft.Azure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.WindowsAzure.Storage.File;
class MyCloudStorageFileManager
{
#File
#define.delimiterField(',')
public static void main(Args _args)
{
#OCCRetryCount
System.IO.MemoryStream memoryStream;
System.String storageAccountName;
System.String keyValue;
CloudStorageAccount storageAccount;
CloudFileClient fileClient;
CloudFileShare fileShare;
CloudFileDirectory fileDirectoryRoot;
CloudFileDirectory fileDirectory;
CloudFile file;
TextStreamIo textStreamIo;
VendTable vendTable;
VATNum vendABN;
Counter counter;
container rec;
storageAccountName = "AzureStorageAccountName";
keyValue = "KeyValueString";
var storageCredentials = new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(storageAccountName, keyValue);
storageAccount = new Microsoft.WindowsAzure.Storage.CloudStorageAccount(storageCredentials, true);
fileClient = storageAccount.CreateCloudFileClient();
fileShare = fileClient.GetShareReference('AzureFileShareName');
if (fileShare.Exists(null, null))
{
fileDirectoryRoot = fileShare.GetRootDirectoryReference();
fileDirectory = fileDirectoryRoot.GetDirectoryReference("Folder/Subfolder");
if (fileDirectory.Exists(null, null))
{
file = fileDirectory.GetFileReference('File.csv');
if (file.Exists(null, null))
{
memoryStream = new System.IO.MemoryStream();
file.DownloadToStream(memoryStream, null, null, null);
textStreamIo = TextStreamIo::constructForRead(memoryStream);
try
{
if (textStreamIo)
{
if (textStreamIo.status())
{
throw Global::error("@SYS52680");
}
textStreamIo.inFieldDelimiter(#delimiterField);
textStreamIo.inRecordDelimiter(#delimiterCRLF);
counter = 0;
while (!textStreamIo.status())
{
rec = textStreamIo.read();
if (conLen(rec))
{
vendABN = conPeek(rec, 1);
info(strFmt("%1", vendABN));
}
}
}
}
catch (Exception::Error)
{
error("An error occured. Please contact your system administrator.");
}
}
}
}
}
}
https://devaos.axcloud.dynamics.com/?cmp=DAT&mi=SysClassRunner&cls=MyCloudStorageFileManager
Comments
Post a Comment