yuanqiao 发表于 2019-2-2 14:14:00

SAP 内表转XML文件 老白的文章

*---------------------------------------------------------------------*  *       FORM fill_itab                                                *
  *---------------------------------------------------------------------*
  FORM fill_itab2xml TABLES intab
  USING node1name TYPE string
  node2name TYPE string
  l_parent TYPE REF TO if_ixml_element.
  DATA: BEGIN OF headtab OCCURS 0 ,
  length    TYPE i ,
  decimalsTYPE i,
  type_kind TYPE c,
  name(30)TYPE c,
  END OF headtab.
  DATA descr_ref TYPE REF TO cl_abap_structdescr.
  FIELD-SYMBOLS:TYPE abap_compdescr ,
   ,
   TYPE ANY .
  DATA: n TYPE i ,
  str TYPE string ,
  itemname TYPE string ,
  text1 TYPE c ,
  l_node TYPE REF TO if_ixml_element ,
  l_item TYPE REF TO if_ixml_element .
  descr_ref ?= cl_abap_typedescr=>describe_by_data( intab ).
  LOOP AT descr_ref->components ASSIGNING .
  MOVE-CORRESPONDINGTO headtab.
  APPEND headtab.
  ENDLOOP.
  CALL METHOD l_doc->create_simple_element
  EXPORTING
  name      = node1name
  parent    = l_parent
  RECEIVING
  rval      = l_node.
  DESCRIBE TABLE headtab LINES n.
  LOOP AT intab ASSIGNING .
  CALL METHOD l_doc->create_simple_element
  EXPORTING
  name      = node2name
  parent    = l_node
  RECEIVING
  rval      = l_item.
  DO n TIMES.
  ASSIGN COMPONENT sy-index OF STRUCTURETO .
  str = .
  READ TABLE headtab INDEX sy-index.
  IF headtab-type_kind = 'I' OR headtab-type_kind = 'P'
  OR headtab-type_kind = 'F'.
  SEARCH str FOR '-'.
  IF sy-subrc = 0 AND sy-fdpos0.
  SPLIT str AT '-' INTO str text1.
  CONDENSE str.
  CONCATENATE '-' str INTO str.
  ELSE.
  CONDENSE str.
  ENDIF.
  ELSE.
  *      SHIFT str LEFT DELETING LEADING '0' .
  ENDIF.

页: [1]
查看完整版本: SAP 内表转XML文件 老白的文章