*********************************************************************
* Goal : update any standard table field value(s)
* T-Code : SE38
* Description : 這次的練習是更新物料的描述。
* Source : saptechnical.com
* P.S : 該範例是看著範本的練習,英文原版如上網址。
*********************************************************************
=>建議開始前可以先到頁尾看看這隻的程式作用。
開啟SE38建立一隻Z打頭可執行的程式。
存在本端做測試。
宣告TYPE以及internal tables & work areas還有別忘了selection screen,到時候要篩選資料用的。
程式碼如下。
TABLES: mara. TYPES: BEGIN OF ty_makt. tt_makt TYPE STANDARD TABLE OF ty_makt. DATA: gt_makt TYPE tt_makt, SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-100. SELECT-OPTIONS s_matnr FOR mara-matnr. SELECTION-SCREEN END OF BLOCK bl1. |
在事件start of selection,我們開始SELECT資料。
程式碼如下。
START-OF-SELECTION. PERFORM get_materials. APPEND LINES OF gt_makt TO gt_makt_old. CALL SCREEN 100. "SELECT完就呼叫畫面 ENDFORM. " GET_MATERIALS |
存檔 & active.
雙擊畫面100,建立畫面。
簡短描述這個畫面。
點[格式]開啟Screen Printer。
單擊Table Control (with Wizard )如下圖,並且繪製大小在畫面上。
點[繼續]。
替這個Table Control命名,繼續。
將我們剛剛宣告的internal table和work area填入。
選擇要秀在table上的欄位。
選擇Input control。
[v]table可捲動,繼續。
繼續。
繼續完成。
將MATNR、SPRAS、MAKTG設成read only如圖。
存檔 and Active。
建立 GUI Status。
輸入名稱並且描述。
在應用程式工具列新增[UPD]。
輸入好按ENTER即出現下面畫面,指定內文以及圖示。
打勾他會讓你指定功能鍵。
回到畫面在[UDP]上點兩下,圖示內文指的是出現圖之後會一併帶出的文字敘述。
設定功能鍵。
存檔並且Active GUI Status。雙擊Module TC_MAKT_GET_LINES。
加入下面程式片段將SCREEN_STATUS插入。
程式如下。
SET PF-STATUS 'SCREEN_STATUS'. |
輸入下面程式到子常式USER_OK_TC,指的就是畫面的PAI user下了command之後,要判斷user做了啥咪動作。
程式碼如下。
IF ( p_ok EQ 'BACK' OR p_ok EQ 'CANCEL' OR p_ok EQ 'EXIT' ). |
建立你要更新的standard table的加鎖物件。
T-code: SE11。名稱要以E打頭。
填入短文敘述以及表格名稱Lock Mode選擇[專用,累計]如果是英文版本=Write Lock。
加鎖參數顯示如下,儲存且active。
在選單->[轉到]->[加鎖模組]。
顯示兩個Functione Module我們之後在update DB時要用的。
在副程式Process_Data寫下面這段程式。
*&---------------------------------------------------------------------* MODIFY makt FROM gs_makt. CALL FUNCTION 'DEQUEUE_EZMAKT_06' ENDIF. |
存檔並且active完成程式。
現在可以來Run看看,輸入物料號碼。
table帶出物料名稱。
修改名稱。
開啟T-code: MM03,物料名稱被改變哩。
♥ 總結:
=>利用Wizard做出Table Control。
=>定義畫面的Status。
=>Update Table前先Lock Table,Update後deLock。
沒有留言:
張貼留言