Import CSV file in D365 for Finance and Operation using X++

Below is a simple example for importing data from CSV file in D365 FO using X++:

/// <summary>

/// import color code

/// </summary>

class CFSImportColorCode

{

    /// <summary>

    /// main

    /// </summary>

    /// <param name = “_args”>_args</param>

    public static void main(Args _args)

    {

        AsciiStreamIo                       file;

        Array                               fileLines;

        FileUploadTemporaryStorageResult    fileUpload;

        CFSEcoResColorCode                  colorCode;

        CFSImportColorCode                  importColorCode = new CFSImportColorCode();

        Counter                             counter = 0;

        EcoResColorName                     color;

        #OCCRetryCount

        try

        {

            //Upload a file

            fileUpload  = File::GetFileFromUser() as FileUploadTemporaryStorageResult;

            file        = AsciiStreamIo::constructForRead(fileUpload.openResult());

            if (file)

            {

                if (file.status())

                {

                    throw error(“@SYS52680”);

                }

                file.inFieldDelimiter(‘;’); //separator

                file.inRecordDelimiter(‘\r\n’);

            }

            //Read a CSV File

            container rec;

            ttsbegin;

            while (!file.status())

            {

                counter++;

                rec = file.read();

                if (conLen(rec))

                {

                    color = conPeek(rec, 2);

                    colorCode = CFSEcoResColorCode::find(color);

                    if(!colorCode.RecId)

                    {

                        colorCode.clear();

                        colorCode.Name  = color;

                        colorCode.Code  = conPeek(rec, 1);

                        colorCode.insert();

                    }

                }

            }

            ttscommit;

            info(“Operation complete.”);

        }

        catch (Exception::Deadlock)

        {

            retry;

        }

        catch (Exception::UpdateConflict)

        {

            if (appl.ttsLevel() == 0)

            {

                if (xSession::currentRetryCount() >= #RetryNum)

                {

                    throw Exception::UpdateConflictNotRecovered;

                }

                else

                {

                    retry;

                }

            }

            else

            {

                throw Exception::UpdateConflict;

            }

        }

    }

}


Share Story :

SEARCH BLOGS :

FOLLOW CLOUDFRONTS BLOG :


Secured By miniOrange