前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【ABAP】如何理解SAP中的CLIENT (客户端)

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

作者头像
THUNDER王
发布2023-10-13 09:12:56
7020
发布2023-10-13 09:12:56
举报
文章被收录于专栏:THUNDER王——CSDN内容同步

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

前言

企业一般会将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客户端,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 服务器与客户端(Client)
  • 数据库表中的MANDT字段
    •  设置了MANDT主键的数据库表
      •  未设置MANDT主键的数据库表
      • 写在最后的话
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档