Ir al contenido principal

SAGE X3 SILENT IMPORT (IMPORTSIL) WITH ERROR CATCHING

FUENTE ORIGINAL: https://pluginx3.com/en/blog/post/sage-x3-silent-import-importsil-with-error-catching.html


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.

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

0001 = Errors output

0000 = Standard output

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]

Entradas populares de este blog

Sage X3 Create a new CLOB Text

Here how to create a CLOB text Funprog F_CRELOB ( YABRFIC , YTEXTE ) Value Char YABRFIC Value Char YTEXTE Local Char XXRTFTXT ( 250 ) ( 3 ) XXRTFTXT ( 0 ) = "{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 MS Sans Serif;}}\viewkind4\uc1\pard\f0\fs17 " XXRTFTXT ( 1 ) = YTEXTE XXRTFTXT ( 2 ) = "\par}" Local Char X_RET Local Integer XXOK Local Char XCHAMPLIEN : XCHAMPLIEN = "YYYY" Global Char YYYY : YYYY = YABRFIC Local Clbfile WWCLOB Local Mask ACLOB [ M :ACL ] Setlob WWCLOB With XXRTFTXT [ M :ACL ] CLOB = WWCLOB Call CRE_CLOB_ACL ( XCHAMPLIEN , XXOK ) From TRTX3TEX Close Local Mask [ M :ACL ] X_RET = YYYY Kill YYYY End X_RET

How To Add a Custom Selector for the Screen Field

Fuente original del artículo:   https://www.rklesolutions.com/blog/how-to-add-a-custom-selector-for-the-screen-field January 5, 2022 By RKL Team Leave a Comment There may be times when you want to add a pop-up window to select a field for a screen. Sometimes this can be handled automatically if the field is a standard X3 object field (i.e. when selecting a product with a type of ITM from the ITMMASTER table). There may be other times where a standard look-up is not available, and some custom code is required to do the selection window. We'll show you how to add a custom selector of your choosing to the screen field. ADD SELECT ON SCREEN FIELD The first step is to add the appropriate code to the field on the screen in Sage X3: Go to  Development > Script Dictionary > Screens Select Your Screen Select the field to have the lookup for  by moving your cursor to it on the screen. The field should show with a blue background. Select a type of "Selection" , and an  ac...