供应商主数据屏幕增强
場景:給供應商主數據增加分個按鈕,實現自定義的其他的客制化數據如下截圖,需要的BADI增強:
VENDOR_ADD_DATA_CS 和??VENDOR_ADD_DATA
?步驟如下:
1.在LFA1增加 zlfa1的結構
?2、進入事務代碼SPRO,在中文環境下按照路徑,后勤-常規->業務合作伙伴->供應商->控制->客戶所有的主數據字段的采用,選擇第一步“準備供應商主記錄的自由修改增強“,添加一條記錄到視圖V_TSCGR_VENDOR中:
?創建一個新的頁簽功能碼
?3.進入到SE19?????VENDOR_ADD_DATA??創建實施
?找到如下的方法
?添加激活的屏幕組
?
method IF_EX_VENDOR_ADD_DATA~CHECK_ADD_ON_ACTIVE.
 ? CHECK i_screen_group = 'ZV'.
 ? e_add_on_active = 'X'.
 endmethod.
 ?4、接下來繼續SE18實現BADI vendor_add_data_cs ,這個才是這個屏幕增強的主體部分,和傳統的屏幕增強方式不同(傳統的屏幕增強例如采購訂單的增強MM06E005),這里只提供了幾個接口,真正的邏輯需要自己完全建立一個新的function group(這個function group和那些以X開頭的增強函數組例如XM06是不一樣的),將這些接口的參數對應的在函數組里面定義成一些全局變量,然后進行處理。
5.創建VENDOR_ADD_DATA_CS的實施,并且選擇filter = ‘ZV’,先激活
?6.這時,需要我們創建的一個函數組來實現自定義屏幕的展示
?7.創建一個屏幕,然后在屏幕創建自己定義的屏幕上的數據展示
?8.給增強的方法添加要展示的屏幕信息
?9.在實現SET_DATA這個方法之前,我們要先建立一個函數,用于調用傳值:ZE_VENDOR_DATA_READ
? CLEAR:g_activity,ls_lfa1,ls_zlfa1_fl.
 ? g_activity = i_activity. ? "A–>DISPLAY;h–>CREATE;V–>CHANGE
 * ?lfa1-licensecate = i_tm_lfa1-licensecate. ?"新件保修條款
 * ?lfa1-cashway = i_tm_lfa1-cashway. ?"修后索賠條款
 * ?lfa1-companytype = i_tm_lfa1-companytype. ?"Vendor Code
 ?
 ? MOVE-CORRESPONDING i_tm_lfa1 TO ls_lfa1.
 ?
 ? SELECT SINGLE * FROM zlfa1_fl INTO ls_zlfa1_fl WHERE lifnr = i_lifnr.
 ?
 ? SELECT * FROM zlfa1_fl INTO CORRESPONDING FIELDS OF TABLE it_fl WHERE lifnr = i_lifnr.
 ? LOOP AT it_fl.
 ? ? SELECT SINGLE zzgysdlx FROM zgysdl INTO it_fl-zzgysdl_txt WHERE zzgysdl = it_fl-zzgysdl.
 ? ? SELECT SINGLE zzgysxlx FROM zgysxl INTO it_fl-zzgysxl_txt WHERE zzgysxl = it_fl-zzgysxl.
 ? ? MODIFY it_fl.
 ? ENDLOOP.
 ? l_lifnr = i_lifnr.
 data:g_ucomm type sy-ucomm.
 DATA:g_activity TYPE aktyp.
 *data:lfa1 type table of lfa1 with header line.
 DATA:ls_zlfa1_fl TYPE zlfa1_fl,
 ? ? ?ls_lfa1 TYPE lfa1.
 data:l_lifnr type lifnr.
 DATA:BEGIN OF it_fl OCCURS 0.
 ? ? ? ? INCLUDE STRUCTURE zlfa1_fl.
 DATA:zzgysdl_txt(30),
 ? ? ?zzgysxl_txt(30),
 ? ? ?box(1).
 DATA:END OF it_fl.
 10.最后我們還需要控制屏幕的輸入邏輯,這需要我們在PBO里面實現處理:
?具體的增強的屏幕里面的程序代碼(table control 和部分的PBO和PAI)就不粘貼了
?11.到方法中寫代碼
? data:i_tm type zlfa1.
 ?
 ? move-corresponding i_lfa1 to i_tm.
 ?
 ? if flt_val = 'ZV'.
 ? ? CALL FUNCTION 'ZE_VENDOR_DATA_READ'
 ? ? ? EXPORTING
 ? ? ? ? I_ACTIVITY = i_activity
 ? ? ? ? I_TM_LFA1 ?= i_tm
 ? ? ? ? i_lifnr ? ?= i_lfa1-lifnr.
 ? endif.
 ?12.在實現GET_DATA這個方法之前,我們亦需先創建如下這個函數:ZE_VENDOR_DATA_SAVE
? DATA:wa_fl LIKE zlfa1_fl.
 ? MOVE-CORRESPONDING ls_lfa1 TO e_tm.
 ?
 ? DELETE FROM zlfa1_fl WHERE lifnr = i_lifnr.
 ? MODIFY zlfa1_fl FROM TABLE it_fl.
 ?13.接下來,實現接口中的GET_DATA方法:
? data:e_tm type zlfa1.
 ? if flt_val = 'ZV'.
 ? ? CALL FUNCTION 'ZE_VENDOR_DATA_SAVE'
 ? ? ? EXPORTING
 ? ? ? ? i_lifnr = s_lfa1-lifnr
 ? ? ? IMPORTING
 ? ? ? ? E_TM ? ?= e_tm.
 ?
 ? ? move-corresponding e_tm to s_lfa1.
 ?
 ? endif.
 將上述的過程全部激活,就OK了
?
總結
以上是生活随笔為你收集整理的供应商主数据屏幕增强的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 【财务思维课】固定资产是应该买呢还是租或
- 下一篇: SAP用户增强总结-采购订单建立增加客户
