原文鏈接:https://blog.csdn.net/JYH1999/article/details/118597934
導語:從SAP HANA版本,供應商和客戶主數據的創建和修改都被整合到BP中,從ECC升級到S4的系統,大部分原來的增強都會失效,需要在BP中重新開發,SAP也為BP做了一套完整的配置型增強,下面以BP供應商數據采購信息中的付款條件檢查為例。
【增強記錄清單…】
需求說明:
對FLVN00供應商公司代碼中的付款條件和FLVN01供應商采購組織中的付款條件,做一致性檢查。
實現過程:
首先需要找到這兩個字段的位置,看一下他們所屬的表/結構,這里以FLVN01供應商采購組織中的付款條件為例,FLVN00供應商公司代碼中的付款條件做同樣的操作就可以了。
事務碼:BUS2
根據經驗或者模糊查詢,查找字段所在的字段組,或者通過表TBZ3R,進行查詢。
找到字段組,選中,點擊【字段組-字段】,可以看到里面包含的表名和字段與前面查看的一樣,就可以確定是這個字段組了,如果不一致需要繼續查找,這里找到的字段組是2025
事務碼:BUS3
找到字段組對應的視圖,這里有一張表可以使用【TBZ3S】,直接可以找到字段組屬於哪個視圖。這里找到的視圖是CVIV86。
直接定位到視圖,選中,點擊【視圖->字段組】,可以看見我們需要增強的字段組。
繼續選中字段組,點擊【進一步檢查】
新增一條檢查,函數名可以自己定義,如果需要啟用這個檢查,就勾選上總是調用。
函數創建
SE37創建一個函數,函數里邊通過類獲取內表的數據,本次的需求需要和FLVN00供應商公司代碼中的付款條件做檢查,找到公司代碼中付款條件的位置,以及所屬表/結構,一起用類讀出來,並進行校驗就可以了
函數代碼如下:
FUNCTION Z_BP_CHECK_ZTERM. *"-------------------------------------------------------------------- *"*"局部接口: *"-------------------------------------------------------------------- DATA:lt_lfm1 TYPE TABLE OF lfm1. DATA:lt_lfb1 TYPE TABLE OF lfb1. DATA:ls_lfb1 TYPE lfb1. DATA:ls_lfm1 TYPE lfm1. DATA:lv_message TYPE char200. CHECK cvi_bdt_adapter=>is_direct_input_active( ) = abap_false. "根據需求從緩存中取出數據到內表中 cvi_bdt_adapter=>get_current_bp_data( EXPORTING i_table_name = 'LFM1' IMPORTING e_data_table = lt_lfm1 ). SORT lt_lfm1 BY lifnr ekorg. cvi_bdt_adapter=>get_current_bp_data( EXPORTING i_table_name = 'LFB1' IMPORTING e_data_table = lt_lfb1 ). SORT lt_lfb1 BY lifnr bukrs. LOOP AT lt_lfm1 INTO ls_lfm1. READ TABLE lt_lfb1 INTO ls_lfb1 WITH KEY lifnr = ls_lfm1-lifnr bukrs = ls_lfm1-ekorg BINARY SEARCH. IF sy-subrc = 0. IF ls_lfm1-zterm <> '' AND ls_lfb1-zterm <> '' AND ls_lfm1-zterm <> ls_lfb1-zterm. lv_message = ls_lfm1-ekorg && '采購組織數據與' && ls_lfb1-bukrs && '公司代碼數據中的付款條件不一致,請檢查!' . CALL FUNCTION 'BUS_MESSAGE_STORE' EXPORTING arbgb = 'ZYH' msgty = 'E' txtnr = '000' msgv1 = lv_message. ENDIF. ENDIF. ENDLOOP. ENDFUNCTION.
結果顯示