From 6524d2fceed4a230341348d918b1b966c2a6bc4e Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Wed, 4 May 2022 09:31:49 +0200 Subject: [PATCH] UENO: Clear/fill user, date, and time fields (#5520) Apply clear/fill rules to user and time-specific fields Co-authored-by: Lars Hvam --- src/objects/zcl_abapgit_object_ueno.clas.abap | 77 ++++++++++++++++++- 1 file changed, 75 insertions(+), 2 deletions(-) diff --git a/src/objects/zcl_abapgit_object_ueno.clas.abap b/src/objects/zcl_abapgit_object_ueno.clas.abap index f2f7a8699..cdf97b64e 100644 --- a/src/objects/zcl_abapgit_object_ueno.clas.abap +++ b/src/objects/zcl_abapgit_object_ueno.clas.abap @@ -106,6 +106,9 @@ CLASS zcl_abapgit_object_ueno DEFINITION VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic RAISING zcx_abapgit_exception . + METHODS get_field_rules + RETURNING + VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. ENDCLASS. @@ -366,12 +369,82 @@ CLASS zcl_abapgit_object_ueno IMPLEMENTATION. ENDMETHOD. + METHOD get_field_rules. + + DATA: + lt_fields TYPE TABLE OF string, + lv_fields TYPE string, + lv_table TYPE tabname, + lv_field TYPE string, + lv_rule TYPE string, + lv_rule_iter TYPE string, + lv_fill_rule TYPE zif_abapgit_field_rules=>ty_fill_rule, + lv_prefix TYPE fieldname, + lv_suffix TYPE fieldname. + + ro_result = zcl_abapgit_field_rules=>create( ). + + " Many tables and fields with date,time,user so we encode them + APPEND 'DM02L,FL,DTU' TO lt_fields. + APPEND 'DM02T,L,DTU' TO lt_fields. + APPEND 'DM03S,FL,DTU' TO lt_fields. + APPEND 'DM25L,FL,DTU' TO lt_fields. + APPEND 'DM26L,FL,DTU' TO lt_fields. + APPEND 'DM42S,FL,DTU' TO lt_fields. + APPEND 'DM42T,L,DTU' TO lt_fields. + APPEND 'DM43T,L,DU' TO lt_fields. + APPEND 'DM45L,FL,DTU' TO lt_fields. + APPEND 'DM45T,L,DTU' TO lt_fields. + APPEND 'DM46S,FL,DTU' TO lt_fields. + + LOOP AT lt_fields INTO lv_fields. + SPLIT lv_fields AT ',' INTO lv_table lv_field lv_rule_iter. + + DO strlen( lv_field ) TIMES. + CASE lv_field(1). + WHEN 'F'. + lv_prefix = 'FST'. + WHEN 'L'. + lv_prefix = 'LST'. + ENDCASE. + + lv_rule = lv_rule_iter. + DO strlen( lv_rule ) TIMES. + CASE lv_rule(1). + WHEN 'D'. + lv_suffix = 'DATE'. + lv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-date. + WHEN 'T'. + lv_suffix = 'TIME'. + lv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-time. + WHEN 'U'. + lv_suffix = 'USER'. + lv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-user. + ENDCASE. + + ro_result->add( + iv_table = lv_table + iv_field = lv_prefix && lv_suffix + iv_fill_rule = lv_fill_rule ). + + SHIFT lv_rule LEFT. + ENDDO. + + SHIFT lv_field LEFT. + ENDDO. + + ENDLOOP. + + ENDMETHOD. + + METHOD get_generic. CREATE OBJECT ro_generic EXPORTING - is_item = ms_item - iv_language = mv_language. + io_field_rules = get_field_rules( ) + is_item = ms_item + iv_language = mv_language. ENDMETHOD.