***********************************************************************
* Title : ZFIR102 *
* Application : FI *
* Subject : 现金流量表 *
* Requested by : 财务部 *
* Execution : any time *
* Ref no: : *
* Author : ABAP30/ABAP20 *
* Req Date : 20151103 *
***********************************************************************
* *
***********************************************************************
***********************************************************************
* 增强1.FBCJ(现金日记账) 财务凭证过账保存BSEG同时,用业务交易从自建表 *
* 关联原因代码将原因代码直接存入BSEG表, *
* GBB1 替代实现, *
* 2.业务交易 原因代码关联表 ZFIT102. *
* *
*1.取数:按照 年度,公司代码,科目 = 1001*&1002*. *
* 会计期间 取数公司代码货币计金额(BSEG-DMBTR)根据项目类型对应原因代码
* 按类型合计DMBTR,
*
*2.以固定格式,ALV list显示报表( 6列、35行 )
*
***********************************************************************
* MODIFICATIONS (latest entry at the top) *
* ------------------------------------------------------------------- *
* REL DATE NAME (COMPANY) DESCRIPTION TASK-NO *
* --- ---- ---- --------- ----------- ------- *
* *
***********************************************************************
REPORT ZFIR054 MESSAGE-ID ZMM_001
LINE-COUNT 130
LINE-SIZE 300.
*----------------------------------------------------------------------
* TYPE-POOLS
*----------------------------------------------------------------------
TYPE-POOLS: SLIS.
"相关表引用声明
TABLES:BKPF,
BSEG,
T001,
TF189.
*----------------------------------------------------------------------
* Internal table
*----------------------------------------------------------------------
*&ALV
DATA: BEGIN OF GT_DATA OCCURS 0,
TEXT_XM TYPE STRING,
LINE_XM TYPE STRING,
DMBTR LIKE BSEG-DMBTR,"项目金额-BSEG
TEXT_BC TYPE STRING,
LINE_BC TYPE STRING,
HSL00 LIKE FAGLFLEXT-HSL01,"补充金额-FAGLFLEXT
SEL TYPE C,
END OF GT_DATA.
DATA:WA_DATA LIKE GT_DATA.
DATA: BEGIN OF GT_REGUP OCCURS 0,
VBLNR TYPE REGUP-VBLNR,
BUKRS TYPE REGUP-BUKRS,
* VBLNR TYPE REGUP-VBLNR,
BELNR TYPE REGUP-BELNR,
GJAHR TYPE REGUP-GJAHR,
BUZEI TYPE REGUP-BUZEI,
DMBTR TYPE REGUP-DMBTR,
* vbeln type
END OF GT_REGUP.
DATA:LT_REGUP_ADD LIKE TABLE OF GT_REGUP WITH HEADER LINE.
*&现金流量表-项目
DATA:BEGIN OF GT_BSEG OCCURS 0,
BUKRS LIKE BSEG-BUKRS,
BELNR LIKE BSEG-BELNR,
BUZEI LIKE BSEG-BUZEI,
GJAHR LIKE BSEG-GJAHR,"会计年度
RSTGR LIKE BSEG-RSTGR,"原因代码
HKONT LIKE BSEG-HKONT,"科目
SHKZG LIKE BSEG-SHKZG,"借贷方(S(+) H(-))
DMBTR LIKE BSEG-DMBTR,"项目金额-BSEG
EBELN LIKE BSEG-EBELN,
*BUKRS
*BELNR
*GJAHR
*BUZEI
*&->add on 20160324 BY ABAP30 req by fi_ljj.
KOART LIKE BSEG-KOART,
LIFNR LIKE BSEG-LIFNR,
*&->end add.
END OF GT_BSEG.
DATA:WA_BSEG LIKE GT_BSEG.
*&1000版本
DATA:BEGIN OF GT_1000 OCCURS 0,
ZZNUMB LIKE ZFI030_TEXT-ZZNUMB,
ZZTEXT LIKE ZFI030_TEXT-ZZTEXT,
ZZSUM LIKE ZFI030_TEXT-ZZSUM,
ZZTXPE LIKE ZFI030_TEXT-ZZTXPE,
HSLVT LIKE FAGLFLEXT-HSLVT,
HSL01 LIKE FAGLFLEXT-HSL01,
HSL02 LIKE FAGLFLEXT-HSL01,
HSL03 LIKE FAGLFLEXT-HSL01,
HSL04 LIKE FAGLFLEXT-HSL01,
HSL05 LIKE FAGLFLEXT-HSL01,
HSL06 LIKE FAGLFLEXT-HSL01,
HSL07 LIKE FAGLFLEXT-HSL01,
HSL08 LIKE FAGLFLEXT-HSL01,
HSL09 LIKE FAGLFLEXT-HSL01,
HSL10 LIKE FAGLFLEXT-HSL01,
HSL11 LIKE FAGLFLEXT-HSL01,
HSL12 LIKE FAGLFLEXT-HSL01,
HSL01_Y LIKE FAGLFLEXT-HSL01,
LIN TYPE SY-TABIX,
END OF GT_1000.
DATA:WA_1000 LIKE GT_1000.
DATA: BEGIN OF GT_FAGT OCCURS 0,
RYEAR LIKE FAGLFLEXT-RYEAR,
RACCT LIKE FAGLFLEXT-RACCT,
DRCRK LIKE FAGLFLEXT-DRCRK,"借方/贷方标识
HSLVT LIKE FAGLFLEXT-HSLVT,
HSL01 LIKE FAGLFLEXT-HSLVT,
HSL02 LIKE FAGLFLEXT-HSLVT,
HSL03 LIKE FAGLFLEXT-HSLVT,
HSL04 LIKE FAGLFLEXT-HSLVT,
HSL05 LIKE FAGLFLEXT-HSLVT,
HSL06 LIKE FAGLFLEXT-HSLVT,
HSL07 LIKE FAGLFLEXT-HSLVT,
HSL08 LIKE FAGLFLEXT-HSLVT,
HSL09 LIKE FAGLFLEXT-HSLVT,
HSL10 LIKE FAGLFLEXT-HSLVT,
HSL11 LIKE FAGLFLEXT-HSLVT,
HSL12 LIKE FAGLFLEXT-HSLVT,
HSL13 LIKE FAGLFLEXT-HSLVT,
HSL14 LIKE FAGLFLEXT-HSLVT,
HSL15 LIKE FAGLFLEXT-HSLVT,
HSL16 LIKE FAGLFLEXT-HSLVT,
END OF GT_FAGT.
DATA:WA_FAGT LIKE GT_FAGT.
*&ADD
DATA:BEGIN OF GT_TAB OCCURS 0,
ZZSUM LIKE ZFI030-ZZSUM, "汇总栏位
ZZNUMB LIKE ZFI030-ZZNUMB, "栏位编号
HKONT LIKE ZFI030-HKONT, "总账科目
HSLVT LIKE FAGLFLEXT-HSLVT,
HSL01 LIKE FAGLFLEXT-HSL01,
HSL02 LIKE FAGLFLEXT-HSL01,
HSL03 LIKE FAGLFLEXT-HSL01,
HSL04 LIKE FAGLFLEXT-HSL01,
HSL05 LIKE FAGLFLEXT-HSL01,
HSL06 LIKE FAGLFLEXT-HSL01,
HSL07 LIKE FAGLFLEXT-HSL01,
HSL08 LIKE FAGLFLEXT-HSL01,
HSL09 LIKE FAGLFLEXT-HSL01,
HSL10 LIKE FAGLFLEXT-HSL01,
HSL11 LIKE FAGLFLEXT-HSL01,
HSL12 LIKE FAGLFLEXT-HSL01,
HSL01_Y LIKE FAGLFLEXT-HSL01,
* DMBTR1 LIKE FAGLFLEXT-HSLVT, "当月
* DMBTR2 LIKE FAGLFLEXT-HSLVT, "本年
END OF GT_TAB.
DATA:WA_TAB LIKE GT_TAB.
DATA:GT_SUM_C LIKE TABLE OF GT_TAB WITH HEADER LINE,
GT_SUM_S LIKE TABLE OF GT_TAB WITH HEADER LINE.
FIELD-SYMBOLS:<FN1>,
<FN2>,
<FN1_QC>,
<FN2_QC>.
DATA:GV_BZ_HSL00 LIKE FAGLFLEXT-HSL01.
*----------------------------------------------------------------------
* Variants
*----------------------------------------------------------------------
DATA: G_LEN TYPE I, "内表行数
G_TABIX TYPE SY-TABIX.
*---------------------------------------------------------------------*
* Data parameters for alv report use
*---------------------------------------------------------------------*
DATA: G_PROGRAM TYPE SY-REPID,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GS_LAYOUT1 TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
GS_FIELDCAT LIKE LINE OF GT_FIELDCAT,
GT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,
GS_FIELDCAT1 LIKE LINE OF GT_FIELDCAT,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
WA_FIELDCAT1 TYPE SLIS_FIELDCAT_ALV,
IT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE,
GT_EVENT TYPE SLIS_T_EVENT,
WA_EVENT TYPE SLIS_ALV_EVENT.
DATA: GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME
VALUE 'ALV_TOP_OF_PAGE'.
************************************************************************
* Select Screen *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_BUKRS LIKE BKPF-BUKRS OBLIGATORY DEFAULT '3000',
P_GJAHR LIKE BKPF-GJAHR DEFAULT SY-DATUM(4) OBLIGATORY.
SELECT-OPTIONS:S_MONAT FOR BKPF-MONAT DEFAULT SY-DATUM+4(2) NO-EXTENSION OBLIGATORY MODIF ID R01.
PARAMETERS:P_MONAT LIKE BKPF-MONAT DEFAULT SY-DATUM+4(2) NO-DISPLAY."MODIF ID R02
PARAMETERS:P_PRINT AS CHECKBOX MODIF ID R02.
PARAMETERS:P_EXCEL AS CHECKBOX MODIF ID R02.
PARAMETERS:FN1 LIKE RLGRAP-FILENAME MEMORY ID M01 MODIF ID R02 DEFAULT 'C:\' NO-DISPLAY.
*SELECT-OPTIONS:S_HKONT FOR BSEG-HKONT ."NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK BLK1.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:RB_01 RADIOBUTTON GROUP RB DEFAULT 'X' USER-COMMAND RB."3000版本
SELECTION-SCREEN COMMENT 3(12) TEXT-B01 MODIF ID RZ2.
PARAMETERS:P_3000 AS CHECKBOX.
SELECTION-SCREEN COMMENT 18(10) TEXT-B02 MODIF ID RZ2.
SELECTION-SCREEN END OF LINE.
PARAMETERS:RB_02 RADIOBUTTON GROUP RB. "1000 版本
PARAMETERS:RB_03 NO-DISPLAY."集团版本
*SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-003.
*PARAMETERS:RB_ RADIOBUTTON GROUP RB . "1000 版本
*SELECTION-SCREEN END OF BLOCK B2.
SELECTION-SCREEN END OF BLOCK B1.
*&------------------------------------------------------------------*
*& INITIALIZATION
*&------------------------------------------------------------------*
INITIALIZATION.
*&初始化数据
PERFORM FRM_INIT_DATA.
AT SELECTION-SCREEN OUTPUT.
CASE 'X'.
WHEN RB_01.
LOOP AT SCREEN.
IF SCREEN-GROUP1 EQ 'R02'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
WHEN RB_02 OR RB_03.
LOOP AT SCREEN.
IF SCREEN-GROUP1 EQ 'R01'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
WHEN OTHERS.
ENDCASE.
*&------------------------------------------------------------------*
*& AT SELECTION-SCREEN
*&------------------------------------------------------------------*
AT SELECTION-SCREEN.
PERFORM FRM_CHECK_AUTHOR.
*&------------------------------------------------------------------*
*& START-OF-SELECTION
*&------------------------------------------------------------------*
START-OF-SELECTION.
CASE 'X'.
WHEN RB_01.
PERFORM FRM_GET_DATA.
PERFORM FRM_ALV_OUTPUT.
WHEN RB_02.
PERFORM FRM_GET_1000.
IF P_PRINT = 'X'.
* PERFORM FRM_ALV_OUTPUT_3000.
PERFORM FRM_PRINT_DATA.
ELSE.
IF P_EXCEL = 'X'.
PERFORM FRM_EXCEL_OUT.
PERFORM FRM_WRITE_OUT.
ELSE.
PERFORM FRM_WRITE_OUT.
ENDIF.
ENDIF.
WHEN RB_03.
ENDCASE.
END-OF-SELECTION.
*& page header
TOP-OF-PAGE.
PERFORM DISPLAY_HEADER.
*& page footer
END-OF-PAGE.
*&------------------------------------------------------------------*
*& END-OF-SELECTION
*&------------------------------------------------------------------*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_AUTHOR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_CHECK_AUTHOR .
*&init screen.
CASE 'X'.
WHEN RB_02 OR RB_03.
P_BUKRS = '1000'.
WHEN RB_01.
P_BUKRS = '3000'.
WHEN OTHERS.
ENDCASE.
LOOP AT S_MONAT.
IF S_MONAT-HIGH IS INITIAL.
S_MONAT-HIGH = S_MONAT-LOW.
ENDIF.
IF S_MONAT-LOW IS INITIAL.
S_MONAT-LOW = S_MONAT-HIGH.
ENDIF.
MODIFY S_MONAT.
ENDLOOP.
IF P_EXCEL = 'X' AND P_PRINT = 'X'.
MESSAGE E000(ZMM_001) WITH '不能同时打印并导出' DISPLAY LIKE 'S'.
ENDIF.
ENDFORM. " FRM_CHECK_AUTHOR
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_DATA.
DATA:LT_DA LIKE TABLE OF GT_DATA WITH HEADER LINE.
DATA:BEGIN OF LT_BKPF OCCURS 0,
BUKRS LIKE BKPF-BUKRS,
BELNR LIKE BKPF-BELNR,
GJAHR LIKE BKPF-GJAHR,
BLART LIKE BKPF-BLART,
END OF LT_BKPF.
DATA:LT_BKPF_C LIKE TABLE OF LT_BKPF WITH HEADER LINE.
DATA:LT_BSEG LIKE TABLE OF GT_BSEG WITH HEADER LINE,
LT_BSEG_C LIKE TABLE OF GT_BSEG WITH HEADER LINE,
LT_BSEG_P LIKE TABLE OF GT_BSEG WITH HEADER LINE,
LT_BSEG_BC LIKE TABLE OF GT_BSEG WITH HEADER LINE.
DATA:LT_BSEG_BF LIKE TABLE OF GT_BSEG WITH HEADER LINE.
DATA:LT_BSEG_ADD LIKE TABLE OF GT_BSEG WITH HEADER LINE.
DATA:LV_DMBTR LIKE BSEG-DMBTR,
LV_VAL16 LIKE BSEG-DMBTR,
LV_VAL17 LIKE BSEG-DMBTR,
LV_HSL00 LIKE FAGLFLEXT-HSL01.
DATA:LV_DMBTR_9 LIKE BSEG-DMBTR,
LV_DMBTR_20 LIKE BSEG-DMBTR.
DATA:LV_HSL00_1 LIKE BSEG-DMBTR,
LV_HSL00_2 LIKE BSEG-DMBTR.
RANGES:R_HKONT FOR BSEG-HKONT.
RANGES:R_HKONT1 FOR BSEG-HKONT.
*&项目数据 科目为1001*和1002*的才需要处理.
*& +1022*(银行清算科目)
CLEAR:R_HKONT,R_HKONT[].
R_HKONT(3) = 'ICP'.
R_HKONT-LOW = '001001*'.
APPEND R_HKONT.
R_HKONT(3) = 'ICP'.
R_HKONT-LOW = '001002*'.
APPEND R_HKONT.
*&->start add by ABAP30 on 20160126 REQ BY fi_wxq (项目列添加银行清算科目: 1022*)
R_HKONT(3) = 'ICP'.
R_HKONT-LOW = '001022*'.
APPEND R_HKONT.
*&->end add.
*&S1.BKPF 凭证抬头表取出 年度+期间内的数据
SELECT BUKRS
BELNR
GJAHR
BLART
INTO TABLE LT_BKPF
FROM BKPF
WHERE BUKRS EQ P_BUKRS
AND GJAHR EQ P_GJAHR
AND MONAT IN S_MONAT
AND BSTAT NE 'S'.
*&--->不能加
* AND STBLG = ''"冲销凭证号
* AND BLART NOT IN ('WA','WE','WL').
*&---<
*& WA 发货/ WE 收货/ WI 库存凭证
IF SY-SUBRC NE 0.
MESSAGE S007 DISPLAY LIKE 'E'.
* STOP.
ELSE.
SORT LT_BKPF BY BUKRS BELNR GJAHR.
DELETE ADJACENT DUPLICATES FROM LT_BKPF COMPARING BUKRS BELNR GJAHR.
*&add_lxq on 20151109 排除凭证状态为S的会计凭证
* DELETE LT_BKPF WHERE BSTAT EQ 'S'."S注释项目
*& bseg 四个主键
*BUKRS
*BELNR
*BUZEI
*GJAHR
*&S2.取BSEG 凭证金额
SELECT BUKRS
BELNR
BUZEI
GJAHR
RSTGR
HKONT
SHKZG
DMBTR
EBELN
KOART
LIFNR
INTO TABLE LT_BSEG
* INTO CORRESPONDING FIELDS OF TABLE LT_BSEG
FROM BSEG
FOR ALL ENTRIES IN LT_BKPF
WHERE BUKRS EQ LT_BKPF-BUKRS
AND BELNR EQ LT_BKPF-BELNR
AND GJAHR EQ LT_BKPF-GJAHR.
* AND ( HKONT LIKE '001001%' OR HKONT LIKE '001002%' ).
ENDIF.
*&for test
CLEAR:R_HKONT1,R_HKONT1[].
R_HKONT1(3) = 'IBT'.
R_HKONT1-LOW = '0014020101'. "'001402*'.
R_HKONT1-HIGH = '0014129999'. "'001412*'.
APPEND R_HKONT1.
LT_BSEG_BF[] = LT_BSEG[].
DELETE LT_BSEG_BF WHERE HKONT NOT IN R_HKONT1.
*&S3.汇总本位币金额 BSEG-DMBTR(借方为S(+) ,贷方为H(-),)
LOOP AT LT_BSEG.
*"WHERE HKONT IN R_HKONT.
*&S3.1.项目列 通过原因代码汇总,+科目为1001*和1002*(已加001022*)的才需要处理.
IF LT_BSEG-HKONT IN R_HKONT.
GT_BSEG-RSTGR = LT_BSEG-RSTGR.
IF LT_BSEG-SHKZG EQ 'S'.
GT_BSEG-DMBTR = LT_BSEG-DMBTR.
ELSE.
GT_BSEG-DMBTR = -1 * LT_BSEG-DMBTR.
ENDIF.
COLLECT GT_BSEG.
CLEAR GT_BSEG.
ENDIF.
*&S3.2补充资料列 通过科目汇总,
*&001602*根据期间科目贷方(SHKZG = H)金额汇总 - 16020798、16020704两个科目
IF LT_BSEG-HKONT(6) EQ '001602'.
LT_BSEG_BC-SHKZG = LT_BSEG-SHKZG.
ENDIF.
*&对于项目部分,为后续处理去除科目前导0.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = LT_BSEG-HKONT
IMPORTING
OUTPUT = LT_BSEG_BC-HKONT.
* LT_BSEG_BC-HKONT = LT_BSEG-HKONT.
IF LT_BSEG-SHKZG EQ 'S'.
LT_BSEG_BC-DMBTR = LT_BSEG-DMBTR.
ELSE.
LT_BSEG_BC-DMBTR = -1 * LT_BSEG-DMBTR.
ENDIF.
COLLECT LT_BSEG_BC.
CLEAR LT_BSEG_BC.
ENDLOOP.
SORT GT_BSEG BY RSTGR.
SORT LT_BSEG_BC BY HKONT SHKZG.
" ADD BY ABAP20
MOVE LT_BKPF[] TO LT_BKPF_C[].
*&->add on 20160324 req by FI_LJJ 要把固定资产这块 从“140”转到“240”来
*&-就是从140里面取1601和1604数据转换成240,这步可以做到了是吧 by Lizhihua on 20160323.
* BREAK ABAP30.
*&S1.处理原因代码为 140 的条目
LOOP AT LT_BSEG INTO WA_BSEG WHERE RSTGR = '140'.
READ TABLE LT_BSEG WITH KEY BUKRS = WA_BSEG-BUKRS
BELNR = WA_BSEG-BELNR
GJAHR = WA_BSEG-GJAHR
KOART = 'K'.
IF SY-SUBRC EQ 0.
WA_BSEG-LIFNR = LT_BSEG-LIFNR.
ENDIF.
*& 通过'K'类型财务凭证找 REGUP付款凭证
CLEAR:LT_REGUP_ADD,LT_REGUP_ADD[].
CLEAR:LT_BSEG_ADD,LT_BSEG_ADD[].
CLEAR:LT_REGUP_ADD.
SELECT VBLNR
BUKRS
BELNR
GJAHR
BUZEI
DMBTR
INTO CORRESPONDING FIELDS OF TABLE LT_REGUP_ADD
FROM REGUP
WHERE ZBUKR = WA_BSEG-BUKRS
AND VBLNR = WA_BSEG-BELNR
AND LIFNR = WA_BSEG-LIFNR
AND GJAHR = WA_BSEG-GJAHR.
IF SY-SUBRC EQ 0.
*&通过付款凭证 找回 科目为 A 资产
*& 科目类型 = 'S'的 总分类账科目
SELECT BUKRS
BELNR
BUZEI
GJAHR
RSTGR
HKONT
SHKZG
DMBTR
EBELN
KOART
LIFNR
INTO CORRESPONDING FIELDS OF TABLE LT_BSEG_ADD
FROM BSEG
FOR ALL ENTRIES IN LT_REGUP_ADD
WHERE BUKRS EQ LT_REGUP_ADD-BUKRS
AND BELNR EQ LT_REGUP_ADD-BELNR
AND GJAHR EQ LT_REGUP_ADD-GJAHR
AND KOART EQ 'A'.
DATA:LV_140_240 LIKE BSEG-DMBTR.
IF SY-SUBRC EQ 0.
*&科目为 '1601*' 或 '1604*',则记为 原因代码 = '240'
LOOP AT LT_BSEG_ADD." WHERE HKONT
IF LT_BSEG_ADD-HKONT(6) = '001601' OR LT_BSEG_ADD-HKONT(6) = '001604'.
* IF LT_BSEG-SHKZG EQ 'S'.
* GT_BSEG-DMBTR = LT_BSEG-DMBTR.
* ELSE.
* GT_BSEG-DMBTR = -1 * LT_BSEG-DMBTR.
* ENDIF.
READ TABLE LT_REGUP_ADD WITH KEY BUKRS = LT_BSEG_ADD-BUKRS
BELNR = LT_BSEG_ADD-BELNR
GJAHR = LT_BSEG_ADD-GJAHR.
IF SY-SUBRC EQ 0.
LV_140_240 = LV_140_240 + LT_REGUP_ADD-DMBTR.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
*&->end add.
*&->删除 凭证类型 <> 'ZP'---删除掉 付款过帐 的凭证.
DELETE LT_BKPF_C[] WHERE BLART NE'ZP'.
IF LT_BKPF_C[] IS NOT INITIAL .
SELECT REGUP~VBLNR
REGUP~BUKRS
REGUP~BELNR
REGUP~GJAHR
REGUP~BUZEI
FROM REGUP "来自收付程序的处理项目
INTO CORRESPONDING FIELDS OF TABLE GT_REGUP
FOR ALL ENTRIES IN LT_BKPF_C
WHERE XVORL = ''
AND GJAHR = LT_BKPF_C-GJAHR
AND VBLNR = LT_BKPF_C-BELNR
AND BUKRS = LT_BKPF_C-BUKRS.
* BELNR = LT_BKPF-VBLNR AND
* GJAHR = LT_BKPF-GJAHR.
IF GT_REGUP[] IS NOT INITIAL.
*& 取会计凭证
SELECT BUKRS
BELNR
BUZEI
GJAHR
RSTGR
HKONT
SHKZG
DMBTR
EBELN
INTO TABLE LT_BSEG_C
* INTO CORRESPONDING FIELDS OF TABLE LT_BSEG
FROM BSEG
FOR ALL ENTRIES IN GT_REGUP
WHERE BUKRS EQ GT_REGUP-BUKRS
AND BELNR EQ GT_REGUP-BELNR
AND GJAHR EQ GT_REGUP-GJAHR.
*& 取付款凭证
SELECT BUKRS
BELNR
BUZEI
GJAHR
RSTGR
HKONT
SHKZG
DMBTR
EBELN
INTO TABLE LT_BSEG_P
* INTO CORRESPONDING FIELDS OF TABLE LT_BSEG
FROM BSEG
FOR ALL ENTRIES IN GT_REGUP
WHERE BUKRS EQ GT_REGUP-BUKRS
AND BELNR EQ GT_REGUP-VBLNR
AND GJAHR EQ GT_REGUP-GJAHR.
ENDIF.
*BREAK ABAP30.
*&->来自收付程序的处理项目(付款数据处理)
*->use it
LOOP AT GT_REGUP.
AT END OF GJAHR.
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS "汇总1601或16002的科目值
BELNR = GT_REGUP-BELNR HKONT(6) = '001601' .
IF SY-SUBRC NE 0.
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR
HKONT(6) = '001604' .
IF SY-SUBRC = 0.
*& 加上科目 '2202*'
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR
HKONT(6) = '002202' .
IF SY-SUBRC = 0.
LV_VAL16 = LT_BSEG_C-DMBTR + LV_VAL16.
ENDIF.
ENDIF.
ELSE.
*& 加上科目 '2202*'
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR HKONT(6) = '002202' .
IF SY-SUBRC = 0.
LV_VAL16 = LT_BSEG_C-DMBTR + LV_VAL16.
ENDIF.
ENDIF.
READ TABLE LT_BSEG_P WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-VBLNR
HKONT(6) = '001002' .
IF SY-SUBRC = 0 .
"排除0010021702/0010021901
READ TABLE LT_BSEG_P WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-VBLNR HKONT = '0010021702' .
IF SY-SUBRC = 0.
CONTINUE.
ENDIF.
READ TABLE LT_BSEG_P WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-VBLNR HKONT = '0010021901' .
IF SY-SUBRC = 0.
CONTINUE.
ENDIF.
"***************
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR EBELN(3) = '412'."取zac3的采购订单凭证后取002202的金额汇总LV_VAL17
IF SY-SUBRC NE 0.
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR EBELN(3) = '422'."取zaf3的采购订单凭证后取002202的金额汇总LV_VAL17
IF SY-SUBRC = 0.
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR HKONT(6) = '002202' .
IF SY-SUBRC = 0.
LV_VAL17 = LT_BSEG_C-DMBTR + LV_VAL17.
ENDIF.
ENDIF.
ELSE.
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR HKONT(6) = '002202' .
IF SY-SUBRC = 0.
LV_VAL17 = LT_BSEG_C-DMBTR + LV_VAL17.
ENDIF.
ENDIF.
ELSE.
"处理001001开头的科目
READ TABLE LT_BSEG_P WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-VBLNR
HKONT(6) = '001001' .
IF SY-SUBRC = 0 .
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR EBELN(3) = '412'."取zac3的采购订单凭证后取002202的金额汇总LV_VAL17
IF SY-SUBRC NE 0.
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR EBELN(3) = '422'."取zaf3的采购订单凭证后取002202的金额汇总LV_VAL17
IF SY-SUBRC = 0.
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR HKONT(6) = '002202' .
IF SY-SUBRC = 0.
LV_VAL17 = LT_BSEG_C-DMBTR + LV_VAL17.
ENDIF.
ENDIF.
ELSE.
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR HKONT(6) = '002202' .
IF SY-SUBRC = 0.
LV_VAL17 = LT_BSEG_C-DMBTR + LV_VAL17.
ENDIF.
ENDIF.
*&->add by abap30 on 20160128 REQ BY FI_WXQ (添加 科目 = '1022*' 银行清算类科目)
ELSE.
*& 处理001022 开头的科目
READ TABLE LT_BSEG_P WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-VBLNR
HKONT(6) = '001022' .
IF SY-SUBRC = 0 .
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR EBELN(3) = '412'."取zac3的采购订单凭证后取002202的金额汇总LV_VAL17
IF SY-SUBRC NE 0.
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR EBELN(3) = '422'."取zaf3的采购订单凭证后取002202的金额汇总LV_VAL17
IF SY-SUBRC = 0.
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR HKONT(6) = '002202' .
IF SY-SUBRC = 0.
LV_VAL17 = LT_BSEG_C-DMBTR + LV_VAL17.
ENDIF.
ENDIF.
ELSE.
READ TABLE LT_BSEG_C WITH KEY BUKRS = GT_REGUP-BUKRS
BELNR = GT_REGUP-BELNR HKONT(6) = '002202' .
IF SY-SUBRC = 0.
LV_VAL17 = LT_BSEG_C-DMBTR + LV_VAL17.
ENDIF.
ENDIF.
*&->end add.
ENDIF.
ENDIF.
ENDIF.
*
ENDAT.
ENDLOOP.
* LOOP AT GT_REGUP.
* AT END OF GJAHR.
* ENDAT.
* ENDLOOP.
ENDIF.
"END ADD BY ABAP20
"END ADD BY BAIYUZHUANG
*&->行项目写入
*&1 一、经营活动产生的现金流量: ------- /1、将净利润调节为经营活动现金流量
CLEAR:LV_DMBTR,LV_HSL00.
**&test
* LV_DMBTR = '1000'.
* LV_HSL00 = '1000'.
PERFORM FRM_APPEND_DATA USING '一、经营活动产生的现金流量:' '' LV_DMBTR '1、将净利润调节为经营活动现金流量' '' LV_HSL00.
* GT_DATA-TEXT_XM = '一、经营活动产生的现金流量:'.
* GT_DATA-LINE_XM = ''.
* GT_DATA-DMBTR = ''.
* GT_DATA-TEXT_BC = '1、将净利润调节为经营活动现金流量 '.
* GT_DATA-LINE_BC = ''.
* GT_DATA-HSL00 = ''.
* APPEND GT_DATA.
*&2 销售商品、提供劳务收到的现金 1 原因代码101汇总 /
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '101' BINARY SEARCH.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
PERFORM FRM_APPEND_DATA USING '销售商品、提供劳务收到的现金' '1' LV_DMBTR '' '' LV_HSL00.
*&3 收到的税费返还 3 原因代码102汇总 /净利润 57 等于利润表总净利润 (?1) 净利润=6001*+6051*-6401*-6402*-6403*-6601*-6602*-6603*-6701*+6101*+6111*+6301*-6711*-6801*
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '102' BINARY SEARCH.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
* BREAK ABAP30.
*&->start change by ABAP30 on 20160401.
* 净利润
CLEAR:R_HKONT,R_HKONT[].
R_HKONT(3) = 'ICP'.
R_HKONT-LOW = '006*'.
APPEND R_HKONT.
DATA:L_P_J LIKE P_MONAT,
L_PJ_C LIKE P_MONAT,
L_NAME_J TYPE CHAR13,
L_NAME2_J TYPE CHAR13,
L_NAME_QC_J TYPE CHAR13,
L_NAME2_QC_J TYPE CHAR13.
DATA:LT_FAGT LIKE TABLE OF GT_FAGT WITH HEADER LINE.
**&将这个值,改成抓FAGLFLEXT 里的值,006* 科目的,当期的总额,HSL*(月份对应):
*& 净利润栏位取值改为从T表取数据
*& FAGLFLEXT表中取现金的余额汇总 (期余额和期初余额)
*&->start add by ABAP30 on 20160405 req by FI_LJJ
CLEAR:GT_FAGT,GT_FAGT[],
L_P_J ,
L_NAME_J ,
L_NAME2_J ,
L_NAME_QC_J ,
L_NAME2_QC_J.
CLEAR:LV_HSL00.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE GT_FAGT
FROM FAGLFLEXT
WHERE RBUKRS EQ P_BUKRS
AND RACCT IN R_HKONT
AND RYEAR = P_GJAHR
AND RRCTY = '0'.
IF SY-SUBRC EQ 0.
*&Way 1.
*&1.按月汇总
LOOP AT GT_FAGT.
LT_FAGT = GT_FAGT.
CLEAR:LT_FAGT-RACCT,LT_FAGT-DRCRK.
COLLECT LT_FAGT.
ENDLOOP.
CLEAR:GT_FAGT[].
GT_FAGT[] = LT_FAGT[].
CONCATENATE 'GT_FAGT-HSL' S_MONAT-HIGH INTO L_NAME_J.
CONCATENATE 'GT_FAGT-HSL' S_MONAT-LOW INTO L_NAME_QC_J.
L_PJ_C = S_MONAT-HIGH.
LOOP AT GT_FAGT.
*&确定月数
L_P_J = S_MONAT-HIGH - S_MONAT-LOW.
IF S_MONAT-HIGH = S_MONAT-LOW.
CONCATENATE 'GT_FAGT-HSL' S_MONAT-HIGH INTO L_NAME2_QC_J.
ASSIGN (L_NAME2_QC_J) TO <FN1_QC>.
LV_HSL00 = LV_HSL00 + <FN1_QC>.
ELSE.
*&得到当月余额
ASSIGN (L_NAME_J) TO <FN2_QC>.
DO L_P_J TIMES.
IF L_P_J EQ 1.
CONCATENATE 'GT_FAGT-HSL' L_P_J INTO L_NAME2_QC_J.
ASSIGN (L_NAME2_QC_J) TO <FN1_QC>.
<FN2_QC> = <FN2_QC> + <FN1_QC>.
ELSEIF L_P_J GT 1.
*&按月份往前推
L_PJ_C = L_PJ_C - 1.
CONCATENATE 'GT_FAGT-HSL' L_PJ_C INTO L_NAME2_QC_J.
ASSIGN (L_NAME2_QC_J) TO <FN1_QC>.
<FN2_QC> = <FN2_QC> + <FN1_QC>.
ENDIF.
ENDDO.
*&净利润计算:
LV_HSL00 = LV_HSL00 + <FN2_QC>.
ENDIF.
CLEAR:GT_FAGT.
IF <FN1_QC> IS NOT INITIAL.
CLEAR <FN1_QC>.
ENDIF.
IF <FN2_QC> IS NOT INITIAL.
CLEAR <FN2_QC>.
ENDIF.
ENDLOOP.
**&Way 2.
* CONCATENATE 'GT_FAGT-HSL' S_MONAT-HIGH INTO L_NAME_J.
* CONCATENATE 'GT_FAGT-HSL' S_MONAT-LOW INTO L_NAME_QC_J.
** CLEAR:LV_QC_J,LV_QM_J.
* LOOP AT GT_FAGT.
**&确定月数
* L_P_J = S_MONAT-HIGH - S_MONAT-LOW.
**&L1.只查询一个月
* IF S_MONAT-HIGH = S_MONAT-LOW.
* CONCATENATE 'GT_FAGT-HSL' S_MONAT-HIGH INTO L_NAME2_QC_J.
* ASSIGN (L_NAME2_QC_J) TO <FN1_QC>.
* LV_HSL00 = LV_HSL00 + <FN1_QC>.
* ELSE.
**&L2.查询多月:
**&得到当月余额
* ASSIGN (L_NAME_J) TO <FN2_QC>.
* DO L_P_J TIMES.
* IF L_P_J EQ 1.
* CONCATENATE 'GT_FAGT-HSL' L_P_J INTO L_NAME2_QC_J.
* ASSIGN (L_NAME2_QC_J) TO <FN1_QC>.
* <FN2_QC> = <FN2_QC> + <FN1_QC>.
* ELSEIF L_P_J GT 1.
**&按月份往前推
* L_P_J = L_P_J - 1.
* CONCATENATE 'GT_FAGT-HSL' L_P_J INTO L_NAME2_QC_J.
* ASSIGN (L_NAME2_QC_J) TO <FN1_QC>.
* <FN2_QC> = <FN2_QC> + <FN1_QC>.
* ENDIF.
* ENDDO.
**&净利润计算:
* LV_HSL00 = LV_HSL00 + <FN2_QC>.
* ENDIF.
* CLEAR:GT_FAGT.
* IF <FN1_QC> IS NOT INITIAL.
* CLEAR <FN1_QC>.
* ENDIF.
* IF <FN2_QC> IS NOT INITIAL.
* CLEAR <FN2_QC>.
* ENDIF.
* ENDLOOP.
ENDIF.
*&->end add.
* LOOP AT GT_FAGT INTO WA_FAGT WHERE RACCT IN R_HKONT.
* LV_HSL00 = LV_HSL00 + WA_FAGT-DMBTR.
* ENDLOOP.
* LV_HSL00 = LV_HSL00 * -1.
*&->change on 20151110.以6*科目的余额汇总
LOOP AT LT_BSEG_BC WHERE HKONT IN R_HKONT.
LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
ENDLOOP.
LV_HSL00 = LV_HSL00 * -1.
* LOOP AT LT_BSEG_BC.
* IF LT_BSEG_BC-HKONT(4) = '6001'.
* LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
** PERFORM FRM_GET_HSLOO USING LT_BSEG_BC-DMBTR LV_HSL00.
* ENDIF.
**&收入的发生是在贷方,费用的产生是在借方
**&收入类的科目需要* -1.
* LV_HSL00 = LV_HSL00 * -1.
* IF LT_BSEG_BC-HKONT(4) = '6051'.
* LT_BSEG_BC-DMBTR = LT_BSEG_BC-DMBTR * -1.
* LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
* ENDIF.
* IF LT_BSEG_BC-HKONT(4) = '6401'.
* LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
* ENDIF.
* IF LT_BSEG_BC-HKONT(4) = '6402'.
* LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
* ENDIF.
* IF LT_BSEG_BC-HKONT(4) = '6403'.
* LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
* ENDIF.
* IF LT_BSEG_BC-HKONT(4) = '6601'.
* LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
* ENDIF.
* IF LT_BSEG_BC-HKONT(4) = '6602'.
* LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
* ENDIF.
* IF LT_BSEG_BC-HKONT(4) = '6603'.
* LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
* ENDIF.
* IF LT_BSEG_BC-HKONT(4) = '6701'.
* LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
* ENDIF.
* IF LT_BSEG_BC-HKONT(4) = '6101'.
* LT_BSEG_BC-DMBTR = LT_BSEG_BC-DMBTR * -1.
* LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
* ENDIF.
* IF LT_BSEG_BC-HKONT(4) = '6111'.
* LT_BSEG_BC-DMBTR = LT_BSEG_BC-DMBTR * -1.
* LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
* ENDIF.
* IF LT_BSEG_BC-HKONT(4) = '6301'.
* LT_BSEG_BC-DMBTR = LT_BSEG_BC-DMBTR * -1.
* LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
* ENDIF.
* IF LT_BSEG_BC-HKONT(4) = '6711'.
* LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
* ENDIF.
* IF LT_BSEG_BC-HKONT(4) = '6801'.
* LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
* ENDIF.
* ENDLOOP.
PERFORM FRM_APPEND_DATA USING '收到的税费返还' '3' LV_DMBTR '净利润' '57' LV_HSL00.
*4 收到的其他与经营活动有关的现金 8 原因代码103汇总 /加: 资产减值准备 58 001603*根据期间科目余额加总
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '103' BINARY SEARCH.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LOOP AT LT_BSEG_BC WHERE HKONT(4) = '1603'.
LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
ENDLOOP.
* READ TABLE LT_BSEG_BC WITH KEY HKONT(4) = '1603' BINARY SEARCH.
* IF SY-SUBRC EQ 0.
* LV_HSL00 = LT_BSEG_BC-DMBTR.
* ENDIF.
PERFORM FRM_APPEND_DATA USING '收到的其他与经营活动有关的现金' '8' LV_DMBTR '加: 资产减值准备' '58' LV_HSL00.
*5 现金流入小计 9 101~103金额加总 /固定资产折旧、油气资产折耗、生产性生物资产折旧 59 001602*根据期间科目贷方(SHKZG = H)金额加总排除16020798、16020704两个科目
CLEAR:LV_DMBTR,LV_HSL00.
*&取101~103金额加总.
LOOP AT GT_DATA INTO WA_DATA.
AT LAST.
SUM.
LV_DMBTR = WA_DATA-DMBTR.
ENDAT.
ENDLOOP.
*BC->001602*根据期间科目贷方(SHKZG = H)金额加总
LOOP AT LT_BSEG_BC WHERE HKONT(4) = '1602' AND SHKZG = 'H'.
LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
ENDLOOP.
READ TABLE LT_BSEG_BC WITH KEY HKONT = '16020798' BINARY SEARCH.
IF SY-SUBRC EQ 0.
LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
ENDIF.
READ TABLE LT_BSEG_BC WITH KEY HKONT = '16020704' BINARY SEARCH.
IF SY-SUBRC EQ 0.
LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
ENDIF.
*&累积折旧需要显示正数
LV_HSL00 = LV_HSL00 * -1.
*LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING ' 现金流入小计' '9' LV_DMBTR '固定资产折旧、油气资产折耗、生产性生物资产折旧 ' '59' LV_HSL00.
*6 购买商品、接受劳务支付的现金 10 原因代码140汇总 /无形资产摊销 60 001702*根据期间科目余额加总
* BREAK ABAP30.
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '140'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LV_DMBTR = LV_DMBTR * -1.
*&->注释 on 20160324
* LV_DMBTR = LV_DMBTR - LV_VAL16 - LV_VAL17."add by abap20
*BREAK ABAP30.
*&->add by ABAP30 on 20160324. -LV_140_240 (- 固定资产)
IF LV_140_240 NE 0.
LV_DMBTR = LV_DMBTR - LV_140_240.
ENDIF.
*&->end add.
*BC->001702*根据期间科目余额加总
*&->C3.change by rainy on 20151108 改成:无形资产摊销=16020798+16020704
* LOOP AT LT_BSEG_BC WHERE HKONT(4) = '1702'.
* LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
* ENDLOOP.
READ TABLE LT_BSEG_BC WITH KEY HKONT = '16020798'.
IF SY-SUBRC EQ 0.
LV_HSL00 = LT_BSEG_BC-DMBTR.
ENDIF.
READ TABLE LT_BSEG_BC WITH KEY HKONT = '16020704'.
IF SY-SUBRC EQ 0.
LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
ENDIF.
LV_HSL00 = LV_HSL00 * -1.
*LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '购买商品、接受劳务支付的现金 ' '10' LV_DMBTR '无形资产摊销 ' '60' LV_HSL00.
*7 支付给职工以及为职工支付的现金 12 原因代码141汇总 /长期待摊费用摊销 61 001801*根据期间科目余额加总
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '141'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LV_DMBTR = LV_DMBTR * -1.
*BREAK ABAP30.
LOOP AT LT_BSEG_BC WHERE HKONT(4) = '1801'.
LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
ENDLOOP.
* LV_HSL00 = '3'.
*&C4.余额的贷方应该为整数
LV_HSL00 = LV_HSL00 * -1.
*&->start add on 20160323 by ABAP30. req by fi_ljj
*& 61 这一项增加科目:2503*
LOOP AT LT_BSEG_BC WHERE HKONT(4) = '2503'.
LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
ENDLOOP.
*&->end add.
PERFORM FRM_APPEND_DATA USING '支付给职工以及为职工支付的现金 ' '12' LV_DMBTR '长期待摊费用摊销 ' '61' LV_HSL00.
*8 支付的各项税费 13 原因代码142汇总 /处置固定资产、无形资产和其他长期资产的损失(收益以“-”号填列)64 64050303 按照期间余额加总
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '142'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LV_DMBTR = LV_DMBTR * -1.
READ TABLE LT_BSEG_BC WITH KEY HKONT = '64050303' BINARY SEARCH.
IF SY-SUBRC EQ 0.
LV_HSL00 = LT_BSEG_BC-DMBTR.
ENDIF.
*LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '支付的各项税费 ' '13' LV_DMBTR '处置固定资产、无形资产和其他长期资产的损失(收益以“-”号填列) ' '64' LV_HSL00.
* BREAK ABAP30.
BREAK TEST_13.
*9 支付的其他与经营活动有关的现金 18 原因代码143汇总 /固定资产报废损失(收益以“-”号填列) 65 64050301 按照期间余额加总
*BREAK ABAP30.
*&->add by ABAP30 on 20160415.
*(原因代码143汇总*-1 + )
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '143'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LV_DMBTR = LV_DMBTR * -1.
*&->change by ABAP30 on 20160419 (数据不对要调对)
* LV_DMBTR = LV_DMBTR + LV_VAL17."ADD BY ABAP20 (被FI_LZH 反映这个处理有问题 on 20160415)
READ TABLE LT_BSEG_BC WITH KEY HKONT = '64050301' BINARY SEARCH.
IF SY-SUBRC EQ 0.
LV_HSL00 = LT_BSEG_BC-DMBTR.
ENDIF.
*LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '支付的其他与经营活动有关的现金' '18' LV_DMBTR '固定资产报废损失(收益以“-”号填列) ' '65' LV_HSL00.
RANGES:R_RSTGR FOR BSEG-RSTGR.
*10 现金流出小计 20 140~143金额加总 /公允价值变动损失(收益以“-”号填列) 66
CLEAR:LV_DMBTR,LV_HSL00.
CLEAR:R_RSTGR,R_RSTGR[].
*BREAK ABAP30.
*&->start change by ABAP30 on 20160325.
*& 现金流出小计 = line 10 + 12 + 13 + 18.
READ TABLE GT_DATA WITH KEY LINE_XM = '10'.
IF SY-SUBRC EQ 0.
LV_DMBTR = LV_DMBTR + GT_DATA-DMBTR.
ENDIF.
READ TABLE GT_DATA WITH KEY LINE_XM = '12'.
IF SY-SUBRC EQ 0.
LV_DMBTR = LV_DMBTR + GT_DATA-DMBTR.
ENDIF.
READ TABLE GT_DATA WITH KEY LINE_XM = '13'.
IF SY-SUBRC EQ 0.
LV_DMBTR = LV_DMBTR + GT_DATA-DMBTR.
ENDIF.
READ TABLE GT_DATA WITH KEY LINE_XM = '18'.
IF SY-SUBRC EQ 0.
LV_DMBTR = LV_DMBTR + GT_DATA-DMBTR.
ENDIF.
*&->end change.
**&add_lxq 140~143 加总
* R_RSTGR(3) = 'IBT'.
* R_RSTGR-LOW = '140'.
* R_RSTGR-HIGH = '143'.
* APPEND R_RSTGR.
**&取140~143金额加总
* LOOP AT GT_BSEG WHERE RSTGR IN R_RSTGR.
* LV_DMBTR = GT_BSEG-DMBTR + LV_DMBTR.
* ENDLOOP.
** LV_DMBTR = LV_DMBTR * -1.
* LV_DMBTR = LV_DMBTR * -1.
* LV_DMBTR = LV_DMBTR - LV_VAL16."add by abap20
PERFORM FRM_APPEND_DATA USING ' 现金流出小计' '20' LV_DMBTR '公允价值变动损失(收益以“-”号填列)' '66' LV_HSL00.
*11 经营活动产生的现金流量净额 21 现金流入-现金流出 /
CLEAR:LV_DMBTR,LV_HSL00.
CLEAR:LV_DMBTR_9,LV_DMBTR_20.
*&计算 现金流入-现金流出
*&现金流入小计
READ TABLE GT_DATA WITH KEY LINE_XM = '9'.
LV_DMBTR = GT_DATA-DMBTR.
*&现金流出小计
READ TABLE GT_DATA WITH KEY LINE_XM = '20'.
LV_DMBTR = LV_DMBTR - GT_DATA-DMBTR.
PERFORM FRM_APPEND_DATA USING '经营活动产生的现金流量净额 ' '21' LV_DMBTR ' ' '' LV_HSL00.
*12 二、投资活动产生的现金流量 /财务费用(收益以“-”号填列) 67 66031501 按照期间余额加总
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE LT_BSEG_BC WITH KEY HKONT = '66031501' BINARY SEARCH.
IF SY-SUBRC EQ 0.
LV_HSL00 = LT_BSEG_BC-DMBTR.
ENDIF.
*LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '二、投资活动产生的现金流量' '' LV_DMBTR '财务费用(收益以“-”号填列) ' '67' LV_HSL00.
*13 收回投资所收到的现金 22 原因代码201汇总 -/投资损失(收益以“-”号填列) 68 (?2)
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '201'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
* LV_DMBTR = LV_DMBTR * -1."MOD BY ABAP20 CHANGE BY wxq_20151130 201不需要乘-1
PERFORM FRM_APPEND_DATA USING '收回投资所收到的现金' '22' LV_DMBTR '投资损失(收益以“-”号填列) ' '68' LV_HSL00.
*14 取得投资收益所收到的现金 23 原因代码202汇总 -/递延所得税资产减少(增加以“-”号填列) 69 1811*(期初数-期末数->0-DMBTR
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '202'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LOOP AT LT_BSEG_BC WHERE HKONT(4) = '1811'.
LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
ENDLOOP.
LV_HSL00 = 0 - LV_HSL00.
* LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '取得投资收益所收到的现金' '23' LV_DMBTR '递延所得税资产减少(增加以“-”号填列) ' '69' LV_HSL00.
*15 处置固定资产、无形资产和其他长期资产所收回的现金净额 25 原因代码203汇总 /递延所得税负债增加(减少以“-”号填列) 70 2901*(期末数-期初数->DMBTR - 0
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '203'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LOOP AT LT_BSEG_BC WHERE HKONT(4) = '2901'.
LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
ENDLOOP.
*&贷方为 正
LV_HSL00 = LV_HSL00 * -1.
* LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '处置固定资产、无形资产和其他长期资产所收回的现金净额' '25' LV_DMBTR '递延所得税负债增加(减少以“-”号填列) ' '70 ' LV_HSL00.
*16 收到的其他与投资活动有关的现金 28 原因代码204汇总 /存货的减少(增加以“-”号填列) 71 1402*~1412*(期初数-期末数)
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '204'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
CLEAR:R_HKONT,R_HKONT[].
R_HKONT(3) = 'IBT'.
R_HKONT-LOW = '1402*'.
R_HKONT-HIGH = '1412*'.
APPEND R_HKONT.
LOOP AT LT_BSEG_BC WHERE HKONT IN R_HKONT.
LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
ENDLOOP.
LV_HSL00 = 0 - LV_HSL00.
*&add on 20151108 by wxq增加1471*
CLEAR:LV_HSL00_1.
LOOP AT LT_BSEG_BC WHERE HKONT(4) = '1471'.
LV_HSL00_1 = LV_HSL00_1 + LT_BSEG_BC-DMBTR.
ENDLOOP.
LV_HSL00_1 = 0 - LV_HSL00_1.
LV_HSL00 = LV_HSL00 + LV_HSL00_1.
*LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '收到的其他与投资活动有关的现金' '28' LV_DMBTR '存货的减少(增加以“-”号填列) ' '71' LV_HSL00.
*17 现金流入小计 29 201~204金额加总 /经营性应收项目的减少(增加以“-”号填列)72 (1122*+1121*+1123*+1221*+1801*)-1231*期末余额 (期初数-期末数)add on 20151108 by wxq 需要删除1801*
*BREAK ABAP30.
CLEAR:LV_DMBTR,LV_HSL00.
CLEAR:R_RSTGR,R_RSTGR[].
R_RSTGR(3) = 'IBT'.
R_RSTGR-LOW = '201'.
R_RSTGR-HIGH = '204'.
APPEND R_RSTGR.
CLEAR:R_RSTGR.
LOOP AT GT_BSEG WHERE RSTGR IN R_RSTGR.
LV_DMBTR = LV_DMBTR + GT_BSEG-DMBTR.
ENDLOOP.
CLEAR:R_HKONT,R_HKONT[].
DEFINE MCR_RANGE .
R_HKONT(3) = 'ICP'.
R_HKONT-LOW = &1.
* R_HKONT-HIGH = &2.
APPEND R_HKONT.
END-OF-DEFINITION.
MCR_RANGE:'1122*'.
MCR_RANGE:'1121*'.
MCR_RANGE:'1123*'.
MCR_RANGE:'1221*'.
MCR_RANGE:'1801*'.
*A
CLEAR:LV_HSL00_1, LV_HSL00_2.
LOOP AT LT_BSEG_BC WHERE HKONT IN R_HKONT.
LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
ENDLOOP.
LV_HSL00 = 0 - LV_HSL00.
LOOP AT LT_BSEG_BC WHERE HKONT(4) = '1231'.
LV_HSL00_1 = LV_HSL00_1 + LT_BSEG_BC-DMBTR.
ENDLOOP.
LV_HSL00 = LV_HSL00 - LV_HSL00_1.
*&C8-需要删除1801*
LOOP AT LT_BSEG_BC WHERE HKONT(4) = '1801'.
LV_HSL00_2 = LV_HSL00_2 + LT_BSEG_BC-DMBTR.
ENDLOOP.
LV_HSL00 = LV_HSL00 - LV_HSL00_2.
*&->start add on 20160323 by ABAP30. req by fi_ljj
*&->end add.
* LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING ' 现金流入小计' '29' LV_DMBTR '经营性应收项目的减少(增加以“-”号填列) ' '72' LV_HSL00.
*18 购建固定资产、无形资产和其他长期资产所支付的现金 30 原因代码240汇总 /经营性应付项目的增加(减少以“-”号填列)73 经营活动产生的现金流量净额-以上项目加总金额
*&->add by rainy on 20151125 req by fi_wxq
*经营性应付项目的增加(减少以“-”号填列)73 (2202*+2203*+2201*+2211*+2221*+2241*)余额加总乘以-1
*&->end add.
CLEAR:LV_DMBTR,LV_HSL00,
LV_HSL00_1.
READ TABLE GT_BSEG WITH KEY RSTGR = '240'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LV_DMBTR = LV_DMBTR * -1.
" ADD BY ABAP20
* MOVE LT_BKPF[] TO LT_BKPF_C[].
* DELETE LT_BKPF_C[] WHERE BLART ne'ZP'.
* IF LT_BKPF_C[] IS NOT INITIAL .
*
* SELECT REGUP~VBLNR
* REGUP~BUKRS
* REGUP~BELNR
* REGUP~GJAHR
* REGUP~BUZEI FROM REGUP
* INTO CORRESPONDING FIELDS OF TABLE GT_REGUP FOR ALL ENTRIES IN LT_BKPF_C
* WHERE XVORL = '' AND GJAHR = LT_BKPF_C-GJAHR AND VBLNR = LT_BKPF_C-BELNR
* AND BUKRS = LT_BKPF_C-BUKRS.
** BELNR = LT_BKPF-VBLNR AND
** GJAHR = LT_BKPF-GJAHR.
* .
* SELECT BUKRS
* BELNR
* BUZEI
* GJAHR
* RSTGR
* HKONT
* SHKZG
* DMBTR
* INTO TABLE LT_BSEG_C
** INTO CORRESPONDING FIELDS OF TABLE LT_BSEG
* FROM BSEG
* FOR ALL ENTRIES IN GT_REGUP
* WHERE BUKRS EQ GT_REGUP-BUKRS
* AND BELNR EQ GT_REGUP-BELNR
* AND GJAHR EQ GT_REGUP-GJAHR.
IF P_3000 EQ 'X'.
CLEAR:R_HKONT,R_HKONT[].
DEFINE MCR_RANGE .
R_HKONT(3) = 'ICP'.
R_HKONT-LOW = &1.
* R_HKONT-HIGH = &2.
APPEND R_HKONT.
END-OF-DEFINITION.
MCR_RANGE:'2202*'.
MCR_RANGE:'2203*'.
MCR_RANGE:'2201*'.
MCR_RANGE:'2211*'.
MCR_RANGE:'2221*'.
MCR_RANGE:'2241*'.
LOOP AT LT_BSEG_BC WHERE HKONT IN R_HKONT.
LV_HSL00 = LV_HSL00 + LT_BSEG_BC-DMBTR.
ENDLOOP.
LV_HSL00 = 0 - LV_HSL00.
ELSE.
*&BC->经营活动产生的现金流量净额-以上项目加总金额
READ TABLE GT_DATA WITH KEY LINE_XM = '21'.
LV_HSL00 = GT_DATA-DMBTR.
LOOP AT GT_DATA.
AT LAST.
SUM.
LV_HSL00_1 = GT_DATA-HSL00.
ENDAT.
ENDLOOP.
LV_HSL00 = LV_HSL00 - LV_HSL00_1.
ENDIF.
* LV_HSL00 = '3'.
**&->注释 on 20160324.
* IF LV_VAL16 NE 0.
* LV_DMBTR = LV_DMBTR + LV_VAL16.
* ENDIF.
*BREAK ABAP30.
*&->add by ABAP30 on 20160324. +LV_140_240
IF LV_140_240 NE 0.
LV_DMBTR = LV_DMBTR + LV_140_240.
ENDIF.
*&->end add.
PERFORM FRM_APPEND_DATA USING '购建固定资产、无形资产和其他长期资产所支付的现金' '30' LV_DMBTR '经营性应付项目的增加(减少以“-”号填列)' '73' LV_HSL00.
*19 投资所支付的现金 31 原因代码241汇总 - / 其他 74
*&->add by rainy on 20151125 req by fi_wxq.
*&其他 74 经营活动产生的现金流量净额-以上项目加总金额
*&->end add.
*BREAK ABAP30.
CLEAR:LV_DMBTR,LV_HSL00,LV_HSL00_1.
READ TABLE GT_BSEG WITH KEY RSTGR = '241'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
*&add * -1.
LV_DMBTR = LV_DMBTR * -1.
IF P_3000 EQ 'X'.
*&BC->经营活动产生的现金流量净额-以上项目加总金额
READ TABLE GT_DATA WITH KEY LINE_XM = '21'.
LV_HSL00 = GT_DATA-DMBTR.
LOOP AT GT_DATA.
AT LAST.
SUM.
LV_HSL00_1 = GT_DATA-HSL00.
ENDAT.
ENDLOOP.
LV_HSL00 = LV_HSL00 - LV_HSL00_1.
ENDIF.
* LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '投资所支付的现金' '31' LV_DMBTR '其他 ' '74' LV_HSL00.
*20 支付的其他与投资活动有关的现金 35 原因代码242汇总 /
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '242'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
* LV_DMBTR = LV_DMBTR + LV_VAL17." ADD 采购订单的值
LV_DMBTR = LV_DMBTR * -1.
* LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '支付的其他与投资活动有关的现金' '35' LV_DMBTR '' '' LV_HSL00.
*21 现金流出小计 36 240~242金额加总 /
CLEAR:LV_DMBTR,LV_HSL00.
CLEAR:R_RSTGR,R_RSTGR[].
*&->start change by ABAP30 on 20160325.
*&现金流出小计 = line 30+31+35
READ TABLE GT_DATA WITH KEY LINE_XM = '30'.
IF SY-SUBRC = 0.
LV_DMBTR = LV_DMBTR + GT_DATA-DMBTR.
ENDIF.
READ TABLE GT_DATA WITH KEY LINE_XM = '31'.
IF SY-SUBRC = 0.
LV_DMBTR = LV_DMBTR + GT_DATA-DMBTR.
ENDIF.
READ TABLE GT_DATA WITH KEY LINE_XM = '35'.
IF SY-SUBRC = 0.
LV_DMBTR = LV_DMBTR + GT_DATA-DMBTR.
ENDIF.
*&->end change
*& 240~242、
R_RSTGR(3) = 'IBT'.
R_RSTGR-LOW = '240'.
R_RSTGR-HIGH = '242'.
APPEND R_RSTGR.
CLEAR R_RSTGR.
**&计算240~242金额加总
* LOOP AT GT_BSEG WHERE RSTGR IN R_RSTGR.
* LV_DMBTR = GT_BSEG-DMBTR + LV_DMBTR.
* ENDLOOP.
* LV_DMBTR = LV_DMBTR * -1.
* IF LV_VAL16 NE 0.
* LV_DMBTR = LV_DMBTR + LV_VAL16.
* ENDIF.
*LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING ' 现金流出小计' '36' LV_DMBTR '' '' LV_HSL00.
*22 投资活动产生的现金流量净额 37 现金流入-现金流出 /经营活动产生的现金流量净额 75 以上项目汇总
DATA:LV_DMBTR_29 LIKE BSEG-DMBTR,
LV_DMBTR_36 LIKE BSEG-DMBTR.
CLEAR:LV_DMBTR,LV_HSL00.
CLEAR:LV_DMBTR_29,LV_DMBTR_36.
*&金额 = 现金流入-现金流出
*&现金流入
READ TABLE GT_DATA WITH KEY LINE_XM = '29'.
LV_DMBTR_29 = GT_DATA-DMBTR.
*&现金流出
READ TABLE GT_DATA WITH KEY LINE_XM = '36'.
LV_DMBTR_36 = GT_DATA-DMBTR.
LV_DMBTR = LV_DMBTR_29 - LV_DMBTR_36.
*BC->sum
LOOP AT GT_DATA.
AT LAST.
SUM.
LV_HSL00 = GT_DATA-HSL00.
ENDAT.
ENDLOOP.
* LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '投资活动产生的现金流量净额' '37' LV_DMBTR '经营活动产生的现金流量净额' '75' LV_HSL00.
*23 三、 筹资活动产生的现金流量 /2、 不涉及现金收支的投资和筹资活动
CLEAR:LV_DMBTR,LV_HSL00.
LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '三、筹资活动产生的现金流量' '' LV_DMBTR '2、 不涉及现金收支的投资和筹资活动' '' ''.
*24 吸收投资所收到的现金 38 原因代码301汇总 9,336,182.00 /债务转为资本 76
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '301'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '吸收投资所收到的现金' '38' LV_DMBTR '债务转为资本' '76' ''.
*25 借款所收到的现金 40 原因代码302汇总 - /一年内到期的可转换公司债券 77
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '302'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '借款所收到的现金' '40' LV_DMBTR '一年内到期的可转换公司债券' '77' ''.
*26 收到的其他与筹资活动有关的现金 43 原因代码303汇总 /融资租入固定资产 78
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '303'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '收到的其他与筹资活动有关的现金' '43' LV_DMBTR '融资租入固定资产' '78' ''.
*27 现金流入小计 44 301~303金额汇总 /
CLEAR:LV_DMBTR,LV_HSL00.
CLEAR:R_RSTGR,R_RSTGR[].
R_RSTGR(3) = 'IBT'.
R_RSTGR-LOW = '301'.
R_RSTGR-HIGH = '303'.
APPEND R_RSTGR.
CLEAR R_RSTGR.
LOOP AT GT_BSEG WHERE RSTGR IN R_RSTGR.
LV_DMBTR = GT_BSEG-DMBTR + LV_DMBTR.
ENDLOOP.
*&delete.
*LV_DMBTR = LV_DMBTR * -1.
LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING ' 现金流入小计' '44' LV_DMBTR '' '' ''.
*28 偿还债务所支付的现金 45 原因代码340汇总 - /
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '340'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
*&add_lxq * -1
LV_DMBTR = LV_DMBTR * -1.
LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '偿还债务所支付的现金' '45' LV_DMBTR '' '' ''.
*29 分配股利、利润或偿付利息所支付的现金 46 原因代码341汇总 -/3、 现金及现金等价物净增加情况
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '341'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LV_DMBTR = LV_DMBTR * -1.
* LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '分配股利、利润或偿付利息所支付的现金' '46' LV_DMBTR '3、 现金及现金等价物净增加情况' '' ''.
*30 支付的其他与筹资活动有关的现金 52 原因代码342汇总 /现金的期末余额 79 现金的期末余额=资产负债表“货币资金”期末余额(N?)
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '342'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LV_DMBTR = LV_DMBTR * -1.
*&BC-30 1001*+1002*期末余额
CLEAR:R_HKONT,R_HKONT[].
R_HKONT(3) = 'ICP'.
R_HKONT-LOW = '001001*'.
APPEND R_HKONT.
R_HKONT(3) = 'ICP'.
R_HKONT-LOW = '001002*'.
APPEND R_HKONT.
*&->start add by ABAP30 on 20160420 REQ BY fi_LJJ (期末余额/期末余额 添加银行清算科目: 1022*)
R_HKONT(3) = 'ICP'.
R_HKONT-LOW = '001022*'.
APPEND R_HKONT.
*&->end add.
DATA: L_NAME TYPE CHAR13,
L_NAME2 TYPE CHAR13,
L_NAME_QC TYPE CHAR13,
L_NAME2_QC TYPE CHAR13.
*BREAK ABAP30.
DATA:LV_QC LIKE FAGLFLEXT-HSL01,
LV_QM LIKE FAGLFLEXT-HSL01.
DATA:LT_FAGT_QC LIKE TABLE OF GT_FAGT WITH HEADER LINE,
LT_FAGT_QM LIKE TABLE OF GT_FAGT WITH HEADER LINE.
* DATA:LT_10021702 LIKE TABLE OF GT_FAGT WITH HEADER LINE,
* LT_10021901 LIKE TABLE OF GT_FAGT WITH HEADER LINE.
DATA:L_1_QC LIKE P_MONAT,
L_1 LIKE P_MONAT.
CLEAR:GT_FAGT[],LT_FAGT_QC[],LT_FAGT_QM[].
*&add_lxq FAGLFLEXT表中取现金的期末余额和期初余额
SELECT *
INTO CORRESPONDING FIELDS OF TABLE GT_FAGT
FROM FAGLFLEXT
WHERE RBUKRS EQ P_BUKRS
AND RACCT IN R_HKONT
AND RYEAR = P_GJAHR
AND RRCTY = '0'.
IF SY-SUBRC EQ 0.
DELETE GT_FAGT WHERE RACCT EQ '0010021702'.
DELETE GT_FAGT WHERE RACCT EQ '0010021901'.
CLEAR:L_NAME,L_NAME_QC.
L_1_QC = S_MONAT-LOW - 1.
CONCATENATE 'GT_FAGT-HSL' S_MONAT-HIGH INTO L_NAME.
* IF L_1_QC = '00'.
* L_NAME_QC = 'GT_FAGT-HSLVT'.
* ELSE.
CONCATENATE 'GT_FAGT-HSL' L_1_QC INTO L_NAME_QC.
* ENDIF.
* BREAK ABAP30.
BREAK TEST_13.
*&减:现金的期初余额
*& bug-fix by ABAP30 on 20160419 (期初余额取数错误【指针问题】)
CLEAR:LV_QC,LV_QM.
LOOP AT GT_FAGT.
L_1_QC = S_MONAT-LOW - 1.
*&期初取选择的最小值
ASSIGN (L_NAME_QC) TO <FN2_QC>.
IF SY-SUBRC EQ 0.
DO L_1_QC TIMES.
IF L_1_QC GT 1.
*&->change by ABAP30 on 20160422 (期初余额 (当年的第一月期间到选择的前一个期间的金额合计))
*& 按月往前推(取期初不用推)-【需要按月汇总】
L_1_QC = L_1_QC - 1.
CONCATENATE 'GT_FAGT-HSL' L_1_QC INTO L_NAME2_QC.
ASSIGN (L_NAME2_QC) TO <FN1_QC>.
<FN2_QC> = <FN2_QC> + <FN1_QC>.
ENDIF.
ENDDO.
LT_FAGT_QC-HSLVT = <FN2_QC> + GT_FAGT-HSLVT.
ELSE.
LT_FAGT_QC-HSLVT = GT_FAGT-HSLVT.
ENDIF.
APPEND LT_FAGT_QC.
CLEAR:LT_FAGT_QC,GT_FAGT.
ENDLOOP.
LOOP AT GT_FAGT.
*&期末取选择的最大值
L_1 = S_MONAT-HIGH.
ASSIGN (L_NAME) TO <FN2>.
DO S_MONAT-HIGH TIMES.
IF L_1 GT 1.
L_1 = L_1 - 1.
CONCATENATE 'GT_FAGT-HSL' L_1 INTO L_NAME2.
ASSIGN (L_NAME2) TO <FN1>.
<FN2> = <FN2> + <FN1>.
ENDIF.
ENDDO.
*&期末 = 余额结转 + 到当月
LT_FAGT_QM-HSLVT = <FN2> + GT_FAGT-HSLVT.
APPEND LT_FAGT_QM.
CLEAR:LT_FAGT_QM,GT_FAGT.
ENDLOOP.
ENDIF.
CLEAR:LV_QM,LV_QC.
*&20151110-期末余额
LOOP AT LT_FAGT_QM.
AT LAST.
SUM.
LV_QM = LT_FAGT_QM-HSLVT.
ENDAT.
ENDLOOP.
*&20151110-期初余额
LOOP AT LT_FAGT_QC.
AT LAST.
SUM.
LV_QC = LT_FAGT_QC-HSLVT.
ENDAT.
ENDLOOP.
LV_HSL00 = LV_QM.
**& add on 20151108 排除 10021702&10021901
* CLEAR:LV_HSL00_1,LV_HSL00_2.
* READ TABLE LT_BSEG_BC WITH KEY HKONT = '10021702'.
* IF SY-SUBRC EQ 0.
* LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
* ENDIF.
* READ TABLE LT_BSEG_BC WITH KEY HKONT = '10021901'.
* IF SY-SUBRC EQ 0.
* LV_HSL00 = LV_HSL00 - LT_BSEG_BC-DMBTR.
* ENDIF.
* LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '支付的其他与筹资活动有关的现金' '52' LV_DMBTR '现金的期末余额' '79' LV_HSL00.
*31 现金流出小计 53 301~303金额汇总 - /减:现金的期初余额 80 现金的期初余额=资产负债表“货币资金”期初余额(N?)
CLEAR:LV_DMBTR,LV_HSL00.
CLEAR:R_RSTGR,R_RSTGR[].
*&add_lxq 340~342 的汇总
R_RSTGR(3) = 'IBT'.
R_RSTGR-LOW = '340'.
R_RSTGR-HIGH = '342'.
APPEND R_RSTGR.
LOOP AT GT_BSEG WHERE RSTGR IN R_RSTGR.
LV_DMBTR = GT_BSEG-DMBTR + LV_DMBTR.
ENDLOOP.
LV_DMBTR = LV_DMBTR * -1.
LV_HSL00 = LV_QC.
**&BC-31 1001*+1002*期初余额
* CLEAR:R_HKONT,R_HKONT[].
* R_HKONT(3) = 'ICP'.
* R_HKONT-LOW = '1001*'.
* APPEND R_HKONT.
* R_HKONT(3) = 'ICP'.
* R_HKONT-LOW = '1002*'.
* APPEND R_HKONT.
* LOOP AT LT_BSEG_BC WHERE HKONT IN R_HKONT.
* LV_HSL00 = LT_BSEG_BC-DMBTR + LV_HSL00.
* ENDLOOP.
* LV_HSL00 = 0 - LV_HSL00.
*&-> add on 20151108 期初的也不好取。
*LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING ' 现金流出小计' '53' LV_DMBTR '减:现金的期初余额' '80' LV_HSL00.
*32 筹资活动产生的现金流量净额 54 现金流入-现金流出 /加:现金等价物的期末余额 81
DATA:LV_DMBTR_44 LIKE BSEG-DMBTR,
LV_DMBTR_53 LIKE BSEG-DMBTR.
CLEAR:LV_DMBTR,LV_HSL00.
CLEAR:LV_DMBTR_44,LV_DMBTR_53.
*&金额 = 现金流入-现金流出 (44-53)
READ TABLE GT_DATA WITH KEY LINE_XM = '44'.
IF SY-SUBRC EQ 0.
LV_DMBTR_44 = GT_DATA-DMBTR.
ENDIF.
READ TABLE GT_DATA WITH KEY LINE_XM = '53'.
IF SY-SUBRC EQ 0.
LV_DMBTR_53 = GT_DATA-DMBTR.
ENDIF.
*&->20151125加:现金等价物的期末余额 = 现金流入 - 现金流出.
LV_DMBTR = LV_DMBTR_44 - LV_DMBTR_53.
* LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '筹资活动产生的现金流量净额' '54' LV_DMBTR '加:现金等价物的期末余额' '81' ''.
*33 四、 汇率变动对现金流量的影响 55 原因代码400汇总 /减:现金等价物的期初余额 82
CLEAR:LV_DMBTR,LV_HSL00.
READ TABLE GT_BSEG WITH KEY RSTGR = '400'.
IF SY-SUBRC EQ 0.
LV_DMBTR = GT_BSEG-DMBTR.
ENDIF.
LV_HSL00 = '3'.
PERFORM FRM_APPEND_DATA USING '四、 汇率变动对现金流量的影响' '55' LV_DMBTR '减:现金等价物的期初余额' '82' ''.
*34 五、 现金及现金等价物净增加额 56 净额类加总 /现金及现金等价物净增加额 83 现金的期末余额-现金的期初余额
DATA:LV_DMBTR_21 LIKE BSEG-DMBTR,
LV_DMBTR_37 LIKE BSEG-DMBTR,
LV_DMBTR_54 LIKE BSEG-DMBTR,
LV_DMBTR_55 LIKE BSEG-DMBTR.
CLEAR:LV_DMBTR,LV_HSL00.
CLEAR:LV_DMBTR_21,LV_DMBTR_37,LV_DMBTR_54,LV_DMBTR_55.
READ TABLE GT_DATA WITH KEY LINE_XM = '21'.
LV_DMBTR_21 = GT_DATA-DMBTR.
READ TABLE GT_DATA WITH KEY LINE_XM = '37'.
LV_DMBTR_37 = GT_DATA-DMBTR.
READ TABLE GT_DATA WITH KEY LINE_XM = '54'.
LV_DMBTR_54 = GT_DATA-DMBTR.
READ TABLE GT_DATA WITH KEY LINE_XM = '55'.
LV_DMBTR_55 = GT_DATA-DMBTR.
LV_DMBTR = LV_DMBTR_21 + LV_DMBTR_37 + LV_DMBTR_54 + LV_DMBTR_55.
* CLEAR:LV_HSL00_1,LV_HSL00_2.
* READ TABLE GT_DATA WITH KEY LINE_BC = 79.
* LV_HSL00 = GT_DATA-HSL00.
* READ TABLE GT_DATA WITH KEY LINE_BC = 80.
* LV_HSL00 = LV_HSL00 - GT_DATA-HSL00.
LV_HSL00 = LV_QM - LV_QC.
PERFORM FRM_APPEND_DATA USING '五、 现金及现金等价物净增加额 ' '56' LV_DMBTR '现金及现金等价物净增加额' '83' LV_HSL00.
*&add备注:其他=经营性应付项目的增加-(2202*+2203*+2201*+2211*+2221*+2241*)(期末数-期间数)
CLEAR:GV_BZ_HSL00.
READ TABLE GT_DATA WITH KEY LINE_BC = '73'.
GV_BZ_HSL00 = GT_DATA-HSL00.
CLEAR:R_HKONT,R_HKONT[],
LV_HSL00_1.
DEFINE MCR_RANGE .
R_HKONT(3) = 'ICP'.
R_HKONT-LOW = &1.
* R_HKONT-HIGH = &2.
APPEND R_HKONT.
END-OF-DEFINITION.
MCR_RANGE:'2202*'.
MCR_RANGE:'2203*'.
MCR_RANGE:'2201*'.
MCR_RANGE:'2211*'.
MCR_RANGE:'2221*'.
MCR_RANGE:'2241*'.
LOOP AT LT_BSEG_BC WHERE HKONT IN R_HKONT.
LV_HSL00_1 = LV_HSL00_1 + LT_BSEG_BC-DMBTR.
ENDLOOP.
LV_HSL00_1 = LV_HSL00_1 * -1.
GV_BZ_HSL00 = GV_BZ_HSL00 - LV_HSL00_1.
*&条目数
G_LEN = LINES( GT_DATA ).
IF G_LEN EQ 0.
MESSAGE I003 WITH '没有找到符合条件的数据!'.
STOP.
ELSE.
MESSAGE S003 WITH '找到数据条目数:' G_LEN.
ENDIF.
ENDFORM. " FRM_GET_DATA
*&---------------------------------------------------------------------*
*& Form FRM_ALV_OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_ALV_OUTPUT .
DATA:LV_COL TYPE I.
DATA:LV_LINES TYPE I.
DATA:LV_GRID_TITLE TYPE LVC_TITLE.
DATA:LW_DATA LIKE GT_DATA.
DEFINE MAR_ADD_FIELDCAT0.
CLEAR WA_FIELDCAT.
LV_COL = LV_COL + 1.
WA_FIELDCAT-FIELDNAME = &1.
WA_FIELDCAT-SELTEXT_L = &2.
WA_FIELDCAT-COL_POS = LV_COL.
WA_FIELDCAT-KEY = &3.
WA_FIELDCAT-JUST = &4.
WA_FIELDCAT-OUTPUTLEN = &5.
WA_FIELDCAT-NO_OUT = &6.
WA_FIELDCAT-EDIT = &7.
WA_FIELDCAT-NO_ZERO = &8.
WA_FIELDCAT-EMPHASIZE = &9.
* WA_FIELDCAT-EDIT_MASK = &9.
*WA_FIELDCAT-DO_SUM = &8.
*WA_FIELDCAT-NO_ZERO = &9.
*WA_FIELDCAT-EDIT_MASK = &10.
*WA_FIELDCAT-EMPHASIZE = &10.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
END-OF-DEFINITION.
*BREAK ABAP30.
*&->start add by ABAP30 on 20160414 现金流量表 项目栏与补充资料最后一个项目不等时报错-B315
LOOP AT GT_DATA WHERE LINE_XM = '56'.
READ TABLE GT_DATA INTO LW_DATA WITH KEY LINE_BC = '83'.
IF GT_DATA-DMBTR NE LW_DATA-HSL00.
MESSAGE I003 WITH '报表不平!'.
* CONTINUE.
ENDIF.
ENDLOOP.
*&->end add.
*&设定输出格式:
CLEAR GS_LAYOUT.
MOVE: 'X' TO GS_LAYOUT-ZEBRA,
'X' TO GS_LAYOUT-COLWIDTH_OPTIMIZE,
'X' TO GS_LAYOUT-DETAIL_POPUP.
GS_LAYOUT-BOX_FIELDNAME = 'SEL'.
GS_LAYOUT-INFO_FIELDNAME = 'ROWCOLOR'.
*GS_LAYOUT-LIGHTS_FIELDNAME = 'ICON'.
CLEAR:WA_FIELDCAT,GT_FIELDCAT[].
MAR_ADD_FIELDCAT0 :"'LIN' '序号' '' '' '' '' '' '' 'C110' ,
'TEXT_XM' '项目' '' '' '' '' '' '' '' ,
'LINE_XM' '行次' '' '' '' '' '' '' '' ,
'DMBTR' '金额' '' '' '' '' '' '' '',
'TEXT_BC' '补充资料' '' '' '' '' '' '' '' ,
'LINE_BC' '行次' '' '' '' '' '' '' '' ,
'HSL00' '金额' '' '' '' '' '' '' '' .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS' "设定菜单栏
I_CALLBACK_USER_COMMAND = 'USER_COMMAND' "设定对应菜单项及相应事件功能:如双击、保存等
I_SAVE = 'A'
IS_LAYOUT = GS_LAYOUT "输出布局设置
IT_FIELDCAT = GT_FIELDCAT "输出字段列信息内表
I_CALLBACK_HTML_TOP_OF_PAGE = 'HTML_TOP_OF_PAGE'
* I_CALLBACK_HTML_END_OF_LIST = 'HTML_END_OF_PAGE'
I_HTML_HEIGHT_TOP = 26
I_HTML_HEIGHT_END = 8
TABLES
T_OUTTAB = GT_DATA. "需显示的数据内表
* IF P_3000 NE 'X'.
* CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
* EXPORTING
* I_CALLBACK_PROGRAM = SY-CPROG" SY-REPID
* I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
* I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
* I_SAVE = 'A'
* IS_LAYOUT = GS_LAYOUT "输出布局设置
* IT_FIELDCAT = GT_FIELDCAT "输出字段列信息内表
** I_SCREEN_START_COLUMN = 'Report'
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_START_LINE = 0
** I_SCREEN_END_LINE = '10000'
** IR_SALV_LIST_ADAPTER = 'TEST'
** I_CALLBACK_HTML_TOP_OF_PAGE = 'ALV_TOP_OF_PAGE' "list ->没有这个参数
** I_HTML_HEIGHT_TOP = 20
* TABLES
* T_OUTTAB = GT_DATA. "需显示的数据内表
* ELSE.
* ENDIF.
ENDFORM. " FRM_ALV_OUTPUT
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD .
DATA: LR_GRID TYPE REF TO CL_GUI_ALV_GRID,
MYINDEX TYPE SY-TABIX.
* CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
* IMPORTING
* E_GRID = LR_GRID.
* CALL METHOD LR_GRID->CHECK_CHANGED_DATA.
* RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
WHEN '&PRSO'.
PERFORM PRINTDATA.
ENDCASE.
CLEAR R_UCOMM.
ENDFORM. "alv_user_command
*&---------------------------------------------------------------------*
*& Form SET_PF_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->EXTAB text
*----------------------------------------------------------------------*
FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'Z_F103_01'.
ENDFORM. "SET_PF
*&---------------------------------------------------------------------*
*& Form html_top_of_page
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->DOCUMENT text
*----------------------------------------------------------------------*
FORM HTML_TOP_OF_PAGE USING DOCUMENT TYPE REF TO CL_DD_DOCUMENT.
DATA: TEXT TYPE SDYDO_TEXT_ELEMENT.
DATA: S_CONTENTS TYPE STRING.
DATA: POSITION TYPE I.
DATA: C_MONTH TYPE CHAR3.
SEARCH DOCUMENT->HTML_TABLE FOR DOCUMENT->CURSOR.
IF SY-SUBRC EQ 0.
POSITION = SY-TABIX.
*&H1.东莞添威电子制品有限公司
TEXT = '东莞添威电子制品有限公司'.
CONCATENATE '<span align="center" style=" font-weight:bold;"><H3>' TEXT '</H3></span> </DIV>' INTO S_CONTENTS.
CALL METHOD DOCUMENT->HTML_INSERT
EXPORTING
CONTENTS = '<div class=MsoNormal align=center style="text-align:center"> '
CHANGING
POSITION = POSITION.
CALL METHOD DOCUMENT->HTML_INSERT
EXPORTING
CONTENTS = S_CONTENTS
CHANGING
POSITION = POSITION.
ENDIF.
CALL METHOD DOCUMENT->NEW_LINE.
*&H2.现金流量表
TEXT = '现金流量表 会企03表'.
CONCATENATE '<span align="center" style=" font-weight:bold;"><H4>' TEXT '</H4></span> </DIV>' INTO S_CONTENTS.
CALL METHOD DOCUMENT->HTML_INSERT
EXPORTING
CONTENTS = '<div class=MsoNormal align=center style="text-align:center"> '
CHANGING
POSITION = POSITION.
CALL METHOD DOCUMENT->HTML_INSERT
EXPORTING
CONTENTS = S_CONTENTS
CHANGING
POSITION = POSITION.
*&H3.P_GJAHR年度
CONCATENATE P_GJAHR '年度' S_MONAT-LOW '月-' S_MONAT-HIGH '月 单位:元' INTO TEXT.
CONCATENATE '<span align="center" style=" font-weight:bold;"><H5>' TEXT '</H5></span> </DIV>' INTO S_CONTENTS.
CALL METHOD DOCUMENT->HTML_INSERT
EXPORTING
CONTENTS = '<div class=MsoNormal align=center style="text-align:center"> '
CHANGING
POSITION = POSITION.
CALL METHOD DOCUMENT->HTML_INSERT
EXPORTING
CONTENTS = S_CONTENTS
CHANGING
POSITION = POSITION.
**&H3.年度
* CALL METHOD DOCUMENT->ADD_GAP
* EXPORTING
* WIDTH = 30.
* CONCATENATE P_GJAHR '年度' INTO TEXT.
* CALL METHOD DOCUMENT->ADD_TEXT
* EXPORTING
* TEXT = TEXT
* SAP_EMPHASIS = 'Strong'.
*
* CALL METHOD DOCUMENT->ADD_GAP
* EXPORTING
* WIDTH = 30.
* TEXT = '单位:元'.
* CALL METHOD DOCUMENT->ADD_TEXT
* EXPORTING
* TEXT = TEXT
* SAP_EMPHASIS = 'Strong'.
* CONCATENATE P_GJAHR '年' C_MONTH '月' INTO TEXT.
* CALL METHOD DOCUMENT->ADD_TEXT
* EXPORTING
* TEXT = TEXT
* SAP_EMPHASIS = 'Strong'.
*
* CALL METHOD DOCUMENT->ADD_GAP
* EXPORTING
* WIDTH = 13.
*
* TEXT = '单位:元'.
* CALL METHOD DOCUMENT->ADD_TEXT
* EXPORTING
* TEXT = TEXT
* SAP_EMPHASIS = ''.
*
* CALL METHOD DOCUMENT->UNDERLINE. "Draw an underLine
ENDFORM. "HTML_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form html_top_of_page
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->DOCUMENT text
*----------------------------------------------------------------------*
FORM HTML_END_OF_PAGE USING DOCUMENT TYPE REF TO CL_DD_DOCUMENT.
DATA: TEXT TYPE SDYDO_TEXT_ELEMENT,
TEXT_1 TYPE SDYDO_TEXT_ELEMENT.
DATA: S_CONTENTS TYPE STRING.
DATA: POSITION TYPE I.
DATA: LV_BZ_HSL00 LIKE FAGLFLEXT-HSL01.
DATA: LV_JINE TYPE STRING.
*BREAK ABAP30.
CLEAR:LV_JINE.
LV_JINE = GV_BZ_HSL00.
IF LV_JINE IS NOT INITIAL.
TEXT_1 = LV_JINE.
ELSE.
TEXT_1 = '0.00'.
ENDIF.
IF TEXT_1 CS '-'.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = TEXT_1
EXCEPTIONS
OTHERS = 1.
ENDIF.
CONCATENATE '备注:其他 = ' TEXT INTO TEXT SEPARATED BY SPACE.
* TEXT = '备注:其他=经营性应付项目的增加-(2202*+2203*+2201*+2211*+2221*+2241*)(期末数-期间数)'.
CALL METHOD DOCUMENT->ADD_TEXT
EXPORTING
TEXT = TEXT
SAP_EMPHASIS = ''.
CALL METHOD DOCUMENT->ADD_TEXT
EXPORTING
TEXT = TEXT_1
SAP_EMPHASIS = ''.
ENDFORM. "HTML_END_OF_PAGE
*&---------------------------------------------------------------------*
*& Form FRM_INIT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_INIT_DATA .
ENDFORM. " FRM_INIT_DATA
*&---------------------------------------------------------------------*
*& Form FRM_APPEND_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0399 text
* -->P_0400 text
* -->P_0401 text
* -->P_0402 text
* -->P_0403 text
* -->P_0404 text
* GT_DATA-TEXT_XM = '一、经营活动产生的现金流量:'.
* GT_DATA-LINE_XM = ''.
* GT_DATA-DMBTR = ''.
* GT_DATA-TEXT_BC = '1、将净利润调节为经营活动现金流量 '.
* GT_DATA-LINE_BC = ''.
* GT_DATA-HSL00 = ''.
*----------------------------------------------------------------------*
FORM FRM_APPEND_DATA USING VALUE(TEXT_XM)
VALUE(LINE_XM)
VALUE(DMBTR)
VALUE(TEXT_BC)
VALUE(LINE_BC)
VALUE(HSL00).
GT_DATA-TEXT_XM = TEXT_XM.
GT_DATA-LINE_XM = LINE_XM.
GT_DATA-DMBTR = DMBTR.
GT_DATA-TEXT_BC = TEXT_BC.
GT_DATA-LINE_BC = LINE_BC.
GT_DATA-HSL00 = HSL00.
APPEND GT_DATA.
CLEAR:GT_DATA.
ENDFORM. " FRM_APPEND_DATA
*&---------------------------------------------------------------------*
*& Form FRM_GET_1000
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_1000 .
*&取1000公司代码数据 FAGLFLEXT
DATA: L_NAME TYPE CHAR13,
L_NAME2 TYPE CHAR13,
L_YEAR TYPE CHAR13,
L_YEAR2 TYPE CHAR13,
L_1 LIKE P_MONAT,
L_2 LIKE P_MONAT.
DATA: LT_ZFI030 LIKE ZFI030 OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF LT_ITAC OCCURS 0,
ZZSUM LIKE ZFI030-ZZSUM,
ZZNUMB LIKE ZFI030-ZZNUMB,
DMBTR LIKE FAGLFLEXT-HSLVT,
END OF LT_ITAC.
DATA: LT_TAB1 LIKE LT_ITAC OCCURS 0 WITH HEADER LINE,
LT_TAB2 LIKE LT_ITAC OCCURS 0 WITH HEADER LINE,
LT_TAB3 LIKE LT_ITAC OCCURS 0 WITH HEADER LINE,
LT_TAB4 LIKE LT_ITAC OCCURS 0 WITH HEADER LINE.
DATA: L_DMBTR1 LIKE FAGLFLEXT-HSLVT,
L_DMBTR2 LIKE FAGLFLEXT-HSLVT,
L_DMBTR3 LIKE FAGLFLEXT-HSLVT.
DATA: L_WRBTR LIKE FAGLFLEXT-HSLVT.
DATA: L_DMBTR(15) TYPE P DECIMALS 5.
DATA: FLD_NAME TYPE CHAR20.
FIELD-SYMBOLS: <FLD_VALUE> TYPE ANY.
FIELD-SYMBOLS: <FLD_VALUE_S> TYPE ANY.
FIELD-SYMBOLS: <FLD_VALUE_H> TYPE ANY.
DATA:LT_C1_002 LIKE TABLE OF GT_TAB WITH HEADER LINE,
LT_C5_002 LIKE TABLE OF GT_TAB WITH HEADER LINE,
LT_C5_003 LIKE TABLE OF GT_TAB WITH HEADER LINE.
DATA:LT_ZFIT103 LIKE TABLE OF ZFIT103 WITH HEADER LINE.
DATA:BEGIN OF LT_BSIS OCCURS 0,
BUKRS LIKE BSIS-BUKRS,
BELNR LIKE BSIS-BELNR,
GJAHR LIKE BSIS-GJAHR,
BUZEI LIKE BSIS-BUZEI,
HKONT LIKE BSIS-HKONT,
MONAT LIKE BSIS-MONAT,
SHKZG LIKE BSIS-SHKZG,"借贷方(S(+) H(-))
DMBTR LIKE BSIS-DMBTR,"项目金额-BSEG
END OF LT_BSIS.
DATA:BEGIN OF LT_BSIS_S OCCURS 0,
MONAT LIKE BSIS-MONAT,
SHKZG LIKE BSIS-SHKZG,"借贷方(S(+) H(-))
DMBTR LIKE BSIS-DMBTR,"项目金额-BSEG
END OF LT_BSIS_S.
DATA:LT_BSIS_L LIKE TABLE OF LT_BSIS_S WITH HEADER LINE.
DATA:BEGIN OF LT_BSEG OCCURS 0,
BUKRS LIKE BSEG-BUKRS,
BELNR LIKE BSEG-BELNR,
BUZEI LIKE BSEG-BUZEI,
GJAHR LIKE BSEG-GJAHR,"会计年度
RSTGR LIKE BSEG-RSTGR,"原因代码
HKONT LIKE BSEG-HKONT,"科目
SHKZG LIKE BSEG-SHKZG,"借贷方(S(+) H(-))
DMBTR LIKE BSEG-DMBTR,"项目金额-BSEG
END OF LT_BSEG.
RANGES:R_KUNNR FOR KNA1-KUNNR.
RANGES:R_LIFNR FOR LFA1-LIFNR.
RANGES:R_HKONT1 FOR BSEG-HKONT,
R_HKONT2 FOR BSEG-HKONT,
R_HKONT3 FOR BSEG-HKONT,
R_HKONT4 FOR BSEG-HKONT.
CLEAR:R_HKONT1,R_HKONT1[].
R_HKONT1(3) = 'IBT'.
R_HKONT1-LOW = '0060000000'.
R_HKONT1-HIGH = '0069999999'.
APPEND R_HKONT1.
CLEAR:R_HKONT2,R_HKONT2[].
R_HKONT2(3) = 'IBT'.
R_HKONT2-LOW = '0068010000'.
R_HKONT2-HIGH = '0068019999'.
APPEND R_HKONT2.
*BREAK ABAP30.
*&S1.取1000版本数据 GT_1000
SELECT ZZNUMB ZZTEXT ZZSUM ZZTXPE
FROM ZFI030_TEXT
INTO TABLE GT_1000
WHERE ZZTYPE = 'C'.
SORT GT_1000 BY ZZNUMB.
*&S2.取现金流量表对应科目(ZFI030)
SELECT *
FROM ZFI030
INTO CORRESPONDING FIELDS OF TABLE LT_ZFI030
WHERE ZZTYPE = 'C'.
*&B1.不可删除重复
* SORT LT_ZFI030 BY HKONT.
* DELETE ADJACENT DUPLICATES FROM LT_ZFI030 COMPARING HKONT.
IF LT_ZFI030[] IS NOT INITIAL.
*&取T表所有数据
SELECT *
INTO CORRESPONDING FIELDS OF TABLE GT_FAGT
FROM FAGLFLEXT
WHERE RBUKRS = P_BUKRS
AND RYEAR = P_GJAHR
AND RRCTY = '0'.
SORT GT_FAGT BY RACCT.
ENDIF.
DATA:LT_C7_001 LIKE TABLE OF GT_TAB WITH HEADER LINE,
LT_C7_001_SUM LIKE TABLE OF GT_TAB WITH HEADER LINE.
DATA:LV_GJAHR LIKE P_GJAHR.
*&A13.C7-001 期初余额,本年累计的期初余额为上年期末余额
*& 取HSL01 为上年12月的值
LV_GJAHR = P_GJAHR."change by baiyuzhuang
CLEAR:LT_C7_001, LT_C7_001[].
SELECT *
INTO CORRESPONDING FIELDS OF TABLE LT_C7_001
FROM FAGLFLEXT AS A
JOIN ZFI030 AS B
ON A~RACCT EQ B~HKONT
WHERE RBUKRS = P_BUKRS
AND RYEAR = LV_GJAHR
AND RRCTY = '0'
AND ZZNUMB = 'C7-001'."add by baiyuzhuang
IF SY-SUBRC EQ 0.
LOOP AT LT_C7_001.
MOVE-CORRESPONDING LT_C7_001 TO LT_C7_001_SUM.
LT_C7_001_SUM-ZZNUMB = 'C7-001'.
CLEAR : LT_C7_001_SUM-HKONT.
COLLECT LT_C7_001_SUM.
CLEAR LT_C7_001_SUM.
ENDLOOP.
ENDIF.
LV_GJAHR = P_GJAHR - 1.
*&S4.得到 1-12期间的余额,
LOOP AT GT_FAGT.
*&A1.C1-002【Profit before income tax expense】取数逻辑:(60000000到69999999加总)-(68010000到68019999的加总)
*& 计算 C1-002 栏位的值,
IF GT_FAGT-RACCT IN R_HKONT1.
IF GT_FAGT-RACCT IN R_HKONT2.
*&排除科目(68010000到68019999的加总)
ELSE.
MOVE-CORRESPONDING GT_FAGT TO LT_C1_002.
LT_C1_002-HSL01_Y = LT_C1_002-HSL01 + LT_C1_002-HSL02 + LT_C1_002-HSL03 + LT_C1_002-HSL04
+ LT_C1_002-HSL05 + LT_C1_002-HSL06 + LT_C1_002-HSL07 + LT_C1_002-HSL08
+ LT_C1_002-HSL09 + LT_C1_002-HSL10 + LT_C1_002-HSL11 + LT_C1_002-HSL12.
CLEAR:LT_C1_002-ZZSUM,LT_C1_002-ZZNUMB,LT_C1_002-HKONT.
LT_C1_002-ZZNUMB = 'C1-002'.
COLLECT LT_C1_002.
CLEAR LT_C1_002.
ENDIF.
ENDIF.
*&E7.C5-002 增加借款(贷方金额)2501* ‘H’条目汇总
*& 20151117‘H’贷方金额且贷方金额为正,要(*-1)
IF GT_FAGT-RACCT(6) = '002501' AND GT_FAGT-DRCRK = 'H'.
MOVE-CORRESPONDING GT_FAGT TO LT_C5_002.
LT_C5_002-ZZNUMB = 'C5-002'.
LT_C5_002-HSL01_Y = GT_FAGT-HSL01 + GT_FAGT-HSL02 + GT_FAGT-HSL03 + GT_FAGT-HSL04
+ GT_FAGT-HSL05 + GT_FAGT-HSL06 + GT_FAGT-HSL07 + GT_FAGT-HSL08
+ GT_FAGT-HSL09 + GT_FAGT-HSL10 + GT_FAGT-HSL11 + GT_FAGT-HSL12.
COLLECT LT_C5_002.
CLEAR LT_C5_002.
ENDIF.
*&>E8.C5-003 -还款金额(借方金额)2501* ‘S’条目汇总
IF GT_FAGT-RACCT(6) = '002501' AND GT_FAGT-DRCRK = 'S'.
MOVE-CORRESPONDING GT_FAGT TO LT_C5_003.
LT_C5_003-ZZNUMB = 'C5-003'.
LT_C5_003-HSL01_Y = GT_FAGT-HSL01 + GT_FAGT-HSL02 + GT_FAGT-HSL03 + GT_FAGT-HSL04
+ GT_FAGT-HSL05 + GT_FAGT-HSL06 + GT_FAGT-HSL07 + GT_FAGT-HSL08
+ GT_FAGT-HSL09 + GT_FAGT-HSL10 + GT_FAGT-HSL11 + GT_FAGT-HSL12.
COLLECT LT_C5_003.
CLEAR LT_C5_003.
ENDIF.
*&S4.1读取科目对应的余额,/期初结转/当年累积/分月余额,
LOOP AT LT_ZFI030 WHERE HKONT = GT_FAGT-RACCT AND ZZNUMB NE 'C5-003'.
*READ TABLE LT_ZFI030 WITH KEY HKONT = GT_FAGT-RACCT.
* IF SY-SUBRC EQ 0.
GT_TAB-ZZSUM = LT_ZFI030-ZZSUM. "汇总栏位
GT_TAB-ZZNUMB = LT_ZFI030-ZZNUMB."栏位编号
GT_TAB-HKONT = GT_FAGT-RACCT. "总账科目
*&S4.2本年累计
GT_TAB-HSL01_Y = GT_FAGT-HSL01 + GT_FAGT-HSL02 + GT_FAGT-HSL03 + GT_FAGT-HSL04
+ GT_FAGT-HSL05 + GT_FAGT-HSL06 + GT_FAGT-HSL07 + GT_FAGT-HSL08
+ GT_FAGT-HSL09 + GT_FAGT-HSL10 + GT_FAGT-HSL11 + GT_FAGT-HSL12.
*&S4.3用本币计算的结转余额
GT_TAB-HSLVT = GT_FAGT-HSLVT.
GT_TAB-HSL01 = GT_FAGT-HSL01.
GT_TAB-HSL02 = GT_FAGT-HSL02.
GT_TAB-HSL03 = GT_FAGT-HSL03.
GT_TAB-HSL04 = GT_FAGT-HSL04.
GT_TAB-HSL05 = GT_FAGT-HSL05.
GT_TAB-HSL06 = GT_FAGT-HSL06.
GT_TAB-HSL07 = GT_FAGT-HSL07.
GT_TAB-HSL08 = GT_FAGT-HSL08.
GT_TAB-HSL09 = GT_FAGT-HSL09.
GT_TAB-HSL10 = GT_FAGT-HSL10.
GT_TAB-HSL11 = GT_FAGT-HSL11.
GT_TAB-HSL12 = GT_FAGT-HSL12.
* ELSE.
* MOVE-CORRESPONDING GT_FAGT TO GT_TAB.
* GT_TAB-HKONT = GT_FAGT-RACCT. "总账科目
* GT_TAB-HSL01_Y = GT_FAGT-HSL01 + GT_FAGT-HSL02 + GT_FAGT-HSL03 + GT_FAGT-HSL04
* + GT_FAGT-HSL05 + GT_FAGT-HSL06 + GT_FAGT-HSL07 + GT_FAGT-HSL08
* + GT_FAGT-HSL09 + GT_FAGT-HSL10 + GT_FAGT-HSL11 + GT_FAGT-HSL12.
COLLECT GT_TAB.
CLEAR:GT_TAB,LT_ZFI030.
* ENDIF
.
ENDLOOP.
CLEAR:GT_FAGT.
ENDLOOP.
SORT GT_TAB BY ZZSUM ZZNUMB.
CLEAR:GT_SUM_C,GT_SUM_C[],
GT_SUM_S,GT_SUM_S[].
*&change on 2015119 更改汇总方式
*&S5.根据栏位编码汇总金额
LOOP AT GT_TAB.
MOVE-CORRESPONDING GT_TAB TO GT_SUM_C.
"add by abap20 20151120
CLEAR:GT_SUM_C-ZZSUM, GT_SUM_C-HKONT.
COLLECT GT_SUM_C.
CLEAR GT_SUM_C.
MOVE-CORRESPONDING GT_TAB TO GT_SUM_S.
"add by abap20 20151120
IF GT_SUM_S-ZZNUMB = 'C1-006'OR GT_SUM_S-ZZNUMB = 'C1-007'OR GT_SUM_S-ZZNUMB = 'C4-004'
OR GT_SUM_S-ZZNUMB = 'C2-001' OR GT_SUM_S-ZZNUMB = 'C2-003' OR GT_SUM_S-ZZNUMB = 'C2-006'
OR GT_SUM_S-ZZNUMB = 'C3-001' OR GT_SUM_S-ZZNUMB = 'C3-002'
OR GT_SUM_S-ZZNUMB = 'C4-002'
OR GT_SUM_S-ZZNUMB = 'C5-005'
.
GT_SUM_S-HSL01_Y = GT_SUM_S-HSL01_Y * -1.
GT_SUM_S-HSLVT = GT_SUM_S-HSLVT * -1.
GT_SUM_S-HSL01 = GT_SUM_S-HSL01 * -1.
GT_SUM_S-HSL02 = GT_SUM_S-HSL02 * -1.
GT_SUM_S-HSL03 = GT_SUM_S-HSL03 * -1.
GT_SUM_S-HSL04 = GT_SUM_S-HSL04 * -1.
GT_SUM_S-HSL05 = GT_SUM_S-HSL05 * -1.
GT_SUM_S-HSL06 = GT_SUM_S-HSL06 * -1.
GT_SUM_S-HSL07 = GT_SUM_S-HSL07 * -1.
GT_SUM_S-HSL08 = GT_SUM_S-HSL08 * -1.
GT_SUM_S-HSL09 = GT_SUM_S-HSL09 * -1.
GT_SUM_S-HSL10 = GT_SUM_S-HSL10 * -1.
GT_SUM_S-HSL11 = GT_SUM_S-HSL11 * -1.
GT_SUM_S-HSL12 = GT_SUM_S-HSL12 * -1.
ENDIF.
"end add
CLEAR:GT_SUM_S-ZZNUMB, GT_SUM_S-HKONT.
COLLECT GT_SUM_S.
CLEAR GT_SUM_S.
**&A1.C1-002【Profit before income tax expense】取数逻辑:(60000000到69999999加总)-(68010000到68019999的加总)
**& 计算 C1-002 栏位的值,
* IF GT_TAB-HKONT IN R_HKONT1.
* IF GT_TAB-HKONT IN R_HKONT2.
**&排除科目(68010000到68019999的加总)
* ELSE.
* MOVE-CORRESPONDING GT_TAB TO LT_C1_002.
* CLEAR:LT_C1_002-ZZSUM,LT_C1_002-ZZNUMB,LT_C1_002-HKONT.
* LT_C1_002-ZZNUMB = 'C1-002'.
* COLLECT LT_C1_002.
* CLEAR LT_C1_002.
* ENDIF.
* ENDIF.
ENDLOOP.
*BREAK ABAP30.
**&A.C2-004 1122*(针对部分客户)* (-1)
**&计算C2-004 栏位值
CLEAR:LT_ZFIT103,LT_ZFIT103[].
SELECT *
INTO TABLE LT_ZFIT103
FROM ZFIT103.
IF SY-SUBRC EQ 0.
LOOP AT LT_ZFIT103 WHERE ZZNUMB EQ 'C2-004'.
R_KUNNR(3) = 'IEQ'.
R_KUNNR-LOW = LT_ZFIT103-KUNNR.
APPEND R_KUNNR.
CLEAR R_KUNNR.
ENDLOOP.
**&通过BSIS 索引找BSEG
* CLEAR:LT_BSIS,LT_BSIS[].
* SELECT BUKRS BELNR
* GJAHR BUZEI
* HKONT MONAT
* SHKZG DMBTR
* INTO TABLE LT_BSIS
* FROM BSIS
** FOR ALL ENTRIES IN LT_ZFIT103
* WHERE BUKRS EQ P_BUKRS
* AND HKONT LIKE '001122%'
* AND GJAHR EQ P_GJAHR.
* "ADD BY ABAP20 20151120 已请未清都取
* SELECT BUKRS BELNR
* GJAHR BUZEI
* HKONT MONAT
* SHKZG DMBTR
* APPENDING TABLE LT_BSIS
* FROM BSAD
** FOR ALL ENTRIES IN LT_ZFIT103
* WHERE BUKRS EQ P_BUKRS
* AND HKONT LIKE '001122%'
* AND GJAHR EQ P_GJAHR.
* "ADD BY ABAP20 20151120
* SORT LT_BSIS BY BUKRS BELNR GJAHR.
* DELETE ADJACENT DUPLICATES FROM LT_BSIS COMPARING BUKRS BELNR GJAHR.
*
* IF SY-SUBRC EQ 0.
* CLEAR:LT_BSEG,LT_BSEG[].
* SELECT BUKRS BELNR
* BUZEI GJAHR
* RSTGR HKONT
* SHKZG DMBTR
* INTO TABLE LT_BSEG
* FROM BSEG
* FOR ALL ENTRIES IN LT_BSIS
* WHERE BUKRS = LT_BSIS-BUKRS
* AND BELNR = LT_BSIS-BELNR
* AND GJAHR = LT_BSIS-GJAHR
* AND KUNNR IN R_KUNNR.
* SORT LT_BSEG BY BUKRS GJAHR BELNR.
*
* LOOP AT LT_BSIS.
* READ TABLE LT_BSEG WITH KEY BUKRS = LT_BSIS-BUKRS
* GJAHR = LT_BSIS-GJAHR
* BELNR = LT_BSIS-BELNR BINARY SEARCH.
* IF SY-SUBRC <> 0.
* DELETE LT_BSIS.
* CONTINUE.
* ENDIF.
* ENDLOOP.
* ENDIF.
* ENDIF.
**& 按期间汇总 BSIS 金额
* CLEAR:LT_BSIS_S,LT_BSIS_S[].
* LOOP AT LT_BSIS.
* LT_BSIS_S-MONAT = LT_BSIS-MONAT.
* IF LT_BSIS-SHKZG = 'H'.
* LT_BSIS_S-DMBTR = LT_BSIS-DMBTR * -1.
* ELSE.
* LT_BSIS_S-DMBTR = LT_BSIS-DMBTR.
* ENDIF.
* COLLECT LT_BSIS_S.
* CLEAR LT_BSIS_S.
* ENDLOOP.
"ADD BY ABAP20
DATA :LT_KNC1 TYPE TABLE OF KNC1 WITH HEADER LINE.
DATA :LT_KNC1_S TYPE TABLE OF KNC1 WITH HEADER LINE.
SELECT * FROM KNC1 INTO TABLE LT_KNC1 WHERE KUNNR IN R_KUNNR AND GJAHR EQ P_GJAHR AND BUKRS = P_BUKRS.
LOOP AT LT_KNC1.
MOVE LT_KNC1 TO LT_KNC1_S.
LT_KNC1_S-KUNNR = ''.
LT_KNC1_S-ERDAT = ''.
LT_KNC1_S-USNAM = ''.
COLLECT LT_KNC1_S.
CLEAR LT_KNC1_S.
ENDLOOP.
ENDIF.
"END ADD BY ABAP20
*& A6.C2-007 加 2202* (针对部分供应商)【(Decrease)/increase in amounts due to related companies on trade accounts】
*& 计算C2-007 栏位值
DATA:LT_USE LIKE TABLE OF LT_BSIS WITH HEADER LINE.
DATA:L_LAST TYPE C,
L_COUNT TYPE I,
L_NMAX TYPE I.
LOOP AT LT_ZFIT103 WHERE ZZNUMB EQ 'C2-007'.
R_LIFNR(3) = 'IEQ'.
R_LIFNR-LOW = LT_ZFIT103-LIFNR.
APPEND R_LIFNR.
CLEAR R_LIFNR.
ENDLOOP.
LOOP AT LT_ZFI030 WHERE ZZNUMB EQ 'C2-007'.
R_HKONT3(3) = 'IEQ'.
R_HKONT3-LOW = LT_ZFI030-HKONT.
APPEND R_HKONT3.
CLEAR R_HKONT3.
ENDLOOP.
LOOP AT LT_ZFI030 WHERE ZZNUMB EQ 'C2-002'.
R_HKONT4(3) = 'IEQ'.
R_HKONT4-LOW = LT_ZFI030-HKONT.
APPEND R_HKONT4.
CLEAR R_HKONT4.
ENDLOOP.
"ADD BY ABAP20
DATA :LT_LFC1 TYPE TABLE OF LFC1 WITH HEADER LINE.
DATA :LT_LFC1_S TYPE TABLE OF LFC1 WITH HEADER LINE.
SELECT * FROM LFC1 INTO TABLE LT_LFC1 WHERE LIFNR IN R_LIFNR AND GJAHR EQ P_GJAHR AND BUKRS = P_BUKRS.
LOOP AT LT_LFC1.
MOVE LT_LFC1 TO LT_LFC1_S.
LT_LFC1_S-LIFNR = ''.
LT_LFC1_S-ERDAT = ''.
LT_LFC1_S-USNAM = ''.
COLLECT LT_LFC1_S.
CLEAR LT_LFC1_S.
ENDLOOP.
*
* CLEAR:LT_BSIS,LT_BSIS[].
* SELECT BUKRS BELNR
* GJAHR BUZEI
* HKONT MONAT
* SHKZG DMBTR
* INTO TABLE LT_BSIS
* FROM BSIS
* WHERE BUKRS EQ P_BUKRS
* AND HKONT LIKE '002202%'
* AND GJAHR EQ P_GJAHR.
* " ADD BY ABAP20 20151120
* SELECT BUKRS BELNR
* GJAHR BUZEI
* HKONT MONAT
* SHKZG DMBTR
* INTO TABLE LT_BSIS
* FROM BSAD
* WHERE BUKRS EQ P_BUKRS
* AND HKONT LIKE '002202%'
* AND GJAHR EQ P_GJAHR.
* " ADD BY ABAP20 20151120
* SORT LT_BSIS BY BUKRS BELNR GJAHR.
* DELETE ADJACENT DUPLICATES FROM LT_BSIS COMPARING BUKRS BELNR GJAHR.
*
* CLEAR:LT_USE[],LT_USE.
* CLEAR:LT_BSEG,LT_BSEG[].
** LT_USE[] = LT_BSIS[].
* LOOP AT LT_BSIS.
* CLEAR L_LAST.
* AT LAST.
* L_LAST = 'X'.
* ENDAT.
*
* APPEND LT_BSIS TO LT_USE.
* ADD 1 TO L_COUNT.
**&for all entries 后条目数限制,5000(10000也可以取)
* IF L_COUNT = 5000 OR L_LAST = 'X'.
* SELECT BUKRS BELNR
* BUZEI GJAHR
* RSTGR HKONT
* SHKZG DMBTR
* APPENDING TABLE LT_BSEG
* FROM BSEG
* FOR ALL ENTRIES IN LT_BSIS
* WHERE BUKRS EQ LT_BSIS-BUKRS
* AND BELNR EQ LT_BSIS-BELNR
* AND GJAHR EQ LT_BSIS-GJAHR
* AND LIFNR IN R_LIFNR.
* REFRESH LT_USE.
* CLEAR L_COUNT.
* ENDIF.
* ENDLOOP.
* SORT LT_BSEG BY BUKRS GJAHR BELNR.
*
* LOOP AT LT_BSIS.
* READ TABLE LT_BSEG WITH KEY BUKRS = LT_BSIS-BUKRS
* GJAHR = LT_BSIS-GJAHR
* BELNR = LT_BSIS-BELNR BINARY SEARCH.
* IF SY-SUBRC <> 0.
* DELETE LT_BSIS.
* CONTINUE.
* ENDIF.
* ENDLOOP.
*
**& 按期间汇总供应商条件下的科目
* CLEAR:LT_BSIS_L,LT_BSIS_L[].
* LOOP AT LT_BSIS.
* LT_BSIS_L-MONAT = LT_BSIS-MONAT.
* IF LT_BSIS-SHKZG = 'H'.
* LT_BSIS_L-DMBTR = LT_BSIS-DMBTR * -1.
* ELSE.
* LT_BSIS_L-DMBTR = LT_BSIS-DMBTR.
* ENDIF.
* COLLECT LT_BSIS_L.
* CLEAR LT_BSIS_L.
* ENDLOOP.
*BREAK ABAP30.
*&S6.读取对应栏位汇总值到显示内表
LOOP AT GT_1000.
GT_1000-LIN = SY-TABIX.
*&读取编号栏位金额
IF GT_1000-ZZNUMB IS NOT INITIAL AND GT_1000-ZZSUM NE 'C2-002'.
READ TABLE GT_SUM_C WITH KEY ZZNUMB = GT_1000-ZZNUMB.
IF SY-SUBRC EQ 0.
MOVE-CORRESPONDING GT_SUM_C TO GT_1000.
ENDIF.
ENDIF.
*&读取汇总栏位金额
IF GT_1000-ZZSUM IS NOT INITIAL .
READ TABLE GT_SUM_S WITH KEY ZZSUM = GT_1000-ZZSUM.
IF SY-SUBRC EQ 0.
* MOVE-CORRESPONDING GT_SUM_S TO GT_1000.
GT_1000-HSL01_Y = GT_SUM_S-HSL01_Y .
GT_1000-HSLVT = GT_SUM_S-HSLVT.
GT_1000-HSL01 = GT_SUM_S-HSL01.
GT_1000-HSL02 = GT_SUM_S-HSL02.
GT_1000-HSL03 = GT_SUM_S-HSL03.
GT_1000-HSL04 = GT_SUM_S-HSL04.
GT_1000-HSL05 = GT_SUM_S-HSL05.
GT_1000-HSL06 = GT_SUM_S-HSL06.
GT_1000-HSL07 = GT_SUM_S-HSL07.
GT_1000-HSL08 = GT_SUM_S-HSL08.
GT_1000-HSL09 = GT_SUM_S-HSL09.
GT_1000-HSL10 = GT_SUM_S-HSL10.
GT_1000-HSL11 = GT_SUM_S-HSL11.
GT_1000-HSL12 = GT_SUM_S-HSL12.
IF GT_1000-ZZSUM = 'C2'.
READ TABLE GT_SUM_C WITH KEY ZZNUMB = 'C2-002'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y - GT_SUM_C-HSL01_Y .
GT_1000-HSLVT = GT_1000-HSLVT - GT_SUM_C-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 - GT_SUM_C-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 - GT_SUM_C-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 - GT_SUM_C-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 - GT_SUM_C-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 - GT_SUM_C-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 - GT_SUM_C-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 - GT_SUM_C-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 - GT_SUM_C-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 - GT_SUM_C-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 - GT_SUM_C-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 - GT_SUM_C-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 - GT_SUM_C-HSL12.
* MOVE-CORRESPONDING GT_SUM_C TO GT_1000.
ENDIF.
READ TABLE GT_SUM_C WITH KEY ZZNUMB = 'C2-005'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y - GT_SUM_C-HSL01_Y .
GT_1000-HSLVT = GT_1000-HSLVT - GT_SUM_C-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 - GT_SUM_C-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 - GT_SUM_C-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 - GT_SUM_C-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 - GT_SUM_C-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 - GT_SUM_C-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 - GT_SUM_C-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 - GT_SUM_C-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 - GT_SUM_C-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 - GT_SUM_C-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 - GT_SUM_C-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 - GT_SUM_C-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 - GT_SUM_C-HSL12.
* MOVE-CORRESPONDING GT_SUM_C TO GT_1000.
ENDIF.
* READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C2-002'.
* IF SY-SUBRC EQ 0.
* GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y .
* GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
* GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
* GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
* GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
* GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
* GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
* GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
* GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
* GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
* GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
* GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
* GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
* GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
* ENDIF.
READ TABLE GT_SUM_C WITH KEY ZZNUMB = 'C2-004'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y - GT_SUM_C-HSL01_Y .
GT_1000-HSLVT = GT_1000-HSLVT - GT_SUM_C-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 - GT_SUM_C-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 - GT_SUM_C-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 - GT_SUM_C-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 - GT_SUM_C-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 - GT_SUM_C-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 - GT_SUM_C-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 - GT_SUM_C-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 - GT_SUM_C-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 - GT_SUM_C-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 - GT_SUM_C-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 - GT_SUM_C-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 - GT_SUM_C-HSL12.
* MOVE-CORRESPONDING GT_SUM_C TO GT_1000.
ENDIF.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C2-004'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y .
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
ENDIF.
READ TABLE GT_SUM_C WITH KEY ZZNUMB = 'C2-007'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y - GT_SUM_C-HSL01_Y .
GT_1000-HSLVT = GT_1000-HSLVT - GT_SUM_C-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 - GT_SUM_C-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 - GT_SUM_C-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 - GT_SUM_C-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 - GT_SUM_C-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 - GT_SUM_C-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 - GT_SUM_C-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 - GT_SUM_C-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 - GT_SUM_C-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 - GT_SUM_C-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 - GT_SUM_C-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 - GT_SUM_C-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 - GT_SUM_C-HSL12.
* MOVE-CORRESPONDING GT_SUM_C TO GT_1000.
ENDIF.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C2-007'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y .
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
*&>A1.C1-002 (006*加总-6801*)*-1 【Profit before income tax expense】
CASE GT_1000-ZZNUMB.
WHEN 'C1-002'.
READ TABLE LT_C1_002 WITH KEY ZZNUMB = 'C1-002'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = LT_C1_002-HSL01_Y * -1.
GT_1000-HSLVT = LT_C1_002-HSLVT * -1.
GT_1000-HSL01 = LT_C1_002-HSL01 * -1.
GT_1000-HSL02 = LT_C1_002-HSL02 * -1.
GT_1000-HSL03 = LT_C1_002-HSL03 * -1.
GT_1000-HSL04 = LT_C1_002-HSL04 * -1.
GT_1000-HSL05 = LT_C1_002-HSL05 * -1.
GT_1000-HSL06 = LT_C1_002-HSL06 * -1.
GT_1000-HSL07 = LT_C1_002-HSL07 * -1.
GT_1000-HSL08 = LT_C1_002-HSL08 * -1.
GT_1000-HSL09 = LT_C1_002-HSL09 * -1.
GT_1000-HSL10 = LT_C1_002-HSL10 * -1.
GT_1000-HSL11 = LT_C1_002-HSL11 * -1.
GT_1000-HSL12 = LT_C1_002-HSL12 * -1.
CLEAR LT_C1_002.
ENDIF.
*&>A3.C2-002 科目汇总结果*(-1)-C2-004【 Decrease/(increase) in trade receivables】
*& 需要后面单独处理
WHEN 'C2-002'.
* GT_1000-HSL01_Y = GT_1000-HSL01_Y * -1.
* GT_1000-HSLVT = GT_1000-HSLVT * -1.
* GT_1000-HSL01 = GT_1000-HSL01 * -1.
* GT_1000-HSL02 = GT_1000-HSL02 * -1.
* GT_1000-HSL03 = GT_1000-HSL03 * -1.
* GT_1000-HSL04 = GT_1000-HSL04 * -1.
* GT_1000-HSL05 = GT_1000-HSL05 * -1.
* GT_1000-HSL06 = GT_1000-HSL06 * -1.
* GT_1000-HSL07 = GT_1000-HSL07 * -1.
* GT_1000-HSL08 = GT_1000-HSL08 * -1.
* GT_1000-HSL09 = GT_1000-HSL09 * -1.
* GT_1000-HSL10 = GT_1000-HSL10 * -1.
* GT_1000-HSL11 = GT_1000-HSL11 * -1.
* GT_1000-HSL12 = GT_1000-HSL12 * -1.
GT_1000-HSL01_Y = 0.
GT_1000-HSLVT = 0.
GT_1000-HSL01 = 0.
GT_1000-HSL02 = 0.
GT_1000-HSL03 = 0.
GT_1000-HSL04 = 0.
GT_1000-HSL05 = 0.
GT_1000-HSL06 = 0.
GT_1000-HSL07 = 0.
GT_1000-HSL08 = 0.
GT_1000-HSL09 = 0.
GT_1000-HSL10 = 0.
GT_1000-HSL11 = 0.
GT_1000-HSL12 = 0.
* GT_1000-HSLVT = 0.
* GT_1000-HSL01_Y = 0 .
LOOP AT GT_FAGT WHERE RACCT IN R_HKONT4.
LT_BSIS_S-MONAT = 0.
GT_1000-HSLVT = GT_FAGT-HSLVT + GT_1000-HSLVT.
DO 12 TIMES.
LT_BSIS_S-MONAT = LT_BSIS_S-MONAT + 1.
CONCATENATE 'HSL' LT_BSIS_S-MONAT INTO FLD_NAME.
ASSIGN COMPONENT FLD_NAME OF STRUCTURE GT_FAGT TO <FLD_VALUE_S>.
* CONCATENATE 'UM' LT_BSIS_S-MONAT 'H' INTO FLD_NAME.
* ASSIGN COMPONENT FLD_NAME OF STRUCTURE LT_LFC1_S TO <FLD_VALUE_H>.
CONCATENATE 'HSL' LT_BSIS_S-MONAT INTO FLD_NAME.
ASSIGN COMPONENT FLD_NAME OF STRUCTURE GT_1000 TO <FLD_VALUE>.
IF SY-SUBRC = 0.
<FLD_VALUE> = <FLD_VALUE> + <FLD_VALUE_S> .
ELSE.
STOP.
ENDIF.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + <FLD_VALUE_S>.
ENDDO.
* GT_1000-HSL01 = GT_1000-HSL01 + GT_FAGT-HSL01.
ENDLOOP.
* BREAK ABAP20.
*&>A4.C2-004 1122*(针对部分客户)* (-1)【Decrease/(increase) in amounts due from related companies on trade accounts】
*& 针对部分客户,如何处理?
WHEN 'C2-004'.
"MOD BY BAIYUZHUANG
* LOOP AT LT_BSIS_S.
*&<FS> 赋值
* CONCATENATE 'HSL' LT_BSIS_S-MONAT INTO FLD_NAME.
* ASSIGN COMPONENT FLD_NAME OF STRUCTURE GT_1000 TO <FLD_VALUE>.
* IF SY-SUBRC = 0.
* <FLD_VALUE> = LT_BSIS_S-DMBTR.
* ENDIF.
* GT_1000-HSL01_Y = GT_1000-HSL01_Y + LT_BSIS_S-DMBTR.
* CLEAR LT_BSIS_S.
READ TABLE LT_KNC1_S INDEX 1.
IF SY-SUBRC = 0 .
LT_BSIS_S-MONAT = 0.
DO 12 TIMES.
LT_BSIS_S-MONAT = LT_BSIS_S-MONAT + 1.
CONCATENATE 'UM' LT_BSIS_S-MONAT 'S' INTO FLD_NAME.
ASSIGN COMPONENT FLD_NAME OF STRUCTURE LT_KNC1_S TO <FLD_VALUE_S>.
CONCATENATE 'UM' LT_BSIS_S-MONAT 'H' INTO FLD_NAME.
ASSIGN COMPONENT FLD_NAME OF STRUCTURE LT_KNC1_S TO <FLD_VALUE_H>.
CONCATENATE 'HSL' LT_BSIS_S-MONAT INTO FLD_NAME.
ASSIGN COMPONENT FLD_NAME OF STRUCTURE GT_1000 TO <FLD_VALUE>.
IF SY-SUBRC = 0.
<FLD_VALUE> = <FLD_VALUE_H> - <FLD_VALUE_S> .
ENDIF.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + <FLD_VALUE>.
* CLEAR LT_BSIS_S.
ENDDO.
ENDIF.
"END BY BAIYUZHUANG
* ENDLOOP.
*&>A6.C2-007 加 2202* (针对部分供应商)【(Decrease)/increase in amounts due to related companies on trade accounts】
WHEN 'C2-007'.
"BEGIN MOD BY ABAP20
* LOOP AT LT_BSIS_L.
**&<FS> 赋值
* CONCATENATE 'HSL' LT_BSIS_L-MONAT INTO FLD_NAME.
* ASSIGN COMPONENT FLD_NAME OF STRUCTURE GT_1000 TO <FLD_VALUE>.
* IF SY-SUBRC = 0.
* <FLD_VALUE> = LT_BSIS_L-DMBTR.
* ENDIF.
* GT_1000-HSL01_Y = GT_1000-HSL01_Y + LT_BSIS_L-DMBTR.
* CLEAR LT_BSIS_S.
* ENDLOOP.
READ TABLE LT_LFC1_S INDEX 1.
IF SY-SUBRC = 0 .
LT_BSIS_S-MONAT = 0.
DO 12 TIMES.
LT_BSIS_S-MONAT = LT_BSIS_S-MONAT + 1.
CONCATENATE 'UM' LT_BSIS_S-MONAT 'S' INTO FLD_NAME.
ASSIGN COMPONENT FLD_NAME OF STRUCTURE LT_LFC1_S TO <FLD_VALUE_S>.
CONCATENATE 'UM' LT_BSIS_S-MONAT 'H' INTO FLD_NAME.
ASSIGN COMPONENT FLD_NAME OF STRUCTURE LT_LFC1_S TO <FLD_VALUE_H>.
CONCATENATE 'HSL' LT_BSIS_S-MONAT INTO FLD_NAME.
ASSIGN COMPONENT FLD_NAME OF STRUCTURE GT_1000 TO <FLD_VALUE>.
IF SY-SUBRC = 0.
<FLD_VALUE> = <FLD_VALUE_H> - <FLD_VALUE_S> .
ENDIF.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + <FLD_VALUE>.
* CLEAR LT_BSIS_S.
ENDDO.
ENDIF.
* READ TABLE GT_FAGT WITH KEY
LOOP AT GT_FAGT WHERE RACCT IN R_HKONT3.
LT_BSIS_S-MONAT = 0.
DO 12 TIMES.
LT_BSIS_S-MONAT = LT_BSIS_S-MONAT + 1.
CONCATENATE 'HSL' LT_BSIS_S-MONAT INTO FLD_NAME.
ASSIGN COMPONENT FLD_NAME OF STRUCTURE GT_FAGT TO <FLD_VALUE_S>.
* CONCATENATE 'UM' LT_BSIS_S-MONAT 'H' INTO FLD_NAME.
* ASSIGN COMPONENT FLD_NAME OF STRUCTURE LT_LFC1_S TO <FLD_VALUE_H>.
CONCATENATE 'HSL' LT_BSIS_S-MONAT INTO FLD_NAME.
ASSIGN COMPONENT FLD_NAME OF STRUCTURE GT_1000 TO <FLD_VALUE>.
IF SY-SUBRC = 0.
<FLD_VALUE> = <FLD_VALUE> + <FLD_VALUE_S> .
ENDIF.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + <FLD_VALUE_S>.
ENDDO.
ENDLOOP.
*& C2-007本年累计
CLEAR:GT_1000-HSL01_Y.
GT_1000-HSL01_Y = GT_1000-HSL01 + GT_1000-HSL02 + GT_1000-HSL03 + GT_1000-HSL04
+ GT_1000-HSL05 + GT_1000-HSL06 + GT_1000-HSL07 + GT_1000-HSL08
+ GT_1000-HSL09 + GT_1000-HSL10 + GT_1000-HSL11 + GT_1000-HSL12.
"END BY BAIYUZHUANG
*&>9.C5-002 增加借款(贷方金额)2501* FAG*A 表 借贷为‘H’
WHEN 'C5-002'.
READ TABLE LT_C5_002 WITH KEY ZZNUMB = 'C5-002'.
IF SY-SUBRC EQ 0.
MOVE-CORRESPONDING LT_C5_002 TO GT_1000.
CLEAR LT_C5_002.
ENDIF.
*&>10.C5-003 -还款金额(借方金额)2501* FAG*A 表 借贷为‘S’
WHEN 'C5-003'.
READ TABLE LT_C5_003 WITH KEY ZZNUMB = 'C5-003'.
IF SY-SUBRC EQ 0.
MOVE-CORRESPONDING LT_C5_003 TO GT_1000.
CLEAR LT_C5_003.
ENDIF.
*&A13.C7-001 期初余额,本年累计的期初余额为上年期末余额
*&HSL01 为上年12月的值-期末结转值
WHEN 'C7-001'.
READ TABLE GT_SUM_C WITH KEY ZZNUMB = GT_1000-ZZNUMB.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_SUM_C-HSLVT.
READ TABLE LT_C7_001_SUM WITH KEY ZZNUMB = GT_1000-ZZNUMB.
IF SY-SUBRC EQ 0.
* GT_1000-HSL01 = LT_C7_001_SUM-HSL12.
GT_1000-HSL01 = LT_C7_001_SUM-HSLVT.
ENDIF.
GT_1000-HSL02 = GT_SUM_C-HSL01 + GT_1000-HSL01.
GT_1000-HSL03 = GT_SUM_C-HSL02 + GT_1000-HSL02.
GT_1000-HSL04 = GT_SUM_C-HSL03 + GT_1000-HSL03.
GT_1000-HSL05 = GT_SUM_C-HSL04 + GT_1000-HSL04.
GT_1000-HSL06 = GT_SUM_C-HSL05 + GT_1000-HSL05.
GT_1000-HSL07 = GT_SUM_C-HSL06 + GT_1000-HSL06.
GT_1000-HSL08 = GT_SUM_C-HSL07 + GT_1000-HSL07.
GT_1000-HSL09 = GT_SUM_C-HSL08 + GT_1000-HSL08.
GT_1000-HSL10 = GT_SUM_C-HSL09 + GT_1000-HSL09.
GT_1000-HSL11 = GT_SUM_C-HSL10 + GT_1000-HSL10.
GT_1000-HSL12 = GT_SUM_C-HSL11 + GT_1000-HSL11.
GT_1000-HSL01_Y = GT_SUM_C-HSLVT.
CLEAR GT_SUM_C.
ENDIF.
*&C7-001本年累计
* CLEAR:GT_1000-HSL01_Y.
* GT_1000-HSL01_Y = GT_1000-HSL01 + GT_1000-HSL02 + GT_1000-HSL03 + GT_1000-HSL04
* + GT_1000-HSL05 + GT_1000-HSL06 + GT_1000-HSL07 + GT_1000-HSL08
* + GT_1000-HSL09 + GT_1000-HSL10 + GT_1000-HSL11 + GT_1000-HSL12.
*&栏位相加 汇总项……………………………………
*&>11.C5-007 C5系列加总
WHEN OTHERS.
ENDCASE.
**& * -1 处理
**&>A2.C1-004 *(-1)
*IF GT_1000-ZZNUMB = 'C1-004' OR GT_1000-ZZNUMB = 'C1-006' OR GT_1000-ZZNUMB = 'C1-007'.
"MOD BY BAIYUZHUANG
IF GT_1000-ZZNUMB = 'C1-006'OR GT_1000-ZZNUMB = 'C1-007'"OR GT_1000-ZZNUMB = 'C1-004'
OR GT_1000-ZZNUMB = 'C2-001' OR GT_1000-ZZNUMB = 'C2-003' OR GT_1000-ZZNUMB = 'C2-006'
OR GT_1000-ZZNUMB = 'C3-001' OR GT_1000-ZZNUMB = 'C3-002'
OR GT_1000-ZZNUMB = 'C4-002'
OR GT_1000-ZZNUMB = 'C5-005'.
GT_1000-HSL01_Y = GT_1000-HSL01_Y * -1.
GT_1000-HSLVT = GT_1000-HSLVT * -1.
GT_1000-HSL01 = GT_1000-HSL01 * -1.
GT_1000-HSL02 = GT_1000-HSL02 * -1.
GT_1000-HSL03 = GT_1000-HSL03 * -1.
GT_1000-HSL04 = GT_1000-HSL04 * -1.
GT_1000-HSL05 = GT_1000-HSL05 * -1.
GT_1000-HSL06 = GT_1000-HSL06 * -1.
GT_1000-HSL07 = GT_1000-HSL07 * -1.
GT_1000-HSL08 = GT_1000-HSL08 * -1.
GT_1000-HSL09 = GT_1000-HSL09 * -1.
GT_1000-HSL10 = GT_1000-HSL10 * -1.
GT_1000-HSL11 = GT_1000-HSL11 * -1.
GT_1000-HSL12 = GT_1000-HSL12 * -1.
ENDIF.
MODIFY GT_1000.
CLEAR GT_1000.
ENDLOOP.
*BREAK ABAP30.
*&>add on 20151116
*&*&S7.特殊栏位处理-需要相加项目的处理:
LOOP AT GT_1000.
*&>A3.C2-002 科目汇总结果*-1-C2-004【 Decrease/(increase) in trade receivables】
CASE GT_1000-ZZNUMB.
*&营运资金变动前的经验利润 C1-011 = 原始汇总 + C1-002.
WHEN 'C1-011'.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C1-002'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
CLEAR WA_1000.
ENDIF.
*&-C2-004 (相减操作) 【科目汇总结果*-1-C2-004】
WHEN 'C2-002'.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C2-004'.
IF SY-SUBRC EQ 0.
* GT_1000-HSL01_Y = GT_1000-HSL01_Y - WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT * -1 - WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 * -1 - WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 * -1 - WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 * -1 - WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 * -1 - WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 * -1 - WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 * -1 - WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 * -1 - WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 * -1 - WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 * -1 - WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 * -1 - WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 * -1 - WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 * -1 - WA_1000-HSL12.
CLEAR:GT_1000-HSL01_Y.
GT_1000-HSL01_Y = GT_1000-HSL01 + GT_1000-HSL02 + GT_1000-HSL03 + GT_1000-HSL04
+ GT_1000-HSL05 + GT_1000-HSL06 + GT_1000-HSL07 + GT_1000-HSL08
+ GT_1000-HSL09 + GT_1000-HSL10 + GT_1000-HSL11 + GT_1000-HSL12.
CLEAR WA_1000.
ENDIF.
*&>A5.C2-005 科目汇总结果*-1-C2-007 【(Decrease)/increase in trade payables】
WHEN 'C2-005'.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C2-007'.
IF SY-SUBRC EQ 0.
* GT_1000-HSL01_Y = GT_1000-HSL01_Y * -1 - WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT * -1 - WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 * -1 - WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 * -1 - WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 * -1 - WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 * -1 - WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 * -1 - WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 * -1 - WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 * -1 - WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 * -1 - WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 * -1 - WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 * -1 - WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 * -1 - WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 * -1 - WA_1000-HSL12.
CLEAR:GT_1000-HSL01_Y.
GT_1000-HSL01_Y = GT_1000-HSL01 + GT_1000-HSL02 + GT_1000-HSL03 + GT_1000-HSL04
+ GT_1000-HSL05 + GT_1000-HSL06 + GT_1000-HSL07 + GT_1000-HSL08
+ GT_1000-HSL09 + GT_1000-HSL10 + GT_1000-HSL11 + GT_1000-HSL12.
CLEAR WA_1000.
ENDIF.
*&>A7.C2-009 原汇总基础上 + 第15项目(C1-011) 【Cash generated from operations】
WHEN 'C2-009'.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C2-002'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
CLEAR WA_1000.
ENDIF.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C2-005'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
CLEAR WA_1000.
ENDIF.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C1-011'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
CLEAR WA_1000.
ENDIF.
CLEAR:GT_1000-HSL01_Y.
GT_1000-HSL01_Y = GT_1000-HSL01 + GT_1000-HSL02 + GT_1000-HSL03 + GT_1000-HSL04
+ GT_1000-HSL05 + GT_1000-HSL06 + GT_1000-HSL07 + GT_1000-HSL08
+ GT_1000-HSL09 + GT_1000-HSL10 + GT_1000-HSL11 + GT_1000-HSL12.
*&A 20151119 - C3-001 = C1-005 * -1.
WHEN 'C3-001'.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C1-005'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = WA_1000-HSL01_Y * -1.
GT_1000-HSLVT = WA_1000-HSLVT * -1.
GT_1000-HSL01 = WA_1000-HSL01 * -1.
GT_1000-HSL02 = WA_1000-HSL02 * -1.
GT_1000-HSL03 = WA_1000-HSL03 * -1.
GT_1000-HSL04 = WA_1000-HSL04 * -1.
GT_1000-HSL05 = WA_1000-HSL05 * -1.
GT_1000-HSL06 = WA_1000-HSL06 * -1.
GT_1000-HSL07 = WA_1000-HSL07 * -1.
GT_1000-HSL08 = WA_1000-HSL08 * -1.
GT_1000-HSL09 = WA_1000-HSL09 * -1.
GT_1000-HSL10 = WA_1000-HSL10 * -1.
GT_1000-HSL11 = WA_1000-HSL11 * -1.
GT_1000-HSL12 = WA_1000-HSL12 * -1.
CLEAR WA_1000.
ENDIF.
*&A 20151119 - C4-001 = C1-004 * -1.
WHEN 'C4-004'.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C1-004'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = WA_1000-HSL01_Y * -1.
GT_1000-HSLVT = WA_1000-HSLVT * -1.
GT_1000-HSL01 = WA_1000-HSL01 * -1.
GT_1000-HSL02 = WA_1000-HSL02 * -1.
GT_1000-HSL03 = WA_1000-HSL03 * -1.
GT_1000-HSL04 = WA_1000-HSL04 * -1.
GT_1000-HSL05 = WA_1000-HSL05 * -1.
GT_1000-HSL06 = WA_1000-HSL06 * -1.
GT_1000-HSL07 = WA_1000-HSL07 * -1.
GT_1000-HSL08 = WA_1000-HSL08 * -1.
GT_1000-HSL09 = WA_1000-HSL09 * -1.
GT_1000-HSL10 = WA_1000-HSL10 * -1.
GT_1000-HSL11 = WA_1000-HSL11 * -1.
GT_1000-HSL12 = WA_1000-HSL12 * -1.
CLEAR WA_1000.
ENDIF.
*&A 20151119 - C4-007 = C4-004 * c4-007.
WHEN 'C4-007'.
* READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C4-004'.
* IF SY-SUBRC EQ 0.
* GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
* GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
* GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
* GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
* GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
* GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
* GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
* GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
* GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
* GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
* GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
* GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
* GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
* GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
* CLEAR WA_1000.
* ENDIF.
*&>A8.C3-004 原汇总基础上+第24行(C2-009) 【Net cash flows from/(used in) operating activities】
WHEN 'C3-004'.
"ADD BY ABAP20 没有汇总C3-001
* READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C3-001'.
* IF SY-SUBRC EQ 0.
* GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
* GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
* GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
* GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
* GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
* GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
* GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
* GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
* GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
* GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
* GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
* GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
* GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
* GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
* CLEAR WA_1000.
* ENDIF.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C2-009'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
CLEAR WA_1000.
ENDIF.
*&C3004本年累计
CLEAR:GT_1000-HSL01_Y.
GT_1000-HSL01_Y = GT_1000-HSL01 + GT_1000-HSL02 + GT_1000-HSL03 + GT_1000-HSL04
+ GT_1000-HSL05 + GT_1000-HSL06 + GT_1000-HSL07 + GT_1000-HSL08
+ GT_1000-HSL09 + GT_1000-HSL10 + GT_1000-HSL11 + GT_1000-HSL12.
*&>12.C6-001 28+36+44 (C3-004+C4-007+C5-007)
WHEN 'C6-001'.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C3-004'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
CLEAR WA_1000.
ENDIF.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C4-007'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
CLEAR WA_1000.
ENDIF.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C5-007'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
CLEAR WA_1000.
ENDIF.
*&C6-001本年累计
CLEAR:GT_1000-HSL01_Y.
GT_1000-HSL01_Y = GT_1000-HSL01 + GT_1000-HSL02 + GT_1000-HSL03 + GT_1000-HSL04
+ GT_1000-HSL05 + GT_1000-HSL06 + GT_1000-HSL07 + GT_1000-HSL08
+ GT_1000-HSL09 + GT_1000-HSL10 + GT_1000-HSL11 + GT_1000-HSL12.
*&>14.C9-001 46+48+50 (C6-001+C7-001+C8-001)
WHEN 'C9-001'.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C6-001'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
CLEAR WA_1000.
ENDIF.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C7-001'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
CLEAR WA_1000.
ENDIF.
READ TABLE GT_1000 INTO WA_1000 WITH KEY ZZNUMB = 'C8-001'.
IF SY-SUBRC EQ 0.
GT_1000-HSL01_Y = GT_1000-HSL01_Y + WA_1000-HSL01_Y.
GT_1000-HSLVT = GT_1000-HSLVT + WA_1000-HSLVT.
GT_1000-HSL01 = GT_1000-HSL01 + WA_1000-HSL01.
GT_1000-HSL02 = GT_1000-HSL02 + WA_1000-HSL02.
GT_1000-HSL03 = GT_1000-HSL03 + WA_1000-HSL03.
GT_1000-HSL04 = GT_1000-HSL04 + WA_1000-HSL04.
GT_1000-HSL05 = GT_1000-HSL05 + WA_1000-HSL05.
GT_1000-HSL06 = GT_1000-HSL06 + WA_1000-HSL06.
GT_1000-HSL07 = GT_1000-HSL07 + WA_1000-HSL07.
GT_1000-HSL08 = GT_1000-HSL08 + WA_1000-HSL08.
GT_1000-HSL09 = GT_1000-HSL09 + WA_1000-HSL09.
GT_1000-HSL10 = GT_1000-HSL10 + WA_1000-HSL10.
GT_1000-HSL11 = GT_1000-HSL11 + WA_1000-HSL11.
GT_1000-HSL12 = GT_1000-HSL12 + WA_1000-HSL12.
CLEAR WA_1000.
ENDIF.
*&C9-001本年累计
* CLEAR:GT_1000-HSL01_Y.
* GT_1000-HSL01_Y = GT_1000-HSL01 + GT_1000-HSL02 + GT_1000-HSL03 + GT_1000-HSL04
* + GT_1000-HSL05 + GT_1000-HSL06 + GT_1000-HSL07 + GT_1000-HSL08
* + GT_1000-HSL09 + GT_1000-HSL10 + GT_1000-HSL11 + GT_1000-HSL12.
WHEN OTHERS.
ENDCASE.
MODIFY GT_1000.
CLEAR GT_1000.
ENDLOOP.
*&条目数
G_LEN = LINES( GT_1000[] ).
IF G_LEN EQ 0.
MESSAGE I003 WITH '没有找到符合条件的数据!'.
STOP.
ELSE.
MESSAGE S003 WITH '找到数据条目数:' G_LEN.
ENDIF.
ENDFORM. " FRM_GET_1000
*&---------------------------------------------------------------------*
*& Form FRM_WRITE_OUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_WRITE_OUT.
*DATA:
LOOP AT GT_1000.
*&1.文本
IF GT_1000-ZZTXPE EQ 'X'.
PERFORM FRM_WRITE_TEXT.
ENDIF.
*&2.科目栏位
IF GT_1000-ZZSUM EQ '' AND GT_1000-ZZTXPE EQ ''.
PERFORM FRM_WRITE_ITEM.
ENDIF.
IF GT_1000-ZZSUM CS 'C' AND GT_1000-ZZTXPE IS INITIAL.
* IF GT_1000-ZZSUM EQ 'C1' OR GT_1000-ZZSUM EQ 'C2' OR GT_1000-ZZSUM EQ 'C3'
* OR GT_1000-ZZSUM EQ 'C4' OR GT_1000-ZZSUM EQ 'C5'.
PERFORM FRM_WRITE_SUM.
ENDIF.
ENDLOOP.
ENDFORM. " FRM_WRITE_OUT
*&---------------------------------------------------------------------*
*& Form FRM_WRITE_TEXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_WRITE_TEXT.
WRITE AT:/(80) GT_1000-ZZTEXT LEFT-JUSTIFIED.
ENDFORM. " FRM_WRITE_TEXT
*&---------------------------------------------------------------------*
*& Form FRM_WRITE_ITEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_WRITE_ITEM.
WRITE AT:/3(80) GT_1000-ZZTEXT LEFT-JUSTIFIED,
(3) '',
(15) GT_1000-HSL01 RIGHT-JUSTIFIED,
(15) GT_1000-HSL02 RIGHT-JUSTIFIED,
(15) GT_1000-HSL03 RIGHT-JUSTIFIED,
(15) GT_1000-HSL04 RIGHT-JUSTIFIED,
(15) GT_1000-HSL05 RIGHT-JUSTIFIED,
(15) GT_1000-HSL06 RIGHT-JUSTIFIED,
(15) GT_1000-HSL07 RIGHT-JUSTIFIED,
(15) GT_1000-HSL08 RIGHT-JUSTIFIED,
(15) GT_1000-HSL09 RIGHT-JUSTIFIED,
(15) GT_1000-HSL10 RIGHT-JUSTIFIED,
(15) GT_1000-HSL11 RIGHT-JUSTIFIED,
(15) GT_1000-HSL12 RIGHT-JUSTIFIED,
(15) GT_1000-HSL01_Y RIGHT-JUSTIFIED.
ENDFORM. " FRM_WRITE_ITEM
*&---------------------------------------------------------------------*
*& Form FRM_WRITE_SUM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_WRITE_SUM .
WRITE AT:/87(192) SY-ULINE,(15) SY-ULINE. "(15)SY-ULINE, (15)SY-ULINE, (10) SY-ULINE.
WRITE AT:/3(80) GT_1000-ZZTEXT LEFT-JUSTIFIED,
(3) '',
(15) GT_1000-HSL01 RIGHT-JUSTIFIED,
(15) GT_1000-HSL02 RIGHT-JUSTIFIED,
(15) GT_1000-HSL03 RIGHT-JUSTIFIED,
(15) GT_1000-HSL04 RIGHT-JUSTIFIED,
(15) GT_1000-HSL05 RIGHT-JUSTIFIED,
(15) GT_1000-HSL06 RIGHT-JUSTIFIED,
(15) GT_1000-HSL07 RIGHT-JUSTIFIED,
(15) GT_1000-HSL08 RIGHT-JUSTIFIED,
(15) GT_1000-HSL09 RIGHT-JUSTIFIED,
(15) GT_1000-HSL10 RIGHT-JUSTIFIED,
(15) GT_1000-HSL11 RIGHT-JUSTIFIED,
(15) GT_1000-HSL12 RIGHT-JUSTIFIED,
(15) GT_1000-HSL01_Y RIGHT-JUSTIFIED.
WRITE AT:/87(192) SY-ULINE,(15) SY-ULINE. "(15)SY-ULINE, (15)SY-ULINE, (10) SY-ULINE.
ENDFORM. " FRM_WRITE_SUM
*&---------------------------------------------------------------------*
*& Form FRM_WRITE_TOTAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_WRITE_TOTAL .
* WRITE AT:/3(30) GT_1000-ZZTEXT LEFT-JUSTIFIED,
* (3) '',
* (17) GT_1000-HSL01_Y RIGHT-JUSTIFIED,
* (17) GT_1000-HSL01_N RIGHT-JUSTIFIED.
** (17) ITAB-DMBTR1 RIGHT-JUSTIFIED,
** (17) ITAB-DMBTR2 RIGHT-JUSTIFIED,
** (17) ITAB-DMBTR3 RIGHT-JUSTIFIED,
** (10) ITAB-DMBTR4 RIGHT-JUSTIFIED.
* WRITE AT:/37(17) '=================',
* (17) '=================',
* (17) '=================',
* (10) '================='.
ENDFORM. " FRM_WRITE_TOTAL
*&---------------------------------------------------------------------*
*& Form FRM_WRITE_OTHER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_WRITE_OTHER .
* WRITE AT:/37(17) SY-ULINE, (17) SY-ULINE, (17) SY-ULINE, (10) SY-ULINE.
* WRITE AT:/3(30) GT_1000-ZZTEXT LEFT-JUSTIFIED,
* (3) '',
* (17) GT_1000-HSL01_Y RIGHT-JUSTIFIED,
* (17) GT_1000-HSL01_N RIGHT-JUSTIFIED.
** (17) ITAB-DMBTR1 RIGHT-JUSTIFIED,
** (17) ITAB-DMBTR2 RIGHT-JUSTIFIED,
** (17) ITAB-DMBTR3 RIGHT-JUSTIFIED,
** (10) ITAB-DMBTR4 RIGHT-JUSTIFIED.
* WRITE AT:/37(17) '=================',
* (17) '=================',
* (17) '=================',
* (10) '================='.
ENDFORM. " FRM_WRITE_OTHER
*&---------------------------------------------------------------------*
*& Form DISPLAY_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_HEADER .
DATA:LV_TEXT TYPE STRING.
DATA: L_TEXT TYPE CHAR80.
DATA: L_YEAR01 TYPE CHAR7,
L_YEAR02 TYPE CHAR7,
L_YEAR03 TYPE CHAR7,
L_YEAR04 TYPE CHAR7,
L_YEAR05 TYPE CHAR7,
L_YEAR06 TYPE CHAR7,
L_YEAR07 TYPE CHAR7,
L_YEAR08 TYPE CHAR7,
L_YEAR09 TYPE CHAR7,
L_YEAR10 TYPE CHAR7,
L_YEAR11 TYPE CHAR7,
L_YEAR12 TYPE CHAR7.
CONCATENATE P_GJAHR '/' '01' INTO L_YEAR01.
CONCATENATE P_GJAHR '/' '02' INTO L_YEAR02.
CONCATENATE P_GJAHR '/' '03' INTO L_YEAR03.
CONCATENATE P_GJAHR '/' '04' INTO L_YEAR04.
CONCATENATE P_GJAHR '/' '05' INTO L_YEAR05.
CONCATENATE P_GJAHR '/' '06' INTO L_YEAR06.
CONCATENATE P_GJAHR '/' '07' INTO L_YEAR07.
CONCATENATE P_GJAHR '/' '08' INTO L_YEAR08.
CONCATENATE P_GJAHR '/' '09' INTO L_YEAR09.
CONCATENATE P_GJAHR '/' '10' INTO L_YEAR10.
CONCATENATE P_GJAHR '/' '11' INTO L_YEAR11.
CONCATENATE P_GJAHR '/' '12' INTO L_YEAR12.
SELECT SINGLE * FROM T001 WHERE BUKRS = P_BUKRS.
CONCATENATE 'From 1st Jan' P_GJAHR 'to Current Month' INTO LV_TEXT.
WRITE AT:/1(20) 'TEAMWISE LIMITED',
/1(16) 'Cash flows -', (20)T001-BUTXT LEFT-JUSTIFIED,
/1(80) LV_TEXT.
CLEAR L_TEXT.
* CONCATENATE 'Y-T-D' P_GJAHR INTO L_TEXT SEPARATED BY SPACE.
L_TEXT = 'Y-T-D'&& P_GJAHR .
WRITE AT:/80(3) T001-WAERS,
(15) L_YEAR01 RIGHT-JUSTIFIED,
(15) L_YEAR02 RIGHT-JUSTIFIED,
(15) L_YEAR03 RIGHT-JUSTIFIED,
(15) L_YEAR04 RIGHT-JUSTIFIED,
(15) L_YEAR05 RIGHT-JUSTIFIED,
(15) L_YEAR06 RIGHT-JUSTIFIED,
(15) L_YEAR07 RIGHT-JUSTIFIED,
(15) L_YEAR08 RIGHT-JUSTIFIED,
(15) L_YEAR09 RIGHT-JUSTIFIED,
(15) L_YEAR10 RIGHT-JUSTIFIED,
(15) L_YEAR11 RIGHT-JUSTIFIED,
(15) L_YEAR12 RIGHT-JUSTIFIED,
(15) L_TEXT RIGHT-JUSTIFIED.
* (15) 'Last Year' right-justified,
* (15) 'Diff' right-justified,
* (10) '%' right-justified.
WRITE AT:/1(297) SY-ULINE.
ENDFORM. " DISPLAY_HEADER
*&---------------------------------------------------------------------*
*& Form PRINTDATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM PRINTDATA .
DATA: F_INDEX LIKE SY-TABIX.
DATA: LINES_LEN TYPE I.
DATA: LS_CONTROL_PARAMETERS TYPE SSFCTRLOP.
DATA: LS_OUTPUT_OPTIONS TYPE SSFCOMPOP.
DATA: L_SMF_NAME TYPE RS38L_FNAM.
DATA GT_OUT TYPE TABLE OF ZST_F103_3000 WITH HEADER LINE.
DATA GT_PRINT TYPE TABLE OF ZST_F103_3000.
*MOVE-CORRESPONDING GT_DATA[] TO GT_OUT[].
LOOP AT GT_DATA.
MOVE-CORRESPONDING GT_DATA TO GT_OUT.
APPEND GT_OUT TO GT_PRINT.
ENDLOOP.
LS_CONTROL_PARAMETERS-NO_CLOSE = ''.
LS_CONTROL_PARAMETERS-NO_DIALOG = ''.
LS_CONTROL_PARAMETERS-PREVIEW = 'X'.
LS_OUTPUT_OPTIONS-TDDEST = 'LP01'.
LS_OUTPUT_OPTIONS-TDIMMED = 'X'.
LS_OUTPUT_OPTIONS-TDDELETE = 'X'.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' "这个函数主要用来取你要调用的FUNCTION MODULE
EXPORTING
FORMNAME = 'ZFI103_1000_3000' "将SMARTFORM赋值给FORMNAME
IMPORTING
FM_NAME = L_SMF_NAME.
LS_CONTROL_PARAMETERS-NO_CLOSE = SPACE.
CALL FUNCTION L_SMF_NAME "调用SMARTFORM,这里是以FUNCTION的方式和SMARTFORM交互
EXPORTING
CONTROL_PARAMETERS = LS_CONTROL_PARAMETERS
OUTPUT_OPTIONS = LS_OUTPUT_OPTIONS
USER_SETTINGS = 'X'
FLAG = 'X'
P_GJAHR = P_GJAHR
MONATL = S_MONAT-LOW
MONATH = S_MONAT-HIGH
TABLES
GT_DATA = GT_PRINT
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " PRINTDATA
*&---------------------------------------------------------------------*
*& Form FRM_PRINT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_PRINT_DATA .
DATA: F_INDEX LIKE SY-TABIX.
DATA: LINES_LEN TYPE I.
DATA: LS_CONTROL_PARAMETERS TYPE SSFCTRLOP.
DATA: LS_OUTPUT_OPTIONS TYPE SSFCOMPOP.
DATA: L_SMF_NAME TYPE RS38L_FNAM.
DATA GT_OUT TYPE TABLE OF ZST_1000 WITH HEADER LINE.
DATA GT_PRINT TYPE TABLE OF ZST_1000.
*MOVE-CORRESPONDING GT_DATA[] TO GT_OUT[].
LOOP AT GT_1000.
MOVE-CORRESPONDING GT_1000 TO GT_OUT.
* IF GT_1000-ZZNUMB = 'C1-011'.
APPEND GT_OUT TO GT_PRINT.
CLEAR GT_OUT.
IF GT_1000-ZZNUMB = 'C1-011' OR GT_1000-ZZNUMB = 'C2-009' .
* GT_OUT-ZZTEXT = 'X'.
APPEND GT_OUT TO GT_PRINT.
ENDIF.
ENDLOOP.
LS_CONTROL_PARAMETERS-NO_CLOSE = ''.
LS_CONTROL_PARAMETERS-NO_DIALOG = ''.
LS_CONTROL_PARAMETERS-PREVIEW = 'X'.
LS_OUTPUT_OPTIONS-TDDEST = 'LP01'.
LS_OUTPUT_OPTIONS-TDIMMED = 'X'.
LS_OUTPUT_OPTIONS-TDDELETE = 'X'.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' "这个函数主要用来取你要调用的FUNCTION MODULE
EXPORTING
FORMNAME = 'ZFI103_TH' "将SMARTFORM赋值给FORMNAME
IMPORTING
FM_NAME = L_SMF_NAME.
LS_CONTROL_PARAMETERS-NO_CLOSE = SPACE.
CALL FUNCTION L_SMF_NAME "调用SMARTFORM,这里是以FUNCTION的方式和SMARTFORM交互
EXPORTING
CONTROL_PARAMETERS = LS_CONTROL_PARAMETERS
OUTPUT_OPTIONS = LS_OUTPUT_OPTIONS
USER_SETTINGS = 'X'
* FLAG = P_3000
P_GJAHR = P_GJAHR
TABLES
GT_DATA = GT_PRINT
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " FRM_PRINT_DATA
*&---------------------------------------------------------------------*
*& Form FRM_EXCEL_OUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FRM_EXCEL_OUT .
INCLUDE OLE2INCL.
*定义OLE变量
DATA:EXCEL TYPE OLE2_OBJECT,
SHEET TYPE OLE2_OBJECT,
CELL TYPE OLE2_OBJECT,
WORKBOOK TYPE OLE2_OBJECT.
FIELD-SYMBOLS :<FS_01> TYPE ANY .
DATA:VAL1(20) TYPE C.
DATA:VAL2(80) TYPE C.
DATA: R1 TYPE I,
R2 TYPE I.
DATA P_MONTH TYPE T54C6-SMONT .
*输入文件名参数
*
*启动excel
CREATE OBJECT EXCEL 'EXCEL.APPLICATION'.
IF SY-SUBRC NE 0 .
WRITE: / ''.
STOP.
ENDIF.
CALL METHOD OF
EXCEL
'WORKBOOKS' = WORKBOOK.
*使excel 可视
SET PROPERTY OF EXCEL 'VISIBLE' = 1.
*建立worksheet
SET PROPERTY OF EXCEL 'SHEETSINNEWWORKBOOK' = 1. "如果是读取excel文件中的内容 则是直接打开工作簿第一页
CALL METHOD OF WORKBOOK 'ADD'. " 例如:CALL METHOD OF EXCEL 'WORKSHEETS' = SHEET EXPORTING #1 = 1.
*写前1行1列
CALL METHOD OF
EXCEL
'CELLS' = CELL
EXPORTING
#1 = 1
#2 = 1.
SET PROPERTY OF CELL 'VALUE' = SY-DATUM.
CALL METHOD OF
EXCEL
'CELLS' = CELL
EXPORTING
#1 = 2
#2 = 1.
SET PROPERTY OF CELL 'VALUE' = 'TEAMWISE LIMITED'.
VAL2 = 'Cash flows -' && T001-BUTXT.
CALL METHOD OF
EXCEL
'CELLS' = CELL
EXPORTING
#1 = 3
#2 = 1.
SET PROPERTY OF CELL 'VALUE' = VAL2.
VAL2 = 'From 1st Jan'&& P_GJAHR &&'to Current Month'.
CALL METHOD OF
EXCEL
'CELLS' = CELL
EXPORTING
#1 = 4
#2 = 1.
SET PROPERTY OF CELL 'VALUE' = VAL2.
CALL METHOD OF
EXCEL
'CELLS' = CELL
EXPORTING
#1 = 5
#2 = 1.
SET PROPERTY OF CELL 'VALUE' = 'HKD'.
DO 14 TIMES.
R1 = SY-INDEX.
IF R1 = 1.
VAL1 = 'HKD'.
ELSEIF R1 = 14.
VAL1 = 'Y-T-D' && P_GJAHR.
ELSE.
P_MONTH = R1 - 1.
VAL1 = P_GJAHR && '/' && P_MONTH.
ENDIF.
CALL METHOD OF
EXCEL
'CELLS' = CELL
EXPORTING
#1 = 5
#2 = R1.
SET PROPERTY OF CELL 'VALUE' = VAL1.
ENDDO.
CLEAR : R1,R2.
LOOP AT GT_1000.
R1 = SY-TABIX + 6.
DO 14 TIMES.
R2 = SY-INDEX.
IF GT_1000-ZZTEXT IS NOT INITIAL.
CASE R2.
WHEN 1.
VAL2 = GT_1000-ZZTEXT.
WHEN 2.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL01 CHANGING VAL1 .
* VAL1 = GT_1000-HSL01.
WHEN 3.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL02 CHANGING VAL1 .
* VAL1 = GT_1000-HSL02.
WHEN 4.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL03 CHANGING VAL1 .
* VAL1 = GT_1000-HSL03.
WHEN 5.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL04 CHANGING VAL1 .
* VAL1 = GT_1000-HSL04.
WHEN 6.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL05 CHANGING VAL1 .
* VAL1 = GT_1000-HSL05.
WHEN 7.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL06 CHANGING VAL1 .
* VAL1 = GT_1000-HSL06.
WHEN 8.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL07 CHANGING VAL1 .
* VAL1 = GT_1000-HSL07.
WHEN 9.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL08 CHANGING VAL1 .
* VAL1 = GT_1000-HSL08.
WHEN 10.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL09 CHANGING VAL1 .
* VAL1 = GT_1000-HSL09.
WHEN 11.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL10 CHANGING VAL1 .
* VAL1 = GT_1000-HSL10.
WHEN 12.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL11 CHANGING VAL1 .
* VAL1 = GT_1000-HSL11.
WHEN 13.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL12 CHANGING VAL1 .
* VAL1 = GT_1000-HSL12.
WHEN 14.
PERFORM FRM_CHANGE_DATA USING GT_1000-HSL01_Y CHANGING VAL1 .
* VAL1 = GT_1000-HSL01_Y .
WHEN OTHERS.
ENDCASE.
ELSE.
VAL1 = ''.
VAL2 = ''.
ENDIF.
*指定单元格,并写入值
IF R2 = 1.
CONDENSE VAL2.
CALL METHOD OF
EXCEL
'CELLS' = CELL
EXPORTING
#1 = R1
#2 = R2.
SET PROPERTY OF CELL 'VALUE' = VAL2.
ELSE.
CONDENSE VAL1.
CALL METHOD OF
EXCEL
'CELLS' = CELL
EXPORTING
#1 = R1
#2 = R2.
SET PROPERTY OF CELL 'VALUE' = VAL1.
ENDIF.
ENDDO.
ENDLOOP.
*存入文件
GET PROPERTY OF EXCEL 'ACTIVESHEET' = SHEET. "激活工作簿
GET PROPERTY OF EXCEL 'ACTIVEWORKBOOK' = WORKBOOK. "激活工作区
CALL METHOD OF
WORKBOOK
'SAVEAS'
EXPORTING
#1 = FN1
#2 = 1. "将excel文件保存为 FN1 路径
CALL METHOD OF WORKBOOK 'CLOSE'. "关闭工作区
CALL METHOD OF EXCEL 'QUIT'. " 退出excel
WRITE 'DONE'. "退出成功,输出done
FREE OBJECT SHEET. "释放操作
FREE OBJECT WORKBOOK.
FREE OBJECT EXCEL.
ENDFORM. " FRM_EXCEL_OUT
*&---------------------------------------------------------------------*
*& Form GET_PC_FILENAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_PC_FILENAME .
IF P_EXCEL = 'X'.
* CALL FUNCTION 'F4_FILENAME' "取得文件路徑
* EXPORTING
* FIELD_NAME = 'FN1'
* IMPORTING
* FILE_NAME = FN1.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = '*.*'
DEF_PATH = 'C:\'
MASK = ',*.*.'
MODE = 'O'
TITLE = 'Choose File'(002)
IMPORTING
FILENAME = FN1
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
ENDIF.
ENDFORM. " GET_PC_FILENAME
*&---------------------------------------------------------------------*
*& Form FRM_CHANGE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PV_DATA text
* -->LV_CHAR text
*----------------------------------------------------------------------*
FORM FRM_CHANGE_DATA USING PV_DATA TYPE HSLVT12 CHANGING LV_CHAR TYPE CHAR20.
DATA :
L_AMT(17),
L_INT(10),
L_CHAR(17),
L_FAC(2),
L_LEN TYPE I,
L_COUNT TYPE I,
L_POS TYPE I,
L_REST TYPE I,
L_TIME TYPE I.
DATA L_NUM TYPE DMBTR.
DATA L_RESULT TYPE CHAR30.
L_NUM = PV_DATA.
CONSTANTS: C_TAB VALUE ',',
C_POT VALUE '.'.
CLEAR L_AMT.
IF L_NUM > 0.
L_AMT = ABS( L_NUM ).
CONDENSE L_AMT.
SPLIT L_AMT AT C_POT INTO L_INT L_FAC.
L_LEN = STRLEN( L_INT ).
L_COUNT = L_LEN.
L_REST = L_LEN MOD 3.
IF L_REST = 0.
L_TIME = L_LEN DIV 3.
ELSE.
L_TIME = L_LEN DIV 3 + 1.
ENDIF.
DO L_TIME TIMES.
L_COUNT = L_COUNT - 3.
IF L_COUNT > 0.
CONCATENATE C_TAB L_INT+L_COUNT(3) L_CHAR INTO L_CHAR.
ELSEIF L_COUNT <= 0.
L_COUNT = L_COUNT + 3.
CONCATENATE L_INT+0(L_COUNT) L_CHAR INTO L_CHAR.
EXIT.
ENDIF.
ENDDO.
CLEAR L_LEN.
L_LEN = STRLEN( L_FAC ).
IF L_FAC IS INITIAL.
CONCATENATE L_CHAR '.00' INTO L_RESULT.
ELSEIF L_LEN = 1.
CONCATENATE L_CHAR '.' L_FAC '0' INTO L_RESULT.
ELSEIF L_LEN = 2.
CONCATENATE L_CHAR '.' L_FAC INTO L_RESULT.
ENDIF.
CONDENSE L_RESULT.
ELSEIF L_NUM < 0.
L_AMT = ABS( L_NUM ).
CONDENSE L_AMT.
SPLIT L_AMT AT C_POT INTO L_INT L_FAC.
L_LEN = STRLEN( L_INT ).
L_COUNT = L_LEN.
L_REST = L_LEN MOD 3.
IF L_REST = 0.
L_TIME = L_LEN DIV 3.
ELSE.
L_TIME = L_LEN DIV 3 + 1.
ENDIF.
DO L_TIME TIMES.
L_COUNT = L_COUNT - 3.
IF L_COUNT > 0.
CONCATENATE C_TAB L_INT+L_COUNT(3) L_CHAR INTO L_CHAR.
ELSEIF L_COUNT <= 0.
L_COUNT = L_COUNT + 3.
CONCATENATE L_INT+0(L_COUNT) L_CHAR INTO L_CHAR.
EXIT.
ENDIF.
ENDDO.
CLEAR L_LEN.
L_LEN = STRLEN( L_FAC ).
IF L_FAC IS INITIAL.
CONCATENATE '-' L_CHAR '.00' INTO L_RESULT.
ELSEIF L_LEN = 1.
CONCATENATE '-' L_CHAR '.' L_FAC '0' INTO L_RESULT.
ELSEIF L_LEN = 2.
CONCATENATE '-' L_CHAR '.' L_FAC INTO L_RESULT.
ENDIF.
CONDENSE L_RESULT.
ELSE.
L_RESULT = '0.00'.
ENDIF.
LV_CHAR = L_RESULT.
* ENDIF.
*LV_CHAR = LS_DATA-DMBTR.
*CONDENSE LV_CHAR.
*data lv_num type i.
*lv_num = STRLEN( LV_CHAR ).
*lv_num = lv_num - 1.
*IF LV_CHAR+lv_num(1) = '-'.
*LV_CHAR+lv_num(1) = ''.
*LV_CHAR = '-' && LV_CHAR.
*ENDIF.
*CONDENSE LV_CHAR.
*CONDENSE LV_CHAR.
ENDFORM. "FRM_CHANGE_DATA