創建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-name1 WHERE kunnr = z_mvrpz-kunnr AND spras = sy-langu. ENDFORM.
常用事件:
事件編號 | 事件功能 |
01 | 保存前修改數據 |
05 | 創建數據時修改 |
21 | 退出單元格編輯時填充隱藏字段 |
進入屏幕:設置客戶名稱和物料描述字段為不可輸入。即可!
2、用屏幕增強的方式(其實和第1中原理一樣,就是實現的位置不同)
SE11->表->菜單->實用程序->表格維護生成器
雙擊概述屏幕 的屏幕號,進入屏幕邏輯流
增加 MODULE ZGET_TEXT。雙擊創建,代碼如下:
MODULE ZGET_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) 就是該日期字段
雙擊 MODULE mod_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中增加 MODULE pbo_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/ 表維護做排序(自定義表內沒有數值類型字段的時候)
http://www.sapjx.com/generate_table_maintenance.html SAP維護視圖(1)-生成表維護視圖
http://www.sapjx.com/table_aintenance_events.html SAP維護視圖(2)-表維護視圖事件處理