取月度会计科目余额等信息(可选年度范围)-月报
来源:互联网 发布:如何看待凤凰卫视知乎 编辑:程序博客网 时间:2024/05/11 12:19
FUNCTION zfi_hkont_get_monat_glt0_i.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(BUKRS) LIKE GLT0-BUKRS DEFAULT 'S001'
*" VALUE(YEAR) LIKE GLT0-RYEAR DEFAULT SY-DATUM+0(4)
*" VALUE(MONAT) LIKE BKPF-MONAT DEFAULT SY-DATUM+4(2)
*" VALUE(YEAR_BEFORE) TYPE SY-SUBRC DEFAULT 0
*" VALUE(MONAT_BEFORE) TYPE SY-SUBRC DEFAULT 0
*" VALUE(HKONT_RANGE) TYPE ZHKON_HKONT_RANGE_TAB
*" EXPORTING
*" VALUE(RET_CODE) LIKE SY-SUBRC
*" VALUE(RESULT_TAB) TYPE ZHKON_GLT0_I_FIELDS_TAB
*"----------------------------------------------------------------------
DATA:
glt0_tab TYPE zhkon_glt0_fields_tab,
glt0_s_tab TYPE zhkon_glt0_s_fields_tab .
ret_code = 1.
PERFORM progress_indicator USING '正在提取数据,请稍候...'.
PERFORM get_data_glt0
TABLES hkont_range glt0_tab
USING bukrs year year_before monat .
PERFORM progress_indicator USING '正在汇总明细数据,请稍候...'.
PERFORM get_data_glt0_s "处理将明细数据进行汇总
TABLES glt0_tab
glt0_s_tab.
PERFORM progress_indicator USING '正在生成有效结果,请稍候...'.
PERFORM get_data_glt0_i "将明细数据进行汇总成最终结果
TABLES glt0_s_tab
result_tab
USING monat
monat_before.
ret_code = 0.
ENDFUNCTION.
*---------------------------------------------------------------------*
* FORM get_data_glt0 *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> P_RACCT_TAB *
* --> P_GLT0_TAB *
* --> P_BUKRS *
* --> P_YEAR *
* --> P_YEAR_BEFORE *
* --> P_MONAT *
*---------------------------------------------------------------------*
FORM get_data_glt0
TABLES p_racct_tab TYPE zhkon_hkont_range_tab
p_glt0_tab TYPE zhkon_glt0_fields_tab
USING p_bukrs LIKE glt0-bukrs
p_year LIKE glt0-ryear
p_year_before LIKE sy-subrc
p_monat LIKE bkpf-monat.
DATA:
tmp_wa_glt0 TYPE zhkon_glt0_fields_line,
v_year_beg LIKE glt0-ryear,
v_year_end LIKE glt0-ryear.
CLEAR: p_glt0_tab,p_glt0_tab[].
v_year_beg = p_year + p_year_before.
v_year_end = p_year.
SELECT * INTO CORRESPONDING FIELDS OF tmp_wa_glt0
FROM glt0
WHERE rldnr = '00' AND rrcty = '0' AND rvers = '001'
AND ( ryear <= v_year_end AND ryear >= v_year_beg )
" AND rbusa = '1000' AND rtcur = 'RMB' 已去除本条件
AND rpmax = '016' AND bukrs = p_bukrs
AND racct IN p_racct_tab.
tmp_wa_glt0-rtcur = 'RMB'. "处理成本位币
PERFORM reset_data_monat_glt0 USING p_monat tmp_wa_glt0.
APPEND tmp_wa_glt0 TO p_glt0_tab .
ENDSELECT.
ENDFORM.
*---------------------------------------------------------------------*
* FORM reset_data_monat_glt0 *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> P_MONAT *
* --> P_GLT0 *
*---------------------------------------------------------------------*
FORM reset_data_monat_glt0 "根据月份将明细数据不需月份数据进行清零
USING p_monat LIKE bkpf-monat
p_glt0_line TYPE zhkon_glt0_fields_line.
DATA: li_monat(2) TYPE n,
ls_fieldname(5).
FIELD-SYMBOLS: <fs> .
DO 12 TIMES.
li_monat = sy-index.
CHECK li_monat > 1.
IF p_monat < li_monat.
CONCATENATE 'HSL' li_monat INTO ls_fieldname.
ASSIGN COMPONENT ls_fieldname OF STRUCTURE p_glt0_line TO <fs>.
<fs> = 0.
ENDIF.
ENDDO.
ENDFORM.
*---------------------------------------------------------------------*
* FORM get_data_glt0_s *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> P_GLT0_TAB *
* --> P_GLT0_S_TAB *
*---------------------------------------------------------------------*
FORM get_data_glt0_s "处理将明细数据进行汇总
TABLES p_glt0_tab TYPE zhkon_glt0_fields_tab
p_glt0_s_tab TYPE zhkon_glt0_s_fields_tab .
* data:
* tmp_tmp_wa_glt0 like tmp_wa_glt0.
DATA: li_monat(2) TYPE n,
ls_fieldname(10).
* DATA:
* vf_sum_Hsl LIKE glt0-hslvt.
DATA: tmp_wa_glt0 TYPE zhkon_glt0_fields_line,
tmp_wa_glt0_s TYPE zhkon_glt0_s_fields_line.
FIELD-SYMBOLS: <fs_sum> ,<fs_detail> .
CLEAR :p_glt0_s_tab ,p_glt0_s_tab[].
SORT p_glt0_tab BY ryear racct rtcur.
LOOP AT p_glt0_tab INTO tmp_wa_glt0.
AT NEW rtcur.
tmp_wa_glt0_s-ryear = tmp_wa_glt0-ryear .
tmp_wa_glt0_s-racct = tmp_wa_glt0-racct .
tmp_wa_glt0_s-rtcur = tmp_wa_glt0-rtcur .
ENDAT .
* move-corresponding it_glt0 to tmp_tmp_wa_glt0.
tmp_wa_glt0_s-hslvt = tmp_wa_glt0_s-hslvt + tmp_wa_glt0-hslvt.
DO 12 TIMES.
li_monat = sy-index.
CONCATENATE 'HSL' li_monat INTO ls_fieldname.
ASSIGN COMPONENT ls_fieldname OF
STRUCTURE tmp_wa_glt0 TO <fs_detail>.
CONCATENATE 'HSL' li_monat '_' tmp_wa_glt0-drcrk
INTO ls_fieldname.
ASSIGN COMPONENT ls_fieldname OF
STRUCTURE tmp_wa_glt0_s TO <fs_sum>.
IF tmp_wa_glt0-drcrk ='S'.
<fs_sum> = <fs_sum> + <fs_detail>.
ELSE.
<fs_sum> = <fs_sum> - <fs_detail>.
ENDIF.
ENDDO.
AT END OF rtcur.
APPEND tmp_wa_glt0_s TO p_glt0_s_tab.
CLEAR tmp_wa_glt0_s.
ENDAT.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
* FORM get_data_glt0_i *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> P_MONAT *
* --> P_NEEDPREMONAT *
* --> P_GLT0_S_TAB *
* --> P_GLT0_I_TAB *
*---------------------------------------------------------------------*
FORM get_data_glt0_i "将明细数据进行汇总成最终结果
TABLES p_glt0_s_tab TYPE zhkon_glt0_s_fields_tab
p_glt0_i_tab TYPE zhkon_glt0_i_fields_tab
USING p_monat LIKE bkpf-monat
p_monat_before LIKE sy-subrc.
DATA:
li_monat(2) TYPE n,
v_monat_beg LIKE bkpf-monat,
v_monat_end LIKE bkpf-monat.
DATA: tmp_wa_glt0_s TYPE zhkon_glt0_s_fields_line.
* tmp_wa_glt0_i type zhkon_glt0_i_fields_line.
IF p_monat_before = 1.
v_monat_beg = 1.
ELSE .
v_monat_beg = p_monat + p_monat_before.
ENDIF.
v_monat_end = p_monat.
CLEAR: p_glt0_i_tab ,p_glt0_i_tab[].
LOOP AT p_glt0_s_tab INTO tmp_wa_glt0_s .
li_monat = 01.
DO 12 TIMES.
li_monat = sy-index.
CHECK ( li_monat >= v_monat_beg AND li_monat <= v_monat_end ).
PERFORM process_single_monat_glt0_i
TABLES p_glt0_i_tab
USING li_monat tmp_wa_glt0_s.
ENDDO.
ENDLOOP.
DELETE p_glt0_i_tab WHERE hslvt = 0
AND hsl_qc = 0 AND hsl_s = 0 AND hsl_h = 0
AND hsl_ye = 0 AND hsl_s_lj = 0 AND hsl_h_lj = 0 .
* sort it_result by ryear rmonat racct rtcur.
ENDFORM. " PROCESS_SUM
*---------------------------------------------------------------------*
* FORM process_single_monat_result *
*---------------------------------------------------------------------*
* 处理单个月数据从汇总生成至最终结果 *
*---------------------------------------------------------------------*
* --> P_monat *
*---------------------------------------------------------------------*
FORM process_single_monat_glt0_i "单个月数据从汇总生成至最终结果
TABLES
p_glt0_i_tab TYPE zhkon_glt0_i_fields_tab
USING p_monat LIKE bkpf-monat
p_glt0_s_line TYPE zhkon_glt0_s_fields_line.
DATA: li_monat(2) TYPE n,
ls_fieldname(10).
FIELD-SYMBOLS: <fs_s> ,<fs_h> .
DATA: tmp_wa_glt0_i TYPE zhkon_glt0_i_fields_line.
tmp_wa_glt0_i-ryear = p_glt0_s_line-ryear.
tmp_wa_glt0_i-monat = p_monat.
tmp_wa_glt0_i-racct = p_glt0_s_line-racct.
tmp_wa_glt0_i-rtcur = p_glt0_s_line-rtcur.
tmp_wa_glt0_i-hslvt = p_glt0_s_line-hslvt.
DO 12 TIMES.
li_monat = sy-index.
IF p_monat >= li_monat.
CONCATENATE 'HSL' li_monat '_S' INTO ls_fieldname.
ASSIGN COMPONENT ls_fieldname OF STRUCTURE
p_glt0_s_line TO <fs_s>.
CONCATENATE 'HSL' li_monat '_H' INTO ls_fieldname.
ASSIGN COMPONENT ls_fieldname OF STRUCTURE
p_glt0_s_line TO <fs_h>.
ADD <fs_s> TO tmp_wa_glt0_i-hsl_s_lj.
ADD <fs_h> TO tmp_wa_glt0_i-hsl_h_lj.
ENDIF.
ENDDO.
* IF p_monat >='01'.
* it_result-hsl_s_lj = it_result-hsl_s_lj + it_sum-hsl01_s.
* it_result-hsl_h_lj = it_result-hsl_h_lj + it_sum-hsl01_h.
* ENDIF.
CONCATENATE 'HSL' p_monat '_S' INTO ls_fieldname.
ASSIGN COMPONENT ls_fieldname OF STRUCTURE
p_glt0_s_line TO <fs_s>.
CONCATENATE 'HSL' p_monat '_H' INTO ls_fieldname.
ASSIGN COMPONENT ls_fieldname OF STRUCTURE
p_glt0_s_line TO <fs_h>.
tmp_wa_glt0_i-hsl_s = <fs_s>.
tmp_wa_glt0_i-hsl_h = <fs_h>.
* CASE p_monat.
* WHEN '01'.
* it_result-tsl_s = it_sum-tsl01_s.
* it_result-tsl_h = it_sum-tsl01_h.
* ENDCASE.
tmp_wa_glt0_i-hsl_ye = tmp_wa_glt0_i-hslvt
+ tmp_wa_glt0_i-hsl_s_lj - tmp_wa_glt0_i-hsl_h_lj.
tmp_wa_glt0_i-hsl_qc = tmp_wa_glt0_i-hsl_ye
+ tmp_wa_glt0_i-hsl_h - tmp_wa_glt0_i-hsl_s.
IF tmp_wa_glt0_i-hslvt <> 0
OR tmp_wa_glt0_i-hsl_qc <> 0
OR tmp_wa_glt0_i-hsl_s <> 0
OR tmp_wa_glt0_i-hsl_h <> 0
OR tmp_wa_glt0_i-hsl_ye <> 0
OR tmp_wa_glt0_i-hsl_s_lj <> 0
OR tmp_wa_glt0_i-hsl_h_lj <> 0 .
APPEND tmp_wa_glt0_i TO p_glt0_i_tab.
ENDIF.
CLEAR tmp_wa_glt0_i.
ENDFORM.
*---------------------------------------------------------------------*
* progress_indicator *
*---------------------------------------------------------------------*
form progress_indicator using p_text. "显示进度文本
call function 'SAPGUI_PROGRESS_INDICATOR'
exporting
* PERCENTAGE = 0
text = p_text.
endform. " PROGRESS_INDICATOR
- 取月度会计科目余额等信息(可选年度范围)-月报
- int,long等取值范围
- pandas 获取季度、月度、年度首尾日期
- C#里巧用DateTime预设一些可选的日期范围(如本年度、本季度、本月等)
- C#里巧用DateTime预设一些可选的日期范围(如本年度、本季度、本月等)(
- C#里巧用DateTime预设一些可选的日期范围(如本年度、本季度、本月等)
- 【转】C#里巧用DateTime预设一些可选的日期范围(如本年度、本季度、本月等)
- C#里巧用DateTime预设一些可选的日期范围(如本年度、本季度、本月等)
- C#里巧用DateTime预设一些可选的日期范围(如本年度、本季度、本月等)
- C#里巧用DateTime预设一些可选的日期范围(如本年度、本季度、本月等)
- 会计科目
- 设置日期控件可选范围
- 可选参数范围的处理
- Android取手机、系统版本号等信息
- 可直接选择月度和年度的Ext DateField
- input等不可选
- SAP 取月度期初库存和月度期末库存(历史库存)
- SAP 取月度期初库存和月度期末库存(历史库存)
- 新书推荐-罗刚君新著:Excel 2007函数案例速查宝典(双色版)
- 人生道理之一
- 接口基础
- 几种VC++数据库开发技术的相对比较
- 从会计凭证中取日余额-日报
- 取月度会计科目余额等信息(可选年度范围)-月报
- JavaFX
- operator问题
- VS2008问题 recv函数问题
- 图形用户界面 万年历代码
- 用汇编实现跨越类中非static函数的线程回调
- ActiveReport使用总结
- IIS 根本就没有启动
- 用MFC ODBC操作Access数据库