CLASS {{p}}cx_job_error DEFINITION PUBLIC FINAL CREATE PUBLIC INHERITING FROM cx_static_check. PUBLIC SECTION. TYPES ty_reason TYPE c LENGTH 12. CONSTANTS: BEGIN OF c_reason, no_job_id TYPE ty_reason VALUE 'NO_JOB_ID', bad_mode TYPE ty_reason VALUE 'BAD_MODE', bad_hours TYPE ty_reason VALUE 'BAD_HOURS', bad_count TYPE ty_reason VALUE 'BAD_COUNT', bad_group TYPE ty_reason VALUE 'BAD_GROUP', bad_date TYPE ty_reason VALUE 'BAD_DATE', bad_value TYPE ty_reason VALUE 'BAD_VALUE', END OF c_reason. METHODS constructor IMPORTING iv_reason TYPE ty_reason. METHODS get_reason RETURNING VALUE(rv_reason) TYPE ty_reason. METHODS get_message RETURNING VALUE(rv_message) TYPE string. PRIVATE SECTION. DATA mv_reason TYPE ty_reason. ENDCLASS. CLASS {{p}}cx_job_error IMPLEMENTATION. METHOD constructor. super->constructor( ). mv_reason = iv_reason. ENDMETHOD. METHOD get_reason. rv_reason = mv_reason. ENDMETHOD. METHOD get_message. CASE mv_reason. WHEN c_reason-no_job_id. rv_message = 'The job ID is missing.'. WHEN c_reason-bad_mode. rv_message = 'The calculation mode is not valid.'. WHEN c_reason-bad_hours. rv_message = 'The work hours are not valid.'. WHEN c_reason-bad_count. rv_message = 'The part count is not valid.'. WHEN c_reason-bad_group. rv_message = 'The material group is not valid.'. WHEN c_reason-bad_date. rv_message = 'The due date is not valid.'. WHEN c_reason-bad_value. rv_message = 'The material value is not valid.'. WHEN OTHERS. rv_message = 'The job is not valid.'. ENDCASE. ENDMETHOD. ENDCLASS.