在SAP中用承诺项目出现金流量表(报表开发源代码)(
(完整版)SAP科目表详解

SAP 会计科目表层次成本控制范围公司代码成本中心组成本中心浪潮信息成本控制范围ιo∞I浪潮北京n∞I浪潮济南1200 II浪潮北京浪渤济南I I I I I销售郡门管理部门制造部门管ITsMl销售祁门则卿处网卿制花中心财夯部J安徽办李处福曲事处人力则0I 人力詡部SB甘舷事处I I ...采购部广东办事处广东加事处■ ■•••SAP 财务系统总账的三套会计科目表并存,为跨国公司属地化核算和集团化管理并行提供了可能在SAP财务系统中存在三大类会计科目表:运营会计科目表、集团会计科目表和国家会计科目表。
其中运营会计科目表是记账必须的会计科目表,集团会计科目表是集团出具合并会计报表使用的会计科目表,国家会计科目表是为了满足某国要求,出具的符合该国会计准则要求的科目表。
三套科目表的设置为一个经营实体按照不同的会计科目系统出具报告提供了可能,换句话说也就是每个公司都可以分别按照三套科目表出具财务报告,这种功能的设置为集团公司,特别是跨国集团公司提供了集团化管理和属地化管理并重的可能性。
SAP财务系统对集团公司的会计科目表设计通常给出两种建议方案:方案1:全集团统一使用一套会计科目表:不论是控股公司还是下级单位都共享一套完整的会计科目表,各家公司在完整的会计科目表里选择自己需要的会计科目,从而生成每个公司代码的个性化的会计科目表。
方案2:用分行业的会计科目表:如一个大型企业,同时经营多种行业,如果共用一套会计科目表,其中的科目数量将是庞大的,且覆盖了各种各样的行业特殊的科目。
所以可以采用相同的行业共用一个会计科目表,这些分行业的会计科目表又能分配给同一个合并会计科目表,这个合并科目表中的科目与分行业科目表中的科目具有对应的关系。
通过这样的管理,既实现了分行业的会计核算,整个集团又有一个统一的核算口径。
多重会计核算原则并行在SAP财务管理系统中可以容纳多重的会计核算原则,即按照不同的核算规则进行核算,并分别记录。
SAP业务流程与事务代码

SAP业务流程与事务代码SAP业务流程是指SAP系统在不同模块中进行业务操作的一系列步骤和规定。
每个业务流程都包含了一些特定的步骤和活动,以实现特定的业务目标。
事务代码则是指在SAP系统中使用的特定的标识符,用于执行特定的业务活动或访问特定的功能模块。
以下是一些常见的SAP业务流程和对应的事务代码。
1.采购流程:-采购申请(ME51N)-采购订单(ME21N)-采购收货(MIGO)-供应商发票(MIRO)2.销售流程:-客户询价(VA11)-销售报价(VA21)-销售订单(VA01)-发货(VL01N)-销售发票(VF01)3.生产流程:-生产订单创建(CO01)-物料需求计划(MD04)-生产执行(COR6N)-生产成本计算(CK11N)4.财务流程:-凭证录入(FB01)-收款(F-28)-付款(F-53)-现金流量(FCTX)5.人力资源流程:-员工入职(PA40)-员工离职(PA30)-员工薪资(PC00_M40_CEDT) -绩效评估(PB40)6.物料管理流程:-物料创建(MM01)-物料变更(MM02)-物料查询(MM03)-库存管理(MB1C)7.项目管理流程:-项目定义(CJ20N)-项目联络员(CJ20N)-项目任务安排(CJ20N)-项目结算(CJ20N)以上只是一些常见的SAP业务流程和事务代码,实际上SAP系统涵盖了更广泛的业务流程和功能模块。
每个组织可以根据自身的需求和业务流程进行定制。
在SAP系统中,事务代码是连接业务流程和功能模块的桥梁,它们提供了用户访问和操作特定功能的入口。
SAP财务知识-现金流量表的编制

财务知识-现金流量表的编制一、现金流量表主表项目(一)经营活动产生的现金流量1、销售商品、提供劳务收到的现金 =主营业务收入+其他业务收入 +应交税金(应交增值税- 销项税额) +(应收帐款期初数-应收帐款期末数) +(应收票据期初数应收票据期末数) +(预收帐款期末数-预收帐款期初数) -当期计提的坏帐准备 -支付的应收票据贴现利息 -库存商品改变用途应支付的销项额±特殊调整事项特殊调整事项的处理(不含三个帐户内部转帐业务),如果借:应收帐款、应收票据、预收帐款等,贷方不是“收入及销项税额”则加上,如果:贷应收帐款、应收票据、预收帐款等,借方不是“现金类”科目,则减去。
※①与收回坏帐无关②客户用商品抵债的进项税不在此反映。
2、收到的税费返还=返还的(增值税+消费费+营业税+关税+所得税+教育费附加)等3、收到的其他与经营活动有关的现金 =除上述经营活动以外的其他经营活动有关的现金4、购买商品、接受劳务支付的现金 =[主营业务成本(或其他支出支出) +存货期末价值-存货期初价值)] +应交税金(应交增值税-进项税额) +(应付帐款期初数-应付帐款期末数) +(应付票据期初数-应付票据期末数) +(预付帐款期末数-预付帐款期初数) +库存商品改变用途价值(如工程领用) +库存商品盘亏损失 -当期列入生产成本、制造费用的工资及福利费 -当期列入生产成本、制造费用的折旧费和摊销的大修理费 -库存商品增加额中包含的分配进入的制造费用、生产工人工资±特殊调整事项特殊调整事项的处理,如果借:应付帐款、应付票据、预付帐款等(存贷类),贷方不是“现金类”科目,则减去,如果贷:应付帐款数、应付票据、预付帐款等,借方不是“销售成本或进项税”科目,则加上。
5、支付给职工及为职工支付的现金 =生产成本、制造费用、管理费用的工资,福利费 +(应付工资期初数-期末数)+(应付福利费期初数-期末数)附:当存在“在建工程”人员的工资、福利费时,注意期初、期末及计提数中是否包含“在建工程”的情况,按下式计算考虑计算关系。
SAP财务模块代码

SAP财务模块代码2.1 FI 财务会计 (3)2.2 FI-GL 总帐会计 (9)2.2.1 FI-GL-GL 差不多功能 (10)2.2.2 FI-GL-IS 信息系统 (13)2.3 FI-LC-LC 差不多功能 (15)2.4 FI-AP-AP 差不多功能 (22)2.5 FI-AR-AR 差不多功能 (23)2.5.1 FI-AR-CR 信贷治理 (34)2.6 FI-AA-AA 差不多功能 (35)2.6.1 FI-AA-AA-TR-TP 转帐记帐 (43)2.6.2 FI-AA-SVA-HI 通货膨胀处理 (44)2.6.3 FI-AA-IS 信息系统 (44)2.7 FI-SL-SL 差不多功能 (45)2.7.1 FI-SL-COB 代码块 (50)2.7.2 FI-SL-VSR 确认,替换和规那么 (50)2.7.3 FI-SL-IS 信息系统 (51)2.8 FI-FM 基金治理 (52)2.8.1 FI-FM-BD 差不多数据 (53)2.8.2 FI-FM-BU 预算 (55)2.8.3 FI-FM-IN 集成 (56)2.8.4 FI-FM-IS 信息系统 (57)2.9 FI-TV 差旅治理 (58)2.9.1 FI-TV-COS 旅行费用 (58)3 TR 金库 (60)3.1 TR 金库 (60)3.2 TR-CM-CM 差不多功能 (68)3.3 TR-TM 金库治理 (72)3.4 TR-LO 贷款业务 (85)3.5 TR-MRM 风险治理 (91)4 CO 操纵 (92)4.1 CO 操纵 (92)4.2 CO-OM 间接成本操纵 (98)4.2.1 CO-OM-CEL 成本要素会计 (99)4.2.2 CO-OM-ACT 作业类型 (99)4.2.3 CO-OM-CCA 成本中心会计 (100)4.2.4 CO-OM-ABC 基于作业的成本核算 (104)4.2.5 CO-OM-OPA 间接费用订单 (108)4.2.6 CO-OM-PRO-PL-CP WBS 成本打算 (112)4.3 CO-PC 产品成本操纵 (114)4.3.1 CO-PC-PCP 产品成本打算 (117)4.3.2 CO-PC-OBJ 成本对象操纵 (120)4.3.3 CO-PC-OBJ-PER 按期间划分的产品成本 (120)4.3.4 CO-PC-ACT 实际成本核算/物料分类帐 (122)4.3.5 CO-PC-IS 产品成本操纵信息系统 (123)4.4 CO-PA 盈利性分析 (126)5 IM-FA-IA 资产 (130)5.1.1 IM-FA-IA 适用要求 (130)5.1.2 IM-FA-IP 资本投资程序 (131)5.1.3 IM-FA-IE 投资订单 (133)5.1.4 IM-FA-IS 信息系统 (134)6 EC 企业操纵 (135)6.1 EC 企业操纵 (135)6.2 EC-PCA-BF 差不多功能 (135)6.3 EC-CS 合并 (140)6.4 EC-EIS-DCM 数据收集 (147)7 IS-RE 金融房地产.................................................................................................... 错误!未定义书签。
09SAP现金流量表ABAP

zdmbtr08 like bseg-dmbtr,
zdmbtr09 like bseg-dmbtr,
zdmbtr10 like bseg-dmbtr,
zdmbtr11 like bseg-dmbtr,
LFA1, "供应商主数据 (一般地区)
* SKAT, "总帐科目主记录(科目表:说明)
SKB1, "总帐科目主记录 (公司代码)SAKNR ??
SKA1, "总帐科目表
FIS_PERIOD type MONAT, "会计期间
DEBITS_PER type BAPISOLL, "期间借方发生额
CREDIT_PER type BAPIHABEN, "期间贷方发生额
PER_SALES type BAPIUMSATZ, "月销售额
** COMPANYCODE SH10
** GLACCT 10010100
** FISCALYEAR 2008
** CURRENCYTYPE 10
zdmbtr17 like bseg-dmbtr,
zdmbtr18 like bseg-dmbtr,
zdmbtr19 like bseg-dmbtr,
zdmbtr20 like bseg-dmbtr,
zdmbtr21 like bseg-dmbtr,
MESSAGE-ID ZDXMESS.
* TABLE 宣告程序会使用的TABLE
TABLES: BSEG, "会计核算凭证段
BKPF, "会计核算凭证标题
SAP常用代码清单

货源清单创建 货源清单显示 货源清单变更显示 货源清单分析 货源清单清单显示
采购合同
MRP计划 采购申请
采购订单 查询
建立询价单 改变询价单 显示询价单 创建报价 显示报价 价格比较清单 按询价单号列表查询询价单 报价总体分析
外包分帐单工程款一览表 外包分帐单工程量一览表 完工验收单外包分帐单对比表 外包分帐单审批状态一览表
角色描述 TCode\Role
ZOM001 ZOM002 ZOM003 ZOM004 ZOM009 ZOM002/3
ZOM011 ZOM012 ZOM013 ZOM019 ZOM002/3 ZOM01A ZOM016 ZOM017
维护计划 项目系统
维修订单结算 内部人工作业类 型
计量凭证 自开发程序
一般维护任务清单显示
建立维护计划 计划维护计划
结构概览 项目构造器 最初预算创建 增加维修项目预算 减少维修项目预算 显示维修项目预算 查询预算变更 激活有效性控制 取消预算控制
结算规则 成本要素检查 订单结算集中处理 订单成本要素的检查
销售订单
发货单
发票
销售信息系 统
命令描述
客户主数据创建(完 全客)户主数据修改(完 全客)户主数据显示(完 全客)户主数据变更显示 客户主数据标志删除 客户主数据冻结
创建销售订单 修改销售订单 显示销售订单 显示销售订单清单 显示不完整订单
创建发货单 修改发货单 显示发货单 到期发货清单 发货清单 发货过帐 取消发货过帐 集中发货过帐
承诺项目和原因码出具现金流量表

承诺项目是SAP 基金管理模块(FI-FM)中非常重要的一个概念与主数据。
从我们实际业务上来讲,SAP系统的承诺项目可以理解我们在预算管理业务中的预算指标。通过将承诺项目与会计科目之间建立对应关系,会计人员在做与资金相关的会计凭证时,相关交易金额即可通过会计科目而自动归集到承诺项目上,通过与承诺项目所设定的预算数据进行比对,以达到对企业资金流出的预算控制功能。
在SAP中实现现金流量表有几种方法,
1.利用TR模块的承诺项目来做,但不能输出间接法的现金流量表。
2.激活 CashManagement,对应所有总帐科目都要创建Commitment Item,在做业务时,FM 会对任何和现金流相关的业务做记录,这样既可以反映实际现金流量,也可以做现金流量预测。
**********************************************************************************
如果为了实现现金流量表直接法:
我们一般通过原因代码实现,在凭证输入的时候,我们对于涉及到与货币资金相关的凭证时候,
通过字段状态组(field status)和记帐码(posting key)实现原因代码 的必须输入
设定原因代码
01 销售收到的现金 ( }
02 收到其他与经营活动有关的现金
03 。。。。。。
最后我们在通过抓取凭证中的含有原因代码的行项目就实现啦
。。。。。。
其中这第二种方法,如果客户SAP系统没上FM承诺事项管理,有一种代替方法,就是在凭证Line Item上启用一个叫做Reason code的字段,这个字段中的赋值是可以在IMG中自定义的,基本可以依据直接法的现金流入、流出的分类创建Reason code。对于现金、银行科目,将此字段设为必输字段。
SAP财务知识-现金流量表的编制

财务知识-现金流量表的编制一、现金流量表主表项目(一)经营活动产生的现金流量1、销售商品、提供劳务收到的现金 =主营业务收入+其他业务收入 +应交税金(应交增值税- 销项税额) +(应收帐款期初数-应收帐款期末数) +(应收票据期初数应收票据期末数) +(预收帐款期末数-预收帐款期初数) -当期计提的坏帐准备 -支付的应收票据贴现利息 -库存商品改变用途应支付的销项额±特殊调整事项特殊调整事项的处理(不含三个帐户内部转帐业务),如果借:应收帐款、应收票据、预收帐款等,贷方不是“收入及销项税额”则加上,如果:贷应收帐款、应收票据、预收帐款等,借方不是“现金类”科目,则减去。
※①与收回坏帐无关②客户用商品抵债的进项税不在此反映。
2、收到的税费返还=返还的(增值税+消费费+营业税+关税+所得税+教育费附加)等3、收到的其他与经营活动有关的现金 =除上述经营活动以外的其他经营活动有关的现金4、购买商品、接受劳务支付的现金 =[主营业务成本(或其他支出支出) +存货期末价值-存货期初价值)] +应交税金(应交增值税-进项税额) +(应付帐款期初数-应付帐款期末数) +(应付票据期初数-应付票据期末数) +(预付帐款期末数-预付帐款期初数) +库存商品改变用途价值(如工程领用) +库存商品盘亏损失 -当期列入生产成本、制造费用的工资及福利费 -当期列入生产成本、制造费用的折旧费和摊销的大修理费 -库存商品增加额中包含的分配进入的制造费用、生产工人工资±特殊调整事项特殊调整事项的处理,如果借:应付帐款、应付票据、预付帐款等(存贷类),贷方不是“现金类”科目,则减去,如果贷:应付帐款数、应付票据、预付帐款等,借方不是“销售成本或进项税”科目,则加上。
5、支付给职工及为职工支付的现金 =生产成本、制造费用、管理费用的工资,福利费 +(应付工资期初数-期末数)+(应付福利费期初数-期末数)附:当存在“在建工程”人员的工资、福利费时,注意期初、期末及计提数中是否包含“在建工程”的情况,按下式计算考虑计算关系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在SAP中用承诺项目出现金流量表(报表开发源代码)可能使用到的外部数据 或 SAP数据表数据的格式、字段等: fkrs 财务管理范围主记录表 fops 承诺项目主记录表 fmmp 现金预算管理行项目表 lfa1 供应商主记录表 kna1 客户主记录表 bsis 总帐未清项表 t001 公司代码主记录表 usr21 用户主记录表 adrp 用户地址表 bkpf 财务凭证抬头表 bseg 财务凭证行项目表 glt0 总帐科目期间余额表 直接法通过分析凭证的承诺项目来取数,SAP为该项功能定义了一个逻辑数据库C1F. 本程序 开始部分的逻辑数据库取数部分是SAP的标准程序,其功能是将与现金流量相关的数据装入内部表 G_T_FMMP, 这部分程序禁止修改。
直接法: 1、装入金流量表定义参数(FORM fill_item_direct) 该子程序将的现金流量表项和其对应的承诺项目装入内部表INT_CASHFLOW. 2、装入与现金流量相关的数据 这部分是逻辑数据库装入,属于SAP标准程序,数据关系比较复杂,建议不要做任何改动。
3、计算现金流量 计算的基本思路是对表G_T_FMMP进行循环,查找其中每条记录的承诺项目属于INT_CASHFLOW的 表项后,把其金额累计到相应表项。
REPORT zcmrp001 NO STANDARD PAGE HEADING LINE-SIZE 220. TABLES: fkrs, fpos, fmmp, lfa1, kna1 ,bsis, t001, usr21, adrp, bkpf, bseg, glt0. DATA: BEGIN OF g_t_fmmp OCCURS 300, fikrs LIKE fmmp-fikrs, bukrs LIKE fmmp-bukrs, fipos LIKE fmmp-fipos, wrttp LIKE fmmp-wrttp, gjahr LIKE fmmp-gjahr, perio LIKE fmmp-perio, zhldt LIKE fmmp-zhldt, budat LIKE fmmp-budat, gsber LIKE fmmp-gsber, vo_saknr LIKE fmmp-vo_saknr, lifnr LIKE fmmp-lifnr, kunnr LIKE fmmp-kunnr, fwaer LIKE fmmp-fwaer, fkbtr LIKE fmsu-btr001, zbelnr LIKE cooi-refbn, zbuzei LIKE cooi-rfpos, vo_bukrs LIKE fmmp-vo_bukrs, vo_gjahr LIKE fmmp-vo_gjahr, fitxt LIKE fkrs-fitxt, fname LIKE ffnd-fname, cname LIKE fctr-cname, pname LIKE fpos-pname, wtext LIKE fmmp-wtext, END OF g_t_fmmp. DATA: BEGIN OF g_t_fkrs OCCURS 20, fikrs LIKE fkrs-fikrs, fitxt LIKE fkrs-fitxt, END OF g_t_fkrs. DATA: BEGIN OF g_t_fpos OCCURS 200, fipos LIKE fpos-fipos, pname LIKE fpos-pname, END OF g_t_fpos. DATA: BEGIN OF g_t_lfa1 OCCURS 200, lifnr LIKE lfa1-lifnr, sortl LIKE lfa1-sortl, END OF g_t_lfa1. DATA: BEGIN OF g_t_kna1 OCCURS 200, kunnr LIKE kna1-kunnr, sortl LIKE kna1-sortl, END OF g_t_kna1. RANGES: r_kunnr FOR kna1-kunnr, r_lifnr FOR lfa1-lifnr, r_fipos FOR fmmp-fipos. DATA: BEGIN OF int_cashflow OCCURS 100, desc(66) TYPE c, r_fipos(66) TYPE c, com_fkbtr LIKE fmmp-fkbtr, fi_fkbtr LIKE fmmp-fkbtr, fi_fwaer LIKE fmmp-fwaer, END OF int_cashflow. DATA: BEGIN OF g_t_t001 OCCURS 300, bukrs LIKE t001-bukrs, butxt LIKE t001-butxt, END OF g_t_t001. DATA: pos TYPE i VALUE 0, num_of_bukrs TYPE i VALUE 0. DATA cashflow_detail. DATA : min_budat LIKE fmmp-budat, max_budat LIKE fmmp-budat, z_min_budat LIKE sy-datum, z_max_budat LIKE sy-datum, z_bukrs LIKE fmmp-bukrs, z_profit LIKE bseg-dmbtr, "净利润 z_bad_debit LIKE bseg-dmbtr, "坏帐准备及计提的资产减值准备 z_asset_dep LIKE bseg-dmbtr, "固定资产折旧 z_intang_dep LIKE bseg-dmbtr, "无形资产摊销 z_longpaid_dep LIKE bseg-dmbtr, "长期待摊费用摊销 z_paid_dec LIKE bseg-dmbtr, "待摊费用减少 z_accrul_inc LIKE bseg-dmbtr, "预提费用增加 z_asset_pro LIKE bseg-dmbtr, "固定资产,长期资产处置损失 z_asset_scr LIKE bseg-dmbtr, "固定资产报废损失 z_fi_expen LIKE bseg-dmbtr, "财务费用 z_invest_loss LIKE bseg-dmbtr, "投资损失 z_defer_tax LIKE bseg-dmbtr, "递延税款贷项 z_stock LIKE bseg-dmbtr, "存货减少 z_ar LIKE bseg-dmbtr, "经营性应收减少 z_ap LIKE bseg-dmbtr, "经营性应付增加 z_other LIKE bseg-dmbtr, "其他 z_production LIKE bseg-dmbtr, "经营活动产生的现金净额 z_loss LIKE bseg-dmbtr, "总公司下拨弥补亏损 z_asset_debit LIKE bseg-dmbtr, "以固定资产偿还债务 z_invest_debit LIKE bseg-dmbtr, "以投资偿还债务 z_asset_invest LIKE bseg-dmbtr, "以固定资产投资 z_stock_debit LIKE bseg-dmbtr, "以存货偿还债务 z_asset_rented LIKE bseg-dmbtr, "融资租赁固定资产 z_donation LIKE bseg-dmbtr, "接受捐赠非现金资产 z_debit_short LIKE bseg-dmbtr, "偿还的经营性债务 z_debit_equit LIKE bseg-dmbtr, "债务转为资本 z_bond_due LIKE bseg-dmbtr, "一年内到期的可转换公司债券 z_money_init LIKE bseg-dmbtr, "货币资金期初余额 z_money_end LIKE bseg-dmbtr, "货币资金期末余额 z_cashs_init LIKE bseg-dmbtr, "现金等价物期初余额 z_cashs_end LIKE bseg-dmbtr, "现金等价物期末余额 z_all_money LIKE bseg-dmbtr. "货币资金及现金等价物净变动 DATA: BEGIN OF itb0 OCCURS 0, txt(70) TYPE c, num LIKE bseg-dmbtr, END OF itb0, mtxt(70) TYPE c. **INITIALIZATION. PERFORM fill_item_direct. *START-OF-SELECTION. GET fkrs. g_t_fkrs-fikrs = fkrs-fikrs. g_t_fkrs-fitxt = fkrs-fitxt. APPEND g_t_fkrs. GET fpos. g_t_fpos-fipos = fpos-fipos. g_t_fpos-pname = fpos-pname. COLLECT g_t_fpos. GET fmmp. MOVE-CORRESPONDING fmmp TO g_t_fmmp. CASE fmmp-wrttp. WHEN '50' OR '51'. " purchase order g_t_fmmp-zbelnr = fmmp-ebeln. g_t_fmmp-zbuzei = fmmp-ebelp. WHEN '64'. " payment transfer g_t_fmmp-zbelnr = fmmp-kblnr. g_t_fmmp-zbuzei = fmmp-kblpos. WHEN '65'. " funds commitments g_t_fmmp-zbelnr = fmmp-kblnr. g_t_fmmp-zbuzei = fmmp-kblpos. WHEN OTHERS. " Fi documents g_t_fmmp-zbelnr = fmmp-vo_belnr. g_t_fmmp-zbuzei = fmmp-vo_buzei. ENDCASE. APPEND g_t_fmmp. IF NOT fmmp-kunnr IS INITIAL. r_kunnr-sign = 'I'. r_kunnr-option = 'EQ'. r_kunnr-low = fmmp-kunnr. COLLECT r_kunnr. ENDIF. IF NOT fmmp-lifnr IS INITIAL. r_lifnr-sign = 'I'. r_lifnr-option = 'EQ'. r_lifnr-low = fmmp-lifnr. COLLECT r_lifnr. ENDIF. END-OF-SELECTION. SORT g_t_fmmp BY fikrs bukrs fipos wrttp gjahr perio zhldt zbelnr zbuzei bukrs vo_saknr. RANGES: lr_lifnr FOR lfa1-lifnr, lr_kunnr FOR kna1-kunnr. DATA: l_cnt_from LIKE sy-tabix VALUE 1, l_cnt_to LIKE sy-tabix VALUE 50, l_cnt_lines LIKE sy-tabix. * "/ Lesen Kreditoren-Texte aus Stammdaten-Tabelle IF NOT r_lifnr IS INITIAL. LOOP AT r_lifnr WHERE low = '*'. DELETE r_lifnr. ENDLOOP. DESCRIBE TABLE r_lifnr LINES l_cnt_lines. "<- insert IF l_cnt_lines <= 50. "<- insert * "/ Lieferanten-Kurztexte auf einmal einlesen "<- insert SELECT lifnr sortl FROM lfa1 INTO CORRESPONDING FIELDS OF TABLE g_t_lfa1 WHERE lifnr IN r_lifnr. ELSE. "<- insert * "/ Lieferanten-Kurztexte in Bloecken einlesen "<- insert DO. "<- insert * "/ Bloecke zu je 50 Leferanten bilden "<- insert REFRESH lr_lifnr. "<- insert LOOP AT r_lifnr FROM l_cnt_from TO l_cnt_to. "<- insert lr_lifnr = r_lifnr. "<- insert APPEND lr_lifnr. "<- insert ENDLOOP. "<- insert IF sy-subrc NE 0. "<- insert EXIT. "<- insert ENDIF. "<- insert l_cnt_from = l_cnt_to + 1. "<- insert l_cnt_to = l_cnt_from + 50. "<- insert * "/ Lieferanten-Kurztexte lesen "<- insert SELECT lifnr sortl FROM lfa1 "<- insert APPENDING CORRESPONDING FIELDS "<- insert OF TABLE g_t_lfa1 "<- insert WHERE lifnr IN lr_lifnr. "<- insert ENDDO. "<- insert ENDIF. "<- insert ENDIF. * "/ Lesen Debitoren-Texte aus Stammdaten-Tabelle IF NOT r_kunnr IS INITIAL. LOOP AT r_kunnr WHERE low = '*'. DELETE r_kunnr. ENDLOOP. DESCRIBE TABLE r_kunnr LINES l_cnt_lines. "<- insert IF l_cnt_lines <= 50. "<- insert * "/ Kunden-Kurztexte auf einmal einlesen "<- insert SELECT kunnr sortl FROM kna1 INTO CORRESPONDING FIELDS OF TABLE g_t_kna1 WHERE kunnr IN r_kunnr. ELSE. "<- insert * "/ Kunden-Kurztexte in Bloecken einlesen "<- insert DO. "<- insert * "/ Bloecke zu je 50 Kunden bilden "<- insert REFRESH lr_kunnr. "<- insert LOOP AT r_kunnr FROM l_cnt_from TO l_cnt_to. "<- insert lr_kunnr = r_kunnr. "<- insert APPEND lr_kunnr. "<- insert ENDLOOP. "<- insert IF sy-subrc NE 0. "<- insert EXIT. "<- insert ENDIF. "<- insert l_cnt_from = l_cnt_to + 1. "<- insert l_cnt_to = l_cnt_from + 50. "<- insert * "/ Kunden-Kurztexte lesen "<- insert SELECT kunnr sortl FROM kna1 "<- insert APPENDING CORRESPONDING FIELDS "<- insert OF TABLE g_t_kna1 "<- insert WHERE kunnr IN lr_kunnr. "<- insert ENDDO. "<- insert ENDIF. "<- insert ENDIF. SELECT bukrs butxt FROM t001 INTO CORRESPONDING FIELDS OF TABLE g_t_t001. DATA: l_sav_wrttp_text(30), l_sav_fwaer LIKE fmmp-fwaer, l_sav_butxt LIKE t001-butxt, l_sav_hide_row_type(4). num_of_bukrs = 0. max_budat = 0. min_budat = '99991231' . LOOP AT g_t_fmmp. IF min_budat > g_t_fmmp-budat . min_budat = g_t_fmmp-budat . ENDIF. IF max_budat < g_t_fmmp-budat . max_budat = g_t_fmmp-budat . ENDIF. l_sav_fwaer = g_t_fmmp-fwaer. AT NEW fikrs. LOOP AT int_cashflow. CLEAR int_cashflow-fi_fkbtr. MODIFY TABLE int_cashflow. CLEAR int_cashflow. ENDLOOP. ENDAT. AT NEW bukrs. PERFORM read_bukrs_text USING g_t_fmmp-bukrs CHANGING g_t_t001-butxt. l_sav_butxt = g_t_t001-butxt. LOOP AT int_cashflow. CLEAR int_cashflow-com_fkbtr. MODIFY TABLE int_cashflow. CLEAR int_cashflow. ENDLOOP. ENDAT. LOOP AT int_cashflow. PERFORM input_range USING int_cashflow-r_fipos. LOOP AT r_fipos. IF r_fipos-option = 'EQ'. IF r_fipos-low = g_t_fmmp-fipos. int_cashflow-fi_fkbtr = int_cashflow-fi_fkbtr + g_t_fmmp-fkbtr. int_cashflow-com_fkbtr = int_cashflow-com_fkbtr + g_t_fmmp-fkbtr. ENDIF. ENDIF. IF r_fipos-option = 'BT'. IF g_t_fmmp-fipos >= r_fipos-low AND g_t_fmmp-fipos <= r_fipos-high. int_cashflow-fi_fkbtr = int_cashflow-fi_fkbtr + g_t_fmmp-fkbtr. int_cashflow-com_fkbtr = int_cashflow-com_fkbtr + g_t_fmmp-fkbtr. ENDIF. ENDIF. ENDLOOP. MODIFY TABLE int_cashflow. CLEAR int_cashflow. CLEAR r_fipos. REFRESH r_fipos. ENDLOOP . AT END OF bukrs. PERFORM cal_indirect USING g_t_fmmp-bukrs. PERFORM output_info USING 'COM'. num_of_bukrs = num_of_bukrs + 1. ENDAT. AT END OF fikrs. IF num_of_bukrs NE 1. CLEAR l_sav_butxt. PERFORM output_info USING 'FI'. ENDIF. WRITE : / text-103. ENDAT. ENDLOOP.TOP-OF-PAGE. IF NOT ( s_budat-low IS INITIAL ). min_budat = s_budat-low. ENDIF. IF NOT ( s_budat-high IS INITIAL ). max_budat = s_budat-high. ENDIF. SKIP 2. WRITE: /100 '现 金 流 量 表'. WRITE: /. WRITE: /210 '会年企03表'. * IF min_budat(6) = max_budat(6). * WRITE: /104 min_budat(4), '年', min_budat+4(2), '月', * 202 '报表编号: 会商03表'. * ELSE. * WRITE: /097 '日期:', * 103 min_budat, 113 '-' , 115 max_budat, * 202 '报表编号: 会商03表'. * ENDIF. * WRITE: /012 '编制单位: ', l_sav_butxt, 100 max_budat(4), '年', max_budat+4(2), '月', max_budat+6(2), '日', 212 '单位: 元'. WRITE: /011 sy-uline. WRITE : /011 sy-vline, 040 ' 项 目', 085 sy-vline, 087 '行次', 093 sy-vline, 095 ' 金 额 ', 116 sy-vline, 148 '补充资料', 190 sy-vline, 192 '行次', 198 sy-vline, ' 金 额', 220 sy-vline. WRITE: /011 sy-uline. *********************************************************************** * AT LINE-SELECTION. CHECK l_sav_hide_row_type = 'EPOS'. CALL FUNCTION 'FM_DOCUMENT_DISPLAY' EXPORTING i_wrttp = g_t_fmmp-wrttp i_belnr = g_t_fmmp-zbelnr i_blpos = g_t_fmmp-zbuzei i_bukrs = g_t_fmmp-vo_bukrs i_gjahr = g_t_fmmp-vo_gjahr. *********************************************************************** * AT USER-COMMAND. WHEN 'SELE'. SET PF-STATUS 'SELE'. CALL FUNCTION 'FM_SELECTION_CRITERIA_PRINT' EXPORTING i_report_name = 'RFFMIEP5' EXCEPTIONS OTHERS = 1. ENDCASE. *&--------------------------------------------------------------------- * *& Form READ_FIKRS_TEXT *&--------------------------------------------------------------------- * FORM read_fikrs_text USING u_fikrs CHANGING c_fitxt. g_t_fkrs = space. g_t_fkrs-fikrs = u_fikrs. READ TABLE g_t_fkrs. IF sy-subrc = 0. c_fitxt = g_t_fkrs-fitxt. ENDIF. ENDFORM. " READ_FIKRS_TEXT *&--------------------------------------------------------------------- * *& Form READ_FIPOS_TEXT *&--------------------------------------------------------------------- * FORM read_fipos_text USING u_fipos CHANGING c_pname. g_t_fpos = space. g_t_fpos-fipos = u_fipos. READ TABLE g_t_fpos. IF sy-subrc = 0. c_pname = g_t_fpos-pname. ENDIF. ENDFORM. " READ_FIPOS_TEXT *&--------------------------------------------------------------------- * *& Form READ_BUKRS_TEXT *&--------------------------------------------------------------------- * FORM read_bukrs_text USING u_bukrs CHANGING c_butxt. g_t_t001 = space. g_t_t001-bukrs = u_bukrs. READ TABLE g_t_t001. c_butxt = g_t_t001-butxt. ENDIF. ENDFORM. " READ_FIPOS_TEXT *&--------------------------------------------------------------------- * *& Form GET_KUNNR_LIFNR_TEXT *&--------------------------------------------------------------------- * FORM get_kunnr_lifnr_text USING value(u_kunnr) value(u_lifnr) CHANGING c_text. CLEAR c_text. IF NOT u_kunnr IS INITIAL. IF u_kunnr = '*'. c_text = '*'. ELSE. * "/ Lesen Debitor-Text aus interner Tabelle g_t_kna1 = space. g_t_kna1-kunnr = u_kunnr. READ TABLE g_t_kna1. IF sy-subrc = 0. c_text = g_t_kna1-sortl. ENDIF. ENDIF. ENDIF. IF NOT u_lifnr IS INITIAL. IF u_lifnr = '*'. c_text = '*'. ELSE. * "/ Lesen Kreditor-Text aus interner Tabelle g_t_lfa1 = space. g_t_lfa1-lifnr = u_lifnr. READ TABLE g_t_lfa1. IF sy-subrc = 0. c_text = g_t_lfa1-sortl. ENDIF. ENDIF. ENDIF. ENDFORM. " GET_KUNNR_LIFNR_TEXT *********************************************************** FORM input_range USING value(rfipos). DATA: off TYPE i, offset TYPE i, doing TYPE i. DATA: item(20), str(10). off = 0. offset = 0. doing = 1. WHILE doing <> 0. SHIFT rfipos BY offset PLACES. SEARCH rfipos FOR ','. IF sy-subrc = 0. offset = sy-fdpos. MOVE rfipos(offset) TO item. offset = offset + 1. ELSE. MOVE rfipos TO item. doing = 0. ENDIF. SEARCH item FOR '-'. IF sy-subrc = 0. off = sy-fdpos. MOVE item(off) TO str. off = off + 1. r_fipos-sign = 'I'. r_fipos-option = 'BT'. r_fipos-low = str. SHIFT item BY off PLACES. MOVE item TO str. r_fipos-high = str. ELSE. MOVE item TO str. r_fipos-sign = 'I'. r_fipos-option = 'EQ'. r_fipos-low = str. ENDIF. APPEND r_fipos. ENDWHILE. ENDFORM. ******* FORM output_info USING fi_value. DATA zcashflow LIKE fmmp-fkbtr. DATA: i LIKE sy-tabix, j LIKE sy-tabix, k LIKE sy-tabix, l LIKE sy-tabix. i = 0. j = 0. k = 32. LOOP AT int_cashflow FROM 1 TO 32. IF fi_value = 'COM'. zcashflow = int_cashflow-com_fkbtr. ELSEIF fi_value = 'FI'. ENDIF. i = i + 1. j = j + 1. k = k + 1. WRITE : /011 sy-vline, 014 int_cashflow-desc, 085 sy-vline, 088(2) i,093 sy-vline. IF zcashflow <> 0. WRITE: 099 zcashflow CURRENCY g_t_fmmp-fwaer. ENDIF. IF i < 3. l = i + 32. READ TABLE int_cashflow INDEX l. IF fi_value = 'COM'. zcashflow = int_cashflow-com_fkbtr. ELSEIF fi_value = 'FI'. zcashflow = int_cashflow-fi_fkbtr. ENDIF. WRITE: 116 sy-vline, 118(60) int_cashflow-desc, 190 sy-vline, 193(2) k, 198 sy-vline. IF zcashflow <> 0. WRITE: 204 zcashflow CURRENCY g_t_fmmp-fwaer. ENDIF. ELSE. l = i - 2. READ TABLE itb0 INDEX l. IF sy-subrc <> 0. CLEAR itb0. ENDIF. WRITE: 116 sy-vline, 118(60) itb0-txt, 190 sy-vline, 193(2) k, 198 sy-vline. IF itb0-num <> 0. WRITE: 204 itb0-num CURRENCY g_t_fmmp-fwaer. ENDIF. ENDIF. WRITE: 220 sy-vline. WRITE: /011 sy-uline. IF j >= 25. j = 0. PERFORM out_footer. NEW-PAGE. ENDIF. ENDLOOP. PERFORM out_footer. ENDFORM. *---------------------------------------------------------------------* *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM out_footer. DATA: usrname(80) TYPE c. SELECT SINGLE * FROM usr21 WHERE bname = sy-uname. SELECT SINGLE * FROM adrp WHERE persnumber = usr21-persnumber AND date_from <= sy-datum AND date_to >= sy-datum. CONCATENATE adrp-name_last adrp-name_first INTO usrname. CONDENSE usrname NO-GAPS. WRITE: /012 '制表人员:', (12) usrname, 110 '打印日期:', sy-datum, 202 '打印时间:', sy-uzeit. ENDFORM. *********************************************************************** ******************* 计算科目段在指定日期的起始余额 ******************** *********************************************************************** ***** ***** ***** 参数:mdate1 开始日期(含此天) ***** ***** mdate2 结束日期(不含此天) ***** ***** mstrin 科目编号的匹配模式字符串 ***** ***** 结果:znum ***** ***** 算法:某日余额 = 年初余额 + 一月余额 + ...+ ***** ***** 上月余额 + 本月到mdate2余额 ***** ***** ***** *********************************************************************** FORM cal_dates_amount USING mdate1 mdate2 mstring CHANGING znum. DATA: BEGIN OF iglt0 OCCURS 0. INCLUDE STRUCTURE glt0. DATA: END OF iglt0. DATA: BEGIN OF itmp OCCURS 0, num LIKE bseg-dmbtr, END OF itmp. DATA: i LIKE sy-tabix. SELECT * FROM glt0 INTO TABLE iglt0 WHERE bukrs = z_bukrs AND ryear = mdate1(4) AND racct LIKE mstring. LOOP AT iglt0. REFRESH itmp. itmp-num = iglt0-hslvt. APPEND itmp. itmp-num = iglt0-hsl01. APPEND itmp. itmp-num = iglt0-hsl02. APPEND itmp. itmp-num = iglt0-hsl03. APPEND itmp. itmp-num = iglt0-hsl05. APPEND itmp. itmp-num = iglt0-hsl06. APPEND itmp. itmp-num = iglt0-hsl07. APPEND itmp. itmp-num = iglt0-hsl08. APPEND itmp. itmp-num = iglt0-hsl09. APPEND itmp. itmp-num = iglt0-hsl10. APPEND itmp. itmp-num = iglt0-hsl11. APPEND itmp. LOOP AT itmp FROM 1 TO mdate1+4(2). znum = znum + itmp-num. ENDLOOP. ENDLOOP. SELECT * FROM bkpf WHERE bukrs = z_bukrs AND budat >= mdate1 AND budat < mdate2. SELECT * FROM bsis WHERE gjahr = bkpf-gjahr AND belnr = bkpf-belnr AND hkont LIKE mstring. IF bsis-shkzg = 'S'. znum = znum + bsis-dmbtr. ELSE. znum = znum - bsis-dmbtr. ENDIF. ENDSELECT. ENDSELECT. ENDFORM. DEFINE cal_data. types: begin of datatype, dnum like bseg-dmbtr, "借方金额 cnum like bseg-dmbtr, "贷方金额 end of datatype. data: masset type datatype, "固定资产数据 minvest type datatype, "投资数据 mlib type datatype, "短期负债数据 mstock type datatype, "库存数据 mllib type datatype, "长期负债数据 mequit type datatype. "权益数据 loop at tab2. case tab2-hkont(4). when '1501' or '1701'. "固定资产和无形资产 if tab2-shkzg = 'S'. add tab2-dmbtr to masset-dnum. else. add tab2-dmbtr to masset-cnum. endif. when '1101' or '1401' or '1402'. "短期投资与长期投资 if tab2-shkzg = 'S'. add tab2-dmbtr to minvest-dnum. add tab2-dmbtr to minvest-cnum. endif. when '1221' or '1231' or '1243'. "库存科目 if tab2-shkzg = 'S'. add tab2-dmbtr to mstock-dnum. else. add tab2-dmbtr to mstock-cnum. endif. when '2111' or '2121' or '2181'. "经营性负债 if tab2-shkzg = 'S'. add tab2-dmbtr to mlib-dnum. else. add tab2-dmbtr to mlib-cnum. endif. when '2321'. "长期负债 if tab2-shkzg = 'S'. add tab2-dmbtr to mllib-dnum. else. add tab2-dmbtr to mllib-cnum. endif. when '3105' or '3111'. "所有者权益 if tab2-shkzg = 'S'. add tab2-dmbtr to mequit-dnum. else. add tab2-dmbtr to mequit-cnum. endif. endcase. endloop. if masset-dnum > 0. "固定资产增加 if mllib-cnum > 0. "融资租赁固定资产 if masset-dnum < mllib-cnum. z_asset_rented = z_asset_rented + masset-dnum. mllib-cnum = mllib-cnum - masset-dnum. masset-dnum = 0. else. z_asset_rented = z_asset_rented + mllib-cnum. masset-dnum = masset-dnum - mllib-cnum. mllib-cnum = 0. endif. endif. endif. if masset-cnum > 0. "固定资产减少 if mlib-dnum > 0. "固定资产偿还债务(经营性) if masset-cnum > mlib-dnum. z_asset_debit = z_asset_debit + mlib-dnum. z_debit_short = z_debit_short + mlib-dnum. masset-cnum = masset-cnum - mlib-dnum. mlib-dnum = 0. z_asset_debit = z_asset_debit + masset-cnum. z_debit_short = z_debit_short + masset-cnum. mlib-dnum = mlib-dnum - masset-cnum. masset-cnum = 0. endif. endif. if mllib-dnum > 0. "固定资产偿还债务(长期) if masset-cnum > mllib-dnum. z_asset_debit = z_asset_debit + mllib-dnum. masset-cnum = masset-cnum - mllib-dnum. mllib-dnum = 0. else. z_asset_debit = z_asset_debit + masset-cnum. mllib-dnum = mllib-dnum - masset-cnum. masset-cnum = 0. endif. endif. if minvest-dnum > 0. "以固定资产投资 if masset-cnum > minvest-dnum. z_asset_invest = z_asset_invest + minvest-dnum. masset-cnum = masset-cnum - minvest-dnum. minvest-dnum = 0. else. z_asset_invest = z_asset_invest + masset-cnum. minvest-dnum = minvest-dnum - masset-cnum. masset-cnum = 0. endif. endif. endif. if minvest-dnum > 0. "投资增加 if masset-cnum > 0. "以固定资产投资 if masset-cnum > minvest-dnum. z_asset_invest = z_asset_invest + minvest-dnum. masset-cnum = masset-cnum - minvest-dnum. minvest = 0. else. z_asset_invest = z_asset_invest + masset-cnum. minvest-dnum = minvest-dnum - masset-cnum. masset-cnum = 0. endif. endif. endif. if minvest-cnum > 0. "投资减少 if mlib-dnum > 0. "以投资偿还债务(经营性) if mlib-dnum > minvest-cnum. z_invest_debit = z_invest_debit + minvest-cnum. z_debit_short = z_debit_short + minvest-cnum. minvest-cnum = 0. else. z_invest_debit = z_invest_debit + mlib-dnum. z_debit_short = z_debit_short + mlib-dnum. minvest-cnum = minvest-cnum - mlib-dnum. mlib-dnum = 0. endif. endif. if mllib-dnum > 0. "以投资偿还债务(长期) if mllib-dnum > minvest-cnum. z_invest_debit = z_invest_debit + minvest-cnum. mllib-dnum = mllib-dnum - minvest-cnum. minvest-cnum = 0. else. z_invest_debit = z_invest_debit + mllib-dnum. minvest-cnum = minvest-cnum - mllib-dnum. mllib-dnum = 0. endif. endif. endif. if mstock-cnum > 0. "存货减少 if mlib-dnum > 0. "以存货偿还债务(经营性) if mlib-dnum > mstock-cnum. z_stock_debit = z_stock_debit + mstock-cnum. z_debit_short = z_debit_short + mstock-cnum. mlib-dnum = mlib-dnum - mstock-cnum. mstock-cnum = 0. else. z_stock_debit = z_stock_debit + mlib-dnum. z_debit_short = z_debit_short + mlib-dnum. mstock-cnum = mstock-cnum - mlib-dnum. mlib-dnum = 0. endif. endif. if mllib-dnum > 0. "以存货偿还债务(长期) if mllib-dnum > mstock-cnum. z_stock_debit = z_stock_debit + mstock-cnum. mllib-dnum = mllib-dnum - mstock-cnum. mstock-cnum = 0. else. z_stock_debit = z_stock_debit + mllib-dnum. mstock-cnum = mstock-cnum - mllib-dnum. mllib-dnum = 0. endif. endif. endif. if mequit-cnum > 0. "资本增加 if mlib-dnum > mequit-cnum. z_debit_equit = z_debit_equit + mequit-cnum. z_debit_short = z_debit_short + mequit-cnum. mlib-dnum = mlib-dnum - mequit-cnum. mequit-cnum = 0. else. z_debit_equit = z_debit_equit + mlib-dnum. z_debit_short = z_debit_short + mlib-dnum. mequit-cnum = mequit-cnum - mlib-dnum. mlib-dnum = 0. endif. endif. if mllib-dnum > 0. if mllib-dnum > mequit-cnum. z_debit_equit = z_debit_equit + mequit-cnum. mllib-dnum = mllib-dnum - mequit-cnum. mequit-cnum = 0. else. z_debit_equit = z_debit_equit + mllib-dnum. mequit-cnum = mequit-cnum - mllib-dnum. mlib-dnum = 0. endif. endif. endif. END-OF-DEFINITION.*---------------------------------------------------------------------* * FORM cal_indirect * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> pbukrs * *---------------------------------------------------------------------* FORM cal_indirect USING pbukrs LIKE fmmp-bukrs. DATA: BEGIN OF tab1 OCCURS 0, gjahr LIKE bkpf-gjahr, belnr LIKE bkpf-belnr, END OF tab1, BEGIN OF tab2 OCCURS 0, gjahr LIKE bseg-gjahr, belnr LIKE bseg-belnr, hkont LIKE bseg-hkont, shkzg LIKE bseg-shkzg, dmbtr LIKE bseg-dmbtr, END OF tab2, BEGIN OF tab3 OCCURS 0, gjahr LIKE bseg-gjahr, belnr LIKE bseg-belnr, hkont LIKE bseg-hkont, dmbtr LIKE bseg-dmbtr, END OF tab3. IF NOT ( s_budat-low IS INITIAL ). z_min_budat = s_budat-low. ELSE. z_min_budat = min_budat. ENDIF. IF NOT ( s_budat-high IS INITIAL ). z_max_budat = s_budat-high. ELSE. z_max_budat = max_budat. ENDIF. z_bukrs = pbukrs. SELECT gjahr belnr FROM bkpf INTO CORRESPONDING FIELDS OF TABLE tab1 WHERE bukrs = z_bukrs AND budat >= z_min_budat AND budat <= z_max_budat. LOOP AT tab1. SELECT hkont shkzg dmbtr FROM bseg INTO CORRESPONDING FIELDS OF tab2 WHERE gjahr = tab1-gjahr AND belnr = tab1-belnr. tab2-gjahr = tab1-gjahr. tab2-belnr = tab1-belnr. APPEND tab2. ENDSELECT. ENDLOOP. REFRESH tab1. LOOP AT tab2. "挑出与补充资料相关的凭证号 IF tab2-hkont(4) = '1501' OR "固定资产原值科目 tab2-hkont(4) = '1701' OR "固定资产清理 tab2-hkont(4) = '1101' OR "短期投资 tab2-hkont(4) = '1401' OR "长期股权投资 tab2-hkont(4) = '1402' OR "长期债权投资 tab2-hkont(4) = '1221' OR "包装物 tab2-hkont(4) = '1231' OR "低值易耗品 tab2-hkont(4) = '1243' OR "库存商品 tab2-hkont(4) = '3105' OR "上级拨入 tab2-hkont(4) = '3111'. "资本公积 tab1-gjahr = tab2-gjahr. tab1-belnr = tab2-belnr. APPEND tab1. ENDIF. IF tab2-shkzg = 'H'. tab2-dmbtr = 0 - tab2-dmbtr. ENDIF. IF tab2-hkont(1) = '5'. "净利润 ADD tab2-dmbtr TO z_profit. ENDIF. IF tab2-hkont = '5501037000'. "管理费用-坏帐损失 ADD tab2-dmbtr TO z_bad_debit. ENDIF. IF tab2-hkont = '1102000000' OR "短期投资减值准备 tab2-hkont = '1281000000' OR "存 货跌价准备 tab2-hkont = '1421000000' OR "长期投资减值准备 tab2-hkont = '1505000000' OR "固定资产减值准备 tab2-hkont = '1605000000' OR "在建工程减值准备 tab2-hkont = '1281000000'. "无形资产减值准备 z_bad_debit = z_bad_debit - tab2-dmbtr. ENDIF. IF tab2-hkont(7) = '5501020'. "固定资产折旧 ADD tab2-dmbtr TO z_asset_dep. ENDIF. IF tab2-hkont(7) = '5501043'. "无形资产摊销 ADD tab2-dmbtr TO z_intang_dep. ENDIF. IF tab2-hkont(4) = '1301'. "待摊费用 ADD tab2-dmbtr TO z_paid_dec. ENDIF. IF tab2-hkont(4) = '2191'. "预提费用 ADD tab2-dmbtr TO z_accrul_inc. ENDIF. IF tab2-hkont = '5301001000' OR "营业外收入-处置长期资产净收入 tab2-hkont = '5301002000' OR "营业外收入-固定资产盘盈 tab2-hkont = '5601001000' OR "营业外支出-处置长期资产净损失 tab2-hkont = '5601002000'. "营业外支出-固定资产盘亏 ADD tab2-dmbtr TO z_asset_pro. ENDIF. IF tab2-hkont(4) = '5503'. "财务费用 ADD tab2-dmbtr TO z_fi_expen. ENDIF. IF tab2-hkont(4) = '1221' OR "包装物 tab2-hkont(4) = '1231' OR "低值易耗品 tab2-hkont(4) = '1243'. "库存商品 ADD tab2-dmbtr TO z_stock. ENDIF. tab2-hkont(4) = '1131' OR "应收帐款 tab2-hkont(4) = '1133' OR "其他应收帐款 tab2-hkont(4) = '1141'. "坏帐准备 ADD tab2-dmbtr TO z_ar. ENDIF. IF tab2-hkont(4) = '2111' OR "应付票据 tab2-hkont(4) = '2121' OR "应付帐款 tab2-hkont(4) = '2151' OR "应付工资 tab2-hkont(4) = '2153' OR "应付福利费 tab2-hkont(4) = '2171' OR "应交税金 tab2-hkont(4) = '2176' OR "其他应缴款 tab2-hkont(4) = '2181'. "其他应付款 ADD tab2-dmbtr TO z_ap. ENDIF. ENDLOOP. SORT tab1 BY gjahr belnr. DELETE ADJACENT DUPLICATES FROM tab1 COMPARING gjahr belnr. LOOP AT tab2. READ TABLE tab1 WITH KEY gjahr = tab2-gjahr belnr = tab2-belnr BINARY SEARCH. IF sy-subrc = 0. tab3 = tab2. APPEND tab3. ENDIF. ENDLOOP. REFRESH tab2. SORT tab3 BY gjahr belnr. LOOP AT tab3. tab2 = tab3. APPEND tab2. AT END OF belnr. cal_data. "计算每张凭证中的补充资料 REFRESH tab2. ENDAT. ENDLOOP. z_stock = z_stock + z_stock_debit. z_ap = z_ap - z_debit_short. LOOP AT int_cashflow. IF int_cashflow-desc CP '*经营活动产生的现金流量净额*'. z_other = z_profit - z_bad_debit - z_asset_dep - z_intang_dep - z_longpaid_dep + z_paid_dec + z_accrul_inc - z_asset_pro - z_asset_scr - z_fi_expen - z_invest_loss + z_defer_tax + z_stock + z_ar + z_ap. z_production = int_cashflow-com_fkbtr. z_other = int_cashflow-com_fkbtr + z_other. 。