mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Translation for INTF in AFF (#6774)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
5eec8f264e
commit
a7f9ceedea
39
src/objects/aff/zcl_abapgit_json_path.clas.abap
Normal file
39
src/objects/aff/zcl_abapgit_json_path.clas.abap
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
CLASS zcl_abapgit_json_path DEFINITION PUBLIC CREATE PUBLIC.
|
||||||
|
PUBLIC SECTION.
|
||||||
|
METHODS: serialize
|
||||||
|
IMPORTING iv_json TYPE string
|
||||||
|
RETURNING VALUE(rt_result) TYPE string_table
|
||||||
|
RAISING zcx_abapgit_exception.
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS zcl_abapgit_json_path IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD serialize.
|
||||||
|
DATA: lo_json_path TYPE REF TO lcl_json_path,
|
||||||
|
lv_json_xstring TYPE xstring,
|
||||||
|
lt_root_path TYPE string_table,
|
||||||
|
lo_reader TYPE REF TO if_sxml_reader,
|
||||||
|
lx_parse_error TYPE REF TO cx_sxml_parse_error.
|
||||||
|
|
||||||
|
lv_json_xstring = zcl_abapgit_convert=>string_to_xstring_utf8( iv_json ).
|
||||||
|
lo_reader = cl_sxml_string_reader=>create( input = lv_json_xstring ).
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
IF lo_reader->read_next_node( ) IS INITIAL.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
CATCH cx_sxml_parse_error INTO lx_parse_error.
|
||||||
|
zcx_abapgit_exception=>raise_with_text( lx_parse_error ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
APPEND `$` TO lt_root_path.
|
||||||
|
|
||||||
|
CREATE OBJECT lo_json_path.
|
||||||
|
lo_json_path->serialize_rec( EXPORTING io_reader = lo_reader
|
||||||
|
it_path = lt_root_path
|
||||||
|
CHANGING ct_json_paths = rt_result ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
182
src/objects/aff/zcl_abapgit_json_path.clas.locals_imp.abap
Normal file
182
src/objects/aff/zcl_abapgit_json_path.clas.locals_imp.abap
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
*"* use this source file for the definition and implementation of
|
||||||
|
*"* local helper classes, interface definitions and type
|
||||||
|
*"* declarations
|
||||||
|
|
||||||
|
CLASS lcl_json_path DEFINITION CREATE PUBLIC.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
METHODS:
|
||||||
|
serialize_rec
|
||||||
|
IMPORTING io_reader TYPE REF TO if_sxml_reader
|
||||||
|
it_path TYPE string_table
|
||||||
|
CHANGING ct_json_paths TYPE string_table.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
METHODS:
|
||||||
|
is_array
|
||||||
|
IMPORTING io_reader TYPE REF TO if_sxml_reader
|
||||||
|
RETURNING VALUE(rv_result) TYPE abap_bool.
|
||||||
|
METHODS:
|
||||||
|
is_string_open
|
||||||
|
IMPORTING io_reader TYPE REF TO if_sxml_reader
|
||||||
|
RETURNING VALUE(rv_result) TYPE abap_bool.
|
||||||
|
METHODS:
|
||||||
|
is_object
|
||||||
|
IMPORTING io_reader TYPE REF TO if_sxml_reader
|
||||||
|
RETURNING VALUE(rv_result) TYPE abap_bool.
|
||||||
|
METHODS:
|
||||||
|
serialize_rec_array
|
||||||
|
IMPORTING io_reader TYPE REF TO if_sxml_reader
|
||||||
|
it_path TYPE string_table
|
||||||
|
CHANGING ct_json_paths TYPE string_table.
|
||||||
|
METHODS:
|
||||||
|
get_json_path
|
||||||
|
IMPORTING it_path TYPE string_table
|
||||||
|
RETURNING VALUE(rv_result) TYPE string.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS lcl_json_path IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD is_array.
|
||||||
|
rv_result = boolc( io_reader->name = 'array' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD is_string_open.
|
||||||
|
rv_result = boolc( io_reader->name = 'str' AND io_reader->node_type = if_sxml_node=>co_nt_element_open ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD is_object.
|
||||||
|
rv_result = boolc( io_reader->name = 'object' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD serialize_rec.
|
||||||
|
DATA: lt_new_path TYPE string_table,
|
||||||
|
lv_key TYPE string.
|
||||||
|
|
||||||
|
lt_new_path = it_path.
|
||||||
|
|
||||||
|
IF io_reader->read_next_node( ) IS INITIAL.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF is_string_open( io_reader ) = abap_true.
|
||||||
|
|
||||||
|
APPEND io_reader->value TO lt_new_path.
|
||||||
|
lv_key = get_json_path( lt_new_path ).
|
||||||
|
|
||||||
|
io_reader->read_next_node( ).
|
||||||
|
lv_key = |{ lv_key }={ io_reader->value }|.
|
||||||
|
APPEND lv_key TO ct_json_paths.
|
||||||
|
|
||||||
|
io_reader->read_next_node( ).
|
||||||
|
DELETE lt_new_path INDEX lines( lt_new_path ).
|
||||||
|
|
||||||
|
serialize_rec( EXPORTING io_reader = io_reader
|
||||||
|
it_path = lt_new_path
|
||||||
|
CHANGING ct_json_paths = ct_json_paths ).
|
||||||
|
|
||||||
|
ELSEIF is_object( io_reader ) = abap_true AND io_reader->node_type = if_sxml_node=>co_nt_element_open.
|
||||||
|
|
||||||
|
APPEND io_reader->value TO lt_new_path.
|
||||||
|
serialize_rec( EXPORTING io_reader = io_reader
|
||||||
|
it_path = lt_new_path
|
||||||
|
CHANGING ct_json_paths = ct_json_paths ).
|
||||||
|
|
||||||
|
ELSEIF is_array( io_reader ) = abap_true AND io_reader->node_type = if_sxml_node=>co_nt_element_open.
|
||||||
|
|
||||||
|
APPEND io_reader->value TO lt_new_path.
|
||||||
|
serialize_rec_array( EXPORTING io_reader = io_reader
|
||||||
|
it_path = lt_new_path
|
||||||
|
CHANGING ct_json_paths = ct_json_paths ).
|
||||||
|
|
||||||
|
ELSEIF ( is_object( io_reader ) = abap_true OR is_array( io_reader ) = abap_true )
|
||||||
|
AND io_reader->node_type = if_sxml_node=>co_nt_element_close.
|
||||||
|
|
||||||
|
DELETE lt_new_path INDEX lines( lt_new_path ).
|
||||||
|
serialize_rec( EXPORTING io_reader = io_reader
|
||||||
|
it_path = lt_new_path
|
||||||
|
CHANGING ct_json_paths = ct_json_paths ).
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD serialize_rec_array.
|
||||||
|
DATA: lt_new_path TYPE string_table,
|
||||||
|
lv_json_path TYPE string,
|
||||||
|
lv_array_key TYPE string.
|
||||||
|
|
||||||
|
lt_new_path = it_path.
|
||||||
|
|
||||||
|
IF io_reader->read_next_node( ) IS INITIAL.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF is_string_open( io_reader ) = abap_true.
|
||||||
|
|
||||||
|
APPEND io_reader->value TO lt_new_path.
|
||||||
|
lv_json_path = get_json_path( lt_new_path ).
|
||||||
|
|
||||||
|
io_reader->read_next_node( ).
|
||||||
|
lv_json_path = |{ lv_json_path }={ io_reader->value }|.
|
||||||
|
APPEND lv_json_path TO ct_json_paths.
|
||||||
|
io_reader->read_next_node( ).
|
||||||
|
|
||||||
|
serialize_rec( EXPORTING io_reader = io_reader
|
||||||
|
it_path = lt_new_path
|
||||||
|
CHANGING ct_json_paths = ct_json_paths ).
|
||||||
|
|
||||||
|
ELSEIF is_object( io_reader ) = abap_true AND io_reader->node_type = if_sxml_node=>co_nt_element_open.
|
||||||
|
|
||||||
|
io_reader->read_next_node( ).
|
||||||
|
lv_array_key = io_reader->value.
|
||||||
|
io_reader->read_next_node( ).
|
||||||
|
lv_array_key = |[?(@.{ lv_array_key }=='{ io_reader->value }')]|.
|
||||||
|
APPEND lv_array_key TO lt_new_path.
|
||||||
|
io_reader->read_next_node( ).
|
||||||
|
|
||||||
|
io_reader->read_next_node( ).
|
||||||
|
APPEND io_reader->value TO lt_new_path.
|
||||||
|
lv_json_path = get_json_path( lt_new_path ).
|
||||||
|
|
||||||
|
io_reader->read_next_node( ).
|
||||||
|
lv_json_path = |{ lv_json_path }={ io_reader->value }|.
|
||||||
|
APPEND lv_json_path TO ct_json_paths.
|
||||||
|
io_reader->read_next_node( ).
|
||||||
|
|
||||||
|
DELETE lt_new_path INDEX lines( lt_new_path ).
|
||||||
|
serialize_rec_array( EXPORTING io_reader = io_reader
|
||||||
|
it_path = lt_new_path
|
||||||
|
CHANGING ct_json_paths = ct_json_paths ).
|
||||||
|
|
||||||
|
ELSEIF is_array( io_reader ) = abap_true AND io_reader->node_type = if_sxml_node=>co_nt_element_open.
|
||||||
|
|
||||||
|
APPEND io_reader->value TO lt_new_path.
|
||||||
|
serialize_rec_array( EXPORTING io_reader = io_reader
|
||||||
|
it_path = lt_new_path
|
||||||
|
CHANGING ct_json_paths = ct_json_paths ).
|
||||||
|
|
||||||
|
ELSEIF ( is_object( io_reader ) = abap_true OR is_array( io_reader ) = abap_true )
|
||||||
|
AND io_reader->node_type = if_sxml_node=>co_nt_element_close.
|
||||||
|
|
||||||
|
DELETE lt_new_path INDEX lines( lt_new_path ).
|
||||||
|
serialize_rec_array( EXPORTING io_reader = io_reader
|
||||||
|
it_path = lt_new_path
|
||||||
|
CHANGING ct_json_paths = ct_json_paths ).
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_json_path.
|
||||||
|
rv_result = concat_lines_of( table = it_path
|
||||||
|
sep = `.` ).
|
||||||
|
REPLACE ALL OCCURRENCES OF `.[` IN rv_result WITH `[`.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
142
src/objects/aff/zcl_abapgit_json_path.clas.testclasses.abap
Normal file
142
src/objects/aff/zcl_abapgit_json_path.clas.testclasses.abap
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
CLASS ltcl_json_path DEFINITION FINAL FOR TESTING
|
||||||
|
DURATION SHORT
|
||||||
|
RISK LEVEL HARMLESS.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
DATA: mt_act TYPE string_table,
|
||||||
|
mt_exp TYPE string_table,
|
||||||
|
ms_data TYPE zif_abapgit_aff_intf_v1=>ty_main.
|
||||||
|
METHODS:
|
||||||
|
flat_structure FOR TESTING RAISING cx_static_check,
|
||||||
|
array FOR TESTING RAISING cx_static_check,
|
||||||
|
array_nested FOR TESTING RAISING cx_static_check.
|
||||||
|
METHODS:
|
||||||
|
serialize
|
||||||
|
IMPORTING is_data TYPE zif_abapgit_aff_intf_v1=>ty_main
|
||||||
|
RETURNING VALUE(rt_result) TYPE string_table
|
||||||
|
RAISING zcx_abapgit_ajson_error
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ltcl_json_path IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD serialize.
|
||||||
|
DATA:
|
||||||
|
lo_ajson TYPE REF TO zif_abapgit_ajson,
|
||||||
|
lo_cut TYPE REF TO zcl_abapgit_json_path.
|
||||||
|
|
||||||
|
|
||||||
|
lo_ajson = zcl_abapgit_ajson=>new( iv_keep_item_order = abap_true
|
||||||
|
)->set( iv_path = '/'
|
||||||
|
iv_val = is_data
|
||||||
|
)->map( zcl_abapgit_ajson_mapping=>create_to_camel_case( )
|
||||||
|
)->filter( zcl_abapgit_ajson_filter_lib=>create_empty_filter( ) ).
|
||||||
|
|
||||||
|
lo_ajson->delete( '/category/' ).
|
||||||
|
lo_ajson->delete( '/proxy/' ).
|
||||||
|
|
||||||
|
CREATE OBJECT lo_cut.
|
||||||
|
rt_result = lo_cut->serialize( lo_ajson->stringify( ) ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD flat_structure.
|
||||||
|
DATA lv_header_descr TYPE string.
|
||||||
|
lv_header_descr = `$.header.description=Text`.
|
||||||
|
|
||||||
|
ms_data-header-description = 'Text'.
|
||||||
|
|
||||||
|
mt_act = serialize( ms_data ).
|
||||||
|
APPEND lv_header_descr TO mt_exp.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals( exp = mt_exp
|
||||||
|
act = mt_act ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD array.
|
||||||
|
DATA lv_header_descr TYPE string.
|
||||||
|
DATA lv_descr_meth_1 TYPE string.
|
||||||
|
DATA lv_descr_meth_2 TYPE string.
|
||||||
|
DATA ls_meth_desc TYPE zif_abapgit_aff_oo_types_v1=>ty_method.
|
||||||
|
|
||||||
|
lv_header_descr = `$.header.description=Text`.
|
||||||
|
lv_descr_meth_1 = `$.descriptions.methods[?(@.name=='METH1')].description=Sonne`.
|
||||||
|
lv_descr_meth_2 = `$.descriptions.methods[?(@.name=='METH2')].description=Mond`.
|
||||||
|
|
||||||
|
APPEND lv_header_descr TO mt_exp.
|
||||||
|
APPEND lv_descr_meth_1 TO mt_exp.
|
||||||
|
APPEND lv_descr_meth_2 TO mt_exp.
|
||||||
|
|
||||||
|
|
||||||
|
ms_data-header-description = 'Text'.
|
||||||
|
|
||||||
|
ls_meth_desc-name = `METH1`.
|
||||||
|
ls_meth_desc-description = `Sonne`.
|
||||||
|
APPEND ls_meth_desc TO ms_data-descriptions-methods.
|
||||||
|
CLEAR ls_meth_desc.
|
||||||
|
ls_meth_desc-name = `METH2`.
|
||||||
|
ls_meth_desc-description = `Mond`.
|
||||||
|
APPEND ls_meth_desc TO ms_data-descriptions-methods.
|
||||||
|
|
||||||
|
|
||||||
|
mt_act = serialize( ms_data ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals( exp = mt_exp
|
||||||
|
act = mt_act ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD array_nested.
|
||||||
|
DATA lv_header_descr TYPE string.
|
||||||
|
DATA lv_descr_meth_1 TYPE string.
|
||||||
|
DATA lv_descr_meth_1_param_1 TYPE string.
|
||||||
|
DATA lv_descr_meth_1_param_2 TYPE string.
|
||||||
|
DATA lv_descr_meth_2 TYPE string.
|
||||||
|
DATA ls_meth_desc TYPE zif_abapgit_aff_oo_types_v1=>ty_method.
|
||||||
|
DATA ls_meth_param TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description.
|
||||||
|
|
||||||
|
lv_header_descr = `$.header.description=Text`.
|
||||||
|
lv_descr_meth_1 = `$.descriptions.methods[?(@.name=='METH1')].description=Sonne`.
|
||||||
|
lv_descr_meth_1_param_1 =
|
||||||
|
`$.descriptions.methods[?(@.name=='METH1')].parameters[?(@.name=='param1')].description=Parameter A`.
|
||||||
|
lv_descr_meth_1_param_2 =
|
||||||
|
`$.descriptions.methods[?(@.name=='METH1')].parameters[?(@.name=='param2')].description=Parameter B`.
|
||||||
|
lv_descr_meth_2 = `$.descriptions.methods[?(@.name=='METH2')].description=Mond`.
|
||||||
|
|
||||||
|
APPEND lv_header_descr TO mt_exp.
|
||||||
|
APPEND lv_descr_meth_1 TO mt_exp.
|
||||||
|
APPEND lv_descr_meth_1_param_1 TO mt_exp.
|
||||||
|
APPEND lv_descr_meth_1_param_2 TO mt_exp.
|
||||||
|
APPEND lv_descr_meth_2 TO mt_exp.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ls_meth_param-name = 'param1'.
|
||||||
|
ls_meth_param-description = 'Parameter A'.
|
||||||
|
APPEND ls_meth_param TO ls_meth_desc-parameters.
|
||||||
|
|
||||||
|
ls_meth_param-name = 'param2'.
|
||||||
|
ls_meth_param-description = 'Parameter B'.
|
||||||
|
APPEND ls_meth_param TO ls_meth_desc-parameters.
|
||||||
|
|
||||||
|
ls_meth_desc-name = `METH1`.
|
||||||
|
ls_meth_desc-description = `Sonne`.
|
||||||
|
APPEND ls_meth_desc TO ms_data-descriptions-methods.
|
||||||
|
CLEAR ls_meth_desc.
|
||||||
|
|
||||||
|
ls_meth_desc-name = `METH2`.
|
||||||
|
ls_meth_desc-description = `Mond`.
|
||||||
|
APPEND ls_meth_desc TO ms_data-descriptions-methods.
|
||||||
|
|
||||||
|
ms_data-header-description = 'Text'.
|
||||||
|
|
||||||
|
mt_act = serialize( ms_data ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals( exp = mt_exp
|
||||||
|
act = mt_act ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
17
src/objects/aff/zcl_abapgit_json_path.clas.xml
Normal file
17
src/objects/aff/zcl_abapgit_json_path.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?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_JSON_PATH</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abapGit - de-/serializes JSON string to JSON paths</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
70
src/objects/texts/zcl_abapgit_properties_file.clas.abap
Normal file
70
src/objects/texts/zcl_abapgit_properties_file.clas.abap
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
CLASS zcl_abapgit_properties_file DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC .
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
INTERFACES zif_abapgit_i18n_file.
|
||||||
|
|
||||||
|
CONSTANTS:
|
||||||
|
c_properties_feature TYPE string VALUE 'TRANSL'.
|
||||||
|
|
||||||
|
METHODS constructor
|
||||||
|
IMPORTING iv_lang TYPE laiso.
|
||||||
|
|
||||||
|
METHODS push_text_pairs
|
||||||
|
IMPORTING it_translation TYPE string_table.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
DATA mv_lang TYPE laiso.
|
||||||
|
DATA mt_translation TYPE string_table.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS zcl_abapgit_properties_file IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
mv_lang = to_lower( iv_lang ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD push_text_pairs.
|
||||||
|
mt_translation = it_translation.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_i18n_file~ext.
|
||||||
|
rv_ext = 'properties'.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_i18n_file~lang.
|
||||||
|
rv_lang = mv_lang.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_i18n_file~render.
|
||||||
|
DATA: lv_translation TYPE string,
|
||||||
|
lo_buf TYPE REF TO zcl_abapgit_string_buffer,
|
||||||
|
lv_str TYPE string.
|
||||||
|
|
||||||
|
lv_translation = concat_lines_of( table = mt_translation
|
||||||
|
sep = cl_abap_char_utilities=>newline ).
|
||||||
|
CREATE OBJECT lo_buf.
|
||||||
|
lo_buf->add( lv_translation ).
|
||||||
|
|
||||||
|
lv_str = lo_buf->join_w_newline_and_flush( ) && cl_abap_char_utilities=>newline.
|
||||||
|
rv_data = zcl_abapgit_convert=>string_to_xstring_utf8_bom( lv_str ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_i18n_file~translate.
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
16
src/objects/texts/zcl_abapgit_properties_file.clas.xml
Normal file
16
src/objects/texts/zcl_abapgit_properties_file.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_PROPERTIES_FILE</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abapGit - Properties file serializer</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -270,9 +270,9 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
||||||
ls_intf_aff = lcl_aff_metadata_handler=>deserialize( lv_json_data ).
|
ls_intf_aff = lcl_aff_metadata_handler=>deserialize( lv_json_data ).
|
||||||
|
|
||||||
CREATE OBJECT lo_aff_mapper TYPE lcl_aff_type_mapping.
|
CREATE OBJECT lo_aff_mapper TYPE lcl_aff_type_mapping.
|
||||||
lo_aff_mapper->to_abapgit( EXPORTING iv_data = ls_intf_aff
|
lo_aff_mapper->to_abapgit( EXPORTING iv_data = ls_intf_aff
|
||||||
iv_object_name = ms_item-obj_name
|
iv_object_name = ms_item-obj_name
|
||||||
IMPORTING es_data = rs_intf ).
|
IMPORTING es_data = rs_intf ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -392,7 +392,9 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
||||||
ls_intf TYPE ty_intf,
|
ls_intf TYPE ty_intf,
|
||||||
ls_clskey TYPE seoclskey,
|
ls_clskey TYPE seoclskey,
|
||||||
lv_serialized_data TYPE xstring,
|
lv_serialized_data TYPE xstring,
|
||||||
lt_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus.
|
lt_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus,
|
||||||
|
lt_i18n_file TYPE zif_abapgit_i18n_file=>ty_table_of,
|
||||||
|
lo_i18n_file TYPE REF TO zif_abapgit_i18n_file.
|
||||||
|
|
||||||
ls_clskey-clsname = ms_item-obj_name.
|
ls_clskey-clsname = ms_item-obj_name.
|
||||||
|
|
||||||
|
@ -422,7 +424,13 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
||||||
lv_serialized_data = lcl_aff_metadata_handler=>serialize( ls_intf ).
|
lv_serialized_data = lcl_aff_metadata_handler=>serialize( ls_intf ).
|
||||||
mo_files->add_raw( iv_ext = 'json'
|
mo_files->add_raw( iv_ext = 'json'
|
||||||
iv_data = lv_serialized_data ).
|
iv_data = lv_serialized_data ).
|
||||||
|
lt_i18n_file = lcl_aff_metadata_handler=>serialize_translations(
|
||||||
|
is_intf = ls_intf
|
||||||
|
it_language = mo_i18n_params->ms_params-translation_languages ).
|
||||||
|
|
||||||
|
LOOP AT lt_i18n_file INTO lo_i18n_file.
|
||||||
|
mo_files->add_i18n_file( lo_i18n_file ).
|
||||||
|
ENDLOOP.
|
||||||
ELSE.
|
ELSE.
|
||||||
io_xml->add( iv_name = 'VSEOINTERF'
|
io_xml->add( iv_name = 'VSEOINTERF'
|
||||||
ig_data = ls_intf-vseointerf ).
|
ig_data = ls_intf-vseointerf ).
|
||||||
|
|
|
@ -102,9 +102,9 @@ CLASS lcl_aff_helper IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
rs_properties-attributes = get_attributes( lt_components ).
|
rs_properties-attributes = get_attributes( lt_components ).
|
||||||
rs_properties-methods = get_methods( is_components = lt_components
|
rs_properties-methods = get_methods( is_components = lt_components
|
||||||
is_sub_components = lt_sub_components ).
|
is_sub_components = lt_sub_components ).
|
||||||
rs_properties-events = get_events( is_components = lt_components
|
rs_properties-events = get_events( is_components = lt_components
|
||||||
is_sub_components = lt_sub_components ).
|
is_sub_components = lt_sub_components ).
|
||||||
rs_properties-types = get_types( lt_components ).
|
rs_properties-types = get_types( lt_components ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -133,7 +133,7 @@ CLASS lcl_aff_helper IMPLEMENTATION.
|
||||||
ON component~cmpname = component_text~cmpname AND component~clsname = component_text~clsname
|
ON component~cmpname = component_text~cmpname AND component~clsname = component_text~clsname
|
||||||
AND component_text~langu = iv_language
|
AND component_text~langu = iv_language
|
||||||
WHERE component~clsname = iv_clif_name
|
WHERE component~clsname = iv_clif_name
|
||||||
ORDER BY component~cmpname. "#EC CI_BUFFJOIN
|
ORDER BY component~cmpname. "#EC CI_BUFFJOIN
|
||||||
|
|
||||||
SELECT sub_component~cmpname sub_component~sconame sub_component_text~descript sub_component~scotype
|
SELECT sub_component~cmpname sub_component~sconame sub_component_text~descript sub_component~scotype
|
||||||
INTO TABLE lt_sub_components
|
INTO TABLE lt_sub_components
|
||||||
|
@ -152,9 +152,9 @@ CLASS lcl_aff_helper IMPLEMENTATION.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
rs_properties-attributes = get_attributes( lt_components_exp ).
|
rs_properties-attributes = get_attributes( lt_components_exp ).
|
||||||
rs_properties-methods = get_methods( is_components = lt_components_exp
|
rs_properties-methods = get_methods( is_components = lt_components_exp
|
||||||
is_sub_components = lt_sub_components ).
|
is_sub_components = lt_sub_components ).
|
||||||
rs_properties-events = get_events( is_components = lt_components_exp
|
rs_properties-events = get_events( is_components = lt_components_exp
|
||||||
is_sub_components = lt_sub_components ).
|
is_sub_components = lt_sub_components ).
|
||||||
rs_properties-types = get_types( lt_components_exp ).
|
rs_properties-types = get_types( lt_components_exp ).
|
||||||
|
|
||||||
|
@ -339,17 +339,17 @@ CLASS lcl_aff_helper IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD set_descriptions_compo_subco.
|
METHOD set_descriptions_compo_subco.
|
||||||
set_attributes( is_properties = is_properties
|
set_attributes( is_properties = is_properties
|
||||||
iv_clif_name = iv_clif_name
|
iv_clif_name = iv_clif_name
|
||||||
iv_language = iv_language ).
|
iv_language = iv_language ).
|
||||||
set_methods( is_properties = is_properties
|
set_methods( is_properties = is_properties
|
||||||
iv_clif_name = iv_clif_name
|
iv_clif_name = iv_clif_name
|
||||||
iv_language = iv_language ).
|
iv_language = iv_language ).
|
||||||
set_events( is_properties = is_properties
|
set_events( is_properties = is_properties
|
||||||
iv_clif_name = iv_clif_name
|
iv_clif_name = iv_clif_name
|
||||||
iv_language = iv_language ).
|
iv_language = iv_language ).
|
||||||
set_types( is_properties = is_properties
|
set_types( is_properties = is_properties
|
||||||
iv_clif_name = iv_clif_name
|
iv_clif_name = iv_clif_name
|
||||||
iv_language = iv_language ).
|
iv_language = iv_language ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -387,8 +387,8 @@ CLASS lcl_aff_type_mapping IMPLEMENTATION.
|
||||||
|
|
||||||
" get descriptions
|
" get descriptions
|
||||||
ls_data_aff-descriptions = lcl_aff_helper=>get_descriptions_compo_subco(
|
ls_data_aff-descriptions = lcl_aff_helper=>get_descriptions_compo_subco(
|
||||||
iv_language = ls_data_aff-header-original_language
|
iv_language = ls_data_aff-header-original_language
|
||||||
iv_clif_name = ls_data_abapgit-vseointerf-clsname ).
|
iv_clif_name = ls_data_abapgit-vseointerf-clsname ).
|
||||||
|
|
||||||
es_data = ls_data_aff.
|
es_data = ls_data_aff.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -502,6 +502,11 @@ CLASS lcl_aff_metadata_handler DEFINITION.
|
||||||
IMPORTING is_intf TYPE zcl_abapgit_object_intf=>ty_intf
|
IMPORTING is_intf TYPE zcl_abapgit_object_intf=>ty_intf
|
||||||
RETURNING VALUE(rv_result) TYPE xstring
|
RETURNING VALUE(rv_result) TYPE xstring
|
||||||
RAISING zcx_abapgit_exception.
|
RAISING zcx_abapgit_exception.
|
||||||
|
CLASS-METHODS serialize_translations
|
||||||
|
IMPORTING is_intf TYPE zcl_abapgit_object_intf=>ty_intf
|
||||||
|
it_language TYPE zif_abapgit_definitions=>ty_languages
|
||||||
|
RETURNING VALUE(rt_result) TYPE zif_abapgit_i18n_file=>ty_table_of
|
||||||
|
RAISING zcx_abapgit_exception.
|
||||||
CLASS-METHODS deserialize
|
CLASS-METHODS deserialize
|
||||||
IMPORTING iv_data TYPE xstring
|
IMPORTING iv_data TYPE xstring
|
||||||
RETURNING VALUE(rv_result) TYPE zif_abapgit_aff_intf_v1=>ty_main
|
RETURNING VALUE(rv_result) TYPE zif_abapgit_aff_intf_v1=>ty_main
|
||||||
|
@ -515,7 +520,11 @@ CLASS lcl_aff_metadata_handler DEFINITION.
|
||||||
"! For serialization
|
"! For serialization
|
||||||
"! @parameter rt_result | Paths that will not be serialized (depending on value)
|
"! @parameter rt_result | Paths that will not be serialized (depending on value)
|
||||||
get_paths_to_skip
|
get_paths_to_skip
|
||||||
RETURNING VALUE(rt_result) TYPE zcl_abapgit_json_handler=>ty_skip_paths.
|
RETURNING VALUE(rt_result) TYPE zcl_abapgit_json_handler=>ty_skip_paths,
|
||||||
|
fill_translation
|
||||||
|
IMPORTING iv_name TYPE seoclsname
|
||||||
|
iv_language TYPE laiso
|
||||||
|
RETURNING VALUE(rt_result) TYPE zif_abapgit_aff_intf_v1=>ty_main.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS lcl_aff_metadata_handler IMPLEMENTATION.
|
CLASS lcl_aff_metadata_handler IMPLEMENTATION.
|
||||||
|
@ -609,16 +618,77 @@ CLASS lcl_aff_metadata_handler IMPLEMENTATION.
|
||||||
CREATE OBJECT lo_ajson.
|
CREATE OBJECT lo_ajson.
|
||||||
TRY.
|
TRY.
|
||||||
lo_ajson->deserialize(
|
lo_ajson->deserialize(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
iv_content = iv_data
|
iv_content = iv_data
|
||||||
iv_defaults = lt_values_for_initial
|
iv_defaults = lt_values_for_initial
|
||||||
iv_enum_mappings = lt_enum_mappings
|
iv_enum_mappings = lt_enum_mappings
|
||||||
IMPORTING
|
IMPORTING
|
||||||
ev_data = rv_result ).
|
ev_data = rv_result ).
|
||||||
CATCH cx_static_check INTO lx_exception.
|
CATCH cx_static_check INTO lx_exception.
|
||||||
zcx_abapgit_exception=>raise_with_text( lx_exception ).
|
zcx_abapgit_exception=>raise_with_text( lx_exception ).
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD serialize_translations.
|
||||||
|
DATA: ls_data TYPE zif_abapgit_aff_intf_v1=>ty_main,
|
||||||
|
lv_langu TYPE laiso,
|
||||||
|
lv_json TYPE string,
|
||||||
|
lo_ajson TYPE REF TO zif_abapgit_ajson,
|
||||||
|
lo_json_path TYPE REF TO zcl_abapgit_json_path,
|
||||||
|
lt_translation TYPE string_table,
|
||||||
|
lx_exception TYPE REF TO zcx_abapgit_ajson_error,
|
||||||
|
lo_trans_file TYPE REF TO zcl_abapgit_properties_file.
|
||||||
|
|
||||||
|
|
||||||
|
LOOP AT it_language INTO lv_langu.
|
||||||
|
|
||||||
|
ls_data = fill_translation( iv_name = is_intf-vseointerf-clsname
|
||||||
|
iv_language = lv_langu ).
|
||||||
|
|
||||||
|
" convert AFF type to JSON
|
||||||
|
TRY.
|
||||||
|
lo_ajson = zcl_abapgit_ajson=>new( iv_keep_item_order = abap_true
|
||||||
|
)->set( iv_path = '/'
|
||||||
|
iv_val = ls_data
|
||||||
|
)->map( zcl_abapgit_ajson_mapping=>create_to_camel_case( )
|
||||||
|
)->filter( zcl_abapgit_ajson_filter_lib=>create_empty_filter( ) ).
|
||||||
|
" remove manually the non-primitive types that are initial or not relevant for translation
|
||||||
|
lo_ajson->delete( '/category/' ).
|
||||||
|
lo_ajson->delete( '/proxy/' ).
|
||||||
|
lv_json = lo_ajson->stringify( ).
|
||||||
|
CATCH zcx_abapgit_ajson_error INTO lx_exception.
|
||||||
|
zcx_abapgit_exception=>raise_with_text( lx_exception ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
|
||||||
|
CREATE OBJECT lo_json_path.
|
||||||
|
lt_translation = lo_json_path->serialize( lv_json ).
|
||||||
|
|
||||||
|
CREATE OBJECT lo_trans_file
|
||||||
|
EXPORTING iv_lang = lv_langu.
|
||||||
|
|
||||||
|
lo_trans_file->push_text_pairs( lt_translation ).
|
||||||
|
|
||||||
|
APPEND lo_trans_file TO rt_result.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD fill_translation.
|
||||||
|
DATA: lv_langu_sap1 TYPE sy-langu.
|
||||||
|
|
||||||
|
lv_langu_sap1 = zcl_abapgit_convert=>language_sap2_to_sap1( iv_language ).
|
||||||
|
|
||||||
|
rt_result-descriptions = lcl_aff_helper=>get_descriptions_compo_subco(
|
||||||
|
iv_clif_name = iv_name
|
||||||
|
iv_language = lv_langu_sap1 ).
|
||||||
|
|
||||||
|
SELECT SINGLE descript FROM seoclasstx INTO rt_result-header-description
|
||||||
|
WHERE clsname = iv_name AND
|
||||||
|
langu = lv_langu_sap1.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -55,6 +55,36 @@ CLASS ltcl_object_types IMPLEMENTATION.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
CLASS lcl_settings_with_features DEFINITION.
|
||||||
|
PUBLIC SECTION.
|
||||||
|
INTERFACES zif_abapgit_persist_settings.
|
||||||
|
METHODS: constructor
|
||||||
|
IMPORTING iv_features TYPE string.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
DATA mv_features TYPE string.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS lcl_settings_with_features IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_persist_settings~modify.
|
||||||
|
RETURN.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_persist_settings~read.
|
||||||
|
|
||||||
|
CREATE OBJECT ro_settings.
|
||||||
|
ro_settings->set_experimental_features( mv_features ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
mv_features = iv_features.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
* CLASS ltcl_serialize DEFINITION
|
* CLASS ltcl_serialize DEFINITION
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -80,7 +110,8 @@ CLASS ltcl_serialize DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT F
|
||||||
serialize_msag FOR TESTING RAISING zcx_abapgit_exception,
|
serialize_msag FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
serialize_prog FOR TESTING RAISING zcx_abapgit_exception,
|
serialize_prog FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
serialize_tran FOR TESTING RAISING zcx_abapgit_exception,
|
serialize_tran FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
serialize_ttyp FOR TESTING RAISING zcx_abapgit_exception.
|
serialize_ttyp FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
|
serialize_intf_aff_translate FOR TESTING RAISING cx_static_check.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -162,6 +193,48 @@ CLASS ltcl_serialize IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD serialize_intf_aff_translate.
|
||||||
|
|
||||||
|
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
|
||||||
|
lo_settings TYPE REF TO lcl_settings_with_features,
|
||||||
|
ls_act TYPE zif_abapgit_objects=>ty_serialization,
|
||||||
|
ls_translation_de TYPE zif_abapgit_git_definitions=>ty_file,
|
||||||
|
lt_target_langu TYPE zif_abapgit_definitions=>ty_languages,
|
||||||
|
lo_i18n_params TYPE REF TO zcl_abapgit_i18n_params,
|
||||||
|
lv_features TYPE string,
|
||||||
|
lv_filename TYPE string.
|
||||||
|
|
||||||
|
ls_item-obj_type = 'INTF'.
|
||||||
|
ls_item-obj_name = 'IF_BADI_TADIR_CHANGED'.
|
||||||
|
|
||||||
|
lv_features = |{ zcl_abapgit_aff_registry=>c_aff_feature }, { zcl_abapgit_properties_file=>c_properties_feature }|.
|
||||||
|
CREATE OBJECT lo_settings
|
||||||
|
EXPORTING
|
||||||
|
iv_features = lv_features.
|
||||||
|
|
||||||
|
zcl_abapgit_persist_injector=>set_settings( lo_settings ).
|
||||||
|
|
||||||
|
APPEND `DE` TO lt_target_langu.
|
||||||
|
lo_i18n_params = zcl_abapgit_i18n_params=>new( iv_main_language = zif_abapgit_definitions=>c_english
|
||||||
|
it_translation_langs = lt_target_langu
|
||||||
|
iv_use_lxe = abap_true ).
|
||||||
|
ls_act = zcl_abapgit_objects=>serialize(
|
||||||
|
is_item = ls_item
|
||||||
|
io_i18n_params = lo_i18n_params ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_not_initial( ls_act-files ).
|
||||||
|
cl_abap_unit_assert=>assert_equals( act = ls_act-item
|
||||||
|
exp = ls_item ).
|
||||||
|
|
||||||
|
|
||||||
|
lv_filename = 'if_badi_tadir_changed.intf.i18n.de.properties'.
|
||||||
|
READ TABLE ls_act-files WITH KEY filename = lv_filename INTO ls_translation_de.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_not_initial( ls_translation_de ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD serialize_doma.
|
METHOD serialize_doma.
|
||||||
|
|
||||||
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item.
|
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item.
|
||||||
|
|
|
@ -174,6 +174,7 @@
|
||||||
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_prog", "note": "no such table: seometarel"},
|
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_prog", "note": "no such table: seometarel"},
|
||||||
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_tran", "note": "no such table: seometarel"},
|
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_tran", "note": "no such table: seometarel"},
|
||||||
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_ttyp", "note": "no such table: seometarel"},
|
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_ttyp", "note": "no such table: seometarel"},
|
||||||
|
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_intf_aff_translate", "note": "Void type: SEOCLASSDF"},
|
||||||
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_check_objects_locked", "method": "throw_excp_if_object_is_locked", "note": "no such table: seometarel"},
|
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_check_objects_locked", "method": "throw_excp_if_object_is_locked", "note": "no such table: seometarel"},
|
||||||
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_check_objects_locked", "method": "no_excp_if_obj_is_not_locked", "note": "no such table: seometarel"},
|
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_check_objects_locked", "method": "no_excp_if_obj_is_not_locked", "note": "no such table: seometarel"},
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user