matinal:SAP ABAP 发布HTTP RestFul服务全过程解析(五)

本文介绍了RESTful概念,阐述了SAP的ABAP RESTful编程模型,包括其三层架构、数据建模与服务发布过程,还说明了行为定义与增强方法。此外,给出了代码实现过程、SICF服务配置、Postman测试及token使用的具体步骤,可助开发者轻松创建应用。

1. 背景介绍

RESTful是一种网络应用程序的设计风格和开发方式。REST是Representational State Transfer的简称,中文翻译为“表述性状态转移”。单从定义上来理解REST可能并不是很好理解,对于刚刚接触这一概念的同学,可以将REST理解为一种设计风格,它描述了一个架构样式的网络系统,比如 web 应用程序。

SAP支持ABAP语言构建RESTful的应用程序,使用ABAP RESTful编程模型可以快速开发SAP Fiori应用程序,或是web服务接口。
2. 原理与架构

SAP的ABAP RESTful Programming Model提供了一套标准的架构,使用这套架构可以非常方便地开发端到端的应用程序,而且天然具有RESTful的特性。其架构图如下:
 

这套架构包含3层:

    * Data Modeling & Behavior: 数据模型 & 行为层;在这一层主要完成“CDS数据建模”,“模型行为定义”,以及“行为实现”三项工作。

        - 基于CDS(Core Data Services)的数据建模在此就不过多的解释,CDS是利用HANA高性能的一个有力工具;

        - 行为定义(Behavior Definition)简称BDEF,其使用的BDL(Behavior Definition Language)完成,用来支持业务模型的各种操作,例如CREATE,UPDATE,DETETE等行为,行为定义主要是服务于这个应用程序的各种事务操作。

        - 对于各种“行为”的实现逻辑,是通过ABAP代码来实现的,也即实现ABAP对应Class中的各种对应的方法,例如CREATE,UPDATE,DETETE等。

    * Business Service Provisioning: 业务服务准备层;在这一层主要完成各种“服务”的定义的和实现。

        - Service Definition:服务定义,也即是对上一步中数据模型的映射,有哪些数据和行为是需要以“服务”的形式暴露出来。

        - Service Binding: 在服务绑定中,会完成具体“协议protocol”的实施,以及确定具有提供给consumer的服务类型。(一个Service Definition可以有一个或多个Service Binding)。

    * Service Consumption: 服务消费层;在这一层,各种暴露出来的服务以OData的形式提供给Fiori或者其他前端应用程序进行使用。
3. 建立模型&发布服务

数据建模层的Core Data Services(CDS)的实现是基于底层的数据库表,在CDS层可以使用并直接操作数据库表中的原始数据;

在服务准备层,可以进一步通过CDS Project View将于前台应用程序相关的字段暴露出来,在Projection View中,可用通过UI annotation“注解” 来控制具体字段在的前台UI的显示方式。

通过Service Definition,可以进一步定义哪些数据会被暴露成具有的Business Service。

通过Service Binding,可以绑定一个定义好的service到一个CS(Client-Server)架构的通信协议,例如我们所熟知的OData。同时,使用Service Binding可以完成SAP Fiori Element的预览,在预览中看到应用呈现的具体效果。

至此,我们已经介绍了从底层DB table建模开始到服务发布的过程,通

<think>好的,我现在需要处理用户关于SAP系统中车间和仓库盘盈盘亏处理方式及差异的问题。首先,我要回忆之前用户提到的内容,用户之前问过车间库负库存的设置,引用了matinalSAP FICO的资料。现在用户进一步询问盘盈盘亏的具体处理方法和区别,需要结合之前的引用信息,同时可能需要补充其他相关知识。 首先,盘盈盘亏通常涉及库存差异的处理,这在SAP中可能通过不同的移动类型和会计科目来体现。根据引用[1],车间库是虚拟库,允许负库存,而实体仓库不允许。这可能影响盘点的处理方式。例如,车间库的差异可能通过生产订单调整,而实体仓库的差异可能直接通过库存调整科目处理。 然后,引用[2]提到KO88结算生产订单时产生的会计凭证,涉及生产成本和材料成本差异科目。这说明生产相关的差异可能通过生产订单结算流程处理,而仓库的差异可能直接调整库存科目。 接下来,我需要区分车间和实体仓库的处理步骤。车间库作为虚拟库,可能与生产订单相关,盘盈盘亏可能通过调整生产订单的投入或产出来处理,使用特定的移动类型如701/702。而实体仓库的差异可能使用移动类型701/702,并直接过账到差异科目,影响库存价值。 另外,会计处理方面,车间库的差异可能关联到生产成本科目,而实体仓库差异可能对应库存调整科目。需要注意系统配置中是否允许负库存对处理方式的影响,车间库允许负库存可能意味着差异处理更灵活,而实体仓库需要及时调整避免负库存。 用户可能还想知道具体的操作事务代码,比如MI07用于库存盘点,MI20查看差异,以及KO88结算生产订单。同时,需要说明两者的核心区别在于库存类型、会计科目和处理流程。 最后,生成相关问题需要考虑用户可能进一步的问题,比如配置步骤、会计凭证差异、生产订单影响等。确保问题覆盖用户可能的兴趣点,帮助他们深入理解处理机制。</think>### SAP车间与仓库盘盈盘亏处理方法及区别 #### 一、车间库(虚拟库)盘盈盘亏处理 1. **业务背景** 车间库作为配合生产回冲扣料的虚拟库,允许负库存[^1],其差异通常与生产订单执行相关。例如:生产投料未完全消耗或退库未及时记录。 2. **处理步骤** - **差异确认**:通过事务代码`MI07`进行库存盘点,系统生成差异清单。 - **调整方式**: - 盘盈:使用移动类型`701`(库存增加)关联生产订单,冲减生产成本。 - 盘亏:使用移动类型`702`(库存减少)关联生产订单,增加生产成本。 - **会计处理**:差异通过生产订单结算(事务代码`KO88`)转入成本中心或差异科目,例如: ``` 借:生产成本-差异调整 贷:库存-车间库 ``` [^2] #### 二、实体仓库盘盈盘亏处理 1. **业务限制** 实体仓库禁止负库存[^1],差异需立即处理,通常由物料管理模块触发。 2. **处理步骤** - **差异过账**:使用移动类型`701`/`702`直接调整库存,系统自动生成会计凭证: ``` 借/贷:库存商品 贷/借:库存盘盈盘亏科目 ``` - **权限控制**:需审批流程(通过审批码或电子工作流)。 #### 三、核心区别对比 | **维度** | **车间库** | **实体仓库** | |----------------|-----------------------------------|--------------------------------| | **库存类型** | 虚拟库(允许负库存)[^1] | 实物库(禁止负库存) | | **差异来源** | 生产订单执行偏差 | 收发存操作误差 | | **会计科目** | 关联生产成本科目[^2] | 直接使用库存调整科目 | | **处理流程** | 需结合生产订单结算(KO88)[^2] | 独立过账,无需关联订单 | #### 四、配置要点 1. **车间库**:在物料主数据中设置“特殊库存标识”(如生产库存),并配置移动类型与生产订单的关联。 2. **实体库**:在物料管理(MM)模块定义库存调整科目,并设置审批策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值