Ir al contenido principal

Adding Controls to Fields in Sage Enterprise Management (Sage X3)

Sage Enterprise Management (Sage X3) is packed with things you don’t know it can do; one of the things that users often don’t take advantage of is the capacity to modify the software without knowing how to code.

Just to name a few:

Another feature of Sage Enterprise Management that often overlooked is the ability to add controls to a given field in the system without the need to know the 4GL language, which is Sage Enterprise Management’s proprietary coding language.

Here's how to add controls to fields in Sage Enterprise Management:

Under the setup module, you can find a function called control tables.

adding controls to fields in Sage Enterprise Management (Sage X3)

Developers eventually realized that they were constantly adding custom logic to standard or custom fields using the control action, so they decided to offer a function where a user could simply add controls to a field through an easy-to-use interface.

You can add any control to any field on a screen. Be aware, however, that sometimes the standard logic will take over after your control is evaluated and it might be overriding your configuration. This particularly holds true for controls you would add to a standard field.

For example: you might want to add a control on the currency field on the sales order screen.
Sage Enterprise Management is a true multi-currency software that comes configured with most currencies out of the box. Without deleting currencies one by one, you can still control which values can be used within a particular currency field.

In our scenario, because you do not deal with Canadian dollars or Hong Kong dollars, you can restrict the values allowed in a currency field by selecting the below information:

adding controls to fields in Sage Enterprise Management (Sage X3)

A few things to note on this screen:



You could just have as easily decided to use the mandatory values if my scenario was to only be able to choose CAD and HKD as the currencies available.

Using the range of values option, if you create a numeric field where the field is allowing to enter a 4-digit number, you can also decide to let the user only enter a range from 1 to 5150 instead of allowing all numbers from 1 to 9999.

What’s left is assigning the control code we just created to the field want that control to happen.
This will require that you know which screen and field you want to assign this control to. (As a reminder, you can figure out the screen code and the name of the field by placing your cursor in the field and holding down ESC while pressing F6.)

Here is the screenshot of that shortcut on the currency field of the sales order.

adding controls to fields in Sage Enterprise Management (Sage X3)

Remember to always use the field code as highlighted and the screen code in the square brackets, not the one starting with a W.

To make the association between the control that you just created and the field on the screen, there’s a dedicated function called control assignment:

adding controls to fields in Sage Enterprise Management (Sage X3)

You can then plug in the values we wrote down when we viewed the technical data of the field as follows:

adding controls to fields in Sage Enterprise Management (Sage X3)

Because the sales order is an entry transaction driven screen, after you save the above, you’ll have to validate the entry transactions you use in your system.

Let’s assume you’re only using the ALL entry transaction. You need to go to Setup > Sales > Entry transactions > Orders and then validate the ALL entry transaction.

Now, if you go to the sales order and enter the CAD currency, you should get a blocking control that prevents you from selecting it and giving you an error message when you try.

adding controls to fields in Sage Enterprise Management (Sage X3)

These are only a few examples of how you can use this functionality to add controls to your fields in Sage Enterprise Management.

Entradas populares de este blog

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

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