Answer
Refactor the custom procedure to return its error text through an explicit output/return value (rather than only raising it via Error_SYS.Record_General directly), expose a projection custom action that calls Error_SYS.Record_General with that returned error text, and add gateway logic in the workflow so that when the output error variable is populated, it routes to an IFS API call to that custom error-reporting action — this surfaces the real, specific error text to the user instead of the workflow's generic failure message. If the workflow exists purely to back a single custom command button, it's often simpler to skip the workflow layer entirely and wire the custom procedure directly to the projection as its own custom action, since Error_SYS.Record_General calls raised directly from a projection custom action already surface their real error text correctly in the client.