Fake error in qualification renewal workflow:Element ISTAT not available in the container
In a recent implementation, we implemented Qualification Expiration/Renewal Workflow. After a week from go-live we encountered a fake error in workflow which I would like to share here.
For profile matach up task TS01000136 provided by SAP, we used rule 17900012 ( which uses FM HR_ASR_AGENTFINDER ) to determine user ID of the employee by reading course participation details from triggering event BO BUS7019->CREATEDWITHVALIDITY.
We passed below parameters to the the rule.
|Workflow container||Rule Container|
After a week from go-live some workflows erred out with message “Element ISTAT not available in the container”. Neither the rule 17900012, nor workflow had any mandatory / optional parameter to send ISTAT ( active status ). The error message looked misleading.
On further investigation we found out that bad programming practice followed in SAP FM HR_ASR_AGENTFINDER resulted into fake error message.
In this FM for rule, SAP uses FM HR_GET_USER_FROM_EMPLOYEE to read user ID of an employee number form PA0105. If no user ID is maintained in PA0105, it simply raises an exception NOBODY_FOUND without any error message!!! In normal scenarios we would never have discovered this issue as all employees are assigned to a valid user ID. However in this case since employee was terminated before this dialog work item was created, we discovered the issue.
As a result , calling FM RH_GET_ACTOR raises an exception with any fake “Error” message ( see line 191 on screen below ) depending on the last message statement in the call stack which set system variables SY-SMGID, SY-MSGNO etc.
Again lessons learnt. Never forget best practice of raising exceptions with the appropriate error messages. In the current scenario as a permanent solution, define custom rule to get data required with appropriate error handling and request SAP to correct programming error to avoid misleading errors. 🙂