表维护视图DEMO(2):动态控制显示列

拓荒号:拓荒牛 (开说)

其实创建表维护的时候,就是创建了个table control,

熟悉table control的话可以直接修改很多东西。

DEMO过程是我自己个习惯,不见得都是正规的操作。纯属个人习惯,如果有什么不对的地方也欢迎批评指正,谢谢。

【2】控制显示列,显示范围

有时候不同部门维护不同的列,比如财务维护财务相关的,采购维护采购相关的数据,但是又在同一个维护视图中。

当然,你可要建多个维护视图,参考之前的那篇文章为财务,采购,销售等不同部门不同的视图来区分。

我一般是直接修改table control 动态显示列,来实现这个需求。

还拿上篇文章提到的那个视图为例。

真正的项目里应该是判断权限对象,然后判断是否显示某些列。

咱这个demo里简单一些,就不同工厂 显示的列不一样得了。

反正原理都一样。

下面写下具体步骤。

首先设置组:

数量和单位,在CN1下

金额在CN3下

在PBO 加代码如下

参考代码

或者在这个地方控制

其实只要你对table control 足够熟悉,想在哪儿加就在哪儿加,想控制什么就能控制什么。都行的。

但是这个时候就肯定不能使用SM30去维护了,需要建一个自定义的程序call view 来维护数据。不然同时存在CN01 CN03数据,就导致工厂控制的列都不显示了。

参考程序:

执行效果

代码:

*&---------------------------------------------------------------------*

*& 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[].
(职场责编:拓荒牛 )