☰
SAP ECC6.0 client copy集团拷贝前必须打通四个关键环节
2026/11/4 7:27:28 网站建设 项目流程

简介:面向SAP BASIS初学者与实施顾问的Client Copy实操文档,聚焦ECC 6.0 32位环境下由生产集团000向测试集团790复制的完整流程,帮助读者在不影响生产系统的前提下搭建定制、开发与测试环境。内容围绕逻辑系统定义与分配、SU01复制管理员ID、RZ10启用SAP*登录、SCCL后台作业调度等环节展开,并补充跨集团表修改警告、请求传输、权限与数据一致性等常见问题的处理思路,可作为集团拷贝的对照清单与排错参考。压缩包仅含1个doc文件,约776KB,以图文步骤和配置界面说明为主,篇幅紧凑、便于随查随用。目前已有631人学习,反映该主题在SAP实施与运维群体中具有稳定参考需求。读者可据此理清Client Copy的前置条件、参数含义与执行顺序,降低因网络资料转抄失准而反复试错的成本,并为后续MM业务流程定制、数据导入与程序开发准备独立安全的测试集团。

1. 装完 ECC6.0 不等于能拷:client copy 集团拷贝最先卡住的四个环节

一台 ECC6.0 32 位系统装完,DDIC 能登 000,SAP* 也能登,很多人到这一步就觉得活干完了,直接开 SCCL 从 000 往 790 排一个后台作业。第二天上班一看,作业早就红了,或者作业跑完了、790 怎么也登不进去,SAP* 敲进去的 PASS 毫无反应。client copy 集团拷贝这件事,难的从来不是最后那一下排程,而是排程之前的四件事:专用账号、逻辑系统、集团参数、profile 参数。这四件事里任何一件没落到位置上,拷贝就是白跑一趟,而且你连错在哪都看不出来。后面按我实际走通的顺序,把每一步的界面、字段和参数写清楚,新人照着抄能跑通,熟手能对一下版本差异。

2. 账号准备:SU01 里把 DDIC 复制成一个专用定制 ID

2.1 DDIC 和 SAP* 为什么不能直接拿去跑定制

SAP 装完之后系统里有几个默认账号,DDIC 和 SAP* 是最常被拿来干活的。DDIC 的定位是用户管理员兼 ABAP 字典维护,权限大得吓人,但它是系统级账号,很多定制操作(SPRO 里的 IMG 活动、跨集团对象修改)系统会直接拦下来,给你一句类似“这个用户不允许执行该操作”的提示,你换哪个菜单都一样。SAP* 更特殊,它是初始超级用户,密码 PASS 属于公开秘密,而且它做的变更不进变更日志,后面想查谁动了哪条配置,追不到人。

具体到 client copy 这个场景,问题会放大。你从 000 拷一个集团到 790,用户主数据是跟着拷贝一起过去的,如果源集团里只有一个 DDIC 和一个 SAP*,那 790 里也就这两个。等你在 790 里开始做 MM 流程定制、导入流程数据、写程序,全用 DDIC 登录,一旦配置出问题,没有变更记录可查,这就是典型的没有后悔药。我一般会在动手拷贝之前,先在源集团里建一个专用 ID,让它随 SAP_ALL 一起被拷到目标集团,790 一建好就能直接用。

2.2 SU01 复制用户的字段选择与参数取舍

用 DDIC 登录源集团 000,事务码 SU01,在用户名字段输入一个你要用的新 ID,比如 ZDEV01,回车,系统会提示用户不存在。这个时候不要点“新建”,直接走工具栏的“复制”按钮(也可以从菜单 User → Copy 进去),弹出复制对话框,From 填 DDIC,To 填 ZDEV01,确认后进到用户主数据界面。这一步的本质是把 DDIC 的地址、登录数据、角色、参数文件整体复制一份,再让你改关键字段。

关键字段我按下面这张表填,改完再保存:

页签字段建议值说明
AddressLast nameDEV Customizing必填,不填保存不了
Logon DataInitial password项目自定的强密码首次登录会被强制修改
Logon DataUser typeDialog交互登录,可改密码
Logon DataValidity按项目周期填别留空,留空容易过期
Roles角色SAP_ALL、SAP_NEW只给 SAP_ALL 会漏新对象
Profiles参数文件SAP_ALL和角色二选一即可

这里有两个取舍要说清楚。第一个是角色和参数文件的关系:SAP_ALL 这个参数文件是老的授权载体,SAP_ALL 这个角色是生成出来的,两者覆盖范围并不完全重合,我给新 ID 的时候角色给 SAP_ALL + SAP_NEW,SAP_NEW 用来兜住新版本新增的授权对象,不然升级之后会出现莫名其妙的权限不足。第二个是用户类型:Dialog 适合人登录,System 适合系统间通信且密码不过期,Communication 用于 RFC,Service 只有系统内部能用、GUI 登不进去。做定制的人一定要 Dialog,别图省事给 System。

如果你不想在 000 里建用户,也可以在 790 建好之后再建,但那要等你先能用 SAP* 登进 790,多一道关卡。我的习惯是能在源集团准备的都提前准备好,让拷贝顺带把用户带过去。

2.3 复制完的授权补全与登录验证

复制出来的用户,用户主数据是全的,但授权要重新生成一遍才生效。保存之后回到 SU01 初始界面,输入 ZDEV01 回车,进“角色”页签确认 SAP_ALL 和 SAP_NEW 都挂在上面,然后点工具栏的“用户比较”或者直接保存一次,让授权索引重建。这一步经常被跳过,结果是登录进去发现菜单是灰的,查半天以为拷贝出问题,其实是授权没生成。

验证方式我一般分三层。第一层,换个 GUI 会话用 ZDEV01 登录 000,看能不能进得去、密码是不是被强制改。第二层,进 SU01 看自己的用户主数据能不能正常显示,进 SE38 看 ABAP 编辑器能不能打开,进 SPRO 看定制菜单能不能进。第三层,如果哪一步提示权限不足,当场用 SU53 看是哪个授权对象缺了,别猜。

对于要验证授权对象是否到位的场景,可以临时建个检查程序跑一下:

" SE38 建临时程序 Z_CHECK_AUTH,验证新 ID 的 S_DEVELOP 权限 REPORT z_check_auth. AUTHORITY-CHECK OBJECT 'S_DEVELOP' ID 'DEVCLASS' FIELD '*' ID 'OBJTYPE' FIELD '*' ID 'OBJNAME' FIELD '*' ID 'P_GROUP' FIELD '*' ID 'ACTVT' FIELD '01'. IF sy-subrc = 0. WRITE: / 'S_DEVELOP 01 通过'. ELSE. WRITE: / 'S_DEVELOP 01 不足,返回码:', sy-subrc. ENDIF.

逻辑说明:AUTHORITY-CHECK 会拿当前登录用户的授权索引去比对指定的授权对象和字段值,sy-subrc 返回 0 表示通过,4 表示对象不存在但未拒绝,12 表示对象存在但字段值不匹配,24 表示完全没有该对象。参数说明:DEVCLASS、OBJTYPE、OBJNAME、P_GROUP 全部用*是为了测最大范围,ACTVT 的 01 代表新增(02 修改、03 显示)。注意,如果连 SE38 都进不去,说明问题在更上层,先回到 SU01 补角色,别在这个程序上纠缠。

3. 逻辑系统与集团定义:SALE 里那两张跨集团表要怎么填

3.1 Define Logical System:跨集团表警告不是走个形式

事务码 SALE 打开定制菜单,路径是 Basis Settings → Logical System → Define Logical System,点进去先弹一个提示,大意是“注意,这张表是跨集团的”。这个提示不是吓唬人,它说的是 TBDLS 这张表没有 MANDT 字段,你在 000 里加一条逻辑系统,790、800 全都看得到,而且任何人在任何一个集团里改它,效果是一样的。理解了这一点,后面 Assign Logical System to Client 那一屏的警告你也就能看懂了。

点“New Entries”,填两个东西:Logical System 填一个有意义的名字,比如 QASCLNT;Name 填描述,写清楚谁建的、干什么用,比如“TEST CLIENT 790 LOGICAL SYSTEM”。填完保存,系统会弹一个 Request 对话框,让你选传输请求或者建一个。

保存之后可以到 SE16N 里查一下 TBDLS 确认落库:

-- TBDLS 没有 MANDT,所以查出来的记录对所有集团都可见 SELECT LOGSYS, NAME FROM TBDLS WHERE LOGSYS = 'QASCLNT';

逻辑说明:这条查询只用了两个字段,因为 TBDLS 的结构本身就极简,LOGSYS 是逻辑系统名,NAME 是描述。参数说明:如果你的系统是 Unicode 或者数据库对大小写敏感,LOGSYS 的值必须和后面 3.2 里填的一字不差,多一个空格都认不上。这一步是整个链路里最容易被草率对待的,很多人名字随便敲,后面 Assign 的时候选不到,回头查半小时。

3.2 Assign Logical System to Client:790 这一屏的十个字段

回到 SALE,路径 Basis Settings → Logical Systems → Assign Logical System to Client,点进去又是一次跨集团表警告,直接回车。这一屏会列出系统里所有已定义的集团,前三行是安装时自带的 000、001、066 之类,后面才是你自己加的。点“New Entries”进明细界面,按下面这张表填:

字段示例值说明
Client790三位数字,000 到 999,别撞已有编号
Client nameTEST CLNT 790描述,可任意
CityCITY_A填项目所在地的代号即可,别纠结
Logical systemQASCLNT取 3.1 里建的那个,用 F4 帮助选
Std currencyRMB也可用 CNY,看集团习惯
Client roleCustomizing可选 Test、Production、Customizing、Demo
Automatic recording of changes勾选变更自动进变更日志
Changes to Repository and cross-client Customizing allowed勾选允许改资源库和跨集团定制
Protection level00 表示无保护
eCATT and CATT allowed勾选以后跑 eCATT 测试要用

Client role 这一项要单独讲。它决定这个集团在系统里的身份,SCCL 拷贝时会检查目标集团的 role,如果是 Production,系统会拒绝往里面拷东西,这是保护生产环境的机制。新建的 790 一定要设成 Customizing 或者 Test,别顺手设成 Production 然后回头排查半天。“Automatic recording of changes”这一项,做定制和开发的环境我建议一直勾上,后面查配置是谁改的就靠它;“Changes to Repository and cross-client Customizing allowed”这一项,如果不勾,你在 790 里连 SE38 都动不了,改个程序提示跨集团对象被锁,这是典型的翻车现场。

填完保存,系统弹出“当更改逻辑系统时小心”的提示,直接回车,然后提示“Data was saved”。这一屏改的其实是 T000 表,同样是跨集团表,所以你改 790 的 role,影响的是整个系统对 790 的认知,不只是某个集团内可见。

3.3 保存时弹出的 Request 该怎么处理

第一次保存几乎一定会弹 Create Request 对话框。这时候你有两个选择:新建一个 Request,或者挂到已有的 Request 上。我的做法是,如果这是搭建环境的初始动作,新建一个描述清晰的 Request,比如“INIT CLIENT 790 SETUP”,把逻辑系统定义和集团定义都挂进去,后面环境如果重装,这个 Request 就是一份现成的清单。如果是本地临时验证、不打算传输,选“Create Request”之后在类型里选本地请求也行,但这只适合纯本地系统。

有一点要注意:如果你在已经有传输域的环境里操作,保存时提示“Request is locked”或者“Transport request does not exist”,通常是因为你选的 Request 已经被别人释放或者锁住了,换一个请求或者新建一个。这类问题一般不是权限问题,别急着去 SU53 查。

到这一步,790 在系统里已经算“存在”了,SCCL 的目标集团字段能选到它。但它还是空的,没有任何用户,连 SAP* 都没有,所以接下来必须解决登录问题。

4. 让 SAP* 能进新集团:RZ10 里加一个参数再重启实例

4.1 Import profiles of active servers:不做这步搜索帮助是空的

新建的 790 集团是空的,理论上用 SAP* 加密码 PASS 就能登进去,因为系统会在第一次登录时自动创建这个超级用户。但在 ECC6.0 上,这个自动创建行为默认是关掉的,你直接登会提示用户不存在或者密码错误。要放开,得改参数文件里的 login/no_automatic_user_sapstar。

改之前先做一步:事务码 RZ10,菜单 Utilities → Import profiles → of active servers。点完之后系统会跑一段导入,日志里显示三条“Profile import executed correctly”,分别对应 DEFAULT、实例 profile 和启动 profile。这一步很多人跳过,后果是回到 RZ10 主界面,Profile 字段的 F4 搜索帮助里空空如也,只有个 DEFAULT,你还以为系统坏了。实际上新装的 ECC 如果不做这次导入,活动 profile 就没有落到数据库表里,搜索帮助自然什么都没有。

导入完成之后,Profile 下拉里应该能看到三个:DEFAULT、<SID>_DVEBMGS00_<hostname>(实例 profile)、<SID>_START_DVEBMGS00_<hostname>(启动 profile)。命名规则是系统标识加实例名加主机名,各人装的系统不一样,字段也不一样,按你环境里实际出现的选。

4.2 Extended maintenance 里加 login/no_automatic_user_sapstar

选中实例 profile,在 Edit Profile 那一栏把选项从“Simple maintenance”切成“Extended maintenance”,然后点“Change”按钮。进去之后点“Parameter”新建一行,参数名用 F4 帮助选 login/no_automatic_user_sapstar,参数值填 0,点“Copy”复制过来,弹窗回车确认,再点保存。

参数含义必须说清楚:值 0 表示允许系统在 SAP* 不存在时自动创建它并赋予默认密码 PASS;值 1 表示禁止自动创建,这是 ECC6.0 的默认行为,也是出于安全考虑。你要做 client copy,目标集团是空的,必须临时设成 0,等 790 建好、自己的用户能登录之后,再考虑改回 1。

参数落到 profile 文件里长这样:

# 实例 profile:<SID>_DVEBMGS00_<hostname> # 0 = 允许在空集团首次登录时自动创建 SAP*(默认密码 PASS) # 1 = 禁止自动创建,ECC6.0 默认值 login/no_automatic_user_sapstar = 0

逻辑说明:这一行属于静态参数,写在实例 profile 里,实例启动时读取一次,运行期间改文件不生效。参数说明:参数名里的 sapstar 是全小写,写错一个字母系统不会报错,只是不生效,这是很隐蔽的坑;值只能填 0 或 1,填 true/false 认不出来。

保存之后回到 RZ10 主界面,点“Display”按钮能看到参数列表,新加的那一行会出现在里面。确认无误再往下走。

4.3 停实例、重启与参数生效确认

静态参数必须重启实例才生效。用<sidadm>用户登录操作系统,不要用 root,执行下面的命令:

# 停止应用实例,-nr 后面的 00 是实例编号,按实际改 sapcontrol -nr 00 -function Stop # 等待停止完成:600 秒超时,每 2 秒检查一次 sapcontrol -nr 00 -function WaitforStopped 600 2 # 确认所有进程都已退出 sapcontrol -nr 00 -function GetProcessList # 启动实例 sapcontrol -nr 00 -function Start # 再查一次进程状态,确认全部是 Running sapcontrol -nr 00 -function GetProcessList

逻辑说明:sapcontrol 是 SAP 提供的实例控制工具,按实例编号操作,不依赖图形界面。参数说明:-nr 00里的 00 是实例编号,两位数,从实例 profile 名字里能看出来;WaitforStopped 后面两个参数分别是超时秒数和轮询间隔秒数,600 秒给足余量,别设太小导致误判;Stop 只停 SAP 应用实例,数据库要单独停,别以为停完就万事大吉。如果环境里没有 sapcontrol,用 stopsap 和 startsap 也一样。

重启完不要急着登 790,先在 000 里用 RZ11 查一下参数当前值。RZ11 输入 login/no_automatic_user_sapstar,看“当前值”那一栏是不是 0,如果是 1,说明 profile 没改对或者实例没重启成功,回去重来。这一步花两分钟,能省掉后面半小时的排查。

确认参数生效之后,用 SAP* 加密码 PASS 登 790。第一次登录会走自动创建流程,进去之后系统可能会提示改密码,先别改,因为后面 SCCL 排程还要用它。等拷贝完成、自己的专用 ID 能登了,再回头处理 SAP* 的密码或者直接锁掉。

5. 执行与排查:SCCL 排程、SCC3 日志和五条真实翻车记录

5.1 SCCL 里选哪个 Profile,源和目标怎么填

登录 790,事务码 SCCL,进到 Client Copy 界面。这里几个字段是决定成败的:

字段建议值说明
Selected ProfileSAP_ALL全量拷贝,含用户主数据
Source Client000源集团
Target Client790目标集团,必须已定义
Test Run先勾一次只做检查,不落数据
Maximum Number of Parallel Processes4别超过 CPU 核数
Delete Data in Target Client目标非空时勾会清空 790 已有数据

Profile 的选择是个技术活,常见的几种差别很大:

Profile拷贝内容适用场景
SAP_ALL全部集团相关数据新建集团,全新建环境
SAP_USER用户主数据与权限只把用户带过去
SAP_CUST定制配置只同步配置
SAP_UCUS用户主数据加定制定制环境最常用
SAP_UPGM用户主数据加 ABAP 程序带程序过去
SAP_APPX应用数据,不含用户和定制慎用,容易带脏数据

第一次跑我建议先勾 Test Run,让它把检查过一遍,看看目标集团状态、权限、表空间有没有明显问题。Test Run 不落数据,跑完看日志没有红字,再取消勾选正式跑。并行进程数不要贪多,4 个是个保守值,机器核少就降到 2,把 IO 打满的结果是作业跑一半挂掉,反而更慢。

还有一个概念要强调:SAP_ALL 虽然叫“全部”,但不含跨集团对象。逻辑系统、集团定义、RFC 目的地这些在 TBDLS、T000 里的东西,是不随 SCCL 拷贝的,必须在拷贝前按第 3 章手动维护好。很多人拷贝完发现 790 里逻辑系统是空的,回头怪 SCCL,其实一开始就没理解这个边界。

5.2 排成后台作业,再用 SCC3 盯日志

参数填好,点“Schedule as Background Job”,系统弹出对话框确认,回车,再选执行时间。选“立即”就马上开始,也可以指定时间段避开业务高峰。确认后系统提示作业已排程,并且告诉你用 SCC3 可以看日志。

SCC3 的用法:进去之后输入源集团和目标集团,选“Client copy log”,回车,能看到作业的完整执行记录。日志里几个关键节点要认:开头是“Client copy started”,中间是逐张表的拷贝记录,最后一行如果是“Client copy finished successfully”或者类似的完成提示,这次拷贝就算过了。如果是红字或者错误码,点进去看具体是哪张表、什么原因。

SCC3 里还有几个视图值得看:“Log for table copy”能定位到具体哪张表失败,“Log for generation”看后续的生成作业有没有报错。拷贝作业结束后系统通常会自动触发一批生成作业(比如程序生成、授权生成),这些作业在 SM37 里能看到,别看到 SCC3 绿了就把窗口关了,生成作业失败一样会导致 790 用不了。

5.3 五条常见问题:从现象到原因到解决

第一条:RZ10 里 Profile 的搜索帮助是空的,只有 DEFAULT。

现象是点 F4 什么也搜不到,手工敲 profile 名又提示不存在。原因是新装的 ECC 没有执行 Import profiles of active servers,活动 profile 没有从文件系统导入到数据库表里。解决办法是回到 RZ10,菜单 Utilities → Import profiles → of active servers,等三条“Profile import executed correctly”全部出现,再回主界面看搜索帮助,三个 profile 就都在了。

第二条:SCCL 里目标集团 790 选不到,或者排程时提示集团不可用。

现象是 Target Client 输入 790 之后系统报错,说这个集团不存在或者被锁。原因通常有两个:一是第 3 章的 Assign Logical System to Client 没保存成功,T000 里根本没有 790;二是 790 的 Client role 被设成了 Production,SCCL 拒绝往生产集团拷数据。解决办法是回 SALE 里确认 790 那一行确实存在、role 是 Customizing 或 Test,保存后重新进 SCCL。如果是被锁状态,在 SCC4 里把“Client is locked”的勾去掉。

第三条:作业跑完了,SAP/PASS 登 790 提示用户不存在或密码错误。*

现象很直观,就是登不进去。原因有三个层次:参数 login/no_automatic_user_sapstar 没改成 0;改是改了但实例没重启,静态参数没生效;或者重启了但改的是 DEFAULT profile 而不是实例 profile,实例启动时读的不是它。排查顺序是先 RZ11 查当前值,确认是 0 之后再看 profile 层级,最后才怀疑拷贝本身。这条坑我踩过不止一次,每次都是忘了重启。

第四条:作业跑到一半红了,SCC3 里某张表拷贝失败,错误信息里带表空间名。

原因是数据库表空间或者日志空间不够,大表拷到一半写不进去。另一种可能是并行进程数开太大,把磁盘 IO 打满导致超时。解决办法是先看数据库层的表空间使用率,扩容之后再重跑;同时把 Maximum Number of Parallel Processes 从 4 降到 2,宁可慢一点也别中途翻车。重跑之前在 SCCL 里勾上“Delete Data in Target Client”,把 790 里拷了一半的残留清掉,不然会因为目标非空再次失败。

第五条:SAP能登 790 了,但一进 SPRO 或 SE38 就提示没权限,甚至直接 dump。*

原因是拷贝时选的 Profile 是 SAP_CUST 或者 SAP_APPX,没有把用户主数据和授权带过来,790 里只有一个自动创建的 SAP*,它虽然权限大,但某些跨集团对象在目标集团里没有对应条目,一访问就出问题。解决办法是重跑一次 SCCL,Profile 选 SAP_ALL,把用户主数据补齐;如果不方便重跑,就在 790 里用 SAP* 通过 SU01 建专用 ID,赋 SAP_ALL 和 SAP_NEW,然后统一用这个 ID 干活,别长期依赖 SAP*。

6. 拷完之后怎么验:四步确认 790 真的能用

拷贝作业显示成功不代表 790 可用,我一般按下面四步走一遍,全过了才敢在里面建业务数据。

检查项事务码通过标准
拷贝日志SCC3最后一行是完成提示,无红字错误
集团登记SE16N 查 T000790 存在,role 正确,逻辑系统指向 QASCLNT
用户主数据SU01000 里建的 ZDEV01 在 790 里能看到
定制与程序SPRO、SE38能进定制菜单,能打开 ABAP 编辑器

T000 这一步可以用下面的查询确认:

-- 确认 790 已经登记,并且逻辑系统和角色都对 SELECT MANDT, MTEXT, ORT01, LOGSYS, CCCATEGORY FROM T000 WHERE MANDT = '790';

逻辑说明:T000 是集团主数据表,MANDT 是集团号,MTEXT 是描述,ORT01 是城市,LOGSYS 是逻辑系统,CCCATEGORY 是集团角色。参数说明:CCCATEGORY 里常见取值是 C(定制)、T(测试)、P(生产)、D(演示)、E(培训),如果查出来是 P,说明 3.2 那一屏填错了,回 SALE 改。这条查询在 SE16N 里用“表名 T000 + 条件 MANDT = 790”也能做,不一定非得走 SQL 层。

接着用 ZDEV01 登录 790,进 SU01 看自己的资料,进 SPRO 随便点开一个 MM 的定制节点(别改,只是看能不能进),进 SE38 打开一个标准程序看语法检查能不能跑。这三件事全过,说明用户、授权、定制、程序四条链路都通了,790 就是一个能用的测试集团了。

最后还有一件事容易忘:跑完拷贝、确认 SAP* 不再需要之后,把 login/no_automatic_user_sapstar 改回 1,重启实例。留着 0 等于给系统开了一个人人知道密码的后门,这在任何环境里都不合适。我自己的习惯是,每次 client copy 排程之前,先在纸上把账号、逻辑系统、集团参数、profile 这四件事逐条打勾,少一项都不点那个 Schedule 按钮。血泪经验换来的流程,看着笨,但真能省掉一整晚的排查。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询