点击蓝字 关注我们
一
前言
SAP标准函数呈现图形大概有两种方式
函数组 SGFW GFW: Display (Standard) Graphics 或者类CL_GUI_GP_PRES GFW Business graphic(函数组SGFW 也是调用改类,所以归入一类方法)
函数组BUSG SAP商业制图 后面简称商业图形
本文主要讲解SAP商业图形相关函数调用的注意事项
二
各函数调用方式
下面的函数调用示例中只介绍了基本参数,更多参数的详细说明请参照函数文档
01
GFW_PRES_SHOW
这个函数主要用来形成2D图形.
该函数需要传入一个屏幕容器,因此可以嵌入到屏幕中的任意位置.
支持以下几种图形方式
-
GFW_PRESTYPE_LINES 折线图
-
GFW_PRESTYPE_AREA 区域图
-
GFW_PRESTYPE_HORIZONTAL_BARS 横向柱状图
-
GFW_PRESTYPE_PIE_CHART 饼状图
-
GFW_PRESTYPE_VERTICAL_BARS 竖向柱状图
-
GFW_PRESTYPE_TIME_AXIS (line chart with X-time axis) 时间图
因为该函数不是动态报表呈现图形的方向, 因此只测试了饼状图与柱状图. 两种方式传递的数据不太一样,其它图形类似于柱状图.
对于饼状图
column_texts中存放关键字 GPRVAL VAL1->VAL32存放指标.通过column_texts行对应GPRVAL中的列.第一行对应VAL1 第二行对应VAL2...第32行对应VAL32 . 最大显示32行
下面的几个图演示了映射关系及图形样式





对于柱状图
示例 values-rowtext 作为产品 values-val1/val2 表示不同人员的产品销售. 最大32个人员 column_texts中依次存放每个人员的名称.

该函数对于中文描述支持似乎有BUG . 图示中的中文 冰箱未正常显示.

其它类型的图与柱状图类似,就不再赘述.

GPRVAL结构
02
GRAPH_2D
该函数用于显示2D图形,传入的数据很容易理解, 就是一个关键字,一个指标的内表即可, 最大32行. 超出32可能会报错. 其它的传入参数
-
DISPLAY_TYPE 控制图形类型
-
TITL 标题
-
WINPOS 窗口位置
-
WINSZX 窗口横向百分比
-
WINSZY 窗口纵向百分比

03
GRAPH_3D
三维图形显示.
该函数传入的数据是一个自定义的内表,理论上该内表最大33列, 第一列内容表示一个维度(示例中用姓名),其它每一列字段表示一个维度, 字段值表示指标. 如图示直接赋值. 如果是一个三个字段的内表(两个关键字段,一个指标字段), 则需要通过转换逻辑转换赋值.该函数有个问题,有个维度的值无法显示(这个问题在函数GRAPH_MATRIX_3D中得以解决)


04
GRAPH_MATRIX_3D
同 GRAPH_3D , 改进点是系统提供了六个传入参数,用来设定第二维度6个关键字段描述.


05
GRAPH_MATRIX_4D
显示四维图形.该函数其它参数类似与GRAPH_MATRIX_3D 多了一组传入参数表示关键字内容
该函数的内容表达非常复杂.通过定义一个37个字段的内表来表达三个关键字,一个指标. 其中一个关键字存放在字段 TEXT 中. 另外两个关键字都是最大6个值 分配映射Y1-Y6 L1-L6 .通过数据处理整合到下图结构的内表中. 整合是把第二,第三关键字内容映射到Y1-Y6,L1-L6. 组合字段内容,构成新的字段 比如 Y1L1 该字段的值是就是关键字 TEXT ,Y1映射的字段值,L1映射的字段值 对应的指标值.

数据定义

转换逻辑

参数传递

内容呈现
06
GRAPH_MATRIX
一个通用函数,用于呈现2D,3D,4D内容.
每个维度最大32个值.超出会报错.
维度组合不存在的数据,需要补0 .
该函数通过三个维度内表存放关键字内容. 一个数据内表存放指标值. 通过特定逻辑关联纬度值与指标值. 其中2D的关联方式非常简单: 维度与指标一一对应. 3D/4D 则按照以下逻辑对应
-
数据是统计后的数据: 关键字不重复
-
循环获取维度
-
排序数据(维度1,维度2,维度3)
-
排序三个维度表
-
依次循环维度3内表,嵌套循环维度2内表,嵌套循环维度1内表, 构造数据内表
该逻辑针对2D,3D,4D都生效.适用于封装的图形显示类.

数据定义

通用解析
三
关于示例程序
因为代码量过大,需要的可以联系微信号392077索取
四
总结
SAP商业图形提供的函数虽然给出了详细的示例,但是实际使用还是存在一定的困难.难点就在于多维度的数据表达形式,不同的函数使用了不同的数据表达形式 ,需要理解并处理这些数据表达式. 最终通过函数GRAPH_MATRIX整合了所有的数据表达形式.
THE
END
约定
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
网友评论