其實建立表維護的時候,就是建立了個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[].