为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

SAP系统中-XML-文件的两种转换方法Word版

2021-01-07 2页 doc 241KB 45阅读

用户头像 机构认证

精品文库

海霄科技有卓越的服务品质,为满足不同群体的用户需求,提供制作PPT材料、演讲幻灯片、图文设计制作等PPT及文档优质服务。

举报
SAP系统中-XML-文件的两种转换方法Word版XML文件的两种转换方法1,使用ABAP语言在程序中组织生成XML文件此方法比较繁琐,相当于一行一行的凑出XML文件里面的所有语句.优点是在各个版本的SAP系统中都可以正常工作,不受系统版本限制.如上面这个XML文件的实现方法如下:*&---------------------------------------------------------------------**&Report Z_BARRY_TEST_XML*&*&-------------------------------------------------...
SAP系统中-XML-文件的两种转换方法Word版
XML文件的两种转换方法1,使用ABAP语言在程序中组织生成XML文件此方法比较繁琐,相当于一行一行的凑出XML文件里面的所有语句.优点是在各个版本的SAP系统中都可以正常工作,不受系统版本限制.如上面这个XML文件的实现方法如下:*&---------------------------------------------------------------------**&Report Z_BARRY_TEST_XML*&*&---------------------------------------------------------------------**&ECC通用*&---------------------------------------------------------------------*REPORT z_barry_test_xml.DATA:BEGINOFitab_matnrOCCURS0,“XML文件中的节点Product       matnrLIKEmara-matnr,       maktxLIKEmakt-maktx,     ENDOFitab_matnr.DATA:BEGINOFitab_classOCCURS0,“XML文件中的节点Categorie       classLIKEm_wwgha-class,"部门       kschlLIKEm_wwgha-kschl,"DESC     ENDOFitab_class.DATA:l_ixmlTYPEREFTOif_ixml,“XML相关对象定义     l_encodingTYPEREFTOif_ixml_encoding,“XMLCodepage对象     l_commentTYPEREFTOif_ixml_comment,“XML注释对象     l_docTYPEREFTOif_ixml_document,“XML文件对象     l_rootTYPEREFTOif_ixml_element,“XML元素对象     l_itemTYPEREFTOif_ixml_element,     l_elementTYPEREFTOif_ixml_element,     l_attributeTYPEREFTOif_ixml_attribute,“XML属性     l_ostreamTYPEREFTOif_ixml_ostream,     l_factory TYPEREFTOif_ixml_stream_factory.TYPES:BEGINOFxml_line,       data(256)TYPEx,     ENDOFxml_line.DATA:xml_tableTYPETABLEOFxml_line,     xml_size TYPEi.DATA:l_rvalTYPEi.START-OF-SELECTION. PERFORMgetdata. PERFORMcreate_xml. PERFORMdownload.*---------------------------------------------------------------------**      FORMgetdata                                                 **---------------------------------------------------------------------*FORMgetdata. SELECTmatnrmaktxFROMmakt INTOTABLEitab_matnr UPTO4ROWS WHEREspras='1'. SELECTclasskschlFROMm_wwgha INTOTABLEitab_class UPTO4ROWS WHEREsprasIN('1','E'). DELETEitab_classWHEREclass='0'. APPENDitab_class."演示空数据ENDFORM.*---------------------------------------------------------------------**      FORMcreate_xml                                              **---------------------------------------------------------------------*FORMcreate_xml. CLASScl_ixmlDEFINITIONLOAD. l_ixml=cl_ixml=>create(). CALLMETHODl_ixml->create_encoding“创建Codepage对象   EXPORTING     byte_order   =0     character_set='gb2312'   RECEIVING     rval         =l_encoding. CALLMETHODl_ixml->create_document“创建XML文件对象   RECEIVING     rval  =l_doc. CALLMETHODl_doc->set_encoding“为XML文件对象定义Codepage   EXPORTING     encoding=l_encoding . CALLMETHODl_doc->create_simple_element“创建XML元素对象    EXPORTING      name     ='Root'      parent   =l_doc    RECEIVING      rval     =l_root. CALLMETHODl_root->set_attribute“定义XML元素对象的数据   EXPORTING     name     ='ATTRIBUTE'     value    ='sample'   RECEIVING     rval     =l_rval. CALLMETHOD l_doc->create_comment“添加一行注释   EXPORTING     comment='''上面ATTRIBUTE为属性示例'''   RECEIVING     rval   =l_comment . CALLMETHODl_root->append_child“添加子节点(注释行)   EXPORTING     new_child=l_comment   RECEIVING     rval     =l_rval. PERFORMfill_itab2xmlTABLES itab_matnr“添加内记录                       USING  'Products'                               'Product'                               l_root. PERFORMfill_itab2xmlTABLES itab_class“添加内表记录                       USING  'Categories'                               'Categorie'                               l_root. CALLMETHODl_ixml->create_stream_factory   RECEIVING     rval  =l_factory . CALLMETHODl_factory->create_ostream_itable   EXPORTING     table =xml_table   RECEIVING     rval  =l_ostream . CALLMETHODl_doc->render   EXPORTING     ostream  =  l_ostream     recursive='X' . CALLMETHODl_ostream->get_num_written_raw   RECEIVING     rval  =xml_size.ENDFORM.*---------------------------------------------------------------------**      FORMdownload                                                **---------------------------------------------------------------------*FORMdownload. CALLFUNCTION'GUI_DOWNLOAD'      EXPORTING           bin_filesize=xml_size           filename    ='C:\ECC6.XML'           filetype    ='BIN'      TABLES           data_tab    =xml_table.ENDFORM.*---------------------------------------------------------------------**      FORMfill_itab                                               **---------------------------------------------------------------------*FORMfill_itab2xmlTABLESintab                  USINGnode1nameTYPEstring                        node2nameTYPEstring                        l_parentTYPEREFTOif_ixml_element. DATA:BEGINOFheadtabOCCURS0,         length   TYPEi,         decimals TYPEi,         type_kindTYPEc,         name(30) TYPEc,       ENDOFheadtab. DATAdescr_refTYPEREFTOcl_abap_structdescr. FIELD-SYMBOLS:TYPEabap_compdescr,                ,                TYPEANY. DATA:nTYPEi,       strTYPEstring,       itemnameTYPEstring,       text1TYPEc,       l_nodeTYPEREFTOif_ixml_element,       l_itemTYPEREFTOif_ixml_element. descr_ref?=cl_abap_typedescr=>describe_by_data(intab). LOOPATdescr_ref->componentsASSIGNING.   MOVE-CORRESPONDINGTOheadtab.   APPENDheadtab. ENDLOOP. CALLMETHODl_doc->create_simple_element     EXPORTING       name     =node1name       parent   =l_parent     RECEIVING       rval     =l_node . DESCRIBETABLEheadtabLINESn. LOOPATintabASSIGNING.   CALLMETHODl_doc->create_simple_element     EXPORTING       name     =node2name       parent   =l_node     RECEIVING       rval     =l_item .   DOnTIMES.     ASSIGNCOMPONENTsy-indexOFSTRUCTURETO.     str=.     READTABLEheadtabINDEXsy-index.     IFheadtab-type_kind='I'ORheadtab-type_kind='P'                                ORheadtab-type_kind='F'.       SEARCHstrFOR'-'.       IFsy-subrc=0ANDsy-fdpos<>0.         SPLITstrAT'-'INTOstrtext1.         CONDENSEstr.         CONCATENATE'-'strINTOstr.       ELSE.         CONDENSEstr.       ENDIF.     ELSE.*       SHIFTstrLEFTDELETINGLEADING'0'.     ENDIF.     itemname=headtab-name.     CALLMETHODl_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.粘贴如下代码并激活.SE38新建下面的程序转换XML文件REPORTZZITAB_XML.DATAxml_stringTYPEstring.DATA:BEGINOFline,keyTYPEi,valuesTYPETABLEOFi,ENDOFline.DATAnumTYPEi.DATAitabLIKETABLEOFline.DATAresultLIKEitab.DATA:BEGINOFit_xmlOCCURS0,line(100)TYPEc,ENDOFit_xml.DATA:w_lenTYPEi.DO3TIMES.CLEARline.line-key=sy-index+1.num=line-key**2.APPENDnumTOline-values.num=line-key**3.APPENDnumTOline-values.num=line-key**4.APPENDnumTOline-values.APPENDlineTOitab.ENDDO.CALLTRANSFORMATIONZTEST1“调用TRANSFORMATION”ZTEST1”完成转换SOURCEroot=itabRESULTXMLxml_string.“此时的XML为长字符串write:/'XML转换完毕'.CALLFUNCTION'SCMS_STRING_TO_FTEXT'“将XML为长字符串转换为内表格式方便下载EXPORTINGtext=xml_stringIMPORTINGlength=w_lenTABLESftext_tab=it_xml.write:/'XML格式转换完毕'.CALLFUNCTION'GUI_DOWNLOAD'“XML文件下载EXPORTINGfilename='c:\xmlcall.xml'filetype='BIN'IMPORTINGfilelength=w_lenTABLESdata_tab=it_xml.write:/'XML文件下载完毕'.*下面是将XML文件转换为内表格式*CALLTRANSFORMATIONZTEST1*SOURCEXMLxml_string*RESULTroot=result.**write:/'转换完毕'.(注:可编辑下载,若有不当之处,请指正,谢谢!)
/
本文档为【SAP系统中-XML-文件的两种转换方法Word版】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索