💂作者简介: 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
,它分别存在于100client
和500client
中。它拥有两个主键MANDT
和ZID
。
(二)接下来让我们在100client
环境中为这张数据库表创建4条数据
,示例如下图所示:
(三)在500client
环境中查看相同数据库表,无对应数据显示
(四)在500client
环境中再次创建4条数据,查看100client
环境中是否会拥有对应数据
PS: 综上所述:当我们为数据库表中加入了MANDT主键字段后,数据库表中存储的数据将无法跨客户端同步!
未设置MANDT主键的数据库表
(一)删除MANDT
主键,【T-CODE: SE14】
激活并调整数据库表
(二)数据库表调整后显示如下图所示:
(三)再次查看两个不同client客户端数据库表的数据
PS: 综上所述,当数据库表没有设定MANDT主键字段进行控制时,数据库表中数据是可以跨客户端同步的!
写在最后的话
本文花费大量时间介绍了如何理解SAP中的CLIENT客户端
,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!
✨ 原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下
👍 点赞,你的认可是我创作的动力! \textcolor{9c81c1}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向! \textcolor{ed7976}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富! \textcolor{98c091}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!