《SAP系统中 XML 文件的两种转换方法【互联网+】》由会员分享,可在线阅读,更多相关《SAP系统中 XML 文件的两种转换方法【互联网+】(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 .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 U