SAP通过程序创建Excel模板
2016-06-14 10:44
507 查看
使用SAP系统时,时常需要批量导入数据,用户需要根据Excel模板对应填入批量数据以导入系统中,模板的创建有两种方法:
1.从服务器已经上传的Excel模板中下载到本地,然后贴入数据。
2.通过程序代码创建Excel模板,然后保存到本地。
第一种方法我想许多大神早已经在论坛或博客中有详细的介绍,这里我们介绍一下第二种方法,通过可执行程序创建一个Excel模板。
我们这里实现一个简单的模板创建:
我们点击红圈中的选择地址按钮:
我们可以选择一个文件夹,然后自己输入文件名,或者选择一个已经存在的Excel文件(将替换原内容)。这里我选择桌面,然后输入123(无需后缀),点击保存,然后点击执行,效果如下:
当我们点击保存后,路径就会显示在输入框中,然后点击执行,那这个路径下的Excel文件就会创建出来,而文件中的内容是通过程序代码写出来的。
这是创建出来的Excel的内容,可以看到不光是单元格内容,包括字体大小,颜色等设置都可以实现(可能通常用不到)。
具体代码如下:
总结:
通过代码我们可以看到,整个实现过程并不复杂,基本包括三个部分:
1.写入路径和文件名
2.创建excel文件
3.写入excel内容
1.写入路径和文件名,调用的还是类接口CL_GUI_FRONTEND_SERVICES的方法,如果使用过这个类或者读过我之前博文的朋友相信应该不陌生,之前我们用过它的另一个非常常用的方法 file_open_dialog ,这里保存选择路径就很简单明了。
2.创建Excel我们使用的OLE技术,我们引用类型池OLE2。开头我们定义了许多type OLE2_OBJECT的变量,其中G_APPL 是我们要创建的OLE对象类型为Excel。后面我们先创建一个workbook,然后赋值sheet名,如果想要创建多个sheet也是可以的,具体可以上网查找SAP_EXCEL_OLE常用方法和属性。
3.写入内容,最基本的参数需要:行号,列号,值。
通过 CALL METHOD OF G_APPL ‘CELLS’ = L_CELL来实现,确定单元格,然后赋值 SET PROPERTY OF L_CELL ‘VALUE’ = 值 。其他格式设置见代码。
这种写法需要多次调整,尤其是设置格式方面需要不断调试以达到预期效果。不过通常情况我们只需要其内容,所以平时备份上一两种模板,用到时修改下内容行即可。
因为我也是才接触abap,对系统中不常用的语法,结构,类接口等不很熟悉,不对之处希望博友指点,分享这篇文章大家共同学习。
1.从服务器已经上传的Excel模板中下载到本地,然后贴入数据。
2.通过程序代码创建Excel模板,然后保存到本地。
第一种方法我想许多大神早已经在论坛或博客中有详细的介绍,这里我们介绍一下第二种方法,通过可执行程序创建一个Excel模板。
我们这里实现一个简单的模板创建:
我们点击红圈中的选择地址按钮:
我们可以选择一个文件夹,然后自己输入文件名,或者选择一个已经存在的Excel文件(将替换原内容)。这里我选择桌面,然后输入123(无需后缀),点击保存,然后点击执行,效果如下:
当我们点击保存后,路径就会显示在输入框中,然后点击执行,那这个路径下的Excel文件就会创建出来,而文件中的内容是通过程序代码写出来的。
这是创建出来的Excel的内容,可以看到不光是单元格内容,包括字体大小,颜色等设置都可以实现(可能通常用不到)。
具体代码如下:
*&------------------------------------------------------------- *& Report xxx *& *&------------------------------------------------------------- REPORT xxx. TYPE-POOLS:OLE2. "OLE EXCEL定义。 结构.OBJ_RECORD ." DATA: G_SHEET TYPE OLE2_OBJECT, G_ACTIVESHEET TYPE OLE2_OBJECT, G_NEWSHEET TYPE OLE2_OBJECT, G_APPL TYPE OLE2_OBJECT, G_WORK TYPE OLE2_OBJECT, G_CELL TYPE OLE2_OBJECT. DATA:MES_TEXT TYPE C LENGTH 50."消息提示文本" SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. PARAMETERS:P_FILE LIKE RLGRAP-FILENAME."路径输入栏" SELECTION-SCREEN END OF BLOCK B1. INITIALIZATION. AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE ."选择屏幕仍然活动时,处理用户在选择屏幕上输入之后的点" PERFORM OPEN_FILE."实现路径选择和保存" AT SELECTION-SCREEN. CASE SY-UCOMM. WHEN 'ONLI'. IF P_FILE IS INITIAL. MESSAGE '请添加路径!' TYPE 'E'. ELSEIF P_FILE IS NOT INITIAL. IF P_FILE NS 'C:\ ' AND P_FILE NS 'D:\ ' AND P_FILE NS 'E:\ ' AND P_FILE NS 'F:\ ' . MESSAGE '请选择正确路径!' TYPE 'E'. ENDIF. ENDIF. ENDCASE. START-OF-SELECTION. PERFORM DOWNLOAD."创建Excel模板" END-OF-SELECTION. FORM OPEN_FILE. DATA:FILENAME TYPE STRING, PATH TYPE STRING, FULLPATH TYPE STRING. "通过调用方法file_save_dialog实现将选择的路径保存到parameter中" CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG EXPORTING FILE_FILTER = 'Excel文件(*.xls;*.xlsx)|*.xlsx' CHANGING FILENAME = FILENAME PATH = PATH FULLPATH = FULLPATH EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 NOT_SUPPORTED_BY_GUI = 3 others = 4. P_FILE = FULLPATH."最终路径赋给输入栏" ENDFORM. FORM DOWNLOAD. CREATE OBJECT G_APPL 'EXCEL.APPLICATION'."创建OLE对象为EXCEL类型。" SET PROPERTY OF G_APPL 'VISIBLE' = 0."设置显示模式,0表示后台运行,1表示前台运行。" "创建一个book。" CALL METHOD OF G_APPL 'WORKBOOKS' = G_WORK. CALL METHOD OF G_WORK 'ADD' = G_WORK. "给sheet重命名。" GET PROPERTY OF G_APPL 'ActiveSheet' = G_ACTIVESHEET. SET PROPERTY OF G_ACTIVESHEET 'Name' = '工艺路线模板'. PERFORM FILL_CELL USING: 1 1 '物料编码' 10 1 10, "行号,列号,值,单元格颜色,是否加粗,字体尺寸" 1 2 '工厂' 20 0 12, 1 3 'MRP控制者' 30 0 13, 1 4 '物料类型' 40 0 16, 1 5 '物料描述' 50 0 20, 1 6 '备注' 55 1 24. "保存workbook" CALL METHOD OF G_WORK 'SAVEAS' EXPORTING #1 = P_FILE. "关闭文件 。" CALL METHOD OF G_WORK 'close'. "退出EXCEL。" CALL METHOD OF G_APPL 'QUIT'. FREE OBJECT G_APPL."操作完毕,释放对象" CONCATENATE '文件:' P_FILE ' 下载成功' INTO MES_TEXT. MESSAGE MES_TEXT TYPE 'S'. ENDFORM. FORM FILL_CELL USING FU_ROW FU_COLUMN FU_VALUE FU_COLOR FU_BOLD FU_SIZE. DATA: L_CELL TYPE OLE2_OBJECT, L_COLOR TYPE OLE2_OBJECT, L_BOLD TYPE OLE2_OBJECT. "给单元格赋值。" CALL METHOD OF G_APPL 'CELLS' = L_CELL EXPORTING #1 = FU_ROW "行号 #2 = FU_COLUMN. "列号。 SET PROPERTY OF L_CELL 'Value' = FU_VALUE."赋值。" "单元格内部属性的操作:" GET PROPERTY OF L_CELL 'Interior' = L_COLOR. * "也可以这样写:" * " CALL METHOD OF L_CELL 'INTERIOR' = L_COLOR. " SET PROPERTY OF L_COLOR 'ColorIndex' = FU_COLOR."根据值 显示对应的颜色。 "单元格内字体的操作: GET PROPERTY OF L_CELL 'Font' = L_BOLD. SET PROPERTY OF L_BOLD 'Bold' = FU_BOLD."1是加粗,0是不加粗" SET PROPERTY OF L_BOLD 'SIZE' = FU_SIZE. "设置字体大小。" ENDFORM.
总结:
通过代码我们可以看到,整个实现过程并不复杂,基本包括三个部分:
1.写入路径和文件名
2.创建excel文件
3.写入excel内容
1.写入路径和文件名,调用的还是类接口CL_GUI_FRONTEND_SERVICES的方法,如果使用过这个类或者读过我之前博文的朋友相信应该不陌生,之前我们用过它的另一个非常常用的方法 file_open_dialog ,这里保存选择路径就很简单明了。
2.创建Excel我们使用的OLE技术,我们引用类型池OLE2。开头我们定义了许多type OLE2_OBJECT的变量,其中G_APPL 是我们要创建的OLE对象类型为Excel。后面我们先创建一个workbook,然后赋值sheet名,如果想要创建多个sheet也是可以的,具体可以上网查找SAP_EXCEL_OLE常用方法和属性。
3.写入内容,最基本的参数需要:行号,列号,值。
通过 CALL METHOD OF G_APPL ‘CELLS’ = L_CELL来实现,确定单元格,然后赋值 SET PROPERTY OF L_CELL ‘VALUE’ = 值 。其他格式设置见代码。
这种写法需要多次调整,尤其是设置格式方面需要不断调试以达到预期效果。不过通常情况我们只需要其内容,所以平时备份上一两种模板,用到时修改下内容行即可。
因为我也是才接触abap,对系统中不常用的语法,结构,类接口等不很熟悉,不对之处希望博友指点,分享这篇文章大家共同学习。
相关文章推荐
- 关于SAP BW中删除标准DSO中已经激活的请求
- 整理硬盘发现几个以前做的视频,分享下
- SAP R3 Oracle 9i ORA-06413 连接未打开错误
- SAP BASIS常用T-CODE
- sap RFC Trusted/Trusting (权限)
- SAP学习手册-1
- About SAP XI
- 国家电网SAP 烂尾悬疑
- “画皮SAP事件”的进展与争论!
- 某大型SAP系统升级改造解决方案___备份
- 浙江省电力公司SAP、OA信息系统应急演练取得圆满成功
- 恩墨科技为某企业SAP数据库提供紧急援助服务
- SAP BASIS主要工作职责(转自倍思博SAP)
- SAP产品介绍
- SAP公布2006年度初步业绩报告
- 在SAP R3 IDES中恢复SAP*密码
- SAP IDES需要输入access key破解
- 朗泽SAP:SAP在中国已进入高速时代
- SAP HANA 常见问答
- 基于事件驱动过程链理论的SAP项目实施