供应商主数据屏幕增强
場景:給供應商主數據增加分個按鈕,實現自定義的其他的客制化數據如下截圖,需要的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用户增强总结-采购订单建立增加客户