天天看點

通過配置為資料庫表維護視圖,同時建立事務碼

用表格維護生成器維護資料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的位置,如果位置不對,該段程式也不會執行

繼續閱讀