SAP SM30表格維護生成器增強(算是實踐後的整理吧)
建立SM30維護這裡就不說了,直接說後續的定製需求的更改
SM30維護自定義表,使用部門一般會有一些需求:
一:輸入客戶編碼後自動帶出客戶名稱、輸出物料自動帶出物料描述
二:進入維護檢視前,對資料進行篩選或排序
三:隱藏刪除按鈕(或者別的快捷選單按鈕)
四:在維護檢視中批量匯入/匯出資料
五:針對不同操作人員,顯示不同的資料
六:輸入日期後,根據邏輯自動算出截止日期
一:輸入客戶編碼後自動帶出客戶名稱、輸出物料自動帶出物料描述
1、用表格維護事件的方式
SE11->表->選單->實用程式->表格維護生成器
選單->環境->修改->事件
新增條目,選定事件編號為05,填寫FORM名稱:ZMVRPZ_YZ 回車
點選FORM名稱右邊->編輯器下面的圖示建立 include程式:LZPHX_TEXT2F01
在裡面寫FORM程式:FORM名稱要和外面事件上寫的一致。
如果報錯:函式組 xxxxxxx不能被處理,建立或修改了螢幕沒有啟用函式組,SE80裡面啟用該函式組即可。
程式碼如下:(記得進SE80裡面啟用維護函式組)
FORM zmvrpz_yz. SELECT SINGLE maktx FROM makt INTO z_mvrpz-maktx WHERE matnr = z_mvrpz-matnr AND spras = sy-langu. SELECT SINGLE name1 FROM kna1 INTO z_mvrpz-name1WHERE kunnr = z_mvrpz-kunnr AND spras = sy-langu. ENDFORM.
常用事件:
事件編號 | 事件功能 |
01 | 儲存前修改資料 |
05 | 建立資料時修改 |
21 | 退出單元格編輯時填充隱藏欄位 |
進入螢幕:設定客戶名稱和物料描述欄位為不可輸入。即可!
2、用螢幕增強的方式(其實和第1中原理一樣,就是實現的位置不同)
SE11->表->選單->實用程式->表格維護生成器
雙擊概述螢幕 的螢幕號,進入螢幕邏輯流
增加 MODULE ZGET_TEXT。雙擊建立,程式碼如下:
MODULEZGET_TEXT INPUT. SELECT SINGLE maktx FROM makt INTO z_mvrpz-maktx WHERE matnr = z_mvrpz-matnr AND spras = sy-langu. SELECT SINGLE name1 FROM kna1 INTO z_mvrpz-name1 WHERE kunnr = z_mvrpz-kunnr AND spras = sy-langu. ENDMODULE.
啟用函式組即可。
二、進入維護檢視前,對資料進行篩選/排序
1、理論上事件的方式也是可以的,沒做測試
2、螢幕增強的方式
SE11->表->選單->實用程式->表格維護生成器
雙擊概述螢幕 的螢幕號,進入螢幕邏輯流
檢視一下表結構:
需要排序的欄位為:SRDAT
extract 是全文字表,是按長度來取,把ERDAT前面所有欄位的長度加起來是31 ERDAT 長度是8 擷取extract+31(8) 就是該日期欄位
雙擊MODULEmod_set_sort. 建立,程式碼如下:
MODULE mod_set_sort OUTPUT. FIELD-SYMBOLS: <fs_field> TYPE ANY. ASSIGN extract+31(8) TO <fs_field>. "z_mvrpz-erdat SORT extract BY <fs_field> DESCENDING. ENDMODULE.
提供另一種語法:自定義表內沒有數值型別欄位的時候,可以用以下程式碼:MODULE位置同上面mod_set_sort
MODULE SORT_EXTRACT OUTPUT. DATA : IT_ZTEST LIKE ZTEST OCCURS 1WITHHEADER LINE . IF NOT SY-UCOMM = ‘NEWL’. IT_ZTEST[] = EXTRACT[]. SORT IT_ZTEST BY F1 F2 F3. EXTRACT[] = IT_ZTEST[]. ENDIF. ENDMODULE.
三:隱藏刪除按鈕(或者別的快捷選單按鈕)
示例:隱藏刪除按鈕
PBO中增加 MODULEpbo_hide_button. 在LOOP AT extract上面,程式碼如下:
MODULE pbo_hide_button OUTPUT. MOVE 'DELE' TO excl_cua_funct-function. "隱藏刪除按鈕 COLLECT excl_cua_funct. ENDMODULE.
四:在維護檢視中批量匯入/匯出資料
~~~
未完待續~
參考資料:
https://blog.csdn.net/hubaichun/article/details/83717414 帶出描述
https://blog.csdn.net/liupengpeng1109/article/details/50350537 帶出描述及新增F4幫助
https://www.cnblogs.com/sapSB/p/5979467.html 表維護做排序
https://blogs.sap.com/2016/03/10/to-sort-table-maintenance-before-display/ 表維護做排序(自定義表內沒有數值型別欄位的時候)