技术背景:当需求报表格式复杂,WRITE/ALV报表无法满足,我们可以采用先用EXCEL画出报表格式上传EXCEL模板填充数据,并将EXCEL模板嵌套在屏幕上的方法解决此类需求。
1
STEP 1 OAOR 上传模板
TCODE:OAOR
在创建页签下,展开选择文档类型或程序->标准文档类型->表模板,双击表模板会弹出路径选择框,选择你要上传的模板并填写描述确认上传,上传成功之后展开HRFPM_EXCEL_STANDARD可以看到你上传的模板,这样第一步模板上传就完成了。
OK,现在文档已经导入了。我们可以在OAOR界面中,显示文档、文档的详细信息(detail info.)等。
2
STEP 2 创建Dialog Screen
新建一个screen, scren number为100。
新建一个GUI Status,编号为100,在gui status中定义function code为’&F03’,并激活GUI Status.
flow logic,增加一个PAI事件,用于处理屏幕的退出
3
STEP 3 获取模板文档的信息
操作excel模板文档,使用类,这个类的方法获取文档的url。
首先定义一些global变量:
获取excel模板的url:的静态方法获取excel模板那的url。数据存放在内表中,读取后放在global变量g_template_url里面。
4
STEP 4 打开Excel文档
根据获取的excel template的url,打开excel文档。
05
STEP 5 将数据写入Excel
数据写入Excel,可以使用批量的方式或者逐个单元格写入的方式。批量写入的方式效率高,逐个单元格写入的方式比较灵活,在程序中都能用到。将数据写入excel需要使用i_oi_spreadsheet接口实例的两个方法:
insert_range_dim方法,定义一个范围(range),设定range的名称、位置和大小。
set_range_data方法,写入数据到range,写入的时候,ranges参数设定range的名称和大小, contents参数设定写入的内容。
PS:批量与单个的差别就在于范围的设定,单个的话RANG就设为1行1列就可以了。
批量操作:
逐个单元格操作:
06
程序的界面如下
2-78行是批量插入数据
79行是逐个单元格插入数据
程序缺点:没做单元格属性设置实例(下次再整,我要下班了--)
我就知道你“在看”
领取专属 10元无门槛券
私享最新 技术干货