2010年10月19日

FI park document 檢查 1/2

新project在FI有個很特殊的需求:
1 park document的item輸入時檢查利潤中心和成本中心不可空白。
2 park document save時,借貸要相等。

需求1本想用validation做,一試之下發現不行。
退而求其次,改用BTE event 2213,試了之後檢查是可行的,但有個缺點只能在save時檢查,並且一旦檢查出錯誤時,就Exit,失敗!

想來想去差點就無解了,突然想到一個幾乎失傳的技術(RWIN_CHECK),我最早看到是在R/3 4.0有人這麼做過。

考慮利潤中心和成本中心是在item的coding block,所以就copy標準的function FI_COBL_CHECK到ZFI_COBL_CHECK。
在裡面加入以下park doc的檢查code:

IF I_COBL-VORGN = 'RFBV'. * BREAK IBM_KEN.
CASE I_COBL-HKONT(3).
WHEN '006' OR '007'.
IF I_COBL-KOSTL = ''.
SUBRC = 12.
ENDIF.
ENDCASE.

SELECT SINGLE FSTAG INTO FSTAG FROM SKB1
WHERE BUKRS = I_COBL-BUKRS
AND SAKNR = I_COBL-HKONT
AND FSTAG = 'G005'.
IF SY-SUBRC = 0 AND I_COBL-PRCTR = ''.
SUBRC = 13.
ENDIF.
ENDIF.

之後再補上message

WHEN 12.
MESSAGE E888(SABAPDOCU) WITH '成本中心欄位不可空白!!'.
WHEN 13.
MESSAGE E888(SABAPDOCU) WITH '利潤中心欄位不可空白!!'.

完成之後要將table TRWPR補上ZFI_COBL_CHECK設定。

park document save可用失敗的BTE來做,但一樣會Exit,解法下篇再說。

沒有留言:

張貼留言