功能介绍:
用户会配置如下的表,以指定公式:
实现下列功能:
1、单科目:筛选出指定科目的金额并合计
2、区间科目:筛选出指定区间科目的金额并合计
3、计算公式:按照ZCALTEXT中指定的公式去计算,指定的计算项是ZNUM(行号)
这个表的定义如下:
这里是通过一个rfc函数来实现的,函数的代码如下:
FUNCTION zfm_fi_re02.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(IM_RBUKRS) TYPE BUKRS OPTIONAL
*" VALUE(IM_RYEAR) TYPE GJAHR OPTIONAL
*" VALUE(IM_PRCTR) TYPE PRCTR OPTIONAL
*" TABLES
*" EX_T_002SUM STRUCTURE ZSFI_002
*" EX_T_002DETAIL STRUCTURE ZSFI_002
*"----------------------------------------------------------------------
TYPES:
BEGIN OF tp_faglflext,
rbukrs TYPE faglflext-rbukrs, "公司代码
ryear TYPE faglflext-ryear, "年度
prctr TYPE faglflext-prctr, "利润中心
rfarea TYPE faglflext-rfarea, "功能范围
racct TYPE faglflext-racct, "科目
hsl01 TYPE faglflext-hsl01, "1月
hsl02 TYPE faglflext-hsl02, "2月
hsl03 TYPE faglflext-hsl03, "3月
hsl04 TYPE faglflext-hsl04, "4月
hsl05 TYPE faglflext-hsl05, "5月
hsl06 TYPE faglflext-hsl06, "6月
hsl07 TYPE faglflext-hsl07, "7月
hsl08 TYPE faglflext-hsl08, "8月
hsl09 TYPE faglflext-hsl09, "9月
hsl10 TYPE faglflext-hsl10, "10月
hsl11 TYPE faglflext-hsl11, "11月
hsl12 TYPE faglflext-hsl12, "12月
END OF tp_faglflext.
DATA:
s_rbukrs TYPE RANGE OF faglflext-rbukrs WITH HEADER LINE,
s_ryear TYPE RANGE OF faglflext-ryear WITH HEADER LINE,
s_prctr TYPE RANGE OF faglflext-prctr WITH HEADER LINE,
s_racct TYPE RANGE OF faglflext-racct WITH HEADER LINE,
s_rfarea TYPE RANGE OF faglflext-rfarea WITH HEADER LINE,
it_skat TYPE TABLE OF skat,
lw_skat TYPE skat,
wa_str TYPE ty_str,
it_data TYPE TABLE OF tp_data, "按照序号合计金额
wa_data TYPE tp_data,
it_faglflext TYPE TABLE OF tp_faglflext,
wa_faglflext TYPE tp_faglflext,
it_config TYPE TABLE OF ztfi_002,
wa_config TYPE ztfi_002.
*-----------------------------------------------------------------------
* 取数
SELECT * FROM ztfi_002 INTO TABLE it_config.
IF sy-subrc = 0.
LOOP AT it_config INTO wa_config.
"需要的科目信息
CLEAR:s_racct.
CASE wa_config-zcalcu.
WHEN '1'. "单科目
s_racct-sign = 'I'.
s_racct-option = 'EQ'.
s_racct-low = wa_config-racct_f.
APPEND s_racct.
WHEN '2'. "区间科目
s_racct-sign = 'I'.
s_racct-option = 'BT'.
s_racct-low =