*********************************************************************
* Goal : 限制Table開放修改的筆數
* T-Code : SE80
* Description : 精靈製作出來的Table,加上一些程式碼,限制只能一筆一筆新增。
* Source : saptechnical.com
* P.S : 該範例是看著範本的練習,英文原版如上網址。
*********************************************************************
利用精靈製作出來的Table,如果有出現List的情況,即使沒有資料,每行都會出現[未知],看起來是不是醜醜的!
我們要將上圖那種醜醜的情況改成如下圖,限制開放修改的筆數,這就是今天的練習。
預告:大抵上需要增加的語法只有三段,還算簡單吧!^__^ (希望大家不要看到這裡就落跑了..)
先在程式一開始宣告要用到的Internal Table以及Work Area,我習慣放在include的TOP裡。
這是第一段程式,宣告的部分。
TYPES : BEGIN OF TY_EMP_DETAILS, |
接著開啟[畫面]的[格式],利用Screen Painter開始製作畫面。點選左方功能wizard拉Table。
接下來我們需要完成左邊列出的幾項步驟,[ 繼 續 ]下一步。
替[ table control ] 命名。
將我們先前宣告的Internal Table以及Work Area填入,繼續。
如上圖做勾選,在Selection col. fld填入[sel],Table的line是否能被選取就靠他決定了。
雙擊Gender的欄位如圖,將他改成下拉式的Listbox,並且將功能代碼命名為[GEN]。
存檔且Active,畫面的製作到此告一段落。
打開元素清單,找到OK,將他的名稱取為OK_CODE。
點開畫面的[流程邏輯]頁籤,觀看精靈產生的程式碼。
module “TC_0100_CHANGE_TC_ATTR”負責append 一筆single row 給Table。
點進來這個module後。
新增下面這一段程式碼。
IF IT_EMP_DETAILS IS INITIAL. |
畫面->[流程邏輯]在module “tc_0100_get_lines”,我們要在這裡控制該line能不能被input。
We need to write loop at screen logic for modifying a specific cell the table control.
點進來後。
在結束Module前加入下列程式碼,判斷gender來控制screen的input。
LOOP AT SCREEN. |
以上重點程式很少吧!因為wizard都幫我們做掉了。
將功能鍵的code改成[BACK]。
在user_command加入下列程式。
CASE ok_code. WHEN OTHERS. |
大功告成!^(+++++)^
沒有留言:
張貼留言