mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Clear metadata fields (#5464)
* Add zcl_abapgit_rule and zif_abapgit_rule * Insert clear and fill logic * Pass rule to the generic serializer in IWSG class * Remove extra space * Remove inline declaration * Format the code * Replace CHECK with IF * Rename class/interface * Multiple changes Rename method name Change method signature Remove clear field * loop over all fields of given fields * Align method call parameters * Remove class reference for member * Use string template to convert to type Co-authored-by: Lars Hvam <larshp@hotmail.com> Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
This commit is contained in:
parent
0ec0fd077b
commit
e50a7dcc3c
108
src/objects/zcl_abapgit_field_rules.clas.abap
Normal file
108
src/objects/zcl_abapgit_field_rules.clas.abap
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
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
|
||||||
|
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 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 <ls_data> TYPE any.
|
||||||
|
FIELD-SYMBOLS <lv_value> TYPE any.
|
||||||
|
|
||||||
|
IF mt_item IS INITIAL.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
LOOP AT ct_data ASSIGNING <ls_data>.
|
||||||
|
LOOP AT mt_item INTO ls_item WHERE tabname = iv_table.
|
||||||
|
ASSIGN COMPONENT ls_item-fieldname OF STRUCTURE <ls_data> TO <lv_value>.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
CLEAR <lv_value>.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
ENDLOOP.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_field_rules~apply_fill_logic.
|
||||||
|
DATA ls_item TYPE ty_item.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <ls_data> TYPE any.
|
||||||
|
FIELD-SYMBOLS <lv_value> TYPE any.
|
||||||
|
|
||||||
|
IF mt_item IS INITIAL.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
LOOP AT ct_data ASSIGNING <ls_data>.
|
||||||
|
LOOP AT mt_item INTO ls_item WHERE tabname = iv_table.
|
||||||
|
ASSIGN COMPONENT ls_item-fieldname OF STRUCTURE <ls_data> TO <lv_value>.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
fill_value( EXPORTING iv_rule = ls_item-fill_rule
|
||||||
|
CHANGING cv_value = <lv_value> ).
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
ENDLOOP.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD fill_value.
|
||||||
|
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 cv_value.
|
||||||
|
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.
|
||||||
|
ENDCASE.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
16
src/objects/zcl_abapgit_field_rules.clas.xml
Normal file
16
src/objects/zcl_abapgit_field_rules.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>ZCL_ABAPGIT_FIELD_RULES</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abapGit Rule</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -14,6 +14,9 @@ CLASS zcl_abapgit_object_iwsg DEFINITION
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
METHODS get_field_rules
|
||||||
|
RETURNING
|
||||||
|
VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,8 +28,9 @@ CLASS zcl_abapgit_object_iwsg IMPLEMENTATION.
|
||||||
|
|
||||||
CREATE OBJECT ro_generic
|
CREATE OBJECT ro_generic
|
||||||
EXPORTING
|
EXPORTING
|
||||||
is_item = ms_item
|
io_field_rules = get_field_rules( )
|
||||||
iv_language = mv_language.
|
is_item = ms_item
|
||||||
|
iv_language = mv_language.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -98,4 +102,27 @@ CLASS zcl_abapgit_object_iwsg IMPLEMENTATION.
|
||||||
get_generic( )->serialize( io_xml ).
|
get_generic( )->serialize( io_xml ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_field_rules.
|
||||||
|
|
||||||
|
ro_result = zcl_abapgit_field_rules=>create( ).
|
||||||
|
ro_result->add(
|
||||||
|
iv_table = '/IWFND/I_MED_SRH'
|
||||||
|
iv_field = 'CREATED_BY'
|
||||||
|
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-user
|
||||||
|
)->add(
|
||||||
|
iv_table = '/IWFND/I_MED_SRH'
|
||||||
|
iv_field = 'CREATED_TIMESTMP'
|
||||||
|
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp
|
||||||
|
)->add(
|
||||||
|
iv_table = '/IWFND/I_MED_SRH'
|
||||||
|
iv_field = 'CHANGED_BY'
|
||||||
|
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-user
|
||||||
|
)->add(
|
||||||
|
iv_table = '/IWFND/I_MED_SRH'
|
||||||
|
iv_field = 'CHANGED_TIMESTMP'
|
||||||
|
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -6,8 +6,9 @@ CLASS zcl_abapgit_objects_generic DEFINITION
|
||||||
|
|
||||||
METHODS constructor
|
METHODS constructor
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!is_item TYPE zif_abapgit_definitions=>ty_item
|
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
!iv_language TYPE spras DEFAULT sy-langu
|
!iv_language TYPE spras DEFAULT sy-langu
|
||||||
|
io_field_rules TYPE REF TO zif_abapgit_field_rules OPTIONAL
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
METHODS delete
|
METHODS delete
|
||||||
|
@ -105,6 +106,18 @@ CLASS zcl_abapgit_objects_generic DEFINITION
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
DATA mo_field_rules TYPE REF TO zif_abapgit_field_rules.
|
||||||
|
|
||||||
|
METHODS apply_clear_logic
|
||||||
|
IMPORTING
|
||||||
|
iv_table TYPE objsl-tobj_name
|
||||||
|
CHANGING
|
||||||
|
ct_data TYPE STANDARD TABLE.
|
||||||
|
METHODS apply_fill_logic
|
||||||
|
IMPORTING
|
||||||
|
iv_table TYPE objsl-tobj_name
|
||||||
|
CHANGING
|
||||||
|
ct_data TYPE STANDARD TABLE.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -213,6 +226,7 @@ CLASS zcl_abapgit_objects_generic IMPLEMENTATION.
|
||||||
|
|
||||||
ms_item = is_item.
|
ms_item = is_item.
|
||||||
mv_language = iv_language.
|
mv_language = iv_language.
|
||||||
|
mo_field_rules = io_field_rules.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -295,6 +309,8 @@ CLASS zcl_abapgit_objects_generic IMPLEMENTATION.
|
||||||
CREATE DATA lr_ref TYPE STANDARD TABLE OF (<ls_table>-tobj_name).
|
CREATE DATA lr_ref TYPE STANDARD TABLE OF (<ls_table>-tobj_name).
|
||||||
ASSIGN lr_ref->* TO <lt_data>.
|
ASSIGN lr_ref->* TO <lt_data>.
|
||||||
|
|
||||||
|
apply_fill_logic( EXPORTING iv_table = <ls_table>-tobj_name
|
||||||
|
CHANGING ct_data = <lt_data> ).
|
||||||
io_xml->read(
|
io_xml->read(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
iv_name = <ls_table>-tobj_name
|
iv_name = <ls_table>-tobj_name
|
||||||
|
@ -609,6 +625,9 @@ CLASS zcl_abapgit_objects_generic IMPLEMENTATION.
|
||||||
WHERE (lv_where)
|
WHERE (lv_where)
|
||||||
ORDER BY PRIMARY KEY.
|
ORDER BY PRIMARY KEY.
|
||||||
|
|
||||||
|
apply_clear_logic( EXPORTING iv_table = <ls_object_table>-tobj_name
|
||||||
|
CHANGING ct_data = <lt_data> ).
|
||||||
|
|
||||||
io_xml->add(
|
io_xml->add(
|
||||||
iv_name = <ls_object_table>-tobj_name
|
iv_name = <ls_object_table>-tobj_name
|
||||||
ig_data = <lt_data> ).
|
ig_data = <lt_data> ).
|
||||||
|
@ -691,4 +710,20 @@ CLASS zcl_abapgit_objects_generic IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD apply_clear_logic.
|
||||||
|
IF mo_field_rules IS BOUND.
|
||||||
|
mo_field_rules->apply_clear_logic( EXPORTING iv_table = |{ iv_table }|
|
||||||
|
CHANGING ct_data = ct_data ).
|
||||||
|
ENDIF.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD apply_fill_logic.
|
||||||
|
IF mo_field_rules IS BOUND.
|
||||||
|
mo_field_rules->apply_fill_logic( EXPORTING iv_table = |{ iv_table }|
|
||||||
|
CHANGING ct_data = ct_data ).
|
||||||
|
ENDIF.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
30
src/objects/zif_abapgit_field_rules.intf.abap
Normal file
30
src/objects/zif_abapgit_field_rules.intf.abap
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
INTERFACE zif_abapgit_field_rules
|
||||||
|
PUBLIC .
|
||||||
|
TYPES ty_fill_rule TYPE c LENGTH 2.
|
||||||
|
CONSTANTS:
|
||||||
|
BEGIN OF c_fill_rule,
|
||||||
|
date TYPE ty_fill_rule VALUE 'DT',
|
||||||
|
time TYPE ty_fill_rule VALUE 'TM',
|
||||||
|
timestamp TYPE ty_fill_rule VALUE 'TS',
|
||||||
|
user TYPE ty_fill_rule VALUE 'UR',
|
||||||
|
client TYPE ty_fill_rule VALUE 'CT',
|
||||||
|
END OF c_fill_rule.
|
||||||
|
|
||||||
|
METHODS add
|
||||||
|
IMPORTING
|
||||||
|
iv_table TYPE tabname
|
||||||
|
iv_field TYPE fieldname
|
||||||
|
iv_fill_rule TYPE ty_fill_rule
|
||||||
|
RETURNING
|
||||||
|
VALUE(ro_self) TYPE REF TO zif_abapgit_field_rules.
|
||||||
|
METHODS apply_clear_logic
|
||||||
|
IMPORTING
|
||||||
|
iv_table TYPE tabname
|
||||||
|
CHANGING
|
||||||
|
ct_data TYPE STANDARD TABLE.
|
||||||
|
METHODS apply_fill_logic
|
||||||
|
IMPORTING
|
||||||
|
iv_table TYPE tabname
|
||||||
|
CHANGING
|
||||||
|
ct_data TYPE STANDARD TABLE.
|
||||||
|
ENDINTERFACE.
|
15
src/objects/zif_abapgit_field_rules.intf.xml
Normal file
15
src/objects/zif_abapgit_field_rules.intf.xml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOINTERF>
|
||||||
|
<CLSNAME>ZIF_ABAPGIT_FIELD_RULES</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abapGit Rule</DESCRIPT>
|
||||||
|
<EXPOSURE>2</EXPOSURE>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOINTERF>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
Loading…
Reference in New Issue
Block a user