【SAP FICO】财务三大报表_2-进阶(现金流量表-数据表结构、取数逻辑)

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、现金流量表
  • 二、现金流量表的数据表结构
    • 1、核心数据表
    • 2、内部数据结构
  • 三、现金流量表的取数逻辑
    • 1、获取用户输入
    • 2、获取数据
    • 3、处理数据
  • 总结


前言

承接上篇财务三大报表_2-进阶(利润表-数据表结构、取数逻辑),本篇继续详细介绍现金流量表的相关数据表结构、取数逻辑等(事实上,两个报表的逻辑、处理顺序都是一致的)
写的不周到的地方还请大家批评指正,互相学习


一、现金流量表

TCODE:ZFIR004
选择公司代码、会计年度、期间,即可看到该公司在某一会计年度某一期间的详细现金流量表,如下:
在这里插入图片描述
可看到行项目主要包括:经营活动产生的现金流量(营业活动现金流入、营业活动现金流出)、投资活动产生的现金流量(投资活动现金流入、投资活动现金流出)、筹资活动产生的现金流量(筹资活动现金流入、筹资活动现金流出)

二、现金流量表的数据表结构

1、核心数据表

  • faglflext:是SAP中的通用财务数据表,用于存储总账科目的财务数据,这里主要用于用于提取期初现金及现金等价物余额等关键数据
    关键字段包括:科目代码racct,借贷方向drcrk,期末数和年初数的余额hsl01、hslvt
  • zfit009:是自定义的表,是财务三大报表存储表,存储了现金流量表的配置信息
    关键字段包括:公司代码bukrs,报表类型ztype(IS是利润表),列标识zcolumn(用于区分不同的列),行标识zrow,借方标识和贷方标识zjfbs、zdfbs,计算公式formula,正负反转reversal# 三、现金流量表的取数逻辑
  • bkpf:会计核算凭证标题(财务凭证抬头表),包含凭证的抬头信息
  • bseg:会计核算凭证段(财务凭证行项目表),包含凭证的详细信息
  • acdoca:通用日记账分录行项目,存储会计文档的总账行项目数

2、内部数据结构

  • 5个结构体类型typ_bkpf,typ_bseg,typ_dmbtr,typ_dmbtr1,typ_fag,typ_zc
  • gt_bkpf、gtu_bkpf、gsu_bkpf、gs_bkpf:与财务凭证抬头(bkpf)相关的数据表,用于存储和处理凭证抬头信息
  • gt_bseg、gtu_bseg、gs_bseg:与财务凭证行项目(bseg)相关的数据表,用于存储和处理凭证行项目信息。
  • gt_fit001、gs_fit001:存储从zfit009表中读取的现金流量表配置信息
  • gt_zc、gs_zc:可能用于存储特定于现金流量表的其他配置或计算数据
  • gt_dmbtr、gs_dmbtr:用于存储和处理现金流量表中的金额数据

三、现金流量表的取数逻辑

1、获取用户输入

通过选择屏幕获取用户输入的公司代码、会计年度和月份

2、获取数据

子例程sub_get_data:

  • 设置筛选条件
    设定凭证状态(r_bstat)的范围,只包括特定的凭证状态(如’D’、‘S’、‘V’、‘W’、'Z’等)(即:只取设定的凭证状态下的所有凭证 来计算现金流量),设定现金类科目的范围(r_hkont)
 DATA: tp_gjahr TYPE bkpf-gjahr,t_lines  TYPE i,count    TYPE i,l_mod    TYPE i.
*  DATA: lt_bseg TYPE STANDARD TABLE OF typ_bseg .RANGES: r_bstat FOR bkpf-bstat .RANGES: r_hkont FOR bseg-hkont .RANGES: r_belnr FOR bkpf-belnr .CLEAR: r_bstat,r_bstat[] .   "只取下列对应的凭证状态的所有凭证  来计算现金流量r_bstat(3) = 'IEQ' .r_bstat-low = 'D' .APPEND r_bstat .r_bstat-low = 'L' .APPEND r_bstat .r_bstat-low = 'M' .APPEND r_bstat .r_bstat-low = 'S' .APPEND r_bstat .r_bstat-low = 'V' .APPEND r_bstat .r_bstat-low = 'W' .APPEND r_bstat .r_bstat-low = 'Z' .APPEND r_bstat .
CLEAR:r_hkont,r_hkont[] .    "现金类科目范围CLEAR:r_hkont .r_hkont(3) = 'IBT' .r_hkont-low = '0010010000' .r_hkont-high = '0010029999'."change by dxy at 12.01.2024 19:35:41APPEND r_hkont.
  • 获取数据
    select语句
    • 从faglflext表中获取期初现金及现金等价物余额等数据(即获取该公司代码下所有科目的发生额数据),并存储在gt_fag 表中;
 SELECT (tp_cond)                                  "获取该公司代码下所有科目的发生额数据INTO CORRESPONDING FIELDS OF TABLE gt_fag   "FROM faglflextWHERE rbukrs IN p_bukrsAND ryear  = tp_yearAND rldnr  = '0L'" AND  prctr IN s_prctrAND racct IN   r_saknr..FIELD-SYMBOLS: <hsl> TYPE any .
  • 从bseg表取出所有的满足现金流量表的计算条件的凭证行项目,并存储在gt_bseg表中;同时,从acdoca表中选取满足条件的数据,特别是当凭证状态为’U’时(连续两年小于等于当前期间的凭证–凭证状态不为U),并关联到bkpf表。将acdoca表中的数据(如果有)追加到bseg表中
CLEAR:gt_bseg[] ."取出所有的满足现金流量表的计算条件的凭证行项目SELECT bukrs gjahr belnr buzeihkont rstgr shkzg dmbtrINTO TABLE gt_bsegFROM bseg
***  WHERE bukrs = p_bukrsWHERE bukrs IN p_bukrsAND gjahr = p_gjahrAND hkont IN r_hkont
**    AND belnr IN ( SELECT belnr FROM bkpf WHERE bukrs = p_bukrs                         "连续两年小于等于当前期间的凭证--凭证状态不为UAND belnr IN ( SELECT belnr FROM bkpf WHERE bukrs IN p_bukrs                         "连续两年小于等于当前期间的凭证--凭证状态不为UAND gjahr = p_gjahrAND bstat NE 'U'AND monat <= p_monat )%_HINTS HDB 'dbsl_add_stmt with hint (USE_OLAP_PLAN)'.SELECT  acdoca~rbukrs AS bukrsacdoca~gjahracdoca~belnracdoca~buzeiacdoca~racct AS hkontacdoca~drcrk AS shkzgacdoca~hsl AS dmbtrAPPENDING CORRESPONDING FIELDS OF TABLE gt_bsegFROM acdocaINNER JOIN bkpf   ON    bkpf~bukrs =  acdoca~rbukrs AND  bkpf~belnr  = acdoca~belnrAND bkpf~gjahr  =  acdoca~gjahr
***  WHERE bkpf~bukrs = p_bukrsWHERE bkpf~bukrs IN p_bukrsAND bkpf~gjahr = p_gjahrAND bkpf~bstat = 'U'AND bkpf~monat <= p_monatAND acdoca~racct IN r_hkontAND acdoca~bstat = 'U'.
  • 根据配置表zfit009中的信息,确定需要获取哪些科目的数据
SELECT *INTO CORRESPONDING FIELDS OF TABLE gt_fit001FROM zfit009WHERE bukrs = ''AND   ztype = 'CF'AND   langu = sy-langu .SORT gt_fit001 BY bukrs ztype zcolumn zrow zsnum .SORT gt_fit001 BY ztype zcolumn zrow .

3、处理数据

子例程sub_deal_data:
处理获取的数据,计算现金流量表的各项累计值

  • 循环遍历配置数据(gt_fit001),根据配置表中的配置的各项中的现金流量码,整合所有的凭证数据,计算出对应各项的累计值
    • 如果配置项指定了特定的现金流量码(zrow = ‘034’),则直接设置本月累计(nmhsl)和本年累计(nyhsl)。
    • 如果配置项不是通过公式计算(formula = ‘’),则根据配置项中的条件(借贷标志、科目范围等)筛选bseg表中的记录,并计算累计值。
      筛选条件包括借贷标志(shkzg)、科目范围(rstgr)、借贷方标志(zjfbs和zdfbs)。
      根据筛选出的记录,分别计算当月、当年、上月、上年的累计值。如果配置项指定了反转(reversal = ‘X’),则对累计值进行反转处理。
    • 如果配置项是通过公式计算,则调用caculate_results子程序进行计算,该子程序具体实现逻辑和利润表、资产负债表逻辑一致,具体可看前两篇
RANGES: r_shkzg FOR bseg-shkzg .CLEAR: gt_dmbtr[].
*--------Add by JT-BAI at 20220511 begin----------------IF lines( p_bukrs ) > 1 OR p_bukrs-high IS NOT INITIAL.DATA(lv_bukrs) = CONV char4('合并').ELSE.lv_bukrs = p_bukrs-low.ENDIF.
*--------Add by JT-BAI at 20220511 end------------------LOOP AT gt_fit001 ASSIGNING <gs_fit001> .  "根据配置表中的配置的各项中的现金流量码   整合所有的凭证数据"计算出对应各项的累计值CLEAR: gs_dmbtr .MOVE-CORRESPONDING <gs_fit001> TO gs_dmbtr .IF gs_dmbtr-zrow = '034'.gs_dmbtr-nmhsl = gv_dmbtr . "本月累计gs_dmbtr-nyhsl = gv_hslvt . "本年累计ENDIF.IF <gs_fit001>-formula = '' .          "不是通过公式计算IF ( ( <gs_fit001>-rstgr <> '' ) AND ( <gs_fit001>-zjfbs <> '' OR <gs_fit001>-zdfbs <> '' ) )  .
*-----------------------------------------------------------------------------
*---组织整合条件
*-----------------------------------------------------------------------------
*-----------------------------------------------------------------------*”借贷标识CLEAR:r_shkzg,r_shkzg[] .IF <gs_fit001>-zjfbs = 'X' .r_shkzg(3) = 'IEQ' .r_shkzg-low = 'S' .APPEND r_shkzg .ENDIF .IF <gs_fit001>-zdfbs = 'X'.r_shkzg(3) = 'IEQ' .r_shkzg-low = 'H' .APPEND r_shkzg .ENDIF.
*-----------------------------------------------------------------------*LOOP AT gt_bseg INTO gs_bseg WHERE rstgr = <gs_fit001>-rstgr AND shkzg IN r_shkzg ."因为ACDOCA读取出来的数据有正负,而BSEG读取出来的数据有借贷gs_bseg-dmbtr = abs( gs_bseg-dmbtr ).IF gs_bseg-gjahr = p_gjahr .  "当年IF gs_bseg-shkzg = 'S'.IF gs_bseg-monat = p_monat .ADD gs_bseg-dmbtr TO gs_dmbtr-nmhsl .ENDIF.ADD gs_bseg-dmbtr TO gs_dmbtr-nyhsl .ELSEIF gs_bseg-shkzg = 'H' .IF gs_bseg-monat = p_monat .SUBTRACT gs_bseg-dmbtr  FROM gs_dmbtr-nmhsl .ENDIF .SUBTRACT gs_bseg-dmbtr FROM gs_dmbtr-nyhsl .ENDIF.ELSE .  "上年IF gs_bseg-shkzg = 'S' .IF gs_bseg-monat = p_monat .ADD gs_bseg-dmbtr TO gs_dmbtr-lmhsl .ENDIF.ADD gs_bseg-dmbtr TO gs_dmbtr-lyhsl .ELSEIF gs_bseg-shkzg = 'H' .IF gs_bseg-monat = p_monat .SUBTRACT gs_bseg-dmbtr FROM gs_dmbtr-lmhsl .ENDIF .SUBTRACT gs_bseg-dmbtr FROM gs_dmbtr-lyhsl .ENDIF.ENDIF .ENDLOOP.IF <gs_fit001>-reversal = 'X'.gs_dmbtr-nmhsl = 0 - gs_dmbtr-nmhsl.gs_dmbtr-lmhsl = 0 - gs_dmbtr-lmhsl.gs_dmbtr-nyhsl = 0 - gs_dmbtr-nyhsl.gs_dmbtr-lyhsl = 0 - gs_dmbtr-lyhsl.  "ADD BY ZHANGCS 20180709ENDIF.COLLECT gs_dmbtr INTO gt_dmbtr .ELSE .COLLECT gs_dmbtr INTO gt_dmbtr .
***        PERFORM sub_get_balance USING <gs_fit001>-zrow.      "直接获取余额ENDIF.ELSE .             "公式计算项PERFORM caculate_results CHANGING <gs_fit001>-formula gs_dmbtr-lmhsl gs_dmbtr-lyhsl       "公式计算和资产负债表的相同 参考资产负债表注释各项gs_dmbtr-nmhsl gs_dmbtr-nyhsl  .   "有计算公式的行没有分科目号段照成多行的问题COLLECT gs_dmbtr INTO gt_dmbtr .ENDIF .
  • 处理结果存储
    将处理后的数据gs_dmbtr收集到gt_dmbtr内表中

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/16167.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【人工智能】深入解析!三种实现ChatGPT打字机效果的最佳方案

在当今AI快速发展的时代&#xff0c;ChatGPT 凭借其强大的自然语言处理能力&#xff0c;已经成为众多开发者和企业的首选工具。然而&#xff0c;如何在前端页面中实现类似于ChatGPT的打字机效果&#xff0c;以提升用户交互体验&#xff0c;成为了一个广受关注的话题。今天&…

C++:继承

一、什么是继承&#xff1f; 概念&#xff1a; 在我们认识模板之后&#xff0c;模板是写与类型无关的代码&#xff0c;是一种复用方法。今天讲解的是继承&#xff0c;继承也是代码复用的方法&#xff0c;是在原有的基础上进行增加新的类。由此继承体现了面向对象的层次结构&a…

Java版本Spring Cloud+SpringBoot b2b2c:Java商城实现一件代发设置及多商家直播带货商城搭建

一、产品简介 我们的JAVA版多商家入驻直播带货商城系统是一款全*面的电子商务平台&#xff0c;它允许商家和消费者在一个集成的环境中进行互动。系统采用先进的JAVA语言开发&#xff0c;提供多商家入驻、直播带货、B2B2C等多种功能&#xff0c;帮助用户实现线上线下的无缝对接…

【Linux】进程

目录 谈谈硬件冯诺依曼体系结构数据流向 谈谈软件(操作系统)什么是操作系统&#xff1f;为什么需要操作系统&#xff1f;操作系统如何管理&#xff1f; 谈谈进程管理进程PCB查看进程ps ajxprockill -9 PID 系统调用getpid()getppid()fork() 进程状态linux下的进程状态RSDT/tXZ …

【comfyui教程】ComfyUI绘画|ComfyUI 本地部署(Windows系统)

前言 关于 ComfyUI 的部署&#xff0c;推荐使用 Window系统 英伟达显卡 的搭配组合。 整合包下载⏬ 所有的AI设计工具&#xff0c;安装包、模型和插件&#xff0c;都已经整理好了&#xff0c;&#x1f447;获取~ PS&#xff1a;最好是下载到固态硬盘内&#xff0c;确保存储空…

飞牛云fnOS本地部署1Panel服务器运维管理面板并搭建Halo个人博客

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Python实现贪吃蛇 经典解压小游戏!附源码

大家应该都玩过诺基亚上面的贪吃蛇吧&#xff0c;那是一段美好的童年回忆&#xff0c;本文将带你一步步用python语言实现一个snake小游戏&#xff01; 基础环境必备 版本&#xff1a;Python3 ●系统&#xff1a;Windows ●相关模块&#xff1a;pygame pip install pygame安…

史上最强大的 S3 API?介绍 Prompt API。

迄今为止&#xff0c;对象存储世界已由 PUT 和 GET 的 S3 API 概念定义。然而&#xff0c;我们现在生活的世界需要更多。鉴于 MinIO 的 S3 部署甚至比 Amazon 还多&#xff0c;因此我们不得不提出下一个出色的 S3 API。 这个新 API 就是 Prompt API&#xff0c;它很可能成为有…

微信小程序 — 农产品供销系统

农产品供销系统 一&#xff1a;基本介绍开发环境功能模块图系统功能部分数据库表设计 二&#xff1a;部分系统页面展示小程序登录界面小程序首页水果分类列表 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/415514d6c40c461c91c1739a4f682fea.jpeg#pic_center)小程序…

为什么说数字化转型需要用到RPA

在现代商业环境中&#xff0c;数字化转型已成为企业追求创新、提高竞争力和适应市场变化的重要战略。然而&#xff0c;数字化转型不仅仅是简单地将纸质文档转化为电子文件或引入新的IT系统&#xff0c;而是要全面优化和重塑企业的业务流程、运营模式和客户体验。在这一过程中&a…

海外媒体发稿:聚焦摩洛哥世界新闻 Morocco World News

关于摩洛哥世界新闻简介&#xff1a; 摩洛哥世界新闻&#xff1a;通过卓越的新闻报道倡导言论自由和深思熟虑的辩论 摩洛哥世界新闻致力于向广大受众提供摩洛哥和中东及北非地区的新闻&#xff0c;不带偏见或政治目的。摩洛哥世界新闻的愿景是成为言论自由的捍卫者&#xff0…

快速建造高品质音乐厅:声学气膜馆打造专业降噪空间—轻空间

随着音乐艺术在城市生活中的地位不断提升&#xff0c;各类音乐厅和演出场馆的需求量也逐年增加。然而&#xff0c;传统音乐厅的建设往往周期长、成本高&#xff0c;特别是在城市中心和文化聚集区&#xff0c;土地资源有限&#xff0c;建造优质的音乐厅面临诸多挑战。如何在有限…

Stable Diffusion Web UI - Checkpoint、Lora、Hypernetworks

Checkpoint、Lora、Hypernetworks是 Stable Diffusion Web UI 生图的重要工具&#xff0c;它们有各自的特点&#xff0c;结合不同的生图场景选择一个或者多个叠加使用&#xff0c;能够更好的命令 Stable Diffusion 生成理想状态的图片。 以人像生图用通俗的方式解释checkpoint…

深度学习神经网络热点全解:原理精析与丰富应用场景大揭秘

深度学习神经网络是人工智能领域的重要研究方向&#xff0c;以下是一些热点方向及其原理和具体应用场景&#xff1a; 这些深度学习神经网络的热点领域不断推动着人工智能技术的发展和创新&#xff0c;在各个行业和领域展现出了巨大的应用潜力&#xff0c;同时也面临着一些技术挑…

越南很火的slots游戏投放Google谷歌广告策略

越南很火的slots游戏投放Google谷歌广告策略 越南的slot游戏市场正在借助Google广告代投策略推动增长。随着智能手机的普及和互联网的普及&#xff0c;越南的游戏市场迅速增长&#xff0c;吸引了越来越多的投资者和开发者进入该市场。 在这个竞争激烈的市场中&#xff0c;广告…

构建安全的数据库环境:群晖NAS安装MySQL和phpMyAdmin详细步骤

文章目录 前言1. 安装MySQL2. 安装phpMyAdmin3. 修改User表4. 本地测试连接MySQL5. 安装cpolar内网穿透6. 配置MySQL公网访问地址7. 配置MySQL固定公网地址8. 配置phpMyAdmin公网地址9. 配置phpmyadmin固定公网地址 前言 本文将详细讲解如何在群晖NAS上安装MySQL及其数据库管理…

多边形Newell向量

多边形Newell向量 空间平面多边形的Newell向量可以用来表示一个该多边形所在平面的法向量而且 Newell向量的模是这个多边形的面积。 Code 计算多边形的法向量和中心点。 template<typename T> void PolygonTriangulation::ComputePolygonPlane(const TArray<TVect…

【9687】基于springboot+vue的在线考试系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取免费源码 项目描述 21世纪&#xff0c;我国就已普及互联网信息&#x…

出行如何用远程控制软件实现异地办公?

远程办公软件让你轻松享受假期&#xff01; 想象一下&#xff0c;像类似于国庆长假里&#xff0c;你在海边享受着悠闲时光&#xff0c;突然工作上有点急事需要处理。这时&#xff0c;如果你有一款好用的远程办公软件&#xff0c;一切就变得轻松多了。今天&#xff0c;我们就来…

力扣-Mysql-3252-英超积分榜排名 II(中等)

一、题目来源 3252. 英超积分榜排名 II - 力扣&#xff08;LeetCode&#xff09; 二、数据表结构 表&#xff1a;TeamStats --------------------------- | Column Name | Type | --------------------------- | team_id | int | | team_name | v…