mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
624 lines
25 KiB
ABAP
624 lines
25 KiB
ABAP
CLASS lcl_aff_helper DEFINITION.
|
|
PUBLIC SECTION.
|
|
CLASS-METHODS:
|
|
get_descriptions_compo_subco
|
|
IMPORTING iv_language TYPE sy-langu
|
|
iv_clif_name TYPE seoclsname
|
|
RETURNING VALUE(rs_properties) TYPE zif_abapgit_aff_oo_types_v1=>ty_descriptions ,
|
|
get_descr_comp_subc_w_exposure
|
|
IMPORTING iv_language TYPE sy-langu
|
|
iv_clif_name TYPE seoclsname
|
|
iv_exposure TYPE seoexpose DEFAULT seoc_exposure_public
|
|
RETURNING VALUE(rs_properties) TYPE zif_abapgit_aff_oo_types_v1=>ty_descriptions ,
|
|
set_descriptions_compo_subco
|
|
IMPORTING iv_clif_name TYPE seoclsname
|
|
iv_language TYPE langu
|
|
is_properties TYPE zif_abapgit_aff_oo_types_v1=>ty_descriptions .
|
|
PRIVATE SECTION.
|
|
TYPES:
|
|
BEGIN OF ty_component,
|
|
visibility TYPE seoexpose,
|
|
cmpname TYPE seocmpname,
|
|
descript TYPE seodescr,
|
|
cmptype TYPE seocmptype,
|
|
END OF ty_component,
|
|
BEGIN OF ty_sub_component,
|
|
cmpname TYPE seocmpname,
|
|
sconame TYPE seosconame,
|
|
descript TYPE seodescr,
|
|
scotype TYPE seoscotype,
|
|
END OF ty_sub_component,
|
|
ty_compontents TYPE STANDARD TABLE OF ty_component,
|
|
ty_sub_compontents TYPE STANDARD TABLE OF ty_sub_component.
|
|
|
|
CLASS-METHODS:
|
|
get_attributes
|
|
IMPORTING is_components TYPE ty_compontents
|
|
RETURNING VALUE(rs_result) TYPE zif_abapgit_aff_oo_types_v1=>ty_component_descriptions,
|
|
get_methods
|
|
IMPORTING is_components TYPE ty_compontents
|
|
is_sub_components TYPE ty_sub_compontents
|
|
RETURNING VALUE(rs_result) TYPE zif_abapgit_aff_oo_types_v1=>ty_methods,
|
|
get_types
|
|
IMPORTING is_components TYPE ty_compontents
|
|
RETURNING VALUE(rs_result) TYPE zif_abapgit_aff_oo_types_v1=>ty_component_descriptions,
|
|
get_events
|
|
IMPORTING is_components TYPE ty_compontents
|
|
is_sub_components TYPE ty_sub_compontents
|
|
RETURNING VALUE(rs_result) TYPE zif_abapgit_aff_oo_types_v1=>ty_events,
|
|
set_methods
|
|
IMPORTING iv_clif_name TYPE seoclsname
|
|
iv_language TYPE langu
|
|
is_properties TYPE zif_abapgit_aff_oo_types_v1=>ty_descriptions,
|
|
set_attributes
|
|
IMPORTING iv_clif_name TYPE seoclsname
|
|
iv_language TYPE langu
|
|
is_properties TYPE zif_abapgit_aff_oo_types_v1=>ty_descriptions,
|
|
set_events
|
|
IMPORTING iv_clif_name TYPE seoclsname
|
|
iv_language TYPE langu
|
|
is_properties TYPE zif_abapgit_aff_oo_types_v1=>ty_descriptions,
|
|
set_types
|
|
IMPORTING iv_clif_name TYPE seoclsname
|
|
iv_language TYPE langu
|
|
is_properties TYPE zif_abapgit_aff_oo_types_v1=>ty_descriptions .
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS lcl_aff_helper IMPLEMENTATION.
|
|
|
|
METHOD get_descr_comp_subc_w_exposure.
|
|
DATA:
|
|
lt_components TYPE ty_compontents,
|
|
lt_sub_components TYPE ty_sub_compontents.
|
|
|
|
|
|
SELECT df~exposure AS visibility component~cmpname component_text~descript component~cmptype
|
|
INTO TABLE lt_components
|
|
FROM seocompo AS component
|
|
LEFT OUTER JOIN seocompotx AS component_text
|
|
ON component~cmpname = component_text~cmpname AND component~clsname = component_text~clsname AND
|
|
component_text~langu = iv_language
|
|
INNER JOIN seocompodf AS df
|
|
ON component~clsname = df~clsname AND
|
|
component~cmpname = df~cmpname
|
|
WHERE component~clsname = iv_clif_name AND
|
|
df~exposure = iv_exposure. "#EC CI_BUFFJOIN
|
|
|
|
SELECT sub_component~cmpname sub_component~sconame sub_component_text~descript sub_component~scotype
|
|
INTO TABLE lt_sub_components
|
|
FROM seosubco AS sub_component JOIN seosubcotx AS sub_component_text
|
|
ON sub_component~clsname = sub_component_text~clsname AND
|
|
sub_component~cmpname = sub_component_text~cmpname AND
|
|
sub_component~sconame = sub_component_text~sconame
|
|
INNER JOIN seocompodf AS df
|
|
ON sub_component~clsname = df~clsname AND
|
|
sub_component~cmpname = df~cmpname
|
|
WHERE sub_component~clsname = iv_clif_name
|
|
AND df~exposure = iv_exposure
|
|
AND sub_component_text~langu = iv_language
|
|
AND sub_component_text~descript <> space. "#EC CI_BUFFJOIN
|
|
|
|
|
|
|
|
rs_properties-attributes = get_attributes( lt_components ).
|
|
rs_properties-methods = get_methods( is_components = lt_components
|
|
is_sub_components = lt_sub_components ).
|
|
rs_properties-events = get_events( is_components = lt_components
|
|
is_sub_components = lt_sub_components ).
|
|
rs_properties-types = get_types( lt_components ).
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD get_descriptions_compo_subco.
|
|
TYPES:
|
|
BEGIN OF ty_helper_type,
|
|
cmpname TYPE seocmpname,
|
|
descript TYPE seodescr,
|
|
cmptype TYPE seocmptype,
|
|
END OF ty_helper_type.
|
|
DATA:
|
|
lt_components TYPE STANDARD TABLE OF ty_helper_type,
|
|
lt_sub_components TYPE ty_sub_compontents,
|
|
lt_components_exp TYPE ty_compontents,
|
|
ls_component_exp LIKE LINE OF lt_components_exp.
|
|
FIELD-SYMBOLS:
|
|
<ls_component> LIKE LINE OF lt_components.
|
|
|
|
|
|
SELECT component~cmpname component_text~descript component~cmptype
|
|
INTO TABLE lt_components
|
|
FROM seocompo AS component
|
|
LEFT OUTER JOIN seocompotx AS component_text
|
|
ON component~cmpname = component_text~cmpname AND component~clsname = component_text~clsname
|
|
AND component_text~langu = iv_language
|
|
WHERE component~clsname = iv_clif_name. "#EC CI_BUFFJOIN
|
|
|
|
SELECT sub_component~cmpname sub_component~sconame sub_component_text~descript sub_component~scotype
|
|
INTO TABLE lt_sub_components
|
|
FROM seosubco AS sub_component JOIN seosubcotx AS sub_component_text
|
|
ON sub_component~clsname = sub_component_text~clsname
|
|
AND sub_component~cmpname = sub_component_text~cmpname
|
|
AND sub_component~sconame = sub_component_text~sconame
|
|
WHERE sub_component~clsname = iv_clif_name
|
|
AND sub_component_text~langu = iv_language
|
|
AND sub_component_text~descript <> space. "#EC CI_BUFFJOIN
|
|
|
|
LOOP AT lt_components ASSIGNING <ls_component>.
|
|
CLEAR ls_component_exp.
|
|
MOVE-CORRESPONDING <ls_component> TO ls_component_exp.
|
|
INSERT ls_component_exp INTO TABLE lt_components_exp.
|
|
ENDLOOP.
|
|
|
|
rs_properties-attributes = get_attributes( lt_components_exp ).
|
|
rs_properties-methods = get_methods( is_components = lt_components_exp
|
|
is_sub_components = lt_sub_components ).
|
|
rs_properties-events = get_events( is_components = lt_components_exp
|
|
is_sub_components = lt_sub_components ).
|
|
rs_properties-types = get_types( lt_components_exp ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD get_attributes.
|
|
DATA:
|
|
lo_component TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description.
|
|
FIELD-SYMBOLS <lo_attribute> TYPE ty_component.
|
|
|
|
LOOP AT is_components ASSIGNING <lo_attribute> WHERE cmptype = seoo_cmptype_attribute AND descript IS NOT INITIAL.
|
|
lo_component-name = <lo_attribute>-cmpname.
|
|
lo_component-description = <lo_attribute>-descript.
|
|
INSERT lo_component INTO TABLE rs_result.
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
METHOD get_methods.
|
|
DATA:
|
|
lo_method TYPE zif_abapgit_aff_oo_types_v1=>ty_method,
|
|
lo_exception TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description,
|
|
lo_parameter TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description.
|
|
|
|
FIELD-SYMBOLS <ls_sub_component> TYPE ty_sub_component.
|
|
FIELD-SYMBOLS <ls_component> TYPE ty_component.
|
|
|
|
LOOP AT is_components ASSIGNING <ls_component> WHERE cmptype = seoo_cmptype_method.
|
|
lo_method-name = <ls_component>-cmpname.
|
|
lo_method-description = <ls_component>-descript.
|
|
|
|
LOOP AT is_sub_components ASSIGNING <ls_sub_component> WHERE cmpname = <ls_component>-cmpname.
|
|
CASE <ls_sub_component>-scotype.
|
|
WHEN seos_scotype_parameter.
|
|
lo_parameter-name = <ls_sub_component>-sconame.
|
|
lo_parameter-description = <ls_sub_component>-descript.
|
|
INSERT lo_parameter INTO TABLE lo_method-parameters.
|
|
WHEN seos_scotype_exception.
|
|
lo_exception-name = <ls_sub_component>-sconame.
|
|
lo_exception-description = <ls_sub_component>-descript.
|
|
INSERT lo_exception INTO TABLE lo_method-exceptions.
|
|
ENDCASE.
|
|
ENDLOOP.
|
|
|
|
IF lo_method-description IS NOT INITIAL
|
|
OR lo_method-exceptions IS NOT INITIAL
|
|
OR lo_method-parameters IS NOT INITIAL.
|
|
INSERT lo_method INTO TABLE rs_result.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
METHOD get_types.
|
|
DATA:
|
|
lo_type TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description.
|
|
FIELD-SYMBOLS: <ls_types> TYPE ty_component.
|
|
|
|
LOOP AT is_components ASSIGNING <ls_types>
|
|
WHERE cmptype = seoo_cmptype_type AND descript IS NOT INITIAL.
|
|
lo_type-name = <ls_types>-cmpname.
|
|
lo_type-description = <ls_types>-descript.
|
|
INSERT lo_type INTO TABLE rs_result.
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
METHOD get_events.
|
|
DATA:
|
|
lo_parameter TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description,
|
|
lo_event TYPE zif_abapgit_aff_oo_types_v1=>ty_event.
|
|
FIELD-SYMBOLS <ls_event> TYPE ty_component.
|
|
FIELD-SYMBOLS <ls_sub_component> TYPE ty_sub_component.
|
|
|
|
LOOP AT is_components ASSIGNING <ls_event> WHERE cmptype = seoo_cmptype_event.
|
|
lo_event-name = <ls_event>-cmpname.
|
|
lo_event-description = <ls_event>-descript.
|
|
|
|
LOOP AT is_sub_components ASSIGNING <ls_sub_component> WHERE cmpname = <ls_event>-cmpname.
|
|
lo_parameter-name = <ls_sub_component>-sconame.
|
|
lo_parameter-description = <ls_sub_component>-descript.
|
|
INSERT lo_parameter INTO TABLE lo_event-parameters.
|
|
ENDLOOP.
|
|
|
|
IF lo_event-description IS NOT INITIAL OR lo_event-parameters IS NOT INITIAL.
|
|
INSERT lo_event INTO TABLE rs_result.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD set_attributes.
|
|
DATA:
|
|
lo_attribute TYPE seocompotx.
|
|
FIELD-SYMBOLS: <ls_attribute> TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description.
|
|
|
|
LOOP AT is_properties-attributes ASSIGNING <ls_attribute>.
|
|
lo_attribute-clsname = iv_clif_name.
|
|
lo_attribute-cmpname = <ls_attribute>-name.
|
|
lo_attribute-langu = iv_language.
|
|
lo_attribute-descript = <ls_attribute>-description.
|
|
MODIFY seocompotx FROM lo_attribute.
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD set_methods.
|
|
DATA:
|
|
lo_method TYPE seocompotx,
|
|
lo_method_exception TYPE seosubcotx,
|
|
lo_method_parameter TYPE seosubcotx.
|
|
FIELD-SYMBOLS: <ls_method> TYPE zif_abapgit_aff_oo_types_v1=>ty_method,
|
|
<ls_parameter> TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description,
|
|
<ls_exception> TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description.
|
|
|
|
LOOP AT is_properties-methods ASSIGNING <ls_method>.
|
|
lo_method-clsname = iv_clif_name.
|
|
lo_method-cmpname = <ls_method>-name.
|
|
lo_method-langu = iv_language.
|
|
lo_method-descript = <ls_method>-description.
|
|
MODIFY seocompotx FROM lo_method.
|
|
|
|
LOOP AT <ls_method>-parameters ASSIGNING <ls_parameter>.
|
|
lo_method_parameter-clsname = iv_clif_name.
|
|
lo_method_parameter-cmpname = <ls_method>-name.
|
|
lo_method_parameter-sconame = <ls_parameter>-name.
|
|
lo_method_parameter-langu = iv_language.
|
|
lo_method_parameter-descript = <ls_parameter>-description.
|
|
MODIFY seosubcotx FROM lo_method_parameter.
|
|
ENDLOOP.
|
|
|
|
LOOP AT <ls_method>-exceptions ASSIGNING <ls_exception>.
|
|
lo_method_exception-clsname = iv_clif_name.
|
|
lo_method_exception-cmpname = <ls_method>-name.
|
|
lo_method_exception-sconame = <ls_exception>-name.
|
|
lo_method_exception-langu = iv_language.
|
|
lo_method_exception-descript = <ls_exception>-description.
|
|
MODIFY seosubcotx FROM lo_method_exception.
|
|
ENDLOOP.
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD set_events.
|
|
DATA:
|
|
lo_event_parameter TYPE seosubcotx,
|
|
lo_event TYPE seocompotx.
|
|
FIELD-SYMBOLS: <ls_event> TYPE zif_abapgit_aff_oo_types_v1=>ty_event,
|
|
<ls_parameter> TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description.
|
|
|
|
LOOP AT is_properties-events ASSIGNING <ls_event>.
|
|
lo_event-clsname = iv_clif_name.
|
|
lo_event-cmpname = <ls_event>-name.
|
|
lo_event-langu = iv_language.
|
|
lo_event-descript = <ls_event>-description.
|
|
MODIFY seocompotx FROM lo_event.
|
|
|
|
LOOP AT <ls_event>-parameters ASSIGNING <ls_parameter>.
|
|
lo_event_parameter-clsname = iv_clif_name.
|
|
lo_event_parameter-cmpname = <ls_event>-name.
|
|
lo_event_parameter-sconame = <ls_parameter>-name.
|
|
lo_event_parameter-langu = iv_language.
|
|
lo_event_parameter-descript = <ls_parameter>-description.
|
|
MODIFY seosubcotx FROM lo_event_parameter.
|
|
ENDLOOP.
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD set_types.
|
|
DATA:
|
|
lo_type TYPE seocompotx.
|
|
FIELD-SYMBOLS: <ls_type> TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description.
|
|
|
|
LOOP AT is_properties-types ASSIGNING <ls_type>.
|
|
lo_type-clsname = iv_clif_name.
|
|
lo_type-cmpname = <ls_type>-name.
|
|
lo_type-langu = iv_language.
|
|
lo_type-descript = <ls_type>-description.
|
|
MODIFY seocompotx FROM lo_type.
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD set_descriptions_compo_subco.
|
|
set_attributes( is_properties = is_properties
|
|
iv_clif_name = iv_clif_name
|
|
iv_language = iv_language ).
|
|
set_methods( is_properties = is_properties
|
|
iv_clif_name = iv_clif_name
|
|
iv_language = iv_language ).
|
|
set_events( is_properties = is_properties
|
|
iv_clif_name = iv_clif_name
|
|
iv_language = iv_language ).
|
|
set_types( is_properties = is_properties
|
|
iv_clif_name = iv_clif_name
|
|
iv_language = iv_language ).
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS lcl_aff_type_mapping DEFINITION.
|
|
PUBLIC SECTION.
|
|
INTERFACES zif_abapgit_aff_type_mapping.
|
|
PRIVATE SECTION.
|
|
METHODS set_abapgit_descriptions
|
|
IMPORTING is_clsname TYPE seoclsname
|
|
is_intf_aff TYPE zif_abapgit_aff_intf_v1=>ty_main
|
|
EXPORTING et_descriptions TYPE zif_abapgit_oo_object_fnc=>ty_seocompotx_tt
|
|
et_descriptions_sub TYPE zif_abapgit_oo_object_fnc=>ty_seosubcotx_tt.
|
|
ENDCLASS.
|
|
|
|
CLASS lcl_aff_type_mapping IMPLEMENTATION.
|
|
|
|
METHOD zif_abapgit_aff_type_mapping~to_aff.
|
|
DATA:
|
|
ls_data_abapgit TYPE zcl_abapgit_object_intf=>ty_intf,
|
|
ls_data_aff TYPE zif_abapgit_aff_intf_v1=>ty_main.
|
|
|
|
ls_data_abapgit = iv_data.
|
|
|
|
ls_data_aff-format_version = '1'.
|
|
|
|
" get header
|
|
ls_data_aff-header-description = ls_data_abapgit-vseointerf-descript.
|
|
ls_data_aff-header-abap_language_version = ls_data_abapgit-vseointerf-unicode.
|
|
ls_data_aff-header-original_language = ls_data_abapgit-vseointerf-langu.
|
|
|
|
" get category and proxy
|
|
ls_data_aff-category = ls_data_abapgit-vseointerf-category.
|
|
ls_data_aff-proxy = ls_data_abapgit-vseointerf-clsproxy.
|
|
|
|
" get descriptions
|
|
ls_data_aff-descriptions = lcl_aff_helper=>get_descriptions_compo_subco(
|
|
iv_language = ls_data_aff-header-original_language
|
|
iv_clif_name = ls_data_abapgit-vseointerf-clsname ).
|
|
|
|
es_data = ls_data_aff.
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_aff_type_mapping~to_abapgit.
|
|
DATA:
|
|
ls_data_abapgit TYPE zcl_abapgit_object_intf=>ty_intf,
|
|
ls_data_aff TYPE zif_abapgit_aff_intf_v1=>ty_main,
|
|
lv_classname TYPE seoclsname.
|
|
|
|
|
|
ls_data_aff = iv_data.
|
|
|
|
lv_classname = iv_object_name.
|
|
|
|
set_abapgit_descriptions( EXPORTING is_clsname = lv_classname
|
|
is_intf_aff = ls_data_aff
|
|
IMPORTING et_descriptions = ls_data_abapgit-description
|
|
et_descriptions_sub = ls_data_abapgit-description_sub ).
|
|
|
|
ls_data_abapgit-vseointerf-clsname = iv_object_name.
|
|
ls_data_abapgit-vseointerf-descript = ls_data_aff-header-description.
|
|
ls_data_abapgit-vseointerf-category = ls_data_aff-category.
|
|
ls_data_abapgit-vseointerf-unicode = ls_data_aff-header-abap_language_version.
|
|
ls_data_abapgit-vseointerf-langu = ls_data_aff-header-original_language.
|
|
ls_data_abapgit-vseointerf-clsproxy = ls_data_aff-proxy.
|
|
ls_data_abapgit-vseointerf-exposure = seoc_exposure_public.
|
|
ls_data_abapgit-vseointerf-state = seoc_state_implemented.
|
|
|
|
es_data = ls_data_abapgit.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD set_abapgit_descriptions.
|
|
|
|
DATA ls_description TYPE seocompotx.
|
|
DATA ls_description_subco TYPE seosubcotx.
|
|
FIELD-SYMBOLS <ls_description> TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description.
|
|
FIELD-SYMBOLS <ls_meth_description> TYPE zif_abapgit_aff_oo_types_v1=>ty_method.
|
|
FIELD-SYMBOLS <ls_evt_description> TYPE zif_abapgit_aff_oo_types_v1=>ty_event.
|
|
|
|
|
|
LOOP AT is_intf_aff-descriptions-types ASSIGNING <ls_description>.
|
|
ls_description-clsname = is_clsname.
|
|
ls_description-cmpname = <ls_description>-name.
|
|
ls_description-langu = is_intf_aff-header-original_language.
|
|
ls_description-descript = <ls_description>-description.
|
|
APPEND ls_description TO et_descriptions.
|
|
ENDLOOP.
|
|
|
|
LOOP AT is_intf_aff-descriptions-attributes ASSIGNING <ls_description>.
|
|
ls_description-clsname = is_clsname.
|
|
ls_description-cmpname = <ls_description>-name.
|
|
ls_description-langu = is_intf_aff-header-original_language.
|
|
ls_description-descript = <ls_description>-description.
|
|
APPEND ls_description TO et_descriptions.
|
|
ENDLOOP.
|
|
|
|
LOOP AT is_intf_aff-descriptions-methods ASSIGNING <ls_meth_description>.
|
|
ls_description-clsname = is_clsname.
|
|
ls_description-cmpname = <ls_meth_description>-name.
|
|
ls_description-langu = is_intf_aff-header-original_language.
|
|
ls_description-descript = <ls_meth_description>-description.
|
|
APPEND ls_description TO et_descriptions.
|
|
|
|
LOOP AT <ls_meth_description>-parameters ASSIGNING <ls_description>.
|
|
ls_description_subco-clsname = ls_description-clsname.
|
|
ls_description_subco-cmpname = ls_description-cmpname.
|
|
ls_description_subco-langu = ls_description-langu.
|
|
ls_description_subco-sconame = <ls_description>-name.
|
|
ls_description_subco-descript = <ls_description>-description.
|
|
APPEND ls_description_subco TO et_descriptions_sub.
|
|
ENDLOOP.
|
|
|
|
LOOP AT <ls_meth_description>-exceptions ASSIGNING <ls_description>.
|
|
ls_description_subco-clsname = ls_description-clsname.
|
|
ls_description_subco-cmpname = ls_description-cmpname.
|
|
ls_description_subco-langu = ls_description-langu.
|
|
ls_description_subco-sconame = <ls_description>-name.
|
|
ls_description_subco-descript = <ls_description>-description.
|
|
APPEND ls_description_subco TO et_descriptions_sub.
|
|
ENDLOOP.
|
|
ENDLOOP.
|
|
|
|
LOOP AT is_intf_aff-descriptions-events ASSIGNING <ls_evt_description>.
|
|
ls_description-clsname = is_clsname.
|
|
ls_description-cmpname = <ls_evt_description>-name.
|
|
ls_description-langu = is_intf_aff-header-original_language.
|
|
ls_description-descript = <ls_evt_description>-description.
|
|
APPEND ls_description TO et_descriptions.
|
|
|
|
LOOP AT <ls_evt_description>-parameters ASSIGNING <ls_description>.
|
|
ls_description_subco-clsname = ls_description-clsname.
|
|
ls_description_subco-cmpname = ls_description-cmpname.
|
|
ls_description_subco-langu = ls_description-langu.
|
|
ls_description_subco-sconame = <ls_description>-name.
|
|
ls_description_subco-descript = <ls_description>-description.
|
|
APPEND ls_description_subco TO et_descriptions_sub.
|
|
ENDLOOP.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS lcl_aff_metadata_handler DEFINITION.
|
|
PUBLIC SECTION.
|
|
|
|
CLASS-METHODS serialize
|
|
IMPORTING is_intf TYPE zcl_abapgit_object_intf=>ty_intf
|
|
RETURNING VALUE(rv_result) TYPE xstring
|
|
RAISING zcx_abapgit_exception.
|
|
CLASS-METHODS deserialize
|
|
IMPORTING iv_data TYPE xstring
|
|
RETURNING VALUE(rv_result) TYPE zif_abapgit_aff_intf_v1=>ty_main
|
|
RAISING zcx_abapgit_exception.
|
|
PRIVATE SECTION.
|
|
CLASS-METHODS:
|
|
"! For serialization
|
|
"! @parameter rt_result | Map/table that associates ABAP values to JSON values (enums)
|
|
get_mappings
|
|
RETURNING VALUE(rt_result) TYPE zcl_abapgit_json_handler=>ty_enum_mappings,
|
|
"! For serialization
|
|
"! @parameter rt_result | Paths that will not be serialized (depending on value)
|
|
get_paths_to_skip
|
|
RETURNING VALUE(rt_result) TYPE zcl_abapgit_json_handler=>ty_skip_paths.
|
|
ENDCLASS.
|
|
|
|
CLASS lcl_aff_metadata_handler IMPLEMENTATION.
|
|
|
|
METHOD serialize.
|
|
DATA:
|
|
ls_data_aff TYPE zif_abapgit_aff_intf_v1=>ty_main,
|
|
lx_exception TYPE REF TO cx_root,
|
|
lo_aff_handler TYPE REF TO zcl_abapgit_json_handler,
|
|
lo_aff_mapper TYPE REF TO zif_abapgit_aff_type_mapping,
|
|
lt_enum_mappings TYPE zcl_abapgit_json_handler=>ty_enum_mappings,
|
|
lt_paths_to_skip TYPE zcl_abapgit_json_handler=>ty_skip_paths.
|
|
|
|
|
|
CREATE OBJECT lo_aff_mapper TYPE lcl_aff_type_mapping.
|
|
lo_aff_mapper->to_aff( EXPORTING iv_data = is_intf
|
|
IMPORTING es_data = ls_data_aff ).
|
|
|
|
lt_enum_mappings = get_mappings( ).
|
|
lt_paths_to_skip = get_paths_to_skip( ).
|
|
|
|
CREATE OBJECT lo_aff_handler.
|
|
TRY.
|
|
rv_result = lo_aff_handler->serialize( iv_data = ls_data_aff
|
|
iv_enum_mappings = lt_enum_mappings
|
|
iv_skip_paths = lt_paths_to_skip ).
|
|
CATCH cx_root INTO lx_exception.
|
|
zcx_abapgit_exception=>raise_with_text( lx_exception ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD get_mappings.
|
|
DATA:
|
|
ls_category_mapping TYPE zcl_abapgit_json_handler=>ty_enum_mapping,
|
|
ls_json_abap_mapping TYPE zcl_abapgit_json_handler=>ty_json_abap_mapping,
|
|
lt_json_abap_mappings TYPE zcl_abapgit_json_handler=>ty_json_abap_mappings.
|
|
|
|
ls_json_abap_mapping-abap = zif_abapgit_aff_intf_v1=>co_category-general.
|
|
ls_json_abap_mapping-json = 'standard'.
|
|
APPEND ls_json_abap_mapping TO lt_json_abap_mappings.
|
|
ls_json_abap_mapping-abap = zif_abapgit_aff_intf_v1=>co_category-classic_badi.
|
|
ls_json_abap_mapping-json = 'classicBadi'.
|
|
APPEND ls_json_abap_mapping TO lt_json_abap_mappings.
|
|
ls_json_abap_mapping-abap = zif_abapgit_aff_intf_v1=>co_category-business_static_components.
|
|
ls_json_abap_mapping-json = 'businessStaticComponents'.
|
|
APPEND ls_json_abap_mapping TO lt_json_abap_mappings.
|
|
ls_json_abap_mapping-abap = zif_abapgit_aff_intf_v1=>co_category-db_procedure_proxy.
|
|
ls_json_abap_mapping-json = 'dbProcedureProxy'.
|
|
APPEND ls_json_abap_mapping TO lt_json_abap_mappings.
|
|
ls_json_abap_mapping-abap = zif_abapgit_aff_intf_v1=>co_category-web_dynpro_runtime.
|
|
ls_json_abap_mapping-json = 'webDynproRuntime'.
|
|
APPEND ls_json_abap_mapping TO lt_json_abap_mappings.
|
|
ls_json_abap_mapping-abap = zif_abapgit_aff_intf_v1=>co_category-enterprise_service.
|
|
ls_json_abap_mapping-json = 'enterpriseService'.
|
|
APPEND ls_json_abap_mapping TO lt_json_abap_mappings.
|
|
|
|
ls_category_mapping-path = '/category'.
|
|
ls_category_mapping-mappings = lt_json_abap_mappings.
|
|
|
|
APPEND ls_category_mapping TO rt_result.
|
|
ENDMETHOD.
|
|
|
|
METHOD get_paths_to_skip.
|
|
DATA:
|
|
ls_path_to_skipp TYPE zcl_abapgit_json_handler=>ty_path_value_pair.
|
|
|
|
ls_path_to_skipp-path = '/category'.
|
|
ls_path_to_skipp-value = 'standard'.
|
|
|
|
APPEND ls_path_to_skipp TO rt_result.
|
|
ENDMETHOD.
|
|
|
|
METHOD deserialize.
|
|
DATA:
|
|
lo_ajson TYPE REF TO zcl_abapgit_json_handler,
|
|
lx_exception TYPE REF TO cx_static_check,
|
|
lt_enum_mappings TYPE zcl_abapgit_json_handler=>ty_enum_mappings,
|
|
lt_default_abap_langu_version TYPE zcl_abapgit_json_handler=>ty_path_value_pair,
|
|
lt_values_for_initial TYPE zcl_abapgit_json_handler=>ty_skip_paths.
|
|
|
|
lt_values_for_initial = get_paths_to_skip( ).
|
|
|
|
lt_default_abap_langu_version-path = '/header/abap_language_version'.
|
|
lt_default_abap_langu_version-value = zif_abapgit_dot_abapgit=>c_abap_language_version-standard.
|
|
APPEND lt_default_abap_langu_version TO lt_values_for_initial.
|
|
|
|
lt_enum_mappings = get_mappings( ).
|
|
|
|
|
|
CREATE OBJECT lo_ajson.
|
|
TRY.
|
|
lo_ajson->deserialize(
|
|
EXPORTING
|
|
iv_content = iv_data
|
|
iv_defaults = lt_values_for_initial
|
|
iv_enum_mappings = lt_enum_mappings
|
|
IMPORTING
|
|
ev_data = rv_result ).
|
|
CATCH cx_static_check INTO lx_exception.
|
|
zcx_abapgit_exception=>raise_with_text( lx_exception ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|