A data validation tool.
ABAP Data Validator is a tool to simplify data validation process for SAP ABAP development.
Features and Goals:
- General input/output.
- Customizable validation rules.
- Extendable validation program.
- Centralize some validation logic.
ABAP Data Validator supports validations for types below (updating),
- Date.
- Time.
- Timestamp.
- Email.
- INT4.
- REGEX string.
- URL.
- JSON.
- HEX.
- IMEI.
Every check class implements the interface ZIF_ADV_CHECK. You can use static method ZIF_ADV_CHECK~IS_VALID to validate data just like a built-in function. Example:
IF zcl_adv_email_check=>zif_adv_check~is_valid( 'example@github.com' ).
"do something
ENDIF.
Or use the ALIASES:
IF zcl_adv_email_check=>is_valid( 'example@github.com' ).
"do something
ENDIF.
All classes have the unit tests.
Class ZCL_ADATA_VALIDATOR provide a general validation method: VALIDATE.
TRY.
DATA(result) = NEW zcl_adata_validator( )->validate(
rules = my_rules
data = uploaded_data
).
CATCH zcx_adv_exception INTO DATA(ex).
DATA(msg) = ex->get_text( ).
ENDTRY.
The ZCL_ADATA_VALIDATOR calls check methods internally according to the exporting rules and returns the result.
By the parameter RULES, you can customize the validation.
DATA: rules TYPE zcl_adata_validator=>ty_rules_t.
rules = VALUE #(
( fname = 'FIELD1' required = abap_true initial_or_empty = abap_false user_type = zcl_adata_validator=>c_type_date )
( fname = 'FIELD2' required = abap_false initial_or_empty = abap_true user_type = zcl_adata_validator=>c_type_date )
( fname = 'FIELD3' required = abap_true initial_or_empty = abap_false user_type = zcl_adata_validator=>c_type_email )
).
There are two ways to extend the validation:
- Pass regular expression by RULES-REGEX.
- Create a new class which implements the interface ZIF_ADV_CHECK, and add the type name & class name in ZCL_ADATA_VALIDATOR->CONSTRUCTOR.
Regex example. If you want to check whether the input email is a gmail address, you can assign 'gmail.com$' to RULE-REGEX:
DATA: rules TYPE zcl_adata_validator=>ty_rules_t.
DATA: cases TYPE ty_case_t.
cases = VALUE #(
( field3 = 'ZZZ2@gmail.com') "correct
( field3 = 'ZZ.Z2@gmail.com.cn') "incorrect
).
rules = VALUE #(
( fname = 'FIELD3' user_type = zcl_adata_validator=>c_type_email regex = 'gmail\.com$' regex_msg = 'Only gmail supported')
).
Or add a new class, and add it to check config on demand:
METHOD constructor.
check_config = VALUE #(
( type = zcl_adata_validatorn=>c_type_new class = 'ZCL_ADV_NEWTYPE_CHECK' message = 'Invalid value for field &. ')
).
ENDMETHOD.
The configuration is hard code in class ZCL_ADATA_VALIDATOR method CONSTRUCTOR, but you can redefine the CONSTRUCTOR to retrieve configuration from database tables or other source. It allows you to change the function without modify existed program.
ABAP Version: 740 sp08 or higher
The exception class ZCX_ADV_EXCEPTION is copied from ZCX_ABAPGIT_EXCEPTION for it is easy to use:)
Now only date, time and email type are supported. Need to add more check classes.
- More types.
- Auto Type detecting.