先说正题吧,今天发了一篇新行的文章,出乎意料的受欢迎。 阅读人数破纪录,关注人数增加18人。文章被转发34次,回复问候的人甚至更多。
想必很多同学都面临着和我一样的困境吧!
啊哈,我真的很感动……
谢谢你们,谢谢你们,再次衷心的感谢你们!
一时间泪流满面……
关于酷报表,我是用百度ECharts来做的()。 在这篇文章中,我将分以下几个部分进行解释。
1.使用ECharts展示数据的原理
2. 使用方法
3、使用ECharts进行交互的原理
4. 优点和缺点
在阅读本文之前,了解一下百度的ECharts是非常有必要的。
后者是ECharts的一个示例,前者是ECharts的配置项Option(或者API文档)。
原理-显示数据
SAP 有一个名为 CL_GUI_HTML_VIEWER 的类。 你可以找到该类的USELIST并查看该类的demo。 通过这个类,我们让SAP使用浏览器来显示网页。
这个类提供了很多方法,我在本例中使用的方法如下:
load_data 加载数据
load_mime_object 加载一个MIME对象(如SMW0中上传的二补对象)
show_url 显示网页
set_script 设置要执行的脚本
execute_script 执行脚本
百度打开的ECharts是一个JS脚本文件。 您只需要编写简单的网页源码即可显示丰富的ECharts图表【浏览器需要HTML5】。
其中,简单的源码是通过该类的load_data加载到网页中的。
至于ECharts的JS脚本文件,我是通过SMW0上传到二补文件对象中,然后通过load_mime_data加载到网页中,最后调用show_url来显示。
为了让ECharts能够展示SAP数据,我在网页源码中额外定义了一个名为setOption的JS函数。
通过该功能,我们可以根据ECharts对源数据的要求,将SAP数据在ABAP中集成为ECharts所需的格式。
ECharts中的配置项较多,需要JSON格式。 对于不同类型的Chart,配置项的格式也不同。 为了更方便地将SAP数据转换为ECharts所需的JSON格式,我做了两步:
1、将ECharts的配置项导入SAP,使用SE11创建结构进行管理
(配置项太多,我只创建了条形图和饼图两部分,并且只包含了部分配置项)
2、由于ECharts的配置项对大小写有严格要求炫酷网站源码下载,SAP通过结构体转换JSON时,全部变成小写,非常混乱。 于是我复制并重写了SAP用于将结构化数据转换为JSON的代码,以便SAP可以将其转换为camelcase格式(首字母小写)的JSON代码。
(但同时,SE11结构中的配置项也有要求,比如ECharts中的XAxis,SE11中用逗号分隔,即X_AXIS)
为了更方便使用,我自定义了一个类ZCL_ECHARTS_INTEGRATION,
1.继承CL_GUI_HTML_VIEWER
2.将JSON格式转换为驼峰类型的代码进行封装
3、提供SET_OPTION方法(封装了SET_SCRIPT和EXECUTE_SCRIPT的代码),使得SAP数据可以通过网页显示
指示
使用方法请参见文末资源链接中的ZECHARTS_DEMO程序。 以下是一些框架描述。
显示图表:
1.我们需要一个控制。 这需要我们勾勒出一个屏幕并定义一个自定义控件。
2. 调用ZCL_ECHARTS_INTEGRATION的构造函数初始化图表。
3.处理SAP数据,将其写入SE11创建的结构中,然后调用ZCL_ECHARTS_INTEGRATION提供的SET_OPTION方法来显示图表。
原理-数据交互
在网页上进行点击操作时,我们希望在SAP端接收用户的点击操作,并根据用户的点击操作在SAP系统中处理数据或者显示更多的图表。 CL_GUI_HTML_VIEWER 类仅提供风暴 SAPEVENT。 你可以去这个课程了解一下这个风暴的参数。 我这里只使用ACTION和QUERY_TABLE。
(网页中的login:?name=leo&type=1等内容大家一定很熟悉吧?其中login是action,query_table有两行,分别是nameleo和type1)
为了实现数据交互,我做了四个步骤:
1.修改上述网页源文件的代码。 当用户点击storm时,将window.location.href修改为以sapevent开头的链接,并在该链接上附加相关参数,以便SAP可以接收到storm及相关参数。
2.在ZCL_ECHARTS_INTEGRATION中创建SAPEVENT风暴HANDLER:ON_EVENT
3、修改ZCL_ECHARTS_INTEGRATION的构造函数,创建对象时允许进入弹回的FORM(弹回的FORM必须使用指定格式的参数)
4、ON_EVENT模式下,调用弹回的FORM
这样,在ZECHARTS_DEMO的程序中炫酷网站源码下载,我们就可以通过跳出的FORM来处理网页中的风暴了。 详细代码请参阅程序。
共同点和不同点
优势:
1.与CL_GUI_CHART_ENGINE的SAP图表相比,看起来更好,统计分析更直观
2.可以实时显示图表
缺点:
1、ECharts配置项过多
2、需要深入学习和理解ECharts的设计方法
3、解决问题特别麻烦。 如果不注意,图表可能不会显示。 这个问题无法通过调试来解决,解决问题的时间成本极高。
其他说明:
1、SAP应用服务器通常用于业务应用处理。 小型分析报告和图表建议在BW中开发
2.我的例子的目的是一定程度上解决SAP图表显示的问题,需要HTML5、JS和ECharts的知识,对包内容的要求也很严格。总体来说我不是对这些方法太满意了,虽然学习成本、封装成本、维护成本太高
3. 谈谈一些积极的方面。 通过这个例子,我至少实现了一个SAPGUI与HTML单向交互的有价值的案例,这是一次集思广益。 您可以继续开放思路,开发更有价值的业务应用。
整体讲解完毕,不知道大家是否明白了。 由于实现还是比较复杂,结合代码会更加清晰。
下载链接
密码:dax4
(说明一下,本来想通过请求下载来下载打包后的请求,但是下载失败,无论我怎么处理,总是提示文件目录不存在,知道的可以加我陌陌286503700帮我解决一下问题,看一下,万不得已,我只好选择saplink import的形式,因为SE11创建的结构太复杂了……
另外,你还得想想如何使用saplink。 好像在HANA上不能用,或者有些高版本不能用,我没有深入研究原因)
终于
我所有的资源都在云盘链接里,链接永远不会过期。
ABAP和Excel的文章摘要链接,请点击公众号下方菜单获取。 也可以将其存放起来以备不时之需。