mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
SSFO: Fix order of T_CAPTION data (#6609)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
241b95af91
commit
98ea342593
|
@ -1,6 +1,11 @@
|
|||
CLASS zcl_abapgit_object_ssfo DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL.
|
||||
CLASS zcl_abapgit_object_ssfo DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM zcl_abapgit_objects_super
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES zif_abapgit_object.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
@ -14,6 +19,11 @@ CLASS zcl_abapgit_object_ssfo DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
|||
METHODS fix_ids
|
||||
IMPORTING
|
||||
!ii_xml_doc TYPE REF TO if_ixml_document .
|
||||
METHODS sort_texts
|
||||
IMPORTING
|
||||
!ii_xml_doc TYPE REF TO if_ixml_document
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS handle_attrib_leading_spaces
|
||||
IMPORTING
|
||||
!iv_name TYPE string
|
||||
|
@ -188,6 +198,73 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD sort_texts.
|
||||
|
||||
DATA: li_node TYPE REF TO if_ixml_node,
|
||||
li_item TYPE REF TO if_ixml_node,
|
||||
li_field TYPE REF TO if_ixml_node,
|
||||
li_item_list TYPE REF TO if_ixml_node_list,
|
||||
li_iterator TYPE REF TO if_ixml_node_iterator,
|
||||
li_items TYPE REF TO if_ixml_node_iterator,
|
||||
lv_index TYPE i,
|
||||
ls_item TYPE stxfobjt,
|
||||
lt_items TYPE STANDARD TABLE OF stxfobjt.
|
||||
|
||||
FIELD-SYMBOLS <lv_field> TYPE any.
|
||||
|
||||
li_iterator = ii_xml_doc->create_iterator( ).
|
||||
li_node = li_iterator->get_next( ).
|
||||
WHILE NOT li_node IS INITIAL.
|
||||
IF li_node->get_name( ) = 'T_CAPTION'.
|
||||
|
||||
" Read all records for T_CAPTION
|
||||
CLEAR lt_items.
|
||||
li_item_list = li_node->get_children( ).
|
||||
li_items = li_item_list->create_iterator( ).
|
||||
DO.
|
||||
li_item = li_items->get_next( ).
|
||||
IF li_item IS INITIAL.
|
||||
EXIT.
|
||||
ENDIF.
|
||||
CLEAR ls_item.
|
||||
li_field = li_item->get_first_child( ).
|
||||
WHILE NOT li_field IS INITIAL.
|
||||
ASSIGN COMPONENT li_field->get_name( ) OF STRUCTURE ls_item TO <lv_field>.
|
||||
ASSERT sy-subrc = 0.
|
||||
<lv_field> = li_field->get_value( ).
|
||||
li_field = li_field->get_next( ).
|
||||
ENDWHILE.
|
||||
INSERT ls_item INTO TABLE lt_items.
|
||||
ENDDO.
|
||||
|
||||
SORT lt_items.
|
||||
|
||||
" Write all records back after sorting
|
||||
lv_index = 1.
|
||||
li_items = li_item_list->create_iterator( ).
|
||||
DO.
|
||||
li_item = li_items->get_next( ).
|
||||
IF li_item IS INITIAL.
|
||||
EXIT.
|
||||
ENDIF.
|
||||
READ TABLE lt_items INTO ls_item INDEX lv_index.
|
||||
li_field = li_item->get_first_child( ).
|
||||
WHILE NOT li_field IS INITIAL.
|
||||
ASSIGN COMPONENT li_field->get_name( ) OF STRUCTURE ls_item TO <lv_field>.
|
||||
ASSERT sy-subrc = 0.
|
||||
li_field->set_value( |{ <lv_field> }| ).
|
||||
li_field = li_field->get_next( ).
|
||||
ENDWHILE.
|
||||
lv_index = lv_index + 1.
|
||||
ENDDO.
|
||||
|
||||
ENDIF.
|
||||
li_node = li_iterator->get_next( ).
|
||||
ENDWHILE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~changed_by.
|
||||
|
||||
SELECT SINGLE lastuser FROM stxfadm INTO rv_user
|
||||
|
@ -455,6 +532,8 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION.
|
|||
|
||||
fix_ids( li_xml_doc ).
|
||||
|
||||
sort_texts( li_xml_doc ).
|
||||
|
||||
li_element = li_xml_doc->get_root_element( ).
|
||||
li_element->set_attribute(
|
||||
name = 'sf'
|
||||
|
|
Loading…
Reference in New Issue
Block a user