Add support for ABAP Language Version for generic

Phase 3 of #6689

Adds support for object types using generic serializer class
This commit is contained in:
Marc Bernard 2025-04-21 15:22:34 +00:00
parent becfe9bb08
commit 2efa3a082a
10 changed files with 111 additions and 26 deletions

View File

@ -10,8 +10,10 @@ CLASS zcl_abapgit_field_rules DEFINITION
CLASS-METHODS create CLASS-METHODS create
RETURNING RETURNING
VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules. VALUE(ro_result) TYPE REF TO zif_abapgit_field_rules.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
TYPES: TYPES:
BEGIN OF ty_item, BEGIN OF ty_item,
tabname TYPE tabname, tabname TYPE tabname,
@ -26,8 +28,10 @@ CLASS zcl_abapgit_field_rules DEFINITION
IMPORTING IMPORTING
iv_rule TYPE zif_abapgit_field_rules=>ty_fill_rule iv_rule TYPE zif_abapgit_field_rules=>ty_fill_rule
iv_package TYPE devclass iv_package TYPE devclass
iv_abap_language_version TYPE uccheck OPTIONAL
CHANGING CHANGING
cv_value TYPE any. cv_value TYPE any.
ENDCLASS. ENDCLASS.
@ -56,6 +60,8 @@ CLASS zcl_abapgit_field_rules IMPLEMENTATION.
cv_value = sy-mandt. cv_value = sy-mandt.
WHEN zif_abapgit_field_rules=>c_fill_rule-package. WHEN zif_abapgit_field_rules=>c_fill_rule-package.
cv_value = iv_package. cv_value = iv_package.
WHEN zif_abapgit_field_rules=>c_fill_rule-abap_language_version.
cv_value = iv_abap_language_version.
ENDCASE. ENDCASE.
ENDMETHOD. ENDMETHOD.
@ -111,6 +117,7 @@ CLASS zcl_abapgit_field_rules IMPLEMENTATION.
EXPORTING EXPORTING
iv_rule = ls_item-fill_rule iv_rule = ls_item-fill_rule
iv_package = iv_package iv_package = iv_package
iv_abap_language_version = iv_abap_language_version
CHANGING CHANGING
cv_value = <lv_value> ). cv_value = <lv_value> ).
ENDIF. ENDIF.

View File

@ -4,6 +4,7 @@ CLASS ltcl_field_rules DEFINITION FOR TESTING RISK LEVEL HARMLESS
PRIVATE SECTION. PRIVATE SECTION.
CONSTANTS: CONSTANTS:
c_abap_cloud TYPE uccheck VALUE '5',
c_package TYPE devclass VALUE '$TMP', c_package TYPE devclass VALUE '$TMP',
c_table TYPE tabname VALUE 'ZTEST'. c_table TYPE tabname VALUE 'ZTEST'.
@ -15,6 +16,7 @@ CLASS ltcl_field_rules DEFINITION FOR TESTING RISK LEVEL HARMLESS
time TYPE t, time TYPE t,
ts TYPE timestamp, ts TYPE timestamp,
tl TYPE timestampl, tl TYPE timestampl,
alav TYPE uccheck,
END OF ty_test. END OF ty_test.
DATA mo_cut TYPE REF TO zcl_abapgit_field_rules. DATA mo_cut TYPE REF TO zcl_abapgit_field_rules.
@ -33,6 +35,7 @@ CLASS ltcl_field_rules DEFINITION FOR TESTING RISK LEVEL HARMLESS
fill5 FOR TESTING, fill5 FOR TESTING,
fill6 FOR TESTING, fill6 FOR TESTING,
fill7 FOR TESTING, fill7 FOR TESTING,
fill8 FOR TESTING,
get_rules get_rules
RETURNING RETURNING
VALUE(ri_rules) TYPE REF TO zif_abapgit_field_rules, VALUE(ri_rules) TYPE REF TO zif_abapgit_field_rules,
@ -57,6 +60,7 @@ CLASS ltcl_field_rules IMPLEMENTATION.
EXPORTING EXPORTING
iv_rule = iv_rule iv_rule = iv_rule
iv_package = c_package iv_package = c_package
iv_abap_language_version = c_abap_cloud
CHANGING CHANGING
cv_value = lv_act ). cv_value = lv_act ).
@ -116,6 +120,12 @@ CLASS ltcl_field_rules IMPLEMENTATION.
iv_exp = '' ). iv_exp = '' ).
ENDMETHOD. ENDMETHOD.
METHOD fill8.
fill_value(
iv_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version
iv_exp = |{ c_abap_cloud }| ).
ENDMETHOD.
METHOD get_rules. METHOD get_rules.
ri_rules = zcl_abapgit_field_rules=>create( )->add( ri_rules = zcl_abapgit_field_rules=>create( )->add(
@ -137,7 +147,11 @@ CLASS ltcl_field_rules IMPLEMENTATION.
)->add( )->add(
iv_table = c_table iv_table = c_table
iv_field = 'TL' iv_field = 'TL'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp
)->add(
iv_table = c_table
iv_field = 'ALAV'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDMETHOD. ENDMETHOD.
@ -159,6 +173,7 @@ CLASS ltcl_field_rules IMPLEMENTATION.
ls_act-user = 'FRANK'. ls_act-user = 'FRANK'.
ls_act-date = '20230101'. ls_act-date = '20230101'.
ls_act-time = '000001'. ls_act-time = '000001'.
ls_act-alav = '5'. " ABAP Cloud
INSERT ls_act INTO TABLE lt_act. INSERT ls_act INTO TABLE lt_act.
li_rules = get_rules( ). li_rules = get_rules( ).
@ -218,6 +233,7 @@ CLASS ltcl_field_rules IMPLEMENTATION.
EXPORTING EXPORTING
iv_table = c_table iv_table = c_table
iv_package = c_package iv_package = c_package
iv_abap_language_version = c_abap_cloud
CHANGING CHANGING
ct_data = lt_act ). ct_data = lt_act ).
@ -265,6 +281,9 @@ CLASS ltcl_field_rules IMPLEMENTATION.
cl_abap_unit_assert=>assert_equals( cl_abap_unit_assert=>assert_equals(
act = ls_act-time(4) act = ls_act-time(4)
exp = sy-uzeit(4) ). " avoid comparing seconds exp = sy-uzeit(4) ). " avoid comparing seconds
cl_abap_unit_assert=>assert_equals(
act = ls_act-alav
exp = c_abap_cloud ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -1,6 +1,7 @@
INTERFACE zif_abapgit_field_rules INTERFACE zif_abapgit_field_rules PUBLIC.
PUBLIC .
TYPES ty_fill_rule TYPE c LENGTH 2. TYPES ty_fill_rule TYPE c LENGTH 2.
CONSTANTS: CONSTANTS:
BEGIN OF c_fill_rule, BEGIN OF c_fill_rule,
date TYPE ty_fill_rule VALUE 'DT', date TYPE ty_fill_rule VALUE 'DT',
@ -9,6 +10,7 @@ INTERFACE zif_abapgit_field_rules
user TYPE ty_fill_rule VALUE 'UR', user TYPE ty_fill_rule VALUE 'UR',
client TYPE ty_fill_rule VALUE 'CT', client TYPE ty_fill_rule VALUE 'CT',
package TYPE ty_fill_rule VALUE 'PK', package TYPE ty_fill_rule VALUE 'PK',
abap_language_version TYPE ty_fill_rule VALUE 'AL',
END OF c_fill_rule. END OF c_fill_rule.
METHODS add METHODS add
@ -18,15 +20,19 @@ INTERFACE zif_abapgit_field_rules
iv_fill_rule TYPE ty_fill_rule iv_fill_rule TYPE ty_fill_rule
RETURNING RETURNING
VALUE(ro_self) TYPE REF TO zif_abapgit_field_rules. VALUE(ro_self) TYPE REF TO zif_abapgit_field_rules.
METHODS apply_clear_logic METHODS apply_clear_logic
IMPORTING IMPORTING
iv_table TYPE tabname iv_table TYPE tabname
CHANGING CHANGING
ct_data TYPE STANDARD TABLE. ct_data TYPE STANDARD TABLE.
METHODS apply_fill_logic METHODS apply_fill_logic
IMPORTING IMPORTING
iv_table TYPE tabname iv_table TYPE tabname
iv_package TYPE devclass iv_package TYPE devclass
iv_abap_language_version TYPE uccheck OPTIONAL
CHANGING CHANGING
ct_data TYPE STANDARD TABLE. ct_data TYPE STANDARD TABLE.
ENDINTERFACE. ENDINTERFACE.

View File

@ -60,6 +60,13 @@ CLASS zcl_abapgit_object_g4ba IMPLEMENTATION.
iv_field = 'CHANGED_TS' iv_field = 'CHANGED_TS'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWBEP/I_V4_MSGR'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD. ENDMETHOD.

View File

@ -60,6 +60,13 @@ CLASS zcl_abapgit_object_g4bs IMPLEMENTATION.
iv_field = 'CHANGED_TS' iv_field = 'CHANGED_TS'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWBEP/I_V4_MSRV'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD. ENDMETHOD.

View File

@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwmo IMPLEMENTATION.
iv_table = '/IWBEP/I_MGW_OHD' iv_table = '/IWBEP/I_MGW_OHD'
iv_field = 'CHANGED_TIMESTMP' iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWBEP/I_MGW_OHD'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD. ENDMETHOD.

View File

@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwom IMPLEMENTATION.
iv_table = '/IWFND/I_MED_OHD' iv_table = '/IWFND/I_MED_OHD'
iv_field = 'CHANGED_TIMESTMP' iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWFND/I_MED_OHD'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD. ENDMETHOD.

View File

@ -44,6 +44,13 @@ CLASS zcl_abapgit_object_iwsg IMPLEMENTATION.
iv_field = 'CHANGED_TIMESTMP' iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWFND/I_MED_SRH'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD. ENDMETHOD.

View File

@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwsv IMPLEMENTATION.
iv_table = '/IWBEP/I_MGW_SRH' iv_table = '/IWBEP/I_MGW_SRH'
iv_field = 'CHANGED_TIMESTMP' iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWBEP/I_MGW_SRH'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD. ENDMETHOD.

View File

@ -42,6 +42,14 @@ CLASS zcl_abapgit_object_iwvb IMPLEMENTATION.
iv_table = '/IWBEP/I_MGW_VAH' iv_table = '/IWBEP/I_MGW_VAH'
iv_field = 'CHANGED_TIMESTMP' iv_field = 'CHANGED_TIMESTMP'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ). iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
IF ms_item-abap_language_version = zcl_abapgit_abap_language_vers=>c_no_abap_language_version.
ro_result->add(
iv_table = '/IWBEP/I_MGW_VAH'
iv_field = 'ABAP_LANGUAGE_VERSION'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-abap_language_version ).
ENDIF.
ENDMETHOD. ENDMETHOD.