CLASS zcl_abapgit_field_rules DEFINITION PUBLIC FINAL CREATE PRIVATE. PUBLIC SECTION. INTERFACES zif_abapgit_field_rules. CLASS-METHODS create RETURNING VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_item, tabname TYPE tabname, fieldname TYPE fieldname, fill_rule TYPE zif_abapgit_field_rules=>ty_fill_rule, END OF ty_item, ty_items TYPE SORTED TABLE OF ty_item WITH UNIQUE KEY tabname fieldname. DATA mt_item TYPE ty_items. METHODS fill_value IMPORTING iv_rule TYPE zif_abapgit_field_rules=>ty_fill_rule iv_package TYPE devclass iv_abap_language_version TYPE uccheck OPTIONAL CHANGING cv_value TYPE any. ENDCLASS. CLASS zcl_abapgit_field_rules IMPLEMENTATION. METHOD create. CREATE OBJECT ro_result TYPE zcl_abapgit_field_rules. ENDMETHOD. METHOD fill_value. DATA lv_timestamp TYPE timestampl. CASE iv_rule. WHEN zif_abapgit_field_rules=>c_fill_rule-date. cv_value = sy-datum. WHEN zif_abapgit_field_rules=>c_fill_rule-time. cv_value = sy-uzeit. WHEN zif_abapgit_field_rules=>c_fill_rule-timestamp. GET TIME STAMP FIELD lv_timestamp. cv_value = lv_timestamp. WHEN zif_abapgit_field_rules=>c_fill_rule-user. cv_value = sy-uname. WHEN zif_abapgit_field_rules=>c_fill_rule-client. cv_value = sy-mandt. WHEN zif_abapgit_field_rules=>c_fill_rule-package. cv_value = iv_package. WHEN zif_abapgit_field_rules=>c_fill_rule-abap_language_version. cv_value = iv_abap_language_version. ENDCASE. ENDMETHOD. METHOD zif_abapgit_field_rules~add. DATA ls_item TYPE ty_item. ls_item-tabname = iv_table. ls_item-fieldname = iv_field. ls_item-fill_rule = iv_fill_rule. INSERT ls_item INTO TABLE mt_item. ro_self = me. ENDMETHOD. METHOD zif_abapgit_field_rules~apply_clear_logic. DATA ls_item TYPE ty_item. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE any. IF mt_item IS INITIAL. RETURN. ENDIF. LOOP AT ct_data ASSIGNING . LOOP AT mt_item INTO ls_item WHERE tabname = iv_table. ASSIGN COMPONENT ls_item-fieldname OF STRUCTURE TO . IF sy-subrc = 0. CLEAR . ENDIF. ENDLOOP. ENDLOOP. ENDMETHOD. METHOD zif_abapgit_field_rules~apply_fill_logic. DATA ls_item TYPE ty_item. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE any. IF mt_item IS INITIAL. RETURN. ENDIF. LOOP AT ct_data ASSIGNING . LOOP AT mt_item INTO ls_item WHERE tabname = iv_table. ASSIGN COMPONENT ls_item-fieldname OF STRUCTURE TO . IF sy-subrc = 0. fill_value( EXPORTING iv_rule = ls_item-fill_rule iv_package = iv_package iv_abap_language_version = iv_abap_language_version CHANGING cv_value = ). ENDIF. ENDLOOP. ENDLOOP. ENDMETHOD. ENDCLASS.