其实创建表维护的时候,就是创建了个table control,
熟悉table control的话可以直接修改很多东西。
DEMO过程是我自己个习惯,不见得都是正规的操作。纯属个人习惯,如果有什么不对的地方也欢迎批评指正,谢谢。
【2】控制显示列,显示范围
有时候不同部门维护不同的列,比如财务维护财务相关的,采购维护采购相关的数据,但是又在同一个维护视图中。
当然,你可要建多个维护视图,参考之前的那篇文章为财务,采购,销售等不同部门不同的视图来区分。
我一般是直接修改table control 动态显示列,来实现这个需求。
还拿上篇文章提到的那个视图为例。
![表维护视图DEMO(2):动态控制显示列 表维护视图DEMO(2):动态控制显示列](https://img-blog.csdnimg.cn/img_convert/48a987033fd77722b7f5953e3099f6e8.png)
真正的项目里应该是判断权限对象,然后判断是否显示某些列。
咱这个demo里简单一些,就不同工厂 显示的列不一样得了。
反正原理都一样。
下面写下具体步骤。
首先设置组:
数量和单位,在CN1下
![表维护视图DEMO(2):动态控制显示列 表维护视图DEMO(2):动态控制显示列](https://img-blog.csdnimg.cn/img_convert/350e88ea7269079ccf8964a3c5360863.png)
金额在CN3下
![表维护视图DEMO(2):动态控制显示列 表维护视图DEMO(2):动态控制显示列](https://img-blog.csdnimg.cn/img_convert/23f98b4a7187a1098ccd6bfbef355af6.png)
在PBO 加代码如下
![表维护视图DEMO(2):动态控制显示列 表维护视图DEMO(2):动态控制显示列](https://img-blog.csdnimg.cn/img_convert/087c4a0f69fd5ee4ed6cd06a78bfca81.png)
参考代码
![表维护视图DEMO(2):动态控制显示列 表维护视图DEMO(2):动态控制显示列](https://img-blog.csdnimg.cn/img_convert/6ec03a199a37c866982ad9ae65e25088.png)
或者在这个地方控制
![表维护视图DEMO(2):动态控制显示列 表维护视图DEMO(2):动态控制显示列](https://img-blog.csdnimg.cn/img_convert/6b82c606f2701c21341ff7ed98bc0a3e.png)
![表维护视图DEMO(2):动态控制显示列 表维护视图DEMO(2):动态控制显示列](https://img-blog.csdnimg.cn/img_convert/6df4583987ab21d886b00e4427fa3089.png)
其实只要你对table control 足够熟悉,想在哪儿加就在哪儿加,想控制什么就能控制什么。都行的。
但是这个时候就肯定不能使用SM30去维护了,需要建一个自定义的程序call view 来维护数据。不然同时存在CN01 CN03数据,就导致工厂控制的列都不显示了。
参考程序:
执行效果
![表维护视图DEMO(2):动态控制显示列 表维护视图DEMO(2):动态控制显示列](https://img-blog.csdnimg.cn/img_convert/37d08fb3e2c843d73ec2219fe937170f.png)
![表维护视图DEMO(2):动态控制显示列 表维护视图DEMO(2):动态控制显示列](https://img-blog.csdnimg.cn/img_convert/9eeb72776c776be34ab389eb7352bb61.png)
![表维护视图DEMO(2):动态控制显示列 表维护视图DEMO(2):动态控制显示列](https://img-blog.csdnimg.cn/img_convert/ad3b8d26b125ec0f3f894e75dbc86190.png)
![表维护视图DEMO(2):动态控制显示列 表维护视图DEMO(2):动态控制显示列](https://img-blog.csdnimg.cn/img_convert/71ba889c902b0532179e5cabcebb289e.png)
代码:
*&---------------------------------------------------------------------*
*& Report ZLM_VIEW_DB_001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZLM_VIEW_DB_002.
TABLES ZLM_DB_002.
SELECT-OPTIONS:
S_MATNR FOR ZLM_DB_002-MATNR,
S_WERKS FOR ZLM_DB_002-WERKS OBLIGATORY.
DATA: LT_SELTAB TYPE STANDARD TABLE OF VIMSELLIST.
DATA: GT_EXCLUDE TYPE TABLE OF VIMEXCLFUN,
GWA_EXCLUDE TYPE VIMEXCLFUN.
*------------------------------------------------------
*& 权限控制
*------------------------------------------------------
START-OF-SELECTION.
CLEAR LT_SELTAB[].
CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
EXPORTING
FIELDNAME = 'MATNR'
APPEND_CONJUNCTION = 'AND'
TABLES
SELLIST = LT_SELTAB
RANGETAB = S_MATNR.
CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
EXPORTING
FIELDNAME = 'WERKS'
APPEND_CONJUNCTION = 'AND'
TABLES
SELLIST = LT_SELTAB
RANGETAB = S_WERKS.
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
ACTION = 'U'
VIEW_NAME = 'ZLM_V_002'
TABLES
DBA_SELLIST = LT_SELTAB[].
![表维护视图DEMO(2):动态控制显示列 表维护视图DEMO(2):动态控制显示列](https://img-blog.csdnimg.cn/img_convert/99de4a9c99e1af587aa73361a8d971f0.png)