Ir al contenido principal

Loops and conditions


Conditions

If Then Else

The following scripts are equivalent:
If I=1 Then J=2 Else J=3 : Endif
If I=1  :   J=2 Else J=3 : Endif  # the ":" allow to write one instruction after the other
If I=1
  J=2
Else J=3
Endif
In the case of multiple conditions placed in and, the evaluations are made in the written order, and the program stops at the first false condition found; in the case below, if ConditionA is false the other two conditions are not evaluated (therefore, in case of instructions, they are not executed):
If CondizioneA & CondizioneB and CondizioneC
Examples:
<> mathematical operator means “different from”;for example if you want check if a string is not null:
If [M:YCE1]YSEZFIL <> ""
Endif
The exclamation mark corresponds to not
If !clalev([F:YADI]) 
  Local File ATABDIV [F:YADI] 
Endif

Inline conditions

To put an “inline” condition, for example in the selection fields of an object, you can use stringstring$
or to make a value appear only for a certain transactionstring$(GFLAG='YOFQ',[F:POH]YPOHORE)

Loops

You can use two forms of loops,
For…Next
and
While…Wendwith different syntaxes based on the cases.
See below some examples

Loop on numerical variable

The step if not specified is 1.

For I = 1 To 13 Step 2.5 : Infbox num$(I) : Next I : Infbox 'FIN='+num$(I)  # displays  : 1 3.5 6 8.5 11 FIN=13.5
For I = 15 To 20 : Infbox I : Next I : Infbox 'FIN='+num$(I)                # displays  : 15 16 17 18 19 20 FIN=21
For I = 15 To 11 Step -1 : Infbox I : Next I : Infbox 'FIN='+num$(I)        # displasy  : 15 14 13 12 11 FIN=10

Loop on alfanumerical variable

For  CHN='A','EF','X','ZZZ' : Infbox CHN : Next CHN : Infbox 'FIN='-CHN    # displays   : A EF X ZZZ FIN=ZZZ

For USER="John","Matteo","Lucas" 
   Call PARAMUSER(USER,OTHER) From YLIB 
   ...
Next USER

Loop on table

For [F:ITM] Where [F:ITM]YCAT='COD'
  ...
Next
While INDEX>0
 ...
Wend

Break

It is possible to use the break keyword to interrupt the cycle:
For [F:ITM]  
    ...
    Break
Next

Multiple conditions

The Case statement can be used to manage multiple conditions:
Case YI
When 1 : Infbox '1'
When 2
    YFILE = "C:\TEMP\test2.pdf"
    Infbox '2'
When 3
    Local Char V2(250)
    YFILE = "C:\TEMP\test3.pdf"
    Infbox '3' - YFILE - V2
When Default
Endcase

Entradas populares de este blog

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 log...

How to Call an External Program from Sage ERP X3

Origen fuente:   https://www.rklesolutions.com/blog/sage-x3-call-external-program November 20, 2014 By Denise Hartman Leave a Comment It is sometimes useful to be able to access external programs, such as .exe files, from the  Sage ERP X3   menu. Below are instructions for adding a menu item to Sage X3 that references a .Net .exe. COPY THE .EXE FILE TO THE SAGE X3 DIRECTORY The example used here uses the  Callui  function in the Sage X3 code to call OpenFile, and references the .exe program using the parameter UILocalDir. The program being executed must reside in a pre-defined list of directories available to this function. Depending on the parameter used for UILocalDir, the .exe should be copied to one of the 3 directories below. Temp Report RtsTemp Below is an excerpt from the X3 Help, which defines where each of these directories resides within the Sage ERP X3 client installation. In this example, the Temp directory is used. Bel...

How to Delete particular row and reset Grid

Origen: https://www.greytrix.com/blogs/sagex3/2014/06/30/how-to-delete-particular-row-and-reset-grid/ By  Greytrix   |   June 30, 2014 0 Comment We usually come across a scenario when we need to delete row from a grid through coding. Now we can even think of using SQL queries to delete the data, but these changes were reflected at the database level. The screen do not have the changes reflected and this may cause data inconsistency. So for deleting line from grid and then resetting the grid I used ‘DELA’ an existing function of X3. New Stuff :   How to send mail programmatically Dela  is used to delete elements from single-sized tables, from a given index. And also it resets the grid.   Syntax: Dela start [ , number [ , limit ] ] list_nom_var Example: Dela is used to delete elements (default 1) from a set of single-sized tables. In the instruction’s syntax, start establishes the index (shared by all the tables) where the deletion ...