anchor.diff:      ENDIF.
   
       LOOP AT lo_descr_ref->components ASSIGNING <ls_comp>.
  -
         ASSIGN COMPONENT <ls_comp>-name OF STRUCTURE cg_structure TO <lg_any>.
  +      ASSERT sy-subrc = 0.
   
         lv_name = <ls_comp>-name.
         special_names( CHANGING cv_name = lv_name ).
  -      li_elm = li_struct->find_from_name( depth = 0 name = lv_name ).
  -      IF li_elm IS BOUND.
  -        lv_value = li_elm->get_value( ).
  -        <lg_any> = lv_value.
  -      ENDIF.
  +
  +      lo_typedescr = cl_abap_typedescr=>describe_by_data( <lg_any> ).
  +      CASE lo_typedescr->kind.
  +        WHEN cl_abap_typedescr=>kind_table.
  +          table_read( EXPORTING ii_root    = li_struct
  +                                iv_name = lv_name
  +                      CHANGING  ct_table = <lg_any> ).
  +        WHEN cl_abap_typedescr=>kind_struct.
  +          structure_read( EXPORTING ii_root    = li_struct
  +                                    iv_name = lv_name
  +                          CHANGING  cg_structure = <lg_any> ).
  +        WHEN cl_abap_typedescr=>kind_elem.
  +          element_read( EXPORTING ii_root    = li_struct
  +                                  iv_name = lv_name
  +                        CHANGING  cg_element = <lg_any> ).
  +        WHEN OTHERS.
  +          _raise 'unknown kind, structure read'.
  +      ENDCASE.
       ENDLOOP.
   
     ENDMETHOD.                    "structure_read
  
positive.code:     li_structure = mi_xml_doc->create_element( lv_name ).
  
      LOOP AT lo_descr->components ASSIGNING <ls_comp>.
  
        ASSIGN COMPONENT <ls_comp>-name OF STRUCTURE ig_structure TO <lg_any>.
  
        lv_name  = <ls_comp>-name.
        special_names( CHANGING cv_name = lv_name ).
        li_element = mi_xml_doc->create_element( lv_name ).
  
        lv_string  = <lg_any>.
        li_text    = mi_xml_doc->create_text( lv_string ).
  
        li_element->append_child( li_text ).
  
        li_structure->append_child( li_element ).
      ENDLOOP.
  
      xml_add( ii_root    = ii_root
  
negative.code:     IF iv_name IS INITIAL.
        lv_name = lo_descr->get_relative_name( ).
        IF lv_name IS INITIAL.
          _raise 'no name, element add'.
        ENDIF.
      ELSE.
        lv_name = iv_name.
  