版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、创建时间:2009-9-2 10:34:00Createdby任力ECC数据导出EXCEL (XML数据)开发文档目录ECC数据导出EXCEL (XML数据)开发文档 11. 说明:22. 功能需求:23. 业务流程:24. 效果演示25. 实现步骤:35.1 XM模板的样式定义 35.1.1 设计Excel样式模板。 35.1.2 将Excel文件另存为Xml模板,文件格式保存为 xml表格数据。 45.1.3 为Xml模板头、尾、目录SHEET页及需要循环的行项目部分添加 XSLT代码。45.2 上传模板55.2.1 Tcode:STRANS55.3 程序设计65.3.1 程序说明65.3
2、.2 处理流程65.3.3 XML数据定义65.3.4 内表的定义65.3.5 选择屏幕定义 65.3.6 配置表定义75.3.7 宏的定义75.3.8 内表数据的获取85.3.9 FRM_GENERAL_XML子程序85.3.10 FRM_CREATE_DOC子程序 115.3.11 FRM_BUILD_XML_FROM_TABLE子程序115.3.12 FRM_BUILD_DIR 子程序126. 源程序14*1. 说明:经过ECC数据导出EXCEL(XML技术实现)技术文档.pdf一文中对EXCEL导出的基本讲解,相信大家已掌握了 在ABAP中生成XML格式Excel的方法;下面引入一个实
3、际的业务需求,进而对 xml方式的Excel导出开发进行一个 更为详细的讲解。2. 功能需求:完成一个报表程序实现 ECC财务数据的导出,数据包括员工表 (用户代码,用户名称,客户代码);岗位表(岗 位代码,岗位名称,职务名称,是否领导岗位);组织机构表 (组织机构代码,组织类型,组织名称,所属单位标识,公司代码);成本中心表 (成本中心编码,描述);基金中心表 (基金中心编码,描述);自定义预算表;单据编码表;基金中心与成本中心关系表;岗位与员工关系表;组织机构与成本中心关系表。导出格式为Excel,有目录页,可通过超链接指向某一个SHEET查看表数据;因数据量庞大,开发人员应保证数据导出的
4、效率。3. 业务流程:内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第2页共14页创建时间:2009-9-2 10:34:00Createdby任力内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第#页共14页创建时间:2009-9-2 10:34:00Createdby任力选择要导出数据表选择文件路径导出丄数据成功导出在Excel中显示每张表的导出状态及 记录数信息文件自动打开4. 效果演示见附件5. 实现步骤:5.1 XM模板的样式定义5.1.1 设计Excel样式模板。1 BMicrosoft Excel ExcelTeKp,xls当
5、文件迥编辑视图迪插入格式 工具(I)数据)窗口吧帮助址)AMbe FEF® C29”AABC12ECC主数据导出数提表状恋1记录数员工表咸本中心表基金中心表自定义预算表单据编码表基金中心与成中心关系表10X12131415崗位表组织机构表岗位与员工关丢表组织机构与成本中心关系表16M卜|且晁&员工表/成本中石表/S金中心表&自定义预算项目表/单据就绪图1E3Kicrosoft Excel - ExcelTenp. zls到文件葩编辑堪)观图边插入格式辺工具数据宙口帮助皿也D31FGHIKL1自定文预算顶目表2财务处理基金桑诺项目工作分解结构元素(IBS元 和上级笊算项
6、 目贷方窜 目345e,789w *卜卜逼目录/员工耒/麻本中心表/皐金中心表1自定义预算项目耒/单据就绪图2内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第3页共14页创建时间:2009-9-2 10:34:00Createdby任力图1、图2为根据业务需求设计出的ExceI模板,包括目录 SHEET页和各个表数据 SHEET页。5.1.2 将Excel文件另存为Xml模板,文件格式保存为xml表格数据。内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第#页共14页创建时间:2009-9-2 10:34:00Createdby任力内部文件
7、严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第#页共14页创建时间:2009-9-2 10:34:00Createdby任力EditPlus Czx*lTeBpletECCLIHE_ xslJ 丈件逻编辑 观图世1搜素 文档)_项目囚 工具 浏览器 窗口 帮肋QPFFkm© 區昂7回 站奄皂x幻。區堆 才屬|俱阖酉1圉圍圜国 彳 3 B / U F筋nbd引H <!» ©由言言阳芳® J 4已弓問口 |卜一壬 壬 一二一斗 壬一壬 齐一 4一丁二-¥-一-7-二二鼻二二47=-石-壬-(- <?xml vers
8、ion-"!,0" encoding="UTF-3"?>2 <?mso*applicatiori progid-"Excel,Sheet"?>3 < xsl:stylesheet version' 1.0" xmlns!X5l"htt:p:/www ./1935/XSL/Transforiri" xryilnsifo-' http /www xmlns:ss="jrn: schemasmicrosoft-cam: office spreadsh
9、eet" xmlns: x=Hurn: sche mas-mi cros oft-com: office ;<4 microsoft-com: office: spreadsheet" ><xslitemplate mdtch='7">'Cxskprocessing-instruction name-"mso-application">progid="ExceI.Sheet"</xsl:processing-!nwtructii <Workbaok xmlns= &q
10、uot;urn :schemas'microsoft-com: office spreadsheet'xrn Ins :o-"urn: schemas*microsoft-conn: office :offi ce"9 xrnlns:x= "urn: schema s-microsoft-com: office: excel-luxrrilns:5s=1'urn:schemas-micro soft-com: office: spreadsheet"11 xrrilns:htrril="http:/www .
11、/TR/REC-htrril40">12 < Do cum entPropertie s xmlns="urn:schemas-rriicrosoft-com: office: office" >< Created >1996-12-17T01:32:42Z</C rented > <LajtSaved>2009 08-2盯 13:45:42空仏吐曲詔aVersion >11.99 $9 «/Version >16 </Oocume ntP roperties >17 <
12、OfficeDocumentSttingw x 171115="rn:schemas-microsoft-com:office;officers-取 vWorkbook .>.</Workbook> 间的代码。XSLT代码。5.1.3 为Xml模板头、尾、目录 SHEET页及需要循环的行项目部分添加<?xml versio n="1.0" en cod in g="UTF-8"?><?mso-applicati on progid="Excel.Sheet"?><xsl:sty
13、lesheetversion=" 1.0' xmlns:xsl二"/1999/XSL/Transform " xmlns:fo="/1999/XSL/Format"xml ns:ss="urn:schemas-microsoft-com:office:spreadsheetxml ns:x="urn:schemas-microsoft-com:office:exce" xmlns=" urn: schemas- microsoft-c
14、om:office:spreadshee"><xsl:template match="/"> <xsl:processi ng-i nstructio nn ame="mso-application">progid="Excel.Sheet"v/xsl:processi ng-i nstruction> v/xsl:template>v/xsl:styleshee>注意:vTable ss:Expa ndedColu mn Cour="7" ss:Expa
15、ndedRowCour="3" x:FullColum ns="1" x:FullRows="1" ss:DefaultColum nWidth="54" ss:DefaultRowHeight="14.25>中的节点中的属性ss:ExpandedRowCoun="3",是指该Table中的行数有多少,因系统物料数据个数未知,在这里不需要指 定这个属性,删掉即可。循环部分代码:<xsl:for-each selec="ROOT/NODE1/ITEM "&
16、gt; <!-定义程序中用到的 XMLDocument -> <Row><Cell ss:StyleID="s25">< Data ss:Type="Stri ng"><xsl:value-of select="current()/field1"></xsl:value-of></Data></Cell> <!为每一列绑定一个 field字段-></xsl:for-each>目录SHEE砒码:<xsl:for-
17、each selec="ROOT/LINE1/ITEM "><Row><Cell ss:StyleID="s41" ss:HRef="# 员工表!A1 "><Data ss:Type=" Stri ng"> 员工表 </Data></Cell> <Cell ss:StylelD="s28">< Data ss:Type="Stri ng"><xsl:value-ofselect=&
18、quot;curre nt()/field1 "></xsl:value-of></ Data></Cell><Cell ss:StylelD="s27">< Data ss:Type="Stri ng"><xsl:value-ofselect="curre nt()/field2"></xsl:value-of></Data></Cell></Row></xsl:for-each>5.2
19、 上传模板5.2.1Tcode: STRANSTransformation Edit Goto Utilities (M) Environment 系统(” 帮助(生)内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第6页共14页图略激活XML模板图略5.3 程序设计5.3.1程序说明完成ECC系统财务数据的导出,数据导出格式为Excel。532处理流程一III-I OM I nu内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第9页共14页内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第#页共14页定义配置表:t
20、_confOCCURSO,DAIA: BEGIN OFit_n ameTYPE type name."内表名it_colsTYPE i ,"列数el_n ameTYPE stri ng,"node 名el_refTYPEREF TO if_ixml_element,"node对象引用el_dirTYPE stri ng,"li ne 名status(25),"导出状态it_co untTYPE i ,"记录数END OF it_conf.该内表的定义作用于整个 XML的动态生成,十分重要;在用户选择需要导出的数据表,点击“执
21、行”后,程 序会自动记录用户选择导出的数据表,通过一个宏将内表名、内表列数、内表对应XML模板中的NODE名、NODE对象引用这些数据存入我们的配置表。在XML数据生成的子Form中会先后三次用到配置表中的数据,在源码中已用1、2、3标明。537宏的定义定义宏:Define m relation.it conf-it name = &1.con cate nateit con f-it n ame''into l tab name.assig n (l_tab name)to <fs tab>.it conf-it cols = &2.it conf
22、-el name = &3.it conf-el ref = &4.*用NODE1的长度-NODE的长度l_le n =strle n ( it_c onf-el_n ame )-4.*得到NODE后面的数字组合LINE字段con cate nate c node dir n ame it conf-eln ame+4(l_le n)into it conf-el dir.it_con f-status = c_export.it_conf-i t_co unt =lines ( <fs_tab> ).append it_conf.clear : it_c on f
23、,l_tab name.这个宏将完成配置表的数据填充;会根据传入的NODE名拼写出XML模板目录SHEET页对应的LINE名,计算出内表行数,写入状态描述数据。创建时间:2009-9-2 10:34:005.3.8内表数据的获取取数逻辑省略Createdby任力内表数据获取后,将调用宏将内表名、内表列数、内表对应XML模板中的NODE名、NODE对象引用这些数据传入配置表;-调用宏:m_relation表名列数NODE1' l_node1.至此内表及相关数据信息已存入配置表中。接下来将进行XML数据的动态生成,将生成XString类型的数据转换成Excel文件,保存到用户所选路径下;5
24、.3.9FRM GENERAL XML子程序该子程序的输入参数有两个,分别是it_conf配置表和p_file 文件路径;内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第10页共14页创建时间:2009-9-2 10:34:00Createdby任力_代码片段:*调用XMLDOMJ建子FormPERFORM frm_create_doc TABLES it_con fig.*读取3配置表中数据,在循环中动态创建 XMLDocument子节点LOOP AT it_conf.CONCATENATEt_co nfig-it_name'' INTO it_c
25、on fig-it_name.*将it_conf中的内表分配给<fs1>ASSIGN (it_co nfig-it_ name)TO <fs1>.DATAf_count(2) TYPE n VALUE '01'.*循环中将it_conf中一个内表的数据逐字段传给it_xmlLOOP AT <fs1> ASSIGNING <fs2>."将内表分配给 <fs2>DQ*从索引1开始从<fs2>中取字段分配给<fs3>ASSIGN COMPONEN'sy- index OF STRUC
26、TURE<fs2> TO <fs3>.IF sy-subrc =0.CONCATENATE'FIELD' f_cou nt INTO l_field. CONDENSE_field.*从Filed1 开始取it_xml中的字段ASSIGN COMPONENT_fieldOF STRUCTUREit_xml TO <fs_xml>.<fs_xml> = <fs3>.ADD 1 TO f_cou nt.ELSE.EXIT .ENDIF.ENDDOAPPENDit_xml.CLEAR: <fs2>.MOVE 1
27、TO f_cou nt.ENDLOOF?*动态创建内表的ITEM、FIELD节点PERFORM frm_build_xml_from_tableTABLES it_xmlUSING it_con fig-it_colsit_c on fig-el_ref.CLEAR: it_xml,it_xml.ENDLOOP内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第11页共14页创建时间:2009-9-2 10:34:00Createdby任力内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第12页共14页内部文件严格控制ECC数据导出EXCEL(
28、XML技术实现)开发文档.pdf第#页共14页代码片段:型字符串将XMLDOM对象转换成xString型字符串*l_pstreamfactory = l_ixml->create_stream_factory().I_ostream = l_pstreamfactory->create_ostream_xstri ng( w_result ).X ).CALL METHOD_doc->render( ostream = l_ostream recursive =TRY .CALL TRANSFORMATION (l_xml_templet)SOURCE XML w_resul
29、tRESULT XML w xml result.INTO oref.CATCHcx transformation errorw_text = oref->get_text(). MESSAGE5000(zdev) WITH w_text.ENDTRYCALL FUNCTION 'SCMS_STRING_TO_FTEXT'"把 STIRNG 类型数据的转成内表 EXPORTINGtext = w_xml_resultTABLESftext_tab = xml_table.CALL FUNCTION 'WS_DOWNLOAD'"下载生成的
30、 EXCELEXPORTINGfile name = p_p_file namefiletype ='BIN'TABLESdata_tab = xml_table.内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第#页共14页代码片段:内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第13页共14页"调用cl_ixml 类的create 静态方法"生成DOCUMENT寸象'ROOT' pare nt = l_doc ).l_ixml = cl_ixml=>create().I_doc
31、= l_ixml->create_docume nt().*创建ROOT根节点,这里是document节点 l_root = l_doc->create_simple_eleme nt( n ame =IF it_configIS INITIAL .MESSAGE'请选择要导出的表'TYPE 'S'.STOP.ENDIF .*调用目录Sheet页子节点创建子FormPERFORM frm_build_dir TABLES it_con fig.CLEAR f_in dex.*循环读取2配置表中数据LOOP AT it_config.f_in dex
32、= sy-tabix.READ TABLE it_config INDEX f_index.it_c on fig-el_ref = l_doc->create_simple_eleme nt( n ame = it_c on fig-el_ name p arent = l_root )."创建 NODE节点*将创建的NODE节点对象实例更新至配置表MODIFY it_config TRANSPORTINGel_ref WHEREt_ name = it_con fig-it_ name. CLEAR it_con fig.ENDLOOP5.3.11 FRM_BUILD_XM
33、L_FROM_TABLE 子程序_代码片段:LOOP AT pt_tab e ASSIGNING <fwa>. "将 FWA指向 PT_TABLEItem = l_doc->create_simple_eleme nt( n ame = c_item _n ame pare nt = p_pare nt).DOp_fieldc ntTIMES."根据传入列数决定循环次数,即 Excel中一行的单元格个数ASSIGN COMPONENy- index OF STRUCTURE<fwa> TO <f>.I_tmp_value = sy-
34、index .CONCATENATE'field' l_tmp_value INTO l_tmp_value.l_value = <f>.CONDENSE_value.l_col = l_doc->create_simple_eleme nt( n ame = l_tmp_value pare nt = l_itemvalue = l_value )."创建FIELD节点,其父节点是ITEMENDDOENDLOOP创建时间:2009-9-2 10:34:00Createdby任力5312FRM_BUILD_DIR 子程序代码片段:将1配置表数据传入与
35、之结构相似的LOOP AT it_config.MOVE it_con fig-it_nameit_c on fig-el_dirit_c on fig-statusit_c on fig-it_co unt APPENDit_co nf_dir.ENDLOOPit conf dirTO it_c on f_dir-it_ name, TO it_con f_dir-el_ name, TO it_con f_dir-status, TO it conf dir-it count.DATA: count (2) TYPE n,line TYPE stri ng.*循环创建10个line 节点D
36、O 10 TIMES.WRITE sy- index TO count .CONCATENATE node_dir_ nameCONDENSEli ne .count INTO line ."从LINE1开始拼写LINE节点名READ TABLE it_conf_dirWITH KEY el_name = line .IF sy-subrc <>0."如果在配置表里存在该节点名,数据读取自配置表l_li ne = l_doc->create_simple_eleme nt( n ame =li nepare nt = l_root ).l_item = l
37、_doc->create_simple_eleme nt( n ame = c_item_ name pare nt = line).lueluel_col = l_doc->create_simple_eleme nt( n ame = =c_export_ no ).l_col = l_doc->create_simple_eleme nt( n ame = = '0').ELSE.'field1''field2'pare nt = Itempare nt = Itemvavait_c on f_dir-el_ref = l
38、_doc->create_simple_eleme nt( n ame = it_con f_dir-el_ n ame pare nt = l_root ).l_item = l_doc->create_simple_eleme nt( n ame = c_item_ name pare nt = it_c on f_dir-el_ref ).l value = it conf dir-status.CONDENSE value.l_col = l_doc->create_simple_eleme nt( n ame = lue = l_value ).l_value =
39、it_c on f_dir-it_co unt.CONDENSE value.'field1'pare nt = Itemval_col = l_doc->create_simple_eleme nt( n ame = lue = l_value ).ENDIF.'field2'pare nt = Itemva内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第14页共14页CLEAR it_con f_dir.ENDDO内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第15页共14页创建时间:2009-9-2 10:34:00Createdby任力内部文件严格控制ECC数据导出EXCEL(XML技术实现)开发文档.pdf第16页共1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美容院二零二五年度美容仪器租赁及维修服务合同2篇
- 2025年新型铜箔生产线自动化升级改造合同范本3篇
- 二零二五年度城市居民住房按揭贷款合同范本8篇
- 二零二五年度空运货物出口运输及保险服务合同2篇
- 二零二五年度文化产业创新发展贷款合同模板4篇
- 2025年度智慧城市基础设施搭建委托协议4篇
- 2025年度个人二手车买卖合同范本标准版4篇
- 颤音音响发生器课程设计
- 2024碎石加工厂产品质量追溯体系建立合同范本3篇
- 单元四吊顶与隔墙工程
- 第22单元(二次函数)-单元测试卷(2)-2024-2025学年数学人教版九年级上册(含答案解析)
- 蓝色3D风工作总结汇报模板
- 安全常识课件
- 河北省石家庄市2023-2024学年高一上学期期末联考化学试题(含答案)
- 2024年江苏省导游服务技能大赛理论考试题库(含答案)
- 2024年中考英语阅读理解表格型解题技巧讲解(含练习题及答案)
- 新版中国食物成分表
- 浙江省温州市温州中学2025届数学高二上期末综合测试试题含解析
- 2024年山东省青岛市中考生物试题(含答案)
- 保安公司市场拓展方案-保安拓展工作方案
- GB/T 15843.2-2024网络安全技术实体鉴别第2部分:采用鉴别式加密的机制
评论
0/150
提交评论