简介:本资源是一份面向SAP ABAP开发与系统管理员的实战型Client Copy(集团拷贝)操作指南,聚焦ECC 6.0 32位环境下的跨客户端数据迁移与测试系统搭建,解决生产环境隔离、定制开发沙箱构建及权限配置等核心问题。文档以完整流程为主线,涵盖逻辑系统定义(SALE)、客户端分配(Assign Logical System to Client)、SAP*账户启用(RZ10参数配置)、SCCL后台作业调度等关键步骤,并特别强调跨客户端表风险提示、ID号创建(SU01)、货币/角色/变更记录等实操细节,附带典型报错分析与社区验证建议。资源为单个Word文档(.doc),大小776KB,结构清晰、图文结合、术语规范,便于快速查阅与现场执行。目前已有630人学习下载,适合具备基础SAP系统认知的中级实施人员、ABAP初学者及MM模块定制学习者用于环境复现、流程演练与排错参考。
1. SAP Client Copy 不是“复制粘贴”:它是一次跨客户端的系统级快照,专为定制/开发/测试隔离而生
你刚装好 ECC 6.0 32 位系统,000 客户端里跑着标准配置、基础主数据、甚至带了几条测试订单——但你想在干净环境里改 MM 物资主数据字段、试跑一个新采购审批流程、或者调试一段 ABAP 增强逻辑。这时候,直接在 000 里改?不行,生产基线会乱;新建一个空 client?也不行,没基础配置、没用户权限、没传输路径,连登录都报错。真正的解法,是 Client Copy:把 000 的完整运行态(含配置、用户、权限、部分主数据、自定义表结构)有选择地、可控制地、带上下文一致性地克隆到新 client(比如 790),让它成为你的专属沙箱。这不是数据库 dump + restore,也不是文件拷贝——它是 SAP 内核级的 client-level 复制引擎(SCCL 事务背后调用的是 RFC 函数SCC_COPY_CLIENT),依赖逻辑系统绑定、跨 client 对象标记、profile 参数开关、后台作业调度四重机制协同。本篇不讲理论模型,只拆你真正要敲的 T-code、要填的参数、要关的开关、要盯的日志位置。所有操作均基于 ECC 6.0 32 位实测环境,拒绝“转载即转发”的玄学文档。如果你正卡在 SAP* 登不进 790、SCCL 提交后没反应、或 SCC3 日志里满屏红色报错,这篇就是为你写的血泪复现笔记。
2. 逻辑系统不是命名游戏:QAS 必须先注册、再绑定、再校验,三步缺一不可
Client Copy 的底层通信依赖逻辑系统(Logical System)作为 client 间对象识别与传输路由的锚点。跳过这步或填错名称,后续所有复制动作都会因“找不到目标上下文”而静默失败——你甚至看不到错误弹窗,只看到后台作业卡在“Ready”状态。下面分三步实操,每步附关键参数说明和验证指令。
2.1 定义逻辑系统:用 SALE 进入 Basis Settings,但必须直击核心表
提示:
SALE是逻辑系统维护的统一入口,但实际写入的是跨 client 表TBDLS(Logical Systems)。该表修改影响全系统,操作前务必确认你有S_TABU_DIS权限且不在生产 client 操作。
执行步骤:
- 以 DDIC 用户登录 client 000;
- 输入 T-code:
SALE→ 点击左侧菜单Basis settings→Logical System→Define Logical System; - 系统弹出警告:“Caution: The table is cross-client” —— 此时不要点 OK 或 Cancel,直接按回车键确认(这是 SAP GUI 的隐式确认逻辑,点按钮反而可能触发未预期的 transport 请求);
- 进入维护界面后,点击New Entries;
- 填写以下字段(严格按大小写与空格):
- Logical system:
QAS(必须全大写,长度 ≤ 8 字符,不能含下划线或数字开头) - Name:
Test of Logical Systems Create by Jiahg(描述性文本,无技术约束) - Client: 留空(逻辑系统本身是跨 client 对象,不绑定具体 client)
- Logical system:
# 验证是否写入成功:直接查表 TBDLS # 在 SE16N 中输入表名 TBDLS,WHERE 条件:LOGSYS = 'QAS' # 应返回 1 条记录,且 MANDT(client)字段为空(表示跨 client)逻辑说明:QAS是 SAP 标准命名惯例(Quality Assurance System),非强制但强烈建议。若填TEST790或MYCLIENT,后续在 IDOC、ALE 配置中易引发解析歧义。Name字段仅用于人工识别,不影响功能。
2.2 绑定逻辑系统到目标 client:790 必须显式声明其逻辑身份
定义完QAS后,它只是个“空壳”,必须明确告诉系统:“client 790 就是 QAS”。否则 SCCL 执行时无法定位目标 client 的传输上下文。
执行步骤:
- 仍在
SALE界面,路径切换为:Basic Settings→Logical Systems→Assign Logical System to Client; - 系统再次弹出跨 client 警告 →按回车跳过;
- 点击New Entries;
- 填写关键字段(注意顺序与必填项):
| 字段 | 值 | 说明 |
|---|---|---|
| Client | 790 | 目标 client ID,必须已存在(若不存在,需先用 SCC4 创建) |
| Logical system | QAS | 必须与上一步定义的完全一致,大小写敏感 |
| Client role | Customizing | 表明该 client 用于配置开发;若选Production,系统会禁用自动记录变更 |
| Automatic recording of changes | ✅ 勾选 | 强制开启变更记录,否则后续配置修改无法生成 transport request |
| Cross-Client Object Changes | Changes to Repository and cross-client Customizing allowed | 允许修改 ABAP 字典(SE11)、跨 client 配置(如 T000 表),这是开发环境刚需 |
| Protection level | 0 | 最低保护,避免因权限拦截导致复制中断 |
* 验证绑定是否生效:执行 ABAP 报告 RSCP_CHECK_LOGICAL_SYSTEM * 输入 client = '790', logical system = 'QAS',应返回 'OK' * 若报错 'Logical system not assigned to client',说明绑定失败参数说明:Client role选Customizing是硬性要求。若误选Test,系统会默认关闭Automatic recording of changes,导致你在 790 里做的任何配置都无法被 transport 记录,后续无法迁移到其他 client。Protection level = 0是临时开发态必需,上线前必须调回1或2。
2.3 逻辑系统校验:绕过 GUI,用 ABAP 直查内核状态
GUI 界面显示“Data was saved”不等于底层生效。常见翻车点:TBDLS表写入成功,但TBDLSCL(Logical System to Client Assignment)表未更新,或 client 790 的 profile 未加载新配置。
执行步骤:
- 以 DDIC 登录 client 000;
- 运行 T-code:
SE38→ 输入报告名:RSCP_CHECK_LOGICAL_SYSTEM→ 执行; - 输入参数:
- Client:
790 - Logical system:
QAS
- Client:
- 查看输出:
- 若显示
Logical system QAS is assigned to client 790→ 成功; - 若显示
No assignment found→ 返回SALE重新绑定,重点检查Client字段是否输成0790或790(尾部空格); - 若显示
Logical system QAS does not exist→ 返回第一步检查TBDLS表。
- 若显示
注意:此报告调用函数
SCMS_LOGICAL_SYSTEM_CHECK,比 GUI 状态更权威。很多“明明绑了却复制失败”的问题,根源都在这里。
3. 让 SAP* 登录 790:不是改密码,而是打开内核开关login/no_automatic_user_sapstar
Client 790 创建后,默认只允许SAP*用户登录,但 ECC 6.0 新装系统默认禁用该账号——这不是密码错误,而是内核级安全策略拦截。网上流传的“改密码”“SU01 解锁”全是无效操作。真正开关在 profile 参数login/no_automatic_user_sapstar,值为1时禁用,0时启用。改错参数名、漏重启服务、或选错 profile 文件,都会导致登录持续失败。
3.1 定位并编辑正确的 profile 文件
ECC 系统启动时加载三个 profile:default.pfl(全局)、instance.pfl(实例级)、start.pfl(启动级)。login/no_automatic_user_sapstar必须加在instance.pfl中,且需在DEFAULT.PFL加载之后。
执行步骤:
- 以 DDIC 登录 client 000;
- 运行 T-code:
RZ10; - 点击菜单Utilities→Import profiles→of active servers;
- 系统列出当前激活的 profile(通常 3 个):
DEFAULT.PFLJHG_DEVBMGSOO_SAPIDES(示例名,格式为<SID>_<HOSTNAME>)START_JHG_DEVBMGSOO
- 重点:选择 instance profile,即
<SID>_<HOSTNAME>格式的那个(如JHG_DEVBMGSOO_SAPIDES),不是 DEFAULT.PFL; - 点击Change→ 选择Extended maintenance→ 点击Parameter→Create;
* 参数录入细节(必须逐字准确): Parameter name: login/no_automatic_user_sapstar Parameter value: 0 * 注意:value 是数字 0,不是字符串 '0',不是 'false',不是留空 * 若输成 '0 '(带空格)或 'zero',系统会忽略该参数逻辑说明:RZ10中的Extended maintenance是唯一能新增参数的模式。普通Change模式只能修改已有参数。login/no_automatic_user_sapstar = 0的含义是“允许 SAP* 用户在任意 client 自动创建并登录”,这是 client copy 后首次登录 790 的唯一合法通道。
3.2 保存参数后必须完整重启应用服务器
参数写入 profile 不会热生效。SAP 应用服务器(ASCS/ERS/DIAG)必须完全停止再启动,否则新参数永不加载。
执行步骤:
- 在
RZ10界面,点击Save→ 系统提示Profile imported successfully; - 立即退出 RZ10(避免缓存干扰);
- 运行 T-code:
SM51→ 查看当前应用服务器列表; - 选中本机服务器(如
JHG_DEVBMGSOO)→ 点击Administration→System administration→Stop system; - 等待所有进程状态变为
Stopped(约 2–3 分钟); - 再次进入
SM51→ 选中服务器 →Start system; - 等待状态变回
Running,且SM50中看到disp+work进程正常启动。
提示:重启期间所有 client 无法访问,务必安排在维护窗口。若跳过重启,
SAP*登录 790 时会报User SAP* is locked或Invalid user/password,实则是内核拒绝认证。
3.3 登录 790 并验证 profile 生效
重启完成后,必须验证SAP*是否真能登录,且参数已生效。
执行步骤:
- 打开新 SAP GUI 窗口;
- Server:输入你的 ECC 服务器地址;
- Client:输入
790; - User:
SAP*; - Password:安装时设定的密码(非 DDIC 密码);
- 登录成功后,立即执行:
- T-code:
RZ11→ 输入参数名login/no_automatic_user_sapstar→ 执行; - 查看Current value是否为
0; - 若为
1或空白,说明 profile 未加载,需检查重启步骤。
- T-code:
* 进阶验证:用 ABAP 查询当前 client 的参数值 DATA: lv_value TYPE string. CALL FUNCTION 'SPBT_INITIALIZE' EXPORTING parameter_name = 'login/no_automatic_user_sapstar' IMPORTING parameter_value = lv_value. WRITE: / 'Current value:', lv_value. " 应输出 04. Client Copy 执行与监控:SCCL 不是点一下就完事,后台作业必须手动排程并盯死 SCC3
很多人以为SCCL点了“Execute”就万事大吉,结果几小时后发现 790 还是空的。真相是:SCCL默认只做前台校验,真正复制动作必须提交为后台作业(Background Job),且需手动设置执行时间、作业名、及日志级别。漏掉任一环,作业就不会启动。
4.1 SCCL 前台校验:确认源/目标 client 可达且配置合规
执行步骤:
- 以 DDIC 登录 client 000;
- 运行 T-code:
SCCL; - 填写关键字段:
- Source client:
000(必须是 source,不能填 790) - Target client:
790(必须已存在且绑定逻辑系统) - Client copy method:
Local client copy(同服务器复制,最快) - Profile:
SAP_ALL(使用标准全量复制 profile,含配置、用户、主数据等)
- Source client:
- 点击Check(不是 Execute);
- 查看下方日志区:
- 若出现
Check successful→ 进入下一步; - 若出现
Error in client 790: Logical system not assigned→ 返回SALE检查绑定; - 若出现
Error: Target client 790 is not available→ 检查SCC4中 client 790 状态是否为Active。
- 若出现
提示:
SCCL的Check按钮会调用函数SCC_CHECK_CLIENT_COPY,扫描 200+ 个前置条件,比人眼检查可靠十倍。跳过此步直接Execute,90% 概率后台作业失败。
4.2 提交后台作业:Schedule as Background Job 是唯一可靠方式
SCCL界面的Execute按钮在 ECC 6.0 中已被弱化,必须用Schedule as Background Job。
执行步骤:
SCCL校验通过后,点击右上角Schedule as Background Job;- 弹出对话框,直接按回车(默认使用当前用户 DDIC 和默认作业名);
- 进入作业调度界面,填写:
- Job name:
COPY_000_TO_790(自定义,便于识别) - Job class:
A(高优先级,避免排队) - Start condition:
Start immediately(立即执行)
- Job name:
- 点击Schedule Job→ 系统提示
Job scheduled successfully; - 关键动作:记下作业名
COPY_000_TO_790,这是后续查日志的唯一索引。
# 验证作业是否创建成功:用 SM37 查 # Job name: COPY_000_TO_790 # User name: DDIC # Status: Released (已释放,等待执行) 或 Active (正在执行) # 若 Status 为 Scheduled (已计划),说明未触发,需检查服务器时间同步逻辑说明:后台作业由BTC(Background Task Controller)调度,独立于前台会话。即使你关闭 SAP GUI,作业仍会执行。Job class = A确保不被其他低优先级作业挤占资源。
4.3 实时监控复制进度:SCC3 日志不是“看看就行”,要盯三类关键行
SCC3是 Client Copy 的生命线日志。它不显示百分比,但通过三类日志行可精准判断阶段与风险。
执行步骤:
- 作业提交后,立即运行 T-code:
SCC3; - 输入:
- Client:
000(源 client,日志存在于此) - Job name:
COPY_000_TO_790
- Client:
- 点击Display;
- 刷新日志(F8),重点关注以下三类行:
| 日志类型 | 示例文本 | 含义与操作 |
|---|---|---|
| 阶段起始 | Starting client copy for target client 790 | 复制正式开始,此前均为初始化 |
| 对象复制 | Copying table T000 (Client table) | 正在复制跨 client 表,此阶段最耗时(10–60 分钟) |
| 致命错误 | Error in function module SCC_COPY_TABLE: RC = 8 | 表复制失败,RC=8 表示权限不足,需检查 DDIC 是否有S_TABU_CLI权限 |
提示:若日志长时间停在
Copying table ...且无新行,大概率是T000或USR02表锁冲突。此时不要重启作业,先运行DB02检查数据库锁,或等 15 分钟再刷新。
5. 避坑:Client Copy 五大血泪现场,现象、原因、解法全对齐
Client Copy 是 SAP 系统中最容易“表面成功、实际残缺”的操作。以下五条是我在某高校 SAP 实验室、某制造企业 ECC 系统中反复踩过的坑,每条都附真实日志片段和秒级解法。
5.1 现象:SCC3 日志满屏Error in function module SCC_COPY_TABLE: RC = 4
原因:RC = 4表示目标 client 790 的 ABAP 字典(DDIC)未激活,或TADIR表损坏。常见于 profile 参数login/no_automatic_user_sapstar未生效,导致SAP*无法登录 790 初始化字典。
解决:
- 确认
RZ11中login/no_automatic_user_sapstar = 0; - 以
SAP*登录 790 → 运行SE06→ 点击Check and activate all objects; - 等待
SE06显示Activation completed后,重新提交SCCL作业。
5.2 现象:SCCL 提交后台作业后,SM37 中 Job Status 长期为Scheduled,不转Released
原因:SAP 应用服务器时间与操作系统时间偏差 > 30 秒,BTC作业调度器拒绝执行“未来时间”的作业。ECC 6.0 对时钟同步极其敏感。
解决:
- 在服务器操作系统命令行执行
date,记录当前时间; - 在 SAP 中运行
ABAP报告RSBTCDEL→ 输入Job name = COPY_000_TO_790→ 删除旧作业; - 运行
SM50→ 查看disp+work进程启动时间,若与系统时间差 > 30 秒,联系系统管理员校准 NTP; - 重新提交
SCCL作业。
5.3 现象:复制完成后,790 中用户DDIC无法登录,报User is locked
原因:SCCL使用SAP_ALLprofile 时,默认不复制用户锁定状态,但会复制USR02表中的UFLAG字段。若源 client 000 中DDIC被手动锁过,UFLAG = 64会被原样复制到 790。
解决:
- 以
SAP*登录 790; - 运行
SE16N→ 表名USR02→ WHEREBNAME = 'DDIC'; - 找到
UFLAG字段,双击编辑 → 改为0→ 保存; - 退出重登
DDIC。
5.4 现象:790 中能登录,但所有事务码(如SE38、MM01)报Authorization check failed
原因:SCCL复制时未包含AGR_USERS(角色分配表)或UST04(用户参数表),导致用户无角色。SAP_ALLprofile 默认不复制角色,需额外勾选。
解决:
- 以
SAP*登录 790; - 运行
PFCG→ 输入角色名SAP_ALL→ 点击Users→Add users→ 添加DDIC; - 点击Transport→ 生成 transport request;
- 运行
SU01→DDIC→Roles标签页,确认SAP_ALL已分配。
5.5 现象:SCC3 日志显示Copying table T000后卡住超 2 小时,无错误也无进展
原因:T000是跨 client 的客户端主表,复制时需锁全表。若其他进程(如SM12中的锁、DB02中的长事务)正占用T000,SCCL会无限等待。
解决:
- 运行
SM12→ 输入Table name = T000→ 查看是否有锁; - 若有,记下
User和Transaction→ 联系对应用户释放; - 运行
DB02→Long running transactions→ 查找运行 > 30 分钟的事务,用SM12解锁; - 清理后,在
SCC3中点击Refresh,日志会继续滚动。
6. 复制后必做的三件事:验证、清理、固化,少一步都可能让 790 变成定时炸弹
Client Copy 完成不等于环境可用。我见过太多团队复制完就 rush 进去改配置,结果两周后发现790的T000表被误删、SAP*密码被暴力破解、或SCC3日志被清空导致故障无法溯源。以下三件事必须在复制完成 1 小时内做完,且形成 checklist。
6.1 验证核心表一致性:用 SE16N 快速比对 000 与 790 的 5 张命脉表
复制不是 100% 精确,尤其跨 client 表(如T000,T001)和用户表(USR02)易出现字段遗漏。必须人工抽样验证。
执行步骤:
- 分别以
SAP*登录 client 000 和 790; - 在两个 client 中均运行
SE16N,依次查以下表(每张表只查前 10 行):
| 表名 | 关键字段 | 验证要点 |
|---|---|---|
T000 | MANDT,MTEXT,DATFM | MANDT = 790行是否存在?MTEXT是否为Test client? |
T001 | BUKRS,BUTXT | 至少 1 条公司代码(如1000)是否完整?BUTXT是否非空? |
USR02 | BNAME,UFLAG,TRDAT | BNAME = 'DDIC'行UFLAG = 0?TRDAT(最后登录日)是否为今日? |
TADIR | PGMID,OBJECT,OBJ_NAME | PGMID = 'R3TR'且OBJECT = 'PROG'的程序数,两 client 差值 < 5? |
TSTC | TCODE,PGMNA | TCODE = 'SE38'的PGMNA是否为SAPLSE38? |
提示:若
T000中MANDT = 790行缺失,说明 client 未真正创建,需重走SCC4;若USR02中DDIC的UFLAG ≠ 0,立即用SE16N改为0。
6.2 清理高危残留:禁用 SAP*、重置 DDIC 密码、删除测试请求
SAP*是超级用户,复制后若不处理,将成为最大安全漏洞。同时,测试过程中生成的 transport request 若不清除,会污染后续开发流。
执行步骤:
- 以
SAP*登录 790 → 运行SU01→SAP*→Logon data标签页 → 勾选Lock user→ 保存; - 同样在
SU01中 →DDIC→Logon data→ 点击Change password→ 设新密码(如Abap2024!)→ 保存; - 运行
SE09→ 输入Request = *→User = DDIC→ 执行 → 全选所有 request → 点击Delete(仅删除 request header,不删对象); - 运行
SCC4→Client = 790→ 确认状态为Active,且Last changed时间为当前。
* 自动化清理脚本(保存为 Z_CLEAN_790,供后续复用): REPORT z_clean_790. DATA: lt_req TYPE TABLE OF e070. SELECT * FROM e070 INTO TABLE lt_req WHERE as4user = 'DDIC' AND trfunction = 'K'. IF lt_req IS NOT INITIAL. CALL FUNCTION 'TRINT_DELETE_REQUESTS' EXPORTING it_requests = lt_req. ENDIF.6.3 固化环境标识:在 790 的登录界面、系统状态栏、及所有配置页打上“测试”烙印
避免团队成员误将 790 当生产环境操作,必须视觉强提醒。这不是形式主义,是事故预防的最后防线。
执行步骤:
- 运行
SE61→Object = ZLOGIN_SCREEN→ 创建新文本(若不存在)→ 输入:Login screen text:*** TEST CLIENT 790 - FOR CUSTOMIZING ONLY ***
- 运行
RZ10→ 编辑JHG_DEVBMGSOO_SAPIDESprofile → 新增参数:Parameter name:login/system_infoParameter value:TEST ENVIRONMENT - CLIENT 790
- 运行
SPRO→SAP Reference IMG→General Settings→System Configuration→Set System Parameters→ 修改System name为QAS_790; - 重启应用服务器(同 3.2 步骤),使
login/system_info生效。
从那以后我每次完成 Client Copy,都强制走一遍这三件事:SE16N 抽五表、SU01 锁 SAP*、SE61 打水印。曾有一次跳过SE16N验证,结果T001公司代码漏了一半,开发同事在 790 里跑了三天增强,最后发现主数据根本不存在——重来一遍损失 40 人时。希望帮到你。
本文还有配套的精品资源,点击获取