输出EXCEL总结1.1.doc_第1页
输出EXCEL总结1.1.doc_第2页
输出EXCEL总结1.1.doc_第3页
输出EXCEL总结1.1.doc_第4页
输出EXCEL总结1.1.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

欢迎随时补充其他内容!*DevelopedBy:甄晓达*CreateDate:2009-2-1*本文档内容:一、 模板的下载(可参考最后面的实例程序)二、 关于EXCEL输出 1.基本步骤 2. 其他关于EXCEL表操作的补充说明三、 实例程序四、 关于CALLMETHODDOCUMENT-*的补充说明五、 关于VBA与ABAP代码的说明获得EXCEL表的方式:1.建立某格式文件 call function GUI_DOWNLOAD例:L_FULLPATH=C:DocumentsandSettingszxd桌面hello.xls.CALLFUNCTIONGUI_DOWNLOAD根据文件路径建立文件 EXPORTING FILENAME=L_FULLPATH FILETYPE=BIN TABLES DATA_TAB=L_MIME.注:路径选择也可以通过宏实现,用此种方法建立的EXCEL表只有一个SHEET!2.用SMW0存储的模板用 CALL FUNCTION SAP_OI_LOAD_MIME_DATA下载一、模板的下载(可参考最后面的实例程序)1用FUNCTION: SAP_OI_LOAD_MIME_DATA下载:INCLUDEOFFICEINTEGRATIONINCLUDE.DATA:FACTORYTYPEREFTOI_OI_DOCUMENT_FACTORY,RETCODETYPET_OI_RET_STRING,LINK_SERVERTYPEREFTOI_OI_LINK_SERVER.DATA:DOC_SIZETYPEI,DOC_FORMAT(100),DOC_TYPE(100)VALUEWord.Document.8,DOC_TABLELIKEW3MIMEOCCURS0,DOCUMENTTYPEREFTOI_OI_DOCUMENT_PROXY,IS_CLOSEDTYPEI.DATA L_FULLPATH TYPE STRING.INITIALIZATION.PERFORMINIT_FACTORY.下载模板时需要初始化的内容START-OF-SELECTION.L_FULLPATH = C:SHIYAN. 用FUNCTION选择文件地点写入L_FULLPATH也可PERFORMOPEN_DOCUSINGL_FULLPATH. L_FULLPATH为文件存储的路径,C或者字符串都行,子程序里会人为的修改成C类型,如果此处定义为C类型则子程序里不用再做变换FORMINIT_FACTORY.IFFACTORYISINITIAL.CALLMETHODC_OI_FACTORY_CREATOR=GET_DOCUMENT_FACTORYIMPORTINGFACTORY=FACTORYRETCODE=RETCODE.IFRETCODENEC_OI_ERRORS=RET_OK.EXIT.ENDIF.CALLMETHODFACTORY-START_FACTORYEXPORTINGR3_APPLICATION_NAME=SY-SYSIDIMPORTINGRETCODE=RETCODE.CALLMETHODC_OI_ERRORS=SHOW_MESSAGEEXPORTINGTYPE=E.CALLMETHODFACTORY-GET_LINK_SERVERIMPORTINGLINK_SERVER=LINK_SERVERRETCODE=RETCODE.CALLMETHODC_OI_ERRORS=SHOW_MESSAGEEXPORTINGTYPE=W.CALLMETHODLINK_SERVER-START_LINK_SERVERIMPORTINGRETCODE=RETCODE.CALLMETHODC_OI_ERRORS=SHOW_MESSAGEEXPORTINGTYPE=W.ELSE.CALLMETHODLINK_SERVER-STOP_LINK_SERVERIMPORTINGRETCODE=RETCODE.ENDIF.factoryISINITIAL.ENDFORM.INIT_FACTORYFORMOPEN_DOCUSINGL_FULLPATH.DATA:OBJECT_ID(20).CLEAROBJECT_ID.DATA:DIZHI(100)TYPEC.DIZHI=L_FULLPATH.OBJECT_ID=ZHRIS087A.CALLFUNCTIONSAP_OI_LOAD_MIME_DATAEXPORTINGOBJECT_ID=OBJECT_IDIMPORTINGDATA_SIZE=DOC_SIZEDOCUMENT_FORMAT=DOC_FORMATDOCUMENT_TYPE=DOC_TYPETABLESDATA_TABLE=DOC_TABLEEXCEPTIONSOBJECT_NOT_FOUND=1INTERNAL_ERROR=2OTHERS=3.IFSY-SUBRCNE0.MESSAGEIDSY-MSGIDTYPEENUMBERSY-MSGNOWITHSY-MSGV1SY-MSGV2SY-MSGV3SY-MSGV4.ENDIF.IFDOC_SIZENE0.CALLMETHODFACTORY-GET_DOCUMENT_PROXYEXPORTINGDOCUMENT_TYPE=DOC_TYPEIMPORTINGDOCUMENT_PROXY=DOCUMENTRETCODE=RETCODE.CALLMETHODC_OI_ERRORS=SHOW_MESSAGEEXPORTINGTYPE=E.打开下载的模板(注:不CALL METHOD不能正常打开CALLMETHODDOCUMENT-PLAY_DOCUMENT_FROM_TABLEEXPORTINGDOCUMENT_TABLE=DOC_TABLEDOCUMENT_SIZE=DOC_SIZENO_FLUSH=XIMPORTINGRETCODE=RETCODE.按DIZHI存储的路径保存下载的模板,不打开也能保存!CALLMETHODDOCUMENT-SAVE_COPY_ASEXPORTINGFILE_NAME=DIZHINO_FLUSH=XPROMPT_USER=IMPORTINGRETCODE=RETCODE.CALLMETHODC_OI_ERRORS=SHOW_MESSAGEEXPORTINGTYPE=E.PERFORMCLOSE_DOC.PERFORMCLOSE_FACTORY.ELSE.MESSAGENodocumentselectedTYPEE.ENDIF.ENDFORM.OPEN_DOCFORMCLOSE_DOC.IFNOTDOCUMENTISINITIAL.CALLMETHODDOCUMENT-IS_DESTROYEDIMPORTINGRET_VALUE=IS_CLOSED.IFIS_CLOSEDISINITIAL.CALLMETHODDOCUMENT-CLOSE_DOCUMENTEXPORTINGDO_SAVE=XIMPORTINGRETCODE=RETCODE.CALLMETHODC_OI_ERRORS=SHOW_MESSAGEEXPORTINGTYPE=E.ENDIF.CALLMETHODDOCUMENT-RELEASE_DOCUMENTEXPORTINGNO_FLUSH=IMPORTINGRETCODE=RETCODE.FREEDOCUMENT.ENDIF.ENDFORM.CLOSE_DOCFORMCLOSE_FACTORY.IFNOTLINK_SERVERISINITIAL.CALLMETHODLINK_SERVER-STOP_LINK_SERVERIMPORTINGRETCODE=RETCODE.FREELINK_SERVER.ENDIF.IFNOTFACTORYISINITIAL.CALLMETHODFACTORY-STOP_FACTORYIMPORTINGRETCODE=RETCODE.FREEFACTORY.ENDIF.ENDFORM.CLOSE_FACTORY二、关于EXCEL输出1.基本步骤:第一步:定义变量:TYPE-POOLSOLE2.DATA:V_EXCELTYPEOLE2_OBJECT, “excel 表V_SHEETTYPEOLE2_OBJECT, “EXCEL 表中的SHEETV_BOOKTYPEOLE2_OBJECT,V_CELLTYPEOLE2_OBJECT, “SHEET 中的单元格注:上面定义的4个一般为必然会用到的变量,下面的变量可以在用到时再做定义V_RANGETYPEOLE2_OBJECT, “选中区域V_COLUMNTYPEOLE2_OBJECT, “选中列V_BORDERSTYPEOLE2_OBJECT. “选中区域的边框DATA:V_SHEET_NUMBERTYPEI, PA_PATHTYPESTRING,L_ROWTYPEI,L_COLTYPEI,第二步:打开已存在的EXCEL模板CREATEOBJECTV_EXCELExcel.Application. 创建Excel对象CALLMETHODOFV_EXCELWorkbooks=V_BOOK.excelcreatewbookCALLMETHODOFV_BOOKOpen=V_BOOKEXPORTING#1=PA_PATH. 文件存储的路径 ,字符串,C类型应该也可以,没有试验注:也可以新建一个EXCEL:callmethodofv_booksAdd=v_book.IFSY-SUBRC0.MESSAGEOpenfilefailed!TYPEE.STOP.ENDIF.SETPROPERTYOFV_EXCELVisible=1.将已经打开的EXCEL表设置可见第三步:打开EXCEL表其中的一个SHEET并修改SHEET名V_SHEET_NUMBER=1. 打开EXCEL表第一个SHEETCALLMETHODOFV_BOOKSheets=V_SHEET打开EXCEL的SHEETEXPORTING#1=PA_SHEET_NUMBER.*CALLMETHODOFV_EXCELWORKSHEETS=V_SHEET效果和上面SHEETS一样,输出数据同样可以是SHEET名也可以是数字*EXPORTING*#1=Sheet3.CALLMETHODOFV_SHEETACTIVATE. 显示当前选择的SHEET,如不写此句显示SHEET为第一个SHEET,不过下面的其他操作仍然只是对被选择的SHEET有效SETPROPERTYOFV_SHEETNAME=SHIYAN.此语句可以修改选择的SHEET名*想新建SHEET可以调用下面的语句,注意下面第一条语句不能指定SHEET,否则不能添加成功(意即目前只能添加SHEET到最前面)*CALLMETHODOFV_BOOKWORKSHEETS=TMPSHEET.*CALLMETHODOFTMPSHEETADD.第四步:往EXCEL表里填写内容CALLMETHODOFV_SHEETCells=V_CELLEXPORTING#1=L_ROW 写入的行号 #2=L_COL. 写入的列号SETPROPERTYOFV_CELLValue=SY-DATUM. SY-DATUM为填写的内容第五步:保存并释放SAP对EXCEL的链接SETPROPERTYOFV_EXCELDisplayAlerts=0. 不显示警告提示,如不加此句,保存文件时会弹出“当前位置以有名为*的文件,是否”的询问对话框,加上此句则直接保存 CALLMETHODOFV_BOOKSAVEAS 保存EXCEL文本文件(如果需要保存修改的SHEET命,得用V_EXCELEXPORTING#1=PA_FULLPATH.CALLMETHODOFV_BOOKExit=V_BOOK.此句作用尚不明确!不写没发现影响FREEOBJECTV_EXCEL.FREE OBJECTV_SHELL.2.其他关于EXCEL表操作的补充说明:2.1调用EXCEL表宏CALLMETHODOFV_EXCELWORKSHEETS=V_SHEETEXPORTING#1=SHEET1.CALLMETHODOFH_SHEETACTIVATE.CALLMETHODOFEXCELRUNEXPORTING#1=ZMACRO1.2.2输入列号求得列字母表示(自编宏,HR项目组用,其他如没有自己写吧)CALLFUNCTIONZHRIS_GET_EXCEL_COLUMNEXPORTINGP_COLUMN=L_INTIMPORTINGF_COLUMN=COL.例:输入L_INT = 5 输出 COL = e.2.3调整列宽度与行高及插入行DATAV_COLUMNTYPEOLE2_OBJECT.DATAV_ROWSTYPEOLE2_OBJECT.*-调整列宽度CALLMETHODOFV_EXCELColumns=V_COLUMN 选定列EXPORTING#1=1:5.修改1-5列SETPROPERTYOFV_COLUMNColumnWidth=30.要调整的宽度*-调整行宽度CALLMETHODOFV_EXCELROWS=V_ROWSEXPORTING#1=1.行号SETPROPERTYOFV_ROWSrowheight=50. CALLMETHODOFV_ROWSInsert. 插入一行注:行高会影响到所有行,设置单独的行高方法待查!2.4 获得当前EXCEL表的SHEET数量DATASHEETCOUNTTYPEI.CALLMETHODOFV_EXCELWORKSHEETS=V_SHEET.得到活动的worksheetGETPROPERTYOFV_SHEETCOUNT=SHEETCOUNT.得到sheet数量WRITESHEETCOUNT.2.5 获得当前打开的SHEET名称(需执行打开SHEET操作后才能执行)DATASHEETNAMETYPESTRING.GETPROPERTYOFV_SHEETNAME=SHEETNAME.此语句用来获得当前打开的SHEET名称2.6 复制SHEETDATAMODELSHEETTYPEOLE2_OBJECT.DATATMPSHEETTYPEOLE2_OBJECT.CALLMETHODOFV_EXCELWORKSHEETS=MODELSHEET要复制的SHEET EXPORTING#1=Sheet2.CALLMETHODOFV_EXCELWORKSHEETS=TMPSHEET EXPORTING#1=Sheet3.CALLMETHODOFMODELSHEETCOPY 复制MODELSHEET 放到TMPSHEET前EXPORTING#1=TMPSHEET. 如不加此项则建立一个新表存储SHEET2.7 隐藏格线DATAACTIVEWINDOWTYPEOLE2_OBJECT.CALLMETHODOFV_EXCELACTIVEWINDOW=ACTIVEWINDOW.得到活动窗口对象SETPROPERTYOFACTIVEWINDOWDISPLAYGRIDLINES=0.隐藏格线(虚线)注:不要用V_SHEET,可能会导致输出数据不正常,原因不明,新定义一个比较保险。2.8 选中EXCEL表某区域并做操作CALLMETHODOFV_SHEETrange=V_RANGE 设定操作范围EXPORTING#1=a3#2=B5.CALLMETHODOFV_RANGESelectNOFLUSH.选择设定区域 CALLMETHODOFV_RANGEClearContents.清空内容 SETPROPERTYOFV_RANGEMergeCells=1.合并单元格SETPROPERTYOFV_RANGEHorizontalAlignment=2.设定对齐方式(1:无对齐 2:左对齐 3:居中 4:右对齐)SETPROPERTYOFV_RANGEShrinkToFit=0.取消自动缩小字体GETPROPERTYOFV_RANGEborders=V_BORDERSNOFLUSH.加边框SETPROPERTYOFV_BORDERSlinestyle=1NOFLUSH.框线格式SETPROPERTYOFV_RANGEWrapText=1.单元格内容自动换行2.9 移动SHEETDATAV_MOVETYPEOLE2_OBJECT.CALLMETHODOFV_EXCELWORKSHEETS=V_SHEET选择要移动的SHEETEXPORTING#1=Sheet1.CALLMETHODOFV_EXCELWORKSHEETS=V_MOVE选择移动到的位置EXPORTING#1=Sheet3.CALLMETHODOFV_SHEETMove移动V_SHEET到V_MOVE左边EXPORTING#1=V_MOVE.三、实例程序用下载模板的实例程序:EXCEL各功能操作试验程序:四、关于CALLMETHODDOCUMENT的补充说明(其他用法请见二下载模板的说明)1.用下面这个METHOD可以直接打开下载的模板CALLMETHODDOCUMENT-OPEN_DOCUMENT_FROM_TABLEEXPORTINGDOCUMENT_SIZE=DOC_SIZEDOCUMENT_TABLE=DOC_TABLE2.用下面这个METHOD可以调用下载模板的动态宏 MACRO=Macro2. 宏名称CALLMETHODDOCUMENT-EXECUTE_MACROEXPORTINGMACRO_STRING=macro 调用宏的名称*NO_FLUSH= PARAM1=param1 各参数值(用到几个打开几个)*PARAM10=*PARAM11=*PARAM12=PARAM2=param2PARAM3=param4PARAM4=param3*PARAM5=*PARAM6=*PARAM7=*PARAM8=*PARAM9=PARAM_COUNT=4 要传进的参数数量*SCRIPT_NAME=*IMPORTING*ERROR=error*RETCODE=*CHANGING*ERROR_STRING=*RETVALUE=.注1:EXCEL和WORD里写宏最简单的方法便是录制,录宏的方法如下:执行菜单命令“工具宏录制新宏”开始录制,按照步骤把想实现的功能操作一遍,完毕后点击最左边的停止按钮,再根据是否需要传递参数等要求修改一下录制好的宏即可。注2:一般输出数据到WORD的话可能会用到邮件合并功能,邮件合并功能的设置方法如下:(可以参考程序ZHRIS_PAFM024模板的用法)将excel中的人员信息表作为数据源。在word中建立一个主文档,设计排版出一个空白的履历表,不变的那部分内容先填好,如“姓名”、“年龄”、“学历”等。执行菜单命令“工具信函与邮件显示邮件合并工具栏”调出邮件合并工具栏。点击“打开数据源”按钮(左起第2个图标),在打开的对话框中找到并打开人员信息excel表,选择存有人员信息的那个工作表即可。确定后退回word主界面,点击履历表“姓名”后面的空白单元格,然后点击“插入域”按钮(左起第6个图标),打开插入合并域对话框,选择“姓名”项,单击“插入”,最后单击“关闭”退出。这时,会发现履历表“姓名”后面的单元格中出现“姓名”字样,这就是合并域的所谓占位符了。依

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论