Ir al contenido principal

Call Screens through Code in Sage X3


Fuente origen: https://www.greytrix.com/blogs/sagex3/2012/10/10/call-screens-through-code-in-sage-x3/

By  | October 10, 2012

Off lately, we have been exploring ways to calling pop up screens in Sage X3. Now let us add one more leaf, though bit more technical, in this series.
Although, calling up screens through action is the more preferred way, however, we came across a situation wherein a single action execution needs to be capable of calling different screens based on the data or type of the parent screen. Let me explain it in the context of the project that I am working on:
I have a developed a Screen say “XSCR0” that can be called from multiple modules viz, Sales, Purchase, Manufacturing etc. Now, there is a button (action) in this screen that again pulls up a another screen that has data (fields) relevant to the Module from which the “XSCR0” has been called. To achieve this functionality, I have created screens that have fields relevant to the modules I am working with. On the button click, I call up the required screen by using the following switch statement:
Case SOURCEMASK
When “Purchase”        : Call SHOW_POINFO
When “Sales”                : Call SHOW_SOINFO
When Default
Endcase
Now each case will contain following code snip function:
Subprog SHOW_ POINFO
Local Integer A_REPONSE
Global Integer GPRE_VIEW
If dim(A_WINDPREV)<=0 : Local Char A_WINDPREV(30) : Endif
Local Mask XSCR0[XSCR1] Local Inpbox “Windowname” From GFONCTION At A_STAMP With A_WINDPREV Mask [XSCR1] As [SIM_] Boxact [SIM_] Boxinp [SIM_] Using A_REPONSE
#You can also access fields on the pop up screen.
DETAILS = [M:XSCR1]FLD001
#Once the screen is closed.
Close Local Inpbox [SIM_] Close Local Mask [XSCR1] Kill GPRE_VIEW
End
I know this is a bit technical but definitely effective. I am still looking for better “no code” alternative for this scenario but as of now, this gives me what I need. Hope this might be helpful to you as well.

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

Valores de fstat

Fstat fstat  is a numeric status that is returned upon execution of a database operation, a sequential file operation, or a lock instruction. Syntax fstat Examples # MYTABLE is a table with a key called KEY1, that has a unique component called KEYVAL # Create a record in the table MYTABLE with they key value 1 if it doesn't exist Local File MYTABLE [MYT] Read [MYT]KEY1=1 If fstat [MYT]KEYVAL=1 : Write [MYT] If fstat MSG="The key was created in the mean time" Else MSG="Key created" Endif Else MSG="Key already exists" Endif Details fstat  is always set to '0' if the operation is successfully completed, and has a non-null value if there is an error: In a sequential read ( Getseq  and  Rdseq ),  fstat  is set to '1' at the end of the file. On  Lock ,  fstat  is set to '1' if the lock could not be performed. For a database operation ( Read ,  Look ,  Readlock ,  For ,  Write ,  ...

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