本文目录
本系列文章
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:
更新CDS Annotation
更新Entity: Companies
更新Companies
,添加针对基于Currency
、Country
和ChartOfAccount
的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: #TextFirst
Currency;
@title: '{i18n>Country}'
@Common.Text: Country.name
@Common.TextArrangement: #TextFirst
Country;
@Common.Label: '{i18n>Address}'
Address;
@Common.Label: '{i18n>Deleted}'
Deleted;
@title: '{i18n>ChartOfAccounts}'
@Common.Text: ChartOfAccount.name
@Common.TextArrangement: #TextFirst
ChartOfAccount;
}
更新Entity:Accounts
对Accounts
添加COAAccountSubject
和Company
的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: #TextFirst
COAAccountSubject;
@title: '{i18n>Company}'
@Common.Text: Company.name
@Common.TextArrangement: #TextFirst
Company;
};
App运行
创建账户Cash 1
时:
选择COAAccountSubject
:
Company My Company
创建如下:
创建的银行存款的账户如下:
后续的文章里面,将开始定义凭证。