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。
* 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里面不存在,因此我在此结构里面附加了一个结构,将我要改的字段添加进去。
然后在自己复制的函数里面添加代码,将要改的值写到对应的表里面,完成此增强。