【ABAP】如何理解SAP中的CLIENT (客户端)

💂作者简介: THUNDER王,阿里云社区专家博主,华为云·云享专家,腾讯云社区认证作者,CSDN SAP应用技术领域优质创作者。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。


💅文章概要: MANDT集团永远是无数SAP入门人员无法避免头痛的一个难题,很多朋友在刚刚入门SAP领域时经常被这几个概念混淆:什么是DEV? 什么是QAS? 什么是PRD? 为什么不同的服务器还要有client客户端(有时也被译作集团)?本节内容就带领大家好好认识一下MANDT系统字段,出发!


🤟每日一言: 永远年轻,永远热泪盈眶!


前言

企业一般会将SAP 安装在多台服务器上, 分别用于测试 、 验证和生产 。 在一台服务器上 , 可能安装了多个客户端(client),如100- 配置环境、200-测试环境、300-开发环境。各个 client 存放的主数据和交易数据是不同的(少量跨client的共通事项除外)。这就相当于在一个服务器上 ,建立了多个实例 (instance) , 各个instance互不干扰。


服务器与客户端(Client)

下表为某示例企业所安装的SAP环境示例:共安装了三台服务器,配置了5个client

服务器 机器编号 系统标识 client 作用 要求
开发机 Saptst DEV 100 配置环境 配置都要记录在请求中
开发机 Saptst DEV 200 测试环境 不可更改跨client的设置
开发机 Saptst DEV 300 开发环境 不可更改跨client的设置
测试机 Sapqas QAS 500 测试环境 定期从生产环境复制数据
生产机 Sapprd PRD 800 生产环境 不可直接更改配置

PS: 关于SAP三系统(服务器) 蓝图数据传输的详细过程可以参考笔者这篇博客:【ABAP】SAP包(二)「CTS | 传输请求」;本节内容主要讲解的是各个系统内client的作用,上述内容不再作过多赘述。

一般来说企业会在每台服务器中设置不同的client,以便用于不同的操作。严格来讲,PRD生产机、生产环境是不允许直接做二次开发和做任何配置操作,所有二次开发和配置都需要在DEV开发机中进行完成并且进行TR传输到PRD生产机中,这样可以保证所有内容和配置的一致性。所以企业一般会在DEV开发机中设置不同的client,如上图示例:在100client中只允许进行配置操作,所有二次开发的操作均在300client中进行操作,完成开发后,可以先在200client进行初步的测试

需要区别的是:同一服务器中不同client环境有变化的仅仅是主数据 ,其他的操作均会同步更新到所有client中。

  • 比如说DEV开发机,当我们在300client开发完程序后,我们进入到100client中,开发完的程序是可以直接看到的,这是因为虽然它们属于不同的client,但是所有的client是属于同一个DEV服务器的。不过如果我们想要在100client中更改300client中创建的程序,则会提示警告。
  • 但是如果我们想要在QAS测试机上同步所有我们在DEV中做的操作,那么还需要进行一步TR传输请求的操作。

总结:综上所述,让我们来小结一下使用一套标准SAP实施方案的企业的标准流程。

  • Basis顾问配置好三台服务器,分别是DEV开发机,QAS测试机,PRD生产机。
  • PRD生产机不允许进行任何操作,ABAP开发顾问和业务实施顾问在DEV开发机的不同client进行实施操作。
  • 当配置和开发完成后首先在DEV开发机中用于测试的client环境进行初步的测试,测试没问题通过TR传输到QAS保证系统进行进一步的测试。
  • QAS测试系统验证通过后再次通过TR传输到PRD生产环境中。后续定期从PRD生产机中更新数据回QAS测试机。

数据库表中的MANDT字段

在前面的介绍中我们提到了下面这一点:

同一服务器中不同client环境有变化的仅仅是主数据 ,其他的操作均会同步更新到所有client中。

那么我们应该如何理解这一点呢?不知道各位小伙伴们有没有注意到SAP系统数据库表中都拥有一个共同的字段:MANDT字段

正是MANDT字段的存在可以使得不同的client环境可以存储不同的业务数据,当我们在DEV开发机的开发环境中创建了数据库表后,数据库表会同步到所有client中,如果我们不为数据库表设置MANDT主键字段,那么所有client中数据库表的数据将会一致,无法区分数据是在哪个client环境中创建的。

设置了MANDT主键的数据库表

(一)下面我们来看一下这张示例表:ZWYZTEST,它分别存在于100client500client中。它拥有两个主键MANDTZID

(二)接下来让我们在100client环境中为这张数据库表创建4条数据,示例如下图所示:

(三)在500client环境中查看相同数据库表,无对应数据显示

(四)在500client环境中再次创建4条数据,查看100client环境中是否会拥有对应数据

PS: 综上所述:当我们为数据库表中加入了MANDT主键字段后,数据库表中存储的数据将无法跨客户端同步!

未设置MANDT主键的数据库表

(一)删除MANDT主键,【T-CODE: SE14】激活并调整数据库表

(二)数据库表调整后显示如下图所示:

(三)再次查看两个不同client客户端数据库表的数据

PS: 综上所述,当数据库表没有设定MANDT主键字段进行控制时,数据库表中数据是可以跨客户端同步的!


写在最后的话

本文花费大量时间介绍了如何理解SAP中的CLIENT客户端,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!

✨ <math xmlns="http://www.w3.org/1998/Math/MathML"> 原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} </math>原创不易,还希望各位大佬支持一下

👍 <math xmlns="http://www.w3.org/1998/Math/MathML"> 点赞,你的认可是我创作的动力! \textcolor{9c81c1}{点赞,你的认可是我创作的动力!} </math>点赞,你的认可是我创作的动力!

⭐️ <math xmlns="http://www.w3.org/1998/Math/MathML"> 收藏,你的青睐是我努力的方向! \textcolor{ed7976}{收藏,你的青睐是我努力的方向!} </math>收藏,你的青睐是我努力的方向!

✏️ <math xmlns="http://www.w3.org/1998/Math/MathML"> 评论,你的意见是我进步的财富! \textcolor{98c091}{评论,你的意见是我进步的财富!} </math>评论,你的意见是我进步的财富!

相关推荐
看到我,请让我去学习3 小时前
数据结构—排序(斐波那契数列,冒泡,选择,插入,快速,归并,图,广度优先算法)
c语言·开发语言·数据结构·后端
源码云商6 小时前
基于Spring Boot + Vue的教师工作量管理系统设计与实现
vue.js·spring boot·后端
why1518 小时前
深信服golang面经
开发语言·后端·golang
言之。8 小时前
Go语言中new与make的深度解析
开发语言·后端·golang
田秋浩9 小时前
Springboot 跨域拦截器配置说明
java·spring boot·后端
汇匠源10 小时前
Spring Boot + +小程序, 快速开发零工市场小程序
spring boot·后端·小程序
码农爱java11 小时前
Elasticsearch 深入分析三种分页查询【Elasticsearch 深度分页】
java·大数据·spring boot·后端·elasticsearch·全文检索
黄暄11 小时前
Spring Boot 登录实现:JWT 与 Session 全面对比与实战讲解
javascript·网络·spring boot·后端
设计师小聂!12 小时前
Spring ---IOC容器和DI的具体应用
java·后端·spring
我命由我1234512 小时前
IDEA - Windows IDEA 代码块展开与折叠(基础折叠操作、高级折叠操作)
java·笔记·后端·java-ee·intellij-idea·学习方法·intellij idea