F-02過賬增強

業務需求:會計憑證保存的時候,當科目類型爲D的時候,更改天數字段BSEG~ZBD1T的值
主要需求如下:
*  會計憑證過帳時,當行項目的科目類型爲D (客戶)時,重新計算到期日

*   1、先計算出系統的到期日(A) = BSEG- ZFBDT + BSEG-ZBD1T
*   2、取得客戶主檔中,客制欄位客戶付款日。依系統的到期日的年/月加上客戶付款日,
*      組合出客戶當月的付款日(B)。例如,計算出的系統到期日期爲2018/06/20,客戶付款
*      日爲15,則客戶當月的付款日期爲2018/6/15。
*   3、比較客戶當月付款日期及系統到期日期
*    3.1、若客戶當月的付款日期(B)小於系統的到期日(A),計算客戶下個月的付款日期 =
*        客戶當月付款日加一個月,以此爲實際到期日(C)。以上例,爲2018/07/15。
*    3.2、若客戶當月的付款日(B)大於或等於系統的到期日(A),則不需重新計算客戶付款日。
*          以當月的付款日爲實際到期日(C)。
*   4、將實際到期日扣除系統付款基準日(BSEG-ZFBDT)計算出的天數差,將此天數差替換BSEG-ZBD1T。
     首先我要測試F-02的預留的增強點,然而並沒有找到相應的增強點

方案一:
在FM:POST_DOCUMENT裏面創建隱式增強,達到自己的目的。
方案二:
通過BTE的方法,將要修改的字段的值改成自己想要的(此方案有不確定性,因爲能改的字段有限,不一定能修改成功。)
BTE方法如下:
***以下文字純屬抄襲,不喜勿噴*****

事務代碼:FIBF.後臺:【財務會計】->【業務事物事件】->【環境】

1.For Publish and Subscribe Interfaces, Info system(P/S)【信息系統發佈訂閱】 
2.For Process Interfaces, Environment ->Infosystem(Processes)  【信息系統處理】

例子:fb01時候,統一設置行項目文本格式。
SE93輸入【fb01】然後進入對應的程序【SAPMF05A】global搜索【OPEN_FI_PERFORM】。
可以發現【call function 'OPEN_FI_PERFORM_00001120_P'】
1.FIBF進入 【環境】-【信息系統處理】
2.執行
3.找到00001120 憑證過帳: 字段替代表頭/項目,選中
4.點擊【示例函數模塊】,進入se37 【SAMPLE_PROCESS_00001120】
5.SE37新建函數組【ZFI_BTE】並copy【SAMPLE_PROCESS_00001120】到【ZFI_BTE_1120】
6.在函數【ZFI_BTE_1120】中寫入代碼
*T_BSEG[]和T_BSEGSUB[]中的行數是一樣的。只改變T_BSEGSUB[]
  data lv_c type c LENGTH 6.

    LOOP AT T_BSEGSUB.
       lv_c = sy-tabix.
       CONCATENATE lv_c ':BTE_EXAMPLE' INTO
       T_BSEGSUB-SGTXT.
       CONDENSE T_BSEGSUB-SGTXT NO-GAPS.
       MODIFY T_BSEGSUB INDEX SY-TABIX.
    ENDLOOP.

7.事物代碼FIBF.【設置】->【產品】->【客戶的】。
新建產品【ZFI_PROD】,激活的checkbox打上鉤鉤!
8.事物代碼FIBF.【設置】->【處理模塊】->【客戶的】。新建產品【ZFI_PROD】,
新建一行:處理【00001120】、功能模塊【ZFI_BTE_1120】、產品【ZFI_PROD】,保存
9.FB01開始記賬,運行保存後發現行項目的【文本】字段全部都變得有規律了有沒有~
也可以查看BSEG表中。
***抄襲完畢***
 本次要修改的字段在結構BSEG_SUBST裏面不存在,因此我在此結構裏面附加了一個結構,將我要改的字段添加進去。
然後在自己複製的函數裏面添加代碼,將要改的值寫到對應的表裏面,完成此增強。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章