CLASS zcl_validator_person DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. TYPES: BEGIN OF gty_request_content, person TYPE but000-partner, manfield TYPE string, textlines type tchar255, END OF gty_request_content. DATA gs_request_content TYPE gty_request_content. DATA go_i18n TYPE REF TO zcl_i18n. METHODS constructor IMPORTING is_request_content TYPE gty_request_content iv_language TYPE sy-langu. METHODS check_requestedBy RETURNING VALUE(rt_validation_messages) TYPE zcl_validator_rest_handler=>gty_validation_messages. METHODS check_mandatoryfields RETURNING VALUE(rt_validation_messages) TYPE zcl_validator_rest_handler=>gty_validation_messages. PROTECTED SECTION. PRIVATE SECTION. "Adds a message to the rt_validation_messages returning parameter. METHODS set_message IMPORTING iv_code TYPE char20 iv_par TYPE any DEFAULT '' iv_par2 TYPE any DEFAULT '' iv_par3 TYPE any DEFAULT '' CHANGING ct_validation_messages TYPE zcl_validator_rest_handler=>gty_validation_messages. ENDCLASS. CLASS zcl_validator_person IMPLEMENTATION. METHOD constructor. gs_request_content = is_request_content. "Consider adding leading zero's to relevant fields here "gs_request_content-object = |{ gs_request_content-object ALPHA = OUT }|. go_i18n = zcl_i18n=>get_instance( 'validation.person' ). go_i18n->set_language( iv_language ). ENDMETHOD. METHOD check_requestedby. go_i18n->feed( VALUE #( ( id = 'V2:006' nl = |Persoonsnummer & is oneven (kan echt niet)| en = |Personel number & is uneven (that's not done)| ) ( id = 'V2:007' nl = |Persoonsnummer & is deelbaar door 7| en = |Personel number & dividable by 7| ) ( id = 'V2:016' nl = |Nummer is niet 123| en = |The number is not 123| ) ) ). IF gs_request_content-person = '123'. EXIT. ENDIF. set_message( EXPORTING iv_code = 'V2:006' iv_par = gs_request_content-person CHANGING ct_validation_messages = rt_validation_messages ). set_message( EXPORTING iv_code = 'V2:007' iv_par = gs_request_content-person CHANGING ct_validation_messages = rt_validation_messages ). set_message( EXPORTING iv_code = 'V2:016' CHANGING ct_validation_messages = rt_validation_messages ). ENDMETHOD. METHOD check_mandatoryfields. go_i18n->feed( VALUE #( ( id = 'V9:206' nl = |Veld & is verplicht| en = |Field & is mandatory| ) ) ). IF gs_request_content-manfield IS INITIAL. set_message( EXPORTING iv_code = 'V9:206' iv_par = 'MANFIELD' CHANGING ct_validation_messages = rt_validation_messages ). ENDIF. ENDMETHOD. METHOD set_message. INSERT VALUE #( number = lines( ct_validation_messages ) + 1 msgcode = iv_code message = go_i18n->get( iv_id = iv_code iv_par = iv_par iv_par2 = iv_par2 iv_par3 = iv_par3 ) ) INTO TABLE ct_validation_messages. ENDMETHOD. ENDCLASS.