Here is the code to be put in QQMA0014 (include ZXQQMU20).
DATA : I_USTAT LIKE ALM_ME_USER_STATUS_CHANGES OCCURS 0 WITH HEADER LINE. CALL FUNCTION 'ALM_ME_READ_USER_STATUS' EXPORTING OBJECT_NO = I_VIQMEL-OBJNR TABLES USER_STATUS = I_USTAT. IF I_USTAT-USER_STATUS_CODE = 'CLSD'. IF I_VIQMEL-AUSBS IS INITIAL. MESSAGE: 'Fill ''Malfunct.end'' fields before setting ''CLSD'' status.' TYPE 'E' DISPLAY LIKE 'I'. ENDIF. ENDIF.
This code does exactly that, what we discussed. Presently only one field is mentioned here. (You can extend the Ifs for other fields and hence the respective error messages). As per this syntax, if the user status is set to 'CLSD' the following error is thrown.
So it has been checked that user status is captured at runtime and used in user-exit. Hope it addresses your need.
KJogeswaraRao