用表格維護生成器維護資料sm30
之前做過一個這樣的例子,但是在老師的指導下,覺得挺簡單的
後來業務需要,需再做一個配置表,居然死活不成功
現把步驟具體得記錄下來,JUST FYI
1 用se11建立一個自定義資料庫表,假設表名為 ZMARA ,
其中資料庫字段有:
mandt matnr zstop ernam ersda crtime lauser ladate latime
用戶端(必須的,key) 物料号(key) 停用辨別 建立人 建立日期 建立時間 最後修改人 最後修改日期 最後修改時間
其中建立人、建立日期、建立時間不需要,因為隻要記錄最後修改的資訊即可
2 進入 技術設定,如圖
資料類:選擇APPL0
大小範疇: 寫0 或者1 都可以(我認為既然是用表格維護生成器做的對話程式,資料量不會很大,是以選擇寫0就可以了)
緩沖 :不允許緩沖
緩沖類型:空
關鍵字段号:空
3 維護完技術設定之後,回到維護的界面,進入菜單:實用程式 - 表格維護生成器
權限組:&NC&(我認為這個和BASIS有關,在此選擇大權限)
權限對象 函數組 package 在維護資料字典的時候已經設定,會自動帶過來
維護螢幕:
如果“維護類型”選擇“一步”,則“維護螢幕編号”是隻需要有“概述螢幕”即可,“單一螢幕”為空
如果“維護類型”選擇“兩步”,則“維護螢幕編号”中“概述螢幕”和“單一螢幕”都需要 有螢幕号
對于“一步”和“兩步”的概念,自己體會
對于所需要的螢幕号,則點選工具欄上的“查找螢幕号”,選擇第一個建議的即可
4 建立相應的tcode
進入se93 , 輸入tcode名稱
開始對象選擇最後一個:Transaction with parameters (parameter transaction)
屬性設定如圖
其中被抹掉的部分填寫時需要建立的視圖名稱ZTAB
事務:sm30
跳過起始螢幕:勾選
Inherit GUI attributes :勾選
5 即可進入建立的tcode進入
除了以上最基本的東西,還可以修改界面,寫代碼
該例子設計的資料字典中建立資訊相當于沒用,是以不需要顯示建立資訊,具體操作:
進入tcode,菜單:系統 - 狀态 - 輕按兩下螢幕編号 (切記不是程式名稱)
進入格式界面,修改狀态,把建立資訊一列删除:先删文本,再删可輸入列;
修改“修改資訊”的可輸入狀态,設為“不可輸入”
在PAI中,把不要的字段注釋掉,并在其後添加一個module
MODULE set_0027_change_info ON CHAIN-REQUEST.
PROCESS AFTER INPUT.
MODULE LISTE_EXIT_COMMAND AT EXIT-COMMAND.
MODULE LISTE_BEFORE_LOOP.
LOOP AT EXTRACT.
MODULE LISTE_INIT_WORKAREA.
CHAIN.
FIELD ZIEBBFWLZ-MATKL .
FIELD ZIEBBFWLZ-ZSTOP .
* FIELD ZIEBBFWLZ-ERNAM .
* FIELD ZIEBBFWLZ-LAUSER .
MODULE set_0027_change_info ON CHAIN-REQUEST.
MODULE SET_UPDATE_FLAG ON CHAIN-REQUEST.
ENDCHAIN.
FIELD VIM_MARKED MODULE LISTE_MARK_CHECKBOX.
CHAIN.
FIELD ZIEBBFWLZ-MATKL .
MODULE LISTE_UPDATE_LISTE.
ENDCHAIN.
ENDLOOP.
MODULE LISTE_AFTER_LOOP.
在新添加的module中寫入如下代碼即可:
zmara-lauser = sy-uname.
zmara-ladate = sy-datum.
zmara-latime = sy-uzeit.
注意module的位置,如果位置不對,該段程式也不會執行