SAP系统中 XML 文件的两种转换方法[互联网+].doc

上传人:rrsccc 文档编号:9364435 上传时间:2021-02-21 格式:DOC 页数:8 大小:259KB
返回 下载 相关 举报
SAP系统中 XML 文件的两种转换方法[互联网+].doc_第1页
第1页 / 共8页
SAP系统中 XML 文件的两种转换方法[互联网+].doc_第2页
第2页 / 共8页
SAP系统中 XML 文件的两种转换方法[互联网+].doc_第3页
第3页 / 共8页
SAP系统中 XML 文件的两种转换方法[互联网+].doc_第4页
第4页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《SAP系统中 XML 文件的两种转换方法[互联网+].doc》由会员分享,可在线阅读,更多相关《SAP系统中 XML 文件的两种转换方法[互联网+].doc(8页珍藏版)》请在三一文库上搜索。

1、XML 文件的两种转换方法1, 使用ABAP语言在程序中组织生成XML文件此方法比较繁琐,相当于一行一行的凑出XML文件里面的所有语句.优点是在各个版本的SAP系统中都可以正常工作,不受系统版本限制.如上面这个XML文件的实现方法如下:*&-*& Report Z_BARRY_TEST_XML*&*&-*& ECC 通用*&-*REPORT z_barry_test_xml.DATA: BEGIN OF itab_matnr OCCURS 0 , “ XML文件中的节点 Product matnr LIKE mara-matnr , maktx LIKE makt-maktx , END OF

2、 itab_matnr .DATA: BEGIN OF itab_class OCCURS 0 , “ XML文件中的节点 Categorie class LIKE m_wwgha-class,部门 kschl LIKE m_wwgha-kschl,DESC END OF itab_class .DATA: l_ixml TYPE REF TO if_ixml, “ XML 相关对象定义 l_encoding TYPE REF TO if_ixml_encoding, “XML Codepage 对象 l_comment TYPE REF TO if_ixml_comment, “ XML 注

3、释对象 l_doc TYPE REF TO if_ixml_document, “ XML 文件对象 l_root TYPE REF TO if_ixml_element, “ XML 元素对象 l_item TYPE REF TO if_ixml_element, l_element TYPE REF TO if_ixml_element, l_attribute TYPE REF TO if_ixml_attribute, “ XML 属性 l_ostream TYPE REF TO if_ixml_ostream, l_factory TYPE REF TO if_ixml_stream

4、_factory.TYPES: BEGIN OF xml_line, data(256) TYPE x, END OF xml_line.DATA: xml_table TYPE TABLE OF xml_line, xml_size TYPE i.DATA: l_rval TYPE i.START-OF-SELECTION. PERFORM getdata. PERFORM create_xml. PERFORM download.*-* FORM getdata *-*FORM getdata. SELECT matnr maktx FROM makt INTO TABLE itab_ma

5、tnr UP TO 4 ROWS WHERE spras = 1 . SELECT class kschl FROM m_wwgha INTO TABLE itab_class UP TO 4 ROWS WHERE spras IN (1,E) . DELETE itab_class WHERE class = 0. APPEND itab_class. 演示空数据ENDFORM.*-* FORM create_xml *-*FORM create_xml. CLASS cl_ixml DEFINITION LOAD. l_ixml = cl_ixml=create( ). CALL METH

6、OD l_ixml-create_encoding “ 创建Codepage 对象 EXPORTING byte_order = 0 character_set = gb2312 RECEIVING rval = l_encoding . CALL METHOD l_ixml-create_document “ 创建XML 文件 对象 RECEIVING rval = l_doc . CALL METHOD l_doc-set_encoding “ 为XML 文件 对象定义Codepage EXPORTING encoding = l_encoding . CALL METHOD l_doc-

7、create_simple_element “ 创建XML 元素 对象 EXPORTING name = Root parent = l_doc RECEIVING rval = l_root . CALL METHOD l_root-set_attribute “ 定义XML 元素 对象的数据 EXPORTING name = ATTRIBUTE value = sample RECEIVING rval = l_rval . CALL METHOD l_doc-create_comment “ 添加一行注释 EXPORTING comment = 上面ATTRIBUTE为属性示例 RECE

8、IVING rval = l_comment . CALL METHOD l_root-append_child “ 添加子节点(注释行) EXPORTING new_child = l_comment RECEIVING rval = l_rval. PERFORM fill_itab2xml TABLES itab_matnr “ 添加内表记录 USING Products Product l_root. PERFORM fill_itab2xml TABLES itab_class “ 添加内表记录 USING Categories Categorie l_root. CALL METH

9、OD l_ixml-create_stream_factory RECEIVING rval = l_factory . CALL METHOD l_factory-create_ostream_itable EXPORTING table = xml_table RECEIVING rval = l_ostream . CALL METHOD l_doc-render EXPORTING ostream = l_ostream recursive = X . CALL METHOD l_ostream-get_num_written_raw RECEIVING rval = xml_size

10、 .ENDFORM.*-* FORM download *-*FORM download. CALL FUNCTION GUI_DOWNLOAD EXPORTING bin_filesize = xml_size filename = C:ECC6.XML filetype = BIN TABLES data_tab = xml_table.ENDFORM.*-* FORM fill_itab *-*FORM fill_itab2xml TABLES intab USING node1name TYPE string node2name TYPE string l_parent TYPE RE

11、F TO if_ixml_element. DATA: BEGIN OF headtab OCCURS 0 , length TYPE i , decimals TYPE 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 , text

12、1 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-CORRESPONDING TO headtab. APPEND headtab. ENDLOOP. CALL METHOD l_doc-create_simple_element EXPORTING name = nod

13、e1name 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 STRUCTURE TO . str = . READ TABLE headtab

14、 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-fdpos 0. SPLIT str AT - INTO str text1. CONDENSE str. CONCATENATE - str INTO str. ELSE. CONDENSE str. ENDIF. ELSE.* SHIFT str LEFT DELETING LEADING 0 . ENDIF. itemnam

15、e = headtab-name . CALL METHOD l_doc-create_simple_element EXPORTING name = itemname parent = l_item value = str RECEIVING rval = l_element . ENDDO. ENDLOOP.ENDFORM.2, 使用SAP工具 Transformation (Tcode: STRANS) 定义转换模板,ABAP组织数据并转换为XML格式.此方法对SAP版本有限制,只有ECC5.0以上版本才能使用.执行Tcode: STRANS , 新建一个Transformation .

16、 粘贴如下代码并激活. SE38新建下面的程序转换XML文件REPORT ZZITAB_XML.DATA xml_string TYPE string.DATA: BEGIN OF line, key TYPE i, values TYPE TABLE OF i, END OF line.DATA num TYPE i.DATA itab LIKE TABLE OF line.DATA result LIKE itab.DATA: BEGIN OF it_xml OCCURS 0, line(100) TYPE c, END OF it_xml.DATA: w_len TYPE i.DO 3

17、TIMES. CLEAR line. line-key = sy-index + 1. num = line-key * 2. APPEND num TO line-values. num = line-key * 3. APPEND num TO line-values. num = line-key * 4. APPEND num TO line-values.APPEND line TO itab.ENDDO.CALL TRANSFORMATION ZTEST1 “ 调用TRANSFORMATION ”ZTEST1”完成转换 SOURCE root = itab RESULT XML x

18、ml_string. “ 此时的XML为长字符串 write: / XML转换完毕 . CALL FUNCTION SCMS_STRING_TO_FTEXT “ 将XML为长字符串转换为内表格式 方便下载 EXPORTING text = xml_string IMPORTING length = w_len TABLES ftext_tab = it_xml. write: / XML格式转换完毕 . CALL FUNCTION GUI_DOWNLOAD “ XML文件下载 EXPORTING filename = c:xmlcall.xml filetype = BIN IMPORTING filelength = w_len TABLES data_tab = it_xml. write: / XML文件下载完毕 .* 下面是将XML文件转换为内表格式*CALL TRANSFORMATION ZTEST1* SOURCE XML xml_string* RESULT root = result.* write: / 转换完毕 .8互联网2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1