Sage X3 silent import (IMPORTSIL) with error catching

Sage X3 ERP and BI consulting

Sage X3 silent import (IMPORTSIL) with error catching

You already know how to manually generate a CSV file in order to import it threw a template in Sage X3.
But If you wonder how to catch detailed errors after a silent import here is the solution.
Sometimes you need to catch the incoming errors in order to alert the end-user regarding an issue.
Closed period, wrong date etc ….
Unfortunalty the standard Sage X3 silent import function doesn’t natively show the detailed errors during the import process.
Call IMPORTSIL([M:IMP2]MODIMP,[M:IMP2]NOMIMP) From GIMPOBJ
And the standard function ERR_IMPORT will only show the overall status of the importation and not the detailed errors.
image001
IMPORTSIL function is pushing all the log data into a tracefile in order to avoid any popup on end-user screen.
So you have a log file available in order to search for errors in it.
Sage X3 runtime is using the same principals standards as any shell for loging informations
image002
0001 = Errors output
image003
0000 = Standard output
image004

Let’s make an example :

1) 4GL Silent import call

    Raz [M:IMP2]

    [M:IMP2]MODIMP = YAOENAME # Import Template Name

    [M:IMP2]NOMIMP = YTMPFILE # File Location and Name

    [M:IMP2]TYPEXP = 2 # Server

 

    Call IMPORTSIL([M:IMP2]MODIMP,[M:IMP2]NOMIMP) From GIMPOBJ

    Call ERR_IMPORT([M:IMP2]STAT, YMESSAGE) From GIMPOBJ

    If [M:IMP2]STAT or GOK < 1 : YRESTA += 1   # Import Error

    Else : YRESTA = 0 : Endif                  # Import Successful

    If !GSERVEUR : Call FERME_TRACE From LECFIC : Endif

2) Log reading

 

    Openi filpath(“TRA”,GTRACE,“tra”,0) Using [YTRA]

 

    Local Char XLINE(100)

    Repeat

      Rdseq XLINE Using [YTRA]

      If left$(XLINE,5)=“<0001”                  # This is an error

        Append YMESSAGE(YRESTA), right$(XLINE,6) : YRESTA += 1

        Break

      Elsif find(left$(XLINE,11), “Création de”) # This is OK

        [L]Y2_TSKNUM = right$(XLINE,13)

        Append YMESSAGE(YRESTA), [L]Y2_TSKNUM : YRESTA += 1

      Endif

    Until fstat <> 0

    Openi Using [YTRA]