SAP CAP篇十六:写个ERP的会计系统吧,Part III

本文目录

  • 本系列文章
  • 目标
  • 开发步骤
    • 数据库表设计
    • Service 定义
    • 生成Fiori App
    • 更新CDS Annotation
      • 更新Entity: `Companies`
      • 更新Entity:`Accounts`
    • App运行

本系列文章

SAP CAP篇一: 快速创建一个Service,基于Java的实现
SAP CAP篇二:为Service加上数据库支持
SAP CAP篇三:定义Model
SAP CAP篇四:为CAP添加Fiori Elements程序(1)
SAP CAP篇五:为CAP添加Fiori Elements程序(2)
SAP CAP篇六:为CAP添加Fiori Elements程序(3)
SAP CAP篇七:为CAP添加Fiori Launchpad入口 (Sandbox环境)
SAP CAP篇八:为CAP添加App Router并支持Fiori Launchpad (Sandbox环境)
SAP CAP篇九:升级为SAP CDS 7.0, CAP Java 2以及Spring Boot 3
SAP CAP篇十:理解Fiori UI的Annoation定义
SAP CAP篇十一:支持Media Object:图片、附件等
SAP CAP篇十二:AppRouter 深入研究
SAP CAP篇十三:拥抱TypeScript
SAP CAP篇十四:写个ERP的会计系统吧,Part I
SAP CAP篇十五:写个ERP的会计系统吧,Part II

目标

基于前一篇的基础继续开发ERP系统。

本篇侧重于会计账户,会计账户是基于会计科目表的具体账户。

会计账户,从属于具体的公司的,由于公司层面指定了会计科目表,所以,创建会计账户的时候,需要指定会计科目表中的具体科目。

开发步骤

数据库表设计

从数据库层面来定义会计账户。

@cds.odata.valuelist
entity Accounts: managed, cuid, sap.common.CodeList {AccountNumber: String(20) not null;Company: Association to Companies not null;COAAccountSubject : Association to one AccountSubjects not null;
}

Service 定义

更新FinanceService,添加如下Entities。

entity Accounts as projection on dbaccount.Accounts;

同时,需要指定Account 为Odata.draft.enabled,这样,Fiori Elements会自动启用编辑功能:Create, Update。

annotate FinanceService.Accounts with @odata.draft.enabled;

生成Fiori App

通过Fiori: Open Application Geneator来创建Fiori App。

查看生成的App的Information:
Application Info

更新CDS Annotation

更新Entity: Companies

更新Companies,添加针对基于CurrencyCountryChartOfAccount的Key/Value 命名对;

annotate service.Companies {@ObjectModel.text.element: ['name']ID;@Common.Label: '{i18n>Name}'    name;@Common.Label: '{i18n>Description}'descr;@title: '{i18n>Currency}'@Common.Text: Currency.name@Common.TextArrangement: #TextFirstCurrency;@title: '{i18n>Country}'@Common.Text: Country.name@Common.TextArrangement: #TextFirstCountry;@Common.Label: '{i18n>Address}'Address;@Common.Label: '{i18n>Deleted}'Deleted;@title: '{i18n>ChartOfAccounts}'@Common.Text: ChartOfAccount.name@Common.TextArrangement: #TextFirstChartOfAccount;
}

更新Entity:Accounts

Accounts添加COAAccountSubjectCompany的Key/Value 对的设置。

annotate service.Accounts {@Common.Label: '{i18n>Name}'name;@Common.Label: '{i18n>Description}'descr;@Common.Label: '{i18n>AccountNumber}'AccountNumber;@title: '{i18n>AccountSubject}'@Common.Text: COAAccountSubject.name@Common.TextArrangement: #TextFirstCOAAccountSubject;@title: '{i18n>Company}'@Common.Text: Company.name@Common.TextArrangement: #TextFirstCompany;
};

App运行

创建账户Cash 1时:

Create Account
选择COAAccountSubject

Specify Account Subject
Company My Company创建如下:
Company
创建的银行存款的账户如下:
Account

后续的文章里面,将开始定义凭证。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

volatile关键字的作用

volatile 关键字告诉编译器 i 是随时可能发生变化的,每次使用它的时候必须从内存中取出 i 的值,因而编译器生成的汇编代码会重新从 i 的地址处读取数据放在 k 中。 所以说使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读…

NLP学习路线总结:从入门到精通

自然语言处理(Natural Language Processing,NLP)是人工智能领域的重要分支,它致力于使计算机能够理解、解释和生成人类语言。NLP技术的应用范围广泛,涵盖了机器翻译、情感分析、语义理解、信息抽取等诸多领域。对于想要…

每日一题---存在重复元素(1)和(2)

文章目录 一、存在重复数组1,1.题目展示1.2.解题思路1.3.参考代码 二、存在重复元素||2.1.题目展示2.2.解题思路2.3.参考代码 大家学习完了数组,指针等内容可以进行刷题了,刷题不仅可以增加大家的代码量,也可以积累自己的经验,言归…

C语言之指针的指向地址和指针的内容总结(八十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

量化交易入门(三十九)怎么获取A股历史数据

前面我们都是以美股的苹果股票为例进行策略和技术指标的回测,量化交易对中国A股是否适用呢?我们怎么样免费获取A股的股票数据呢?我给你们介绍三个免费的数据平台Tushare 、AkShare和Baostock。 1、Tushare Tushare是一个免费、开源的Pytho…

HashMap 和 Hashtable 有什么区别?

HashMap和Hashtable在Java中都是用于存储键值对的集合,但它们之间存在几个重要的区别。 线程安全性: Hashtable是线程安全的。这意味着多个线程可以同时操作Hashtable,而不会出现数据不一致的情况。但是,这种线程安全性的代价是降…

基于决策树算法的糖尿病遗传风险预测研究

基于决策树算法的糖尿病遗传风险预测研究 一、引言 糖尿病是一种常见的慢性疾病,全球范围内患病率持续上升。遗传因素在糖尿病的发病中起着重要作用,因此,预测糖尿病的遗传风险对于早期预防、诊断和治疗具有重要意义。本研究旨在利用决策树…

2023年第十四届蓝桥杯 - 省赛 - Python研究生组 - A.工作时长

题目 数据文件:https://labfile.oss.aliyuncs.com/courses/21074/records.txt Idea 直接通过 datetime 模块加载时间字符串进行格式化,然后对时间列表进行排序,最后两两计算时间差。 Code Python from datetime import datetimetime_lis…

深入浅出Prim算法和Kruskal算法求最小生成树算法

深入浅出Prim算法和Kruskal算法求最小生成树: Prim算法 ​ 首先初始化距离 正无穷。 ​ n 次迭代(因为要选中n个点),找到不在集合(当前生成树)中的且距离当前块最小的点(记作)m点,,用m点去更新其他掉到集合中的点的距离&#x…

目标检测——服饰属性标签识别数据集

一、重要性及意义 首先,随着电商、时尚推荐等业务的发展,服饰属性标签识别已经成为一项关键的计算机视觉任务。这些标签,如颜色、款式、材质等,对于实现图像搜索、时尚推荐等业务需求至关重要。服饰属性标签识别数据集为此类任务…

Excel 数据-分列的三个经常用法

Case 1 :有时候数据导出时如果没有电子表格的话,只能导出本地文件,如下图情况: 可以使用数据-分列处理数据: 原来是因为SAP导出数据没有完成的原因,或者关闭Excel重新打开试一下。 重新打开后可以输入了 C…

HarmonyOS Connect生态设备UX体验设计

HarmonyOS Connect生态设备UX体验设计 HarmonyOS Connect是华为推出的面向万物互联时代的设备连接与互操作解决方案,旨在打破设备之间的壁垒,提供无缝、便捷的用户体验。 HarmonyOS Connect生态设备UX体验设计的基本原则包括: 一致性&…

Kubernetes activemq artemis系列 | k8s部署artemis主从 v2.33.0

主从配置直通车 本文提供了yaml可直接使用(镜像是自己构建的) amqmaster.yaml apiVersion: apps/v1 kind: StatefulSet metadata:name: artemismasterlabels:app: artemisbroker: master spec:serviceName: artemismasterreplicas: 1selector:matchLa…

python3GUI--不同样式的登录注册界面By:PyQt5(附下载地址)

文章目录 一.前言二.介绍&效果展示界面一1.注册2.登录3.切换效果 界面二1.注册2.登录3.切换效果 界面三1.注册3.登录3.切换效果 界面四1.注册2.登录3.切换效果 界面五1.注册2.登录3.切换效果 界面六1.注册2.普通登录3.快捷登录4.切换效果 界面七1.登…

网络检测与监控

1.IP sla 服务等级质量检测,思科私有,提供商与用户之间的协议 可以对带宽、延迟、丢包率、网络抖动进行检测 (1)针对icmp进行检测: r1(config)#ip sla 1 r1(config-ip-sla)#icmp-echo 12.12.12.2 source-ip 12.12…

在决策上,我不随便给别人建议

在决策上,我不随便给别人建议 之前看过一个视频,视频中主人公说**「我不随便给别人决策上的建议,我何德何能,自己还没活明白呢,给别人建议干啥。」** 这句话我挺认同的。 如果我自己很成功,那一定是靠你自…

基于FPGA的HDMI方块移动程序设计

前面写了一篇关于HDMI视频接口的文章《基于FPGA的HDMI视频接口的设计》,该文章对HDMI的相关知识点做了讲解,这里不再重复,本篇文章直接实现一个简单功能-方块的移动。 该系统程序主要实现的功能就是通过串口下发指令控制方块的位置移动&…

Docker基础系列之TLS和CA认证

Docker基础系列之TLS和CA认证 文章目录 Docker基础系列之TLS和CA认证1. 引言2. 初识TLS和CA3. 开启TLS和CA认证3.1 生成证书3.2 配置TLS 4. 参考和感谢 1. 引言 我们日常工作当中会遇到这些需求: 监控Docker容器在idea开发工具中连接Docker,直接发布至…

手搓Docker-Image-Creator(DIC)工具(03):实现alpine+jre的镜像

此篇博客将介绍如何使用 Docker 创建一个alpine3.10-jre1.8.0_401 的 Docker 镜像,并使用 Docker 运行起来。将用到 Dockerfile 的 COPY 命令、RUN 命令、ENV 命令,最终实现基于单一应用的 Dockerfile 构建镜像和运行。 紧急修改:代码我是在m…

【机器学习300问】60、图像分类任务中,训练数据不足会带来什么问题?如何缓解图像数据不足带来的问题?

在机器学习中,绝大部分模型都需要大量的数据进行训练和学习(包括有监督学习和无监督学习),然而在实际应用中经常会遇到训练数据不足的问题。就比如图像分类这样的计算机视觉任务,确实依赖于大规模且多样化的训练数据以…