SPLITTER AND CONTAINER的用法
SPLITTER AND CONTAINER的用法
SPLITTER的使用
在SAP开发过程中,我们有时候要实现一些复杂的ALV功能,这个时候FUNCTION ALV就显得不那么灵活方便
这个时候,我们可以采用OO去实现
OO实现的基本步骤
1、首先创建一个自定义屏幕,在屏幕上画一个自定义控件,这里的自定义控件是根据实际业务需要来定大小,并
起一个名字,比如G_CONTAINER,屏幕就画好了
2、开始在程序里具体去实现这个ALV
一个ALV的组成,我们都比较熟悉,最基本的需要当然是要有fieldcat 和 layout了,这个只是针对基本的查询、
展示功能。然而我们通常要去实现一些复杂业务场景下的功能,这个时候就要添加events了。比如:user_command,
data_change等常用事件,有了这些基本的认识之后,我们下面来具体实现这个ALV
一个业务功能的首界面通常都是,查询条件的展示,这个我们根据实际所需
1)自定义好查询界面之后,点击执行,这个时候就调用一个ALV展示界面,如下图所示
这张图只是截取了ALV的展示部分,同时这张图是同时实现了两个ALV的展示,所以在我们起初画的自定义控件上,如何
更好的布局这两个ALV的展示,使其外观美丽大方就显得尤为重要,这里我们就用到了splitter
splitter汉语解释是,分隔器,用它来分隔一个屏幕上的多个ALV展示,让人看着舒服很多
2)这个ALV屏幕的初始化展示,通常放在事务码的initialization事件当中,也就是说,每次输入完查询条件之后,执
行我们就看到这个屏幕的展示,接下来数据的具体展示就在这张ALV上进行功能操作
上图这个FORM 具体就是用来实现这个ALV的步骤
3)先去创建一个splitter容器,传入我们起初屏幕上画的自定义控件参数,即就是说我们要在这个自定义控件里来进行整体分割
这里我们来针对这个自定义控件,创建一个splitter分割容器
4)
这个form是针对已经创建的splitter容器,进行创建splitter控件,由上图我们可以看到,我们此时是将这个自定义
控件分割成两行一列,就是上下各展示一个ALV
这样我们就将屏幕分割完成了,接下来开始布局ALV容器和控件
5)
这里我们可以看到,是在上面已经分割好的容器里,去开始创建一个ALV容器,在创建的时候,我们必须传递创建的位置坐标,
同时也看到,p_splitter里专门有创建ALV容器的方法,get_container()
6)在创建好一个ALV容器之后,接下来创建ALV控件
7) 为ALV添加事件响应,如果一个屏幕上有多个ALV展示,我们可以完全调用这同一个form
这里的有一个g_event_receiver_1事件接收器,我们必须先事先定义
8)这里是我们自定义的一个事件接收器类,里面声明三个方法,分别是,data_changed\user_command
\toolbar事件
9)下图是对这些方法的具体实现
这里只是做测试,具体的实现没有去写
同时,定义g_event_receiver_1这个对象,注意这里必须先声明,方可定义,这里是用面向对象的思想,就不过多赘述了
10)下图是针对ALV上的菜单栏的添加,这里只是截取了一部分,在这里主要是进行隐藏,实际情况
可以根据具体业务进行增减
ALV上的菜单栏做好后,下来开始设置layout\fieldcat这两个基本的组件了
11)layout\fieldcat 设置如下图所示
这里的gi_fcat_1-edit = 'X',是用来设置ALV的选择框
12)接下来是最后的展示,将我们前面所有的准备做一个展示
13)在起初的屏幕PBO里做最后的ALV刷新
以上就是实现一个OO复杂的ALV的基本步骤,这里只是梳理的一个实现的思路,代码通过调试验证。
当然方法还有更好的,欢迎一起深入研究