Userexits

Functions
Pre-Transition userexits

Functions

int xchg_cpl_set_pra (const char *param1, const char *param2)
  More...
 
int xchg_set_rel_cre_id (const char *param1, const char *param2)
  More...
 
int xchg_std_rel_pra (const char *param1, const char *param2)
  More...
 
int xcps_elm_cmp_rel (const char *param1, const char *param2)
  More...
 
int xcps_grp_cmp_rel (const char *param1, const char *param2)
  More...
 
int xcps_vrf_bom_pos_tra (const char *param1, const char *param2)
  More...
 
int xcps_vrf_sgl_bom_tra (const char *param1, const char *param2)
  More...
 
int xedbstr_tor_ref_rel (const char *param1, const char *param2)
  More...
 
int xedbusr_chk_no_obj_ews (const char *param1, const char *param2)
  More...
 
int xedbusr_chk_obj_ews (const char *param1, const char *param2)
  More...
 
int xedbusr_is_owner ()
 Checks, if the current user is the owner of the record. More...
 
int xedbusr_not_owner ()
 Checks, if current user is NOT the owner of the record. More...
 
int xedbusr_pre_sta_lgv ()
 Pre-transition userexit that executes a LogiView procedure. More...
 
int xedbusr_tor_chk_rel (const char *param1, const char *param2)
  More...
 
int xedbusr_tor_ref_rel (const char *param1, const char *param2)
  More...
 
int xedbusr_tor_rr_vr (const char *param1, const char *param2)
  More...
 
int xedbusr_tor_var_rel (const char *param1, const char *param2)
  More...
 
int xedbusr_tor_ver_rel (const char *param1, const char *param2)
  More...
 
int xstate_chk_obj_sta_prt (const char *param1, const char *param2)
  More...
 
int xstate_slv_nxt_sta (const char *param1, const char *param2)
  More...
 
int xtxt_gls_upd_tra (const char *param1, const char *param2)
  More...
 
int xtxt_ins_upd_tra (const char *param1, const char *param2)
  More...
 
int xtxt_ins_xtr_tra (const char *param1, const char *param2)
  More...
 
int xtxt_tpl_ctr_tra (const char *param1, const char *param2)
  More...
 

Detailed Description

Function Documentation

int xchg_cpl_set_pra ( const char *  param1,
const char *  param2 
)

Pre-release transition userexit for Work Sets. This userexit is called before the transition from "In Work" to "Complete" of a Work Set is executed. It calls a user defined pre-release function for each change operation which is assigned to the work set (without customization this is the userexit xchg_std_rel_pra). This pre-release function can perform any necessary check on the affected objects, for example: The effectivity date is finally set in the field EDB_EFF_DATE of the Work Set.

Parameters
contextThe transition userexit context.
paramParameter to control the behavior of this userexit. Syntax like:
"[/EFF-TARGET[=date]]"

with possible arguments:
/EFF-TARGETdate

If this parameter is not given at all, the effectivity date which will be set in EDB_EFF_DATE is queried interactively by the user.

If the parameter is given with no date value, the date is read from the target date field EDB_EFF_TARGET of the work set. If the field EDB_EFF_TARGET does not exist in the work set mask, the current date is used.

Finally a specific date can be passed explicitly to set a specific effectivity date. The date must be passed in the mask date format.

Returns
0 OK
Else One of the pre-release functions failed.
See Also
xchg_std_rel_pra
int xchg_set_rel_cre_id ( const char *  param1,
const char *  param2 
)

Userexit that calls the "Create persistent ID" userexit for all preliminary objects assigned to a Work Set.

Exactly one Work Set must be selected as otherwise the user will get an error message and the execution of this userexit is aborted.

The default implementation removes the preliminary flag of the assigned objects and corrects the current flag of the predecessor (see CRM ). A specific implementation may be defined by the customizer to control the creation of persistent IDs. In this case the default implementation does nothing except managing the preliminary and the current flag.

Parameters
contextThe context of the userexit
param[/NO_CURFLAG] if /NO_CURFLAG option is set then the correction of the current flag of the predecessor is not done (not recommended!).
Returns
0 OK
Else Error
int xchg_std_rel_pra ( const char *  param1,
const char *  param2 
)

Standard pre-release transition userexit for change operations. This userexit is called for each change operation of a Work Set before a Work Set is completed. It is the default pre-transition function which is executed when no other user defined a pre-transition function.

For all new objects (objects which become valid through this change operation), it checks if the objects are persistent (i.e. not preliminary) and if a transition exists which can change the object's state from its current (approved) state into a released state. If the object is not under control of the Change Management, it is checked if the object is released.

For all obsolete objects (objects which become invalid through this change operation), it is checked if there exists a transition which can change the current state of the object into an inactive state.

Any failed check is printed interactively to the client's message window.

Parameters
usxContextThe userexit context.
paramReserved
Returns
0 OK
1 At least one of the checks failed.
int xcps_elm_cmp_rel ( const char *  param1,
const char *  param2 
)

Pre-transition userexit for product structure elements. Checks if the assigned product component is released, because the product component must be released before the product structure element can be released.
The userexit prints a message if the assigned product component is not released.

Parameters
contextTransition userexit context
paramReserved
Returns
0 Ok
Else Error
int xcps_grp_cmp_rel ( const char *  param1,
const char *  param2 
)

Transition userexit for the product family - product component relation. Checks if the assigned product component is released, because the product component must be released before the class - product component relation can be released.
The userexit prints a message if the assigned product component is not released.

Parameters
contextTransition userexit context
paramReserved
Returns
0 OK
Else Error
int xcps_vrf_bom_pos_tra ( const char *  param1,
const char *  param2 
)

Pre-transition userexit for BOM position. If the item structure is verified, the BOM position will be verified against the effective conceptual product structures for the parent item.

The userexit supports the following view scopes:

Production view (PRD) In production view the product component, product structure element, classification and the relation between them have to be released or set effective to be considered in the verification process. If the flag /SOFT is set, BOM positions that are not released yet are also considered. The objects which will be released are also considered and the effectivity of the assigned work sets is used.
Development view (DEV) Same as the production view, but product strucure elements of the conceptual product structure that are not released yet are also considered during the verification.
Parameters
contextAction userexit context
paramParameter to control the behavior of this function. Syntax is:
"/PRD|/DEV [/SOFT] [/STRICT][/SILENT][/SHORTMSG][/ALT={ALL|DETECT}][/ANALYSE]"

With possible arguments:
PRD Verify in production view.
DEV Verify in development view (default).
SOFT Not released BOM positions are allowed.
STRICT Userexit returns an error if verification fails.
SILENT Do not print any messages.
SHORTMSG Print only "important" messages.
ALT ALL: Check all alternatives, DETECT: One successful verification of a BOM position is enough.
ANALYSE Uses step-by-step algorithm for verification and displays all verification messages.
Returns
0 OK
Else Error
int xcps_vrf_sgl_bom_tra ( const char *  param1,
const char *  param2 
)

Pre-transition userexit for items. If the structure of an item is verified the BOM positions will be verified against the effective conceptual product structures for the item.

The userexit supports the following view scopes:

Production view (PRD) In production view the product component, product structure element, classification and the relation between them have to be released or set effective to be considered in the verification process. If the flag /SOFT is set, BOM positions that are not released yet are also considered. The objects which will be released are also considered and the effectivity of the assigned work sets is used.
Development view (DEV) Same as the production view, but product strucure elements of the conceptual product structure that are not released yet are also considered during the verification.
Parameters
contextTransition userexit context
paramParameter to control the behavior of this function. Syntax is:
"/PRD|/DEV [/SOFT][/STRICT][/SILENT][/ANALYSE]"

With possible arguments:
PRD Verifies in production view.
DEV Verifies in development view (default).
SOFT Not released BOM positions are allowed.
STRICT Returns an error if verification fails. SILENT Do not print any messages.
ANALYSE Uses step-by-step algorithm for verification and displays all verification messages.
Returns
0 OK
1 Verification failed (only if option /STRICT is set)
int xedbstr_tor_ref_rel ( const char *  param1,
const char *  param2 
)

Userexit checks certain conditions for the Change & Release Management. This userexit checks, if the child element of a relation record has already been released. If Change Management is activated, it also checks, if the "from" Work Set has already been released.

This userexit works on relation records.

Parameters
usxContextThis is the context for a transition userexit. Unlike DataView action userexit contexts, the first character describing the mode can be either 'y' for a forward transition (new progress indicator > old progress indicator) or 'n' for a backward transition (new progress indicator < old progress indicator). The following characters describe the affected row number. Example: "y23", "n4".
paramParameter to control the behavior of this userexit. Syntax like:
"[/FLAGONLY]"

With possible arguments:
FLAGONLY If this parameter has been passed, the released flag will be used to check. Otherwise, the dates of VAL_FROM and VAL_UNTIL are used.
Returns
0All relevant elements are released.
-1Not all relevant elements are released, or an error occurred.
int xedbusr_chk_no_obj_ews ( const char *  param1,
const char *  param2 
)

Checks if an object is not assigned to a Work Set (via a change operation).

Parameters
usxContextThe userexit context. This is the context for a transition userexit. Unlike DataView action userexit contexts, the first character describing the mode can be either 'y' for a forward transition (new level indicator > old level indicator) or 'n' for a backward transition (new level indicator < old level indicator). The following characters represent the affected row. Example: "y23", "n4".
paramReserved.
Returns
0The object is not assigned to a Work Set.
1The object is assigned to a Work Set.
See Also
xedbusr_chk_obj_ews
int xedbusr_chk_obj_ews ( const char *  param1,
const char *  param2 
)

Pre-transition userexit of the Change & Release management checks, if an object is assigned to a released Work Set (via a change operation).

Parameters
usxContextThe userexit context. This is the context for a transition userexit. Unlike DataView action userexit contexts, the first character describing the mode can be either 'y' for a forward transition (new level indicator > old level indicator) or 'n' for a backward transition (new level indicator < old level indicator). The following characters describe the affected row. Example: "y23", "n4".
paramReserved.
Returns
0Object is assigned to a Work Set.
1Object is not assigned to a Work Set.
See Also
xedbusr_chk_no_obj_ews
int xedbusr_is_owner ( )

Checks, if the current user is the owner of the record.

Pre-transition userexit for the change & release management. Only the owner of the element may execute the transition.

Parameters
cp_StatusStandard transition parameter with direction mode and current row.
direction mode description
y forward: new level indicator greater than old level
n backward: new level indicator less than old level
cp_ArgumentsReserved.
Returns
0 OK
1 Error occurred
int xedbusr_not_owner ( )

Checks, if current user is NOT the owner of the record.

Pre-transition userexit for the change & release management. It prevents the owner of the element from executing the transition.

Parameters
cp_StatusStandard transition parameter with direction mode and current row.
direction mode description
y forward: new level indicator greater than old level
n backward: new level indicator less than old level
cp_ArgumentsReserved.
Returns
0 OK
1 Error occurred
int xedbusr_pre_sta_lgv ( )

Pre-transition userexit that executes a LogiView procedure.

Pre-transition userexit for the change & release management. It calls a LogiView decision table / procedure.

Note
The LogiView System stringvariable "STA" will be set to the value of 'cp_Status' (mode and row, e.g. "y23"). If 'cp_Argument' is not set, the name of the decision table (or procedure) to be called will be set according to the name of the current checksteps and "pre_sta". e.g. Checksteps "STD-ORD" -> Decision table "STD_ORD/pre_sta"
Parameters
cp_StatusStandard transition parameter with direction mode and current row.
direction mode description
y forward: new level indicator greater than old level
n backward: new level indicator less than old level
cp_ArgumentsReserved.
Returns
0 Success
1 Error occurred
int xedbusr_tor_chk_rel ( const char *  param1,
const char *  param2 
)

This userexit checks, if all relation records for the structure view STR are released. It will be checked, if all relation elements of the structure relation of this object are released. Only the refine relation to the same entity is checked! Sub-elements to other entities are not checked.

This userexit checks the relation records of an entity record. To check the assigned entity records instead, use xedbusr_tor_ref_rel.

This userexit works on entity records.

Parameters
usxContextThis is the context for a transition userexit. Unlike DataView action userexit contexts, the first character describing the mode can be either 'y' for a forward transition (new progress indicator > old progress indicator) or 'n' for a backward transition (new progress indicator < old progress indicator). The following characters describe the affected row. Example: "y23", "n4".
paramParameter to control the behavior of this userexit. Syntax like:
"[/FLAGONLY]"

With possible arguments:
FLAGONLY If this parameter is given, the released flag will be used for the check. Otherwise, the dates of VAL_FROM and VAL_UNTIL are used.
Returns
0All elements are released.
-1Not all relations are released, or an error occurred.
See Also
xedbusr_tor_ref_rel
int xedbusr_tor_ref_rel ( const char *  param1,
const char *  param2 
)

This userexit checks, if all sub-elements of the structure relation of this object are released. Only the refine relation to the same entity is checked. Sub-elements of other entities are not checked.

This userexit checks the assigned entity records. To check the relation records instead, use xedbusr_tor_chk_rel.

This userexit works on entity records.

Parameters
usxContextThis is the context for a transition userexit. Unlike DataView action userexit contexts, the first character describing the mode can be either 'y' for a forward transition (new progress indicator > old progress indicator) or 'n' for a backward transition (new progress indicator < old progress indicator). The following characters describe the affected row. Example: "y23", "n4".
paramParameter to control the behavior of this userexit. Syntax like:
"[/FLAGONLY]"

With possible arguments:
FLAGONLY If this parameter is given, the released flag will be used for the check. Otherwise, the dates of VAL_FROM and VAL_UNTIL are used.
Returns
0All elements are released.
-1Not all relations are released, or an error occurred.
See Also
xedbusr_tor_chk_rel, xedbusr_tor_rr_vr
int xedbusr_tor_rr_vr ( const char *  param1,
const char *  param2 
)

Pre-transition userexit which calls xedbusr_tor_ref_rel followed by xedbusr_tor_ver_rel.

Parameters
usxContextThis is the context for a transition userexit. Unlike DataView action userexit contexts, the first character describing the mode can be either 'y' for a forward transition (new progress indicator > old progress indicator) or 'n' for a backward transition (new progress indicator < old progress indicator). The following characters describe the affected row. Example: "y23", "n4".
paramParameter to control the behavior of this userexit. Please refer to xedbusr_tor_ref_rel and xedbusr_tor_ver_rel for a description of possible parameters.
Returns
0OK
-1Error in userexit xedbusr_tor_ref_rel.
-2Error in userexit xedbusr_tor_ver_rel.
See Also
xedbusr_tor_ref_rel, xedbusr_tor_ver_rel
int xedbusr_tor_var_rel ( const char *  param1,
const char *  param2 
)

Pre-transition (to release) userexit that checks the release state of all elements in a variant list. It checks if all elements in the variant list of the current element (variant placeholder) are released, when this element is going to be released.

If the Change Management is activated, it also checks, if the "from" Work Set has already been released.

Parameters
usxContextThis is the context for a transition userexit. Unlike DataView action userexit contexts, the first character describing the mode can be either 'y' for a forward transition (new progress indicator > old progress indicator) or 'n' for a backward transition (new progress indicator < old progress indicator). The following characters describe the affected row. Example: "y23", "n4".
paramParameter to control the behavior of this userexit. Syntax like:
"[/FLAGONLY]"

With possible arguments:
FLAGONLY If this parameter is given, the release flag will be used to check. Otherwise, the dates of VAL_FROM and VAL_UNTIL are used.
Returns
0All relevant elements are released.
-1Not all relevant elements are released, or an error occurred.
int xedbusr_tor_ver_rel ( const char *  param1,
const char *  param2 
)

This userexit checks, if an element in the version structure has already been released. Pre-transition (to release) userexit to check, if there is already a released element in the version structure.

Parameters
usxContextThis is the context for a transition userexit. Unlike DataView action userexit contexts, the first character describing the mode can be either 'y' for a forward transition (new progress indicator > old progress indicator) or 'n' for a backward transition (new progress indicator < old progress indicator). The following characters describe the affected row. Example: "y23", "n4".
paramAdditional userexit parameters. Currently none.
Returns
0The version structure does not contain any released elements.
1At least one released element exists in the version structure.
See Also
xedbusr_tor_rr_vr
int xstate_chk_obj_sta_prt ( const char *  param1,
const char *  param2 
)

Pre-transition userexit to check if related objects have a certain state. This userexit works on relation records and can be used to check the parent- or the child record of the relation record. It checks if related objects given by the parameter /PARENT, /CHILD or /USX have the state given by the parameter /STATE.

Parameters
usxContextThe userexit context.
paramParameter to control the behavior of this userexit. Syntax like:
"/STATE=state /CHILD|/PARENT|/USX [/S][/ALLCTX]"

with possible arguments:
STATE APPROVED|RELEASED#x7c;VERSIONABLE::x7c;WITHDRAWN::x7c;INWORKThe state which related objects must have.
CHILD Checks the child object
PARENT Checks the parent object
USXuserexitUserexit to use for selecting the related object
   The following parameters are optional:

   <table><tr><th>S</th><td>&nbsp;</td><td>Strict check. Also perform the checks if the current user 
              is a DataView manager user. The default setting is not to
              check in this case</td></tr><tr>
    <th>ALLCTX</th><td>&nbsp;</td><td>Checks all related records, not only those which are
              valid in the currently set context.</td></tr></table>
Returns
0The related objects have the right state.
>0At least one of the related objects does not have the right state.
See Also
xstate_chk_obj_sta_eda, xstate_chk_obj_sta_pra
int xstate_slv_nxt_sta ( const char *  param1,
const char *  param2 
)

Processes all slave release procedures of the master record. For the slave records a single level structure explosion is performed, all records are selected and the standard function xstate_nxt_sta is called for these records. During the release all post-/pre-action userexits of the release steps of the master release procedure are called. The flag "valall" is temporarily set to 1 to indicate that the fields VAL_FROM and VAL_UNTIL shall be taken from the master record.

Remarks
Is called from the pre-action trigger of the release steps of the master release procedure.
Parameters
usxContextThe userexit context.
paramReserved.
Returns
0OK
1Error during the release of the child with a slave release procedure.
int xtxt_gls_upd_tra ( const char *  param1,
const char *  param2 
)

Tries to update all Where-Used objects corresponding this Glossary. It is possible to update objects through 1-3 levels. This depends on the configuration. Regarding the configuration, the fields EDB_VALUE_1 (Object 1 Update Field), EDB_VALUE_2 (Object 2 Update Field), and EDB_VALUE_3 (Object 3 Update Field) contain the field (and therefore the object/value) which should be updated.

EDB_VALUE_x (Object x Update Field) Contains the name of the field, which should be updated on level x. Depending on the status of the object and the status configuration (for level x). The states in which the object should be updatable are defined with the fields EDB_IN_WORKx (IW), EDB_APPROVEDx (AP), EDB_RELEASEDx (RL), EDB_REVISIONINGx (RV).

In addition, the state of the updatable object has to be checked (except the parameter /IGNORE_STATE is set), therefore, the following entries in the Where-Used configuration have to be taken into account (the x stands for the level 1,2,3):

EDB_IN_WORKx (IW) Value = 'y', is the object of level x (EDB_Value_1 (Object x Update Field)) in state "In Work" then proceed updating!
EDB_APPROVEDx (AP) Value = 'y', is the object of level x (EDB_Value_1 (Object x Update Field)) in state "Approved" then proceed updating!
EDB_RELEASEDx (RL) Value = 'y', is the object of level x (EDB_Value_1 (Object x Update Field)) in state "Released" then proceed updating!
EDB_REVISIONINGx (RV) Value = 'y', is the object of level x (EDB_Value_1 (Object x Update Field)) in state "Revisioning" then proceed updating!
If one state is set to '' the object has no state (no LEV_IND)
If all states are set to '' ==> the check for the state of the corresponding updatable object is ignored.
If all states are set to 'n' a error message "No state set for object_x -> CID:'CID of object' Table:'table name of object'" occurs!

The lifecycle of the object is identified by the table name of the updatable object (first part of the EDB_VALUx-content) and the CHK_NAME field. The current state of the object is identified by the table name (first part of the EDB_VALUx content) and the LEV_IND field.

Therefore, the updatable mechanism is able to check if the selected state in the Where-Used configuration (IW, AP, RL, RV) regarding the lifecycle name of the current object and the current state value of the object matches. If it matches, the update will proceed, otherwise, an "Object_x is NOT in correct state -> Table:'object-table' CID:'object-C_ID'" occurs and the whole transaction is rolled back.

Parameters
ctxUserexit context
paramParameter to control the behavior of this function. Syntax is:
"/IGNORE_STATE /STRICT"

With possible arguments:
IGNORE_STATE The state of all updatable objects has to be ignored.
STRICT Default. If one object is not in the correct state, then do not update all objects and proceed a rollback.
Returns
0 OK
Else Error
int xtxt_ins_upd_tra ( const char *  param1,
const char *  param2 
)

Tries to update all Where-Used objects corresponding to this Text-Instance. It is possible to update objects through 1-3 levels. This depends on the configuration. Regarding the configuration, the fields EDB_VALUE_1 (Object 1 Update Field), EDB_VALUE_2 (Object 2 Update Field), and EDB_VALUE_3 (Object 3 Update Field) contain the field (and therefore the object/value) which should be updated.

EDB_VALUE_x (Object x Update Field) Contains the name of the field, which should be updated on level x. Depending on the status of the object and the status configuration (for level x). The states in which the object should be updatable are defined with the fields EDB_IN_WORKx (IW), EDB_APPROVEDx (AP), EDB_RELEASEDx (RL), EDB_REVISIONINGx (RV).

In addition, the state of the updatable object has to be checked (except the parameter /IGNORE_STATE is set), therefore the following entries in the Where-Used configuration have to be taken into account (the x stands for the level 1,2,3):

EDB_IN_WORKx (IW) Value = 'y', is the object of level x (EDB_Value_1 (Object x Update Field)) in state "In Work" then proceed updating!
EDB_APPROVEDx (AP) Value = 'y', is the object of level x (EDB_Value_1 (Object x Update Field)) in state "Approved" then proceed updating!
EDB_RELEASEDx (RL) Value = 'y', is the object of level x (EDB_Value_1 (Object x Update Field)) in state "Released" then proceed updating!
EDB_REVISIONINGx (RV) Value = 'y', is the object of level x (EDB_Value_1 (Object x Update Field)) in state "Revisioning" then proceed updating!
If one state is set to '' the object has no state (no LEV_IND)
If all states are set to '' ==> the check for the state of the corresponding updatable object is ignored.
If all states are set to 'n' a error message "No state set for object_x -> CID:'CID of object' Table:'table name of object'" occurs!

The lifecycle of the object is identified by the table name of the updatable object (first part of the EDB_VALUx-content) and the CHK_NAME field. The current state of the object is identified by the table name (first part of the EDB_VALUx content) and the LEV_IND field.

Therefore, the updatable mechanism is able to check if the selected state in the Where-Used configuration (IW, AP, RL, RV) regarding the lifecycle name of the current object and the current state value of the object matches. If it matches, the update will proceed, otherwise, an "Object_x is NOT in correct state -> Table:'object-table' CID:'object-C_ID'" occurs and the whole transaction is rolled back.

Parameters
ctxUserexit context
paramParameter to control the behavior of this function. Syntax is:
"/IGNORE_STATE /STRICT"

With possible arguments:
IGNORE_STATE The state of all updatable objects has to be ignored.
STRICT Default. If one object is not in the correct state, then do not update all objects and proceed a rollback.
Returns
0 OK
Else Error
int xtxt_ins_xtr_tra ( const char *  param1,
const char *  param2 
)

Checks for instance match.

Note
Two instances match, when the corresponding text template is the same, and all placeholder values (multilingual) match.
Parameters
cpParameterStandard parameter with working mode and current row.
cpArgumentsParameter to control the behavior of this function. Syntax is:
"/STRICT /NON_STRICT"

With possible arguments:
NON_STRICT A match prints the message "EDB-TXT-INS-SAM-PLH".
STRICT A match prints the message "EDB-TXT-INS-SAM-PLH" and returns -1.
- STRICT mode will be used.
Returns
0 OK
Else Error
int xtxt_tpl_ctr_tra ( const char *  param1,
const char *  param2 
)

Tries to update all Where-Used objects corresponding this Text-Template. It is possible to update objects through 1-3 levels. This depends on the configuration. Regarding the configuration, the fields EDB_VALUE_1 (Object 1 Update Field), EDB_VALUE_2 (Object 2 Update Field), and EDB_VALUE_3 (Object 3 Update Field) contain the field (and therefore the object/value) which should be updated.

EDB_VALUE_x (Object x Update Field) Contains the name of the field, which should be updated on level x. Depending on the status of the object and the status configuration (for level x). The states in which the object should be updatable are defined with the fields EDB_IN_WORKx (IW), EDB_APPROVEDx (AP), EDB_RELEASEDx (RL), EDB_REVISIONINGx (RV).

In addition, the state of the updatable object has to be checked (except the parameter /IGNORE_STATE is set), therefore, the following entries in the Where-Used configuration have to be taken into account (the x stands for the level 1,2,3):

EDB_IN_WORKx (IW) Value = 'y', is the object of level x (EDB_Value_1 (Object x Update Field)) in state "In Work" then proceed updating!
EDB_APPROVEDx (AP) Value = 'y', is the object of level x (EDB_Value_1 (Object x Update Field)) in state "Approved" then proceed updating!
EDB_RELEASEDx (RL) Value = 'y', is the object of level x (EDB_Value_1 (Object x Update Field)) in state "Released" then proceed updating!
EDB_REVISIONINGx (RV) Value = 'y', is the object of level x (EDB_Value_1 (Object x Update Field)) in state "Revisioning" then proceed updating!
If one state is set to '' the object has no state (no LEV_IND)
If all states are set to '' ==> the check for the state of the corresponding updatable object is ignored.
If all states are set to 'n' a error message "No state set for object_x -> CID:'CID of object' Table:'table name of object'" occurs!

The lifecycle of the object is identified by the table name of the updatable object (first part of the EDB_VALUx-content) and the CHK_NAME field. The current state of the object is identified by the table name (first part of the EDB_VALUx content) and the LEV_IND field.

Therefore, the updatable mechanism is able to check if the selected state in the Where-Used configuration (IW, AP, RL, RV) regarding the lifecycle name of the current object and the current state value of the object matches. If it matches, the update will proceed, otherwise, an "Object_x is NOT in correct state -> Table:'object-table' CID:'object-C_ID'" occurs and the whole transaction is rolled back.

Parameters
ctxUserexit context
paramParameter to control the behavior of this function. Syntax is:
"/IGNORE_STATE /STRICT"

With possible arguments:
IGNORE_STATE The state of all updatable objects has to be ignored.
STRICT Default. If one object is not in the correct state, then do not update all objects and proceed a rollback.
Returns
0 OK
Else Error