From 32db3c3a165e11920a8328e755ff00824cb6a755 Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 25 Feb 2016 06:47:20 +0000 Subject: [PATCH] rollback xml changes --- zabapgit.prog.abap | 108 ++++++++++++++++----------------------------- 1 file changed, 38 insertions(+), 70 deletions(-) diff --git a/zabapgit.prog.abap b/zabapgit.prog.abap index 3f6928114..1ee18577a 100644 --- a/zabapgit.prog.abap +++ b/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v0.2-alpha', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v0.111'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v0.112'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) @@ -1095,10 +1095,10 @@ CLASS lcl_xml DEFINITION FINAL CREATE PUBLIC. RAISING lcx_exception. METHODS table_add - IMPORTING it_table TYPE STANDARD TABLE - iv_name TYPE string OPTIONAL + IMPORTING it_table TYPE STANDARD TABLE + iv_name TYPE string OPTIONAL iv_stable TYPE abap_bool DEFAULT abap_false - ii_root TYPE REF TO if_ixml_element OPTIONAL + ii_root TYPE REF TO if_ixml_element OPTIONAL RAISING lcx_exception. METHODS table_read @@ -1242,14 +1242,13 @@ CLASS lcl_xml IMPLEMENTATION. METHOD table_read. - DATA: lv_name TYPE string, - lv_table_line_name TYPE string, - li_root TYPE REF TO if_ixml_element, - lv_kind TYPE abap_typecategory, - lv_index TYPE i, - lv_success TYPE abap_bool, - lo_data_descr TYPE REF TO cl_abap_datadescr, - lo_table_descr TYPE REF TO cl_abap_tabledescr. + DATA: lv_name TYPE string, + li_root TYPE REF TO if_ixml_element, + lv_kind TYPE abap_typecategory, + lv_index TYPE i, + lv_success TYPE abap_bool, + lo_data_descr TYPE REF TO cl_abap_datadescr, + lo_table_descr TYPE REF TO cl_abap_tabledescr. FIELD-SYMBOLS: TYPE any. @@ -1257,14 +1256,14 @@ CLASS lcl_xml IMPLEMENTATION. CLEAR ct_table[]. lo_table_descr ?= cl_abap_typedescr=>describe_by_data( ct_table ). - IF iv_name IS NOT INITIAL. - lv_name = iv_name. - ELSE. - lv_name = lo_table_descr->get_relative_name( ). + lv_name = lo_table_descr->get_relative_name( ). - IF lv_name IS INITIAL. - _raise 'no name, table read'. - ENDIF. + IF lv_name IS INITIAL. + lv_name = iv_name. + ENDIF. + + IF lv_name IS INITIAL. + _raise 'no name, table read'. ENDIF. li_root = xml_find( ii_root = ii_root @@ -1276,21 +1275,15 @@ CLASS lcl_xml IMPLEMENTATION. lo_data_descr = lo_table_descr->get_table_line_type( ). lv_kind = lo_data_descr->kind. - IF iv_name IS NOT INITIAL. - lv_table_line_name = lv_name. - ENDIF. - DO. APPEND INITIAL LINE TO ct_table ASSIGNING . CASE lv_kind. WHEN cl_abap_typedescr=>kind_struct. structure_read( EXPORTING ii_root = li_root - iv_name = lv_table_line_name IMPORTING ev_success = lv_success CHANGING cg_structure = ). WHEN cl_abap_typedescr=>kind_elem. element_read( EXPORTING ii_root = li_root - iv_name = lv_table_line_name IMPORTING ev_success = lv_success CHANGING cg_element = ). WHEN OTHERS. @@ -1298,27 +1291,11 @@ CLASS lcl_xml IMPLEMENTATION. ENDCASE. IF lv_success = abap_false. -* Fallback to the previous implementation: the table's name was not always propagated -* the reading of the line. Thus, read again without the name (of the table) being passed - CASE lv_kind. - WHEN cl_abap_typedescr=>kind_struct. - structure_read( EXPORTING ii_root = li_root - IMPORTING ev_success = lv_success - CHANGING cg_structure = ). - WHEN cl_abap_typedescr=>kind_elem. - element_read( EXPORTING ii_root = li_root - IMPORTING ev_success = lv_success - CHANGING cg_element = ). - WHEN OTHERS. - _raise 'unknown kind'. - ENDCASE. - IF lv_success = abap_false. - lv_index = lines( ct_table ). - DELETE ct_table INDEX lv_index. - ASSERT sy-subrc = 0. - EXIT. " current loop - ENDIF. "Fallback also not successful - ENDIF." Fallback + lv_index = lines( ct_table ). + DELETE ct_table INDEX lv_index. + ASSERT sy-subrc = 0. + EXIT. " current loop + ENDIF. ENDDO. ENDMETHOD. "table_read @@ -1390,46 +1367,37 @@ CLASS lcl_xml IMPLEMENTATION. METHOD table_add. - DATA: lv_name TYPE string, - lv_table_line_name TYPE string, - li_table TYPE REF TO if_ixml_element, - lv_kind TYPE abap_typecategory, - lo_data_descr TYPE REF TO cl_abap_datadescr, - lo_table_descr TYPE REF TO cl_abap_tabledescr. + DATA: lv_name TYPE string, + li_table TYPE REF TO if_ixml_element, + lv_kind TYPE abap_typecategory, + lo_data_descr TYPE REF TO cl_abap_datadescr, + lo_table_descr TYPE REF TO cl_abap_tabledescr. FIELD-SYMBOLS: TYPE any. lo_table_descr ?= cl_abap_typedescr=>describe_by_data( it_table ). + lv_name = lo_table_descr->get_relative_name( ). - IF iv_name IS NOT INITIAL. + IF lv_name IS INITIAL. lv_name = iv_name. - ELSE. - lv_name = lo_table_descr->get_relative_name( ). + ENDIF. - IF lv_name IS INITIAL. - _raise 'no name, table add'. - ENDIF. + IF lv_name IS INITIAL. + _raise 'no name, table add'. ENDIF. li_table = mi_xml_doc->create_element( lv_name ). lo_data_descr = lo_table_descr->get_table_line_type( ). lv_kind = lo_data_descr->kind. -* provide a stable name for the line structure if a table name was provided previously - IF iv_stable = abap_true AND iv_name IS NOT INITIAL. - lv_table_line_name = iv_name. - ENDIF. - LOOP AT it_table ASSIGNING . CASE lv_kind. WHEN cl_abap_typedescr=>kind_struct. structure_add( ig_structure = - iv_name = lv_table_line_name ii_root = li_table ). WHEN cl_abap_typedescr=>kind_elem. element_add( ig_element = - iv_name = lv_table_line_name ii_root = li_table ). WHEN OTHERS. _raise 'unknown kind'. @@ -1523,17 +1491,17 @@ CLASS lcl_xml IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF lo_descr->components, TYPE any. - lo_descr ?= cl_abap_typedescr=>describe_by_data( ig_structure ). - IF iv_name IS NOT INITIAL. - lv_name = iv_name. - ELSE. + lo_descr ?= cl_abap_typedescr=>describe_by_data( ig_structure ). + + IF iv_name IS INITIAL. lv_name = lo_descr->get_relative_name( ). IF lv_name IS INITIAL. _raise 'no name, structure add'. ENDIF. + ELSE. + lv_name = iv_name. ENDIF. - li_structure = mi_xml_doc->create_element( lv_name ). LOOP AT lo_descr->components ASSIGNING .