Changing the Properties of a Data Class Using an Operation

This document provides information on how to use an operation to change the properties (fields) of a data class from another data class.

The development process described below demonstrates how to add a simple script to a data class (MYCLASS1) to create an operation called from a different data class (MYCLASS2).

  1. Open your data class (MYCLASS1).
  2. In the Methods block of the Methods tab:
    1. Enter a new method code (MYMETH1) in the Code field.
    2. Enter a description for the method in the Description field.
    3. Select the appropriate return type in the Return type field.
    4. Select the Operation check box. This automatically generates the keys in the Keys block.
  3. In the Parameters block, enter the parameters (MYPARAM1) that need to be passed.
  4. In the Scripts block of the General tab:
    1. Select the appropriate type for your script in the Type field.
    2. Accept the default code displayed in the Scripts field. It is automatically generated using the class code and the script type. You can also manually enter a unique code.
    3. Accept the numeric value displayed in the Running order field. It is automatically generated to control the order in which the $PROPERTIES and $METHODS labels are called in the event. You can also manually enter the running order.
  5. Click the Actions button of your script, and click Processing editor. Enter the source code below.
    Note: This example uses the key passed in the Keys block of the Methods tab to read the current context from MYCLASS1, and then update the property (PROP1) using parameter MYPARAM1.
    $Structure MYCLASS1###########################################METHODS ###########################################$METHODSCase CURPTHWhen ""Case ACTIONWhen "MYMETHOD" Gosub MYMETHOD # Update MYPROP1 method Endcase EndcaseReturn# Update MYPROP1 using MYPRAM1 which is passed# KEY1 and MYPARM1 are passed and used in this operation$MYMETHOD# Use standard method CRUD to read MYCLASS1ASTATUS=fmet THIS.AREAD(KEY1) If ASTATUS<>[V]CST_AOK ARET_VALUE= CST_AFALSEReturnEndif# Update PROP1 using MYPARM1THIS.PROP1 = MYPARM1# Update MYCLASS1ASTATUS=fmet THIS.AUPDATEIf ASTATUS<>[V]CST_AOK # check status after updateARET_VALUE= CST_AFALSEReturnEndifARET_VALUE= CST_ATRUE Return
  6. Once the operation has been created, it must be called from data class MYCLASS2, or from any other data class.
    Add the following code to call MYMETHOD, which was defined above.
    ############################################### Data Class - MYCLASS2 ##############################################################################################METHODS ###############################################$METHODSCase CURPROWhen ""Case ACTIONWhen "AINSERT_AFTER" : Gosub AINSERT_AFTEREndcaseEndcaseReturn# Action After insert$AINSERT_AFTER# Declaration new instance of MYCLASS2 data classLocal Instance MYCLASS Using C_MYCLASS2MYCLASS = NewInstance C_MYCLASS2 AllocGroup NullASTATUS=fmet MYCLASS.MYMETHOD(KEYID,MYPARM1)If ASTATUS<>[V]CST_ATRUEASTATUS = fmet THIS.ASETERROR ("", "Not updated.", [V]CST_AERROR) Endif# Free instancesFreeGroup MYCLASSReturn
  7. Save your script.
  8. Save and validate your data class.