☰
SAP Client Copy 实操指南:从逻辑系统绑定到SCCL复制避坑
2026/10/26 7:13:53 网站建设 项目流程

简介:本资源是一份面向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 操作。

执行步骤:

  1. 以 DDIC 用户登录 client 000;
  2. 输入 T-code:SALE→ 点击左侧菜单Basis settings→Logical System→Define Logical System;
  3. 系统弹出警告:“Caution: The table is cross-client” —— 此时不要点 OK 或 Cancel,直接按回车键确认(这是 SAP GUI 的隐式确认逻辑,点按钮反而可能触发未预期的 transport 请求);
  4. 进入维护界面后,点击New Entries;
  5. 填写以下字段(严格按大小写与空格):
    • Logical system:QAS(必须全大写,长度 ≤ 8 字符,不能含下划线或数字开头)
    • Name:Test of Logical Systems Create by Jiahg(描述性文本,无技术约束)
    • Client: 留空(逻辑系统本身是跨 client 对象,不绑定具体 client)
# 验证是否写入成功:直接查表 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 的传输上下文。

执行步骤:

  1. 仍在SALE界面,路径切换为:Basic Settings→Logical Systems→Assign Logical System to Client;
  2. 系统再次弹出跨 client 警告 →按回车跳过;
  3. 点击New Entries;
  4. 填写关键字段(注意顺序与必填项):
字段值说明
Client790目标 client ID,必须已存在(若不存在,需先用 SCC4 创建)
Logical systemQAS必须与上一步定义的完全一致,大小写敏感
Client roleCustomizing表明该 client 用于配置开发;若选Production,系统会禁用自动记录变更
Automatic recording of changes✅ 勾选强制开启变更记录,否则后续配置修改无法生成 transport request
Cross-Client Object ChangesChanges to Repository and cross-client Customizing allowed允许修改 ABAP 字典(SE11)、跨 client 配置(如 T000 表),这是开发环境刚需
Protection level0最低保护,避免因权限拦截导致复制中断
* 验证绑定是否生效:执行 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 未加载新配置。

执行步骤:

  1. 以 DDIC 登录 client 000;
  2. 运行 T-code:SE38→ 输入报告名:RSCP_CHECK_LOGICAL_SYSTEM→ 执行;
  3. 输入参数:
    • Client:790
    • Logical system:QAS
  4. 查看输出:
    • 若显示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加载之后。

执行步骤:

  1. 以 DDIC 登录 client 000;
  2. 运行 T-code:RZ10;
  3. 点击菜单Utilities→Import profiles→of active servers;
  4. 系统列出当前激活的 profile(通常 3 个):
    • DEFAULT.PFL
    • JHG_DEVBMGSOO_SAPIDES(示例名,格式为<SID>_<HOSTNAME>)
    • START_JHG_DEVBMGSOO
  5. 重点:选择 instance profile,即<SID>_<HOSTNAME>格式的那个(如JHG_DEVBMGSOO_SAPIDES),不是 DEFAULT.PFL;
  6. 点击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)必须完全停止再启动,否则新参数永不加载。

执行步骤:

  1. 在RZ10界面,点击Save→ 系统提示Profile imported successfully;
  2. 立即退出 RZ10(避免缓存干扰);
  3. 运行 T-code:SM51→ 查看当前应用服务器列表;
  4. 选中本机服务器(如JHG_DEVBMGSOO)→ 点击Administration→System administration→Stop system;
  5. 等待所有进程状态变为Stopped(约 2–3 分钟);
  6. 再次进入SM51→ 选中服务器 →Start system;
  7. 等待状态变回Running,且SM50中看到disp+work进程正常启动。

提示:重启期间所有 client 无法访问,务必安排在维护窗口。若跳过重启,SAP*登录 790 时会报User SAP* is locked或Invalid user/password,实则是内核拒绝认证。

3.3 登录 790 并验证 profile 生效

重启完成后,必须验证SAP*是否真能登录,且参数已生效。

执行步骤:

  1. 打开新 SAP GUI 窗口;
  2. Server:输入你的 ECC 服务器地址;
  3. Client:输入790;
  4. User:SAP*;
  5. Password:安装时设定的密码(非 DDIC 密码);
  6. 登录成功后,立即执行:
    • T-code:RZ11→ 输入参数名login/no_automatic_user_sapstar→ 执行;
    • 查看Current value是否为0;
    • 若为1或空白,说明 profile 未加载,需检查重启步骤。
* 进阶验证:用 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. " 应输出 0

4. Client Copy 执行与监控:SCCL 不是点一下就完事,后台作业必须手动排程并盯死 SCC3

很多人以为SCCL点了“Execute”就万事大吉,结果几小时后发现 790 还是空的。真相是:SCCL默认只做前台校验,真正复制动作必须提交为后台作业(Background Job),且需手动设置执行时间、作业名、及日志级别。漏掉任一环,作业就不会启动。

4.1 SCCL 前台校验:确认源/目标 client 可达且配置合规

执行步骤:

  1. 以 DDIC 登录 client 000;
  2. 运行 T-code:SCCL;
  3. 填写关键字段:
    • Source client:000(必须是 source,不能填 790)
    • Target client:790(必须已存在且绑定逻辑系统)
    • Client copy method:Local client copy(同服务器复制,最快)
    • Profile:SAP_ALL(使用标准全量复制 profile,含配置、用户、主数据等)
  4. 点击Check(不是 Execute);
  5. 查看下方日志区:
    • 若出现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。

执行步骤:

  1. SCCL校验通过后,点击右上角Schedule as Background Job;
  2. 弹出对话框,直接按回车(默认使用当前用户 DDIC 和默认作业名);
  3. 进入作业调度界面,填写:
    • Job name:COPY_000_TO_790(自定义,便于识别)
    • Job class:A(高优先级,避免排队)
    • Start condition:Start immediately(立即执行)
  4. 点击Schedule Job→ 系统提示Job scheduled successfully;
  5. 关键动作:记下作业名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 的生命线日志。它不显示百分比,但通过三类日志行可精准判断阶段与风险。

执行步骤:

  1. 作业提交后,立即运行 T-code:SCC3;
  2. 输入:
    • Client:000(源 client,日志存在于此)
    • Job name:COPY_000_TO_790
  3. 点击Display;
  4. 刷新日志(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 初始化字典。
解决:

  1. 确认RZ11中login/no_automatic_user_sapstar = 0;
  2. 以SAP*登录 790 → 运行SE06→ 点击Check and activate all objects;
  3. 等待SE06显示Activation completed后,重新提交SCCL作业。

5.2 现象:SCCL 提交后台作业后,SM37 中 Job Status 长期为Scheduled,不转Released

原因:SAP 应用服务器时间与操作系统时间偏差 > 30 秒,BTC作业调度器拒绝执行“未来时间”的作业。ECC 6.0 对时钟同步极其敏感。
解决:

  1. 在服务器操作系统命令行执行date,记录当前时间;
  2. 在 SAP 中运行ABAP报告RSBTCDEL→ 输入Job name = COPY_000_TO_790→ 删除旧作业;
  3. 运行SM50→ 查看disp+work进程启动时间,若与系统时间差 > 30 秒,联系系统管理员校准 NTP;
  4. 重新提交SCCL作业。

5.3 现象:复制完成后,790 中用户DDIC无法登录,报User is locked

原因:SCCL使用SAP_ALLprofile 时,默认不复制用户锁定状态,但会复制USR02表中的UFLAG字段。若源 client 000 中DDIC被手动锁过,UFLAG = 64会被原样复制到 790。
解决:

  1. 以SAP*登录 790;
  2. 运行SE16N→ 表名USR02→ WHEREBNAME = 'DDIC';
  3. 找到UFLAG字段,双击编辑 → 改为0→ 保存;
  4. 退出重登DDIC。

5.4 现象:790 中能登录,但所有事务码(如SE38、MM01)报Authorization check failed

原因:SCCL复制时未包含AGR_USERS(角色分配表)或UST04(用户参数表),导致用户无角色。SAP_ALLprofile 默认不复制角色,需额外勾选。
解决:

  1. 以SAP*登录 790;
  2. 运行PFCG→ 输入角色名SAP_ALL→ 点击Users→Add users→ 添加DDIC;
  3. 点击Transport→ 生成 transport request;
  4. 运行SU01→DDIC→Roles标签页,确认SAP_ALL已分配。

5.5 现象:SCC3 日志显示Copying table T000后卡住超 2 小时,无错误也无进展

原因:T000是跨 client 的客户端主表,复制时需锁全表。若其他进程(如SM12中的锁、DB02中的长事务)正占用T000,SCCL会无限等待。
解决:

  1. 运行SM12→ 输入Table name = T000→ 查看是否有锁;
  2. 若有,记下User和Transaction→ 联系对应用户释放;
  3. 运行DB02→Long running transactions→ 查找运行 > 30 分钟的事务,用SM12解锁;
  4. 清理后,在SCC3中点击Refresh,日志会继续滚动。

6. 复制后必做的三件事:验证、清理、固化,少一步都可能让 790 变成定时炸弹

Client Copy 完成不等于环境可用。我见过太多团队复制完就 rush 进去改配置,结果两周后发现790的T000表被误删、SAP*密码被暴力破解、或SCC3日志被清空导致故障无法溯源。以下三件事必须在复制完成 1 小时内做完,且形成 checklist。

6.1 验证核心表一致性:用 SE16N 快速比对 000 与 790 的 5 张命脉表

复制不是 100% 精确,尤其跨 client 表(如T000,T001)和用户表(USR02)易出现字段遗漏。必须人工抽样验证。

执行步骤:

  1. 分别以SAP*登录 client 000 和 790;
  2. 在两个 client 中均运行SE16N,依次查以下表(每张表只查前 10 行):
表名关键字段验证要点
T000MANDT,MTEXT,DATFMMANDT = 790行是否存在?MTEXT是否为Test client?
T001BUKRS,BUTXT至少 1 条公司代码(如1000)是否完整?BUTXT是否非空?
USR02BNAME,UFLAG,TRDATBNAME = 'DDIC'行UFLAG = 0?TRDAT(最后登录日)是否为今日?
TADIRPGMID,OBJECT,OBJ_NAMEPGMID = 'R3TR'且OBJECT = 'PROG'的程序数,两 client 差值 < 5?
TSTCTCODE,PGMNATCODE = 'SE38'的PGMNA是否为SAPLSE38?

提示:若T000中MANDT = 790行缺失,说明 client 未真正创建,需重走SCC4;若USR02中DDIC的UFLAG ≠ 0,立即用SE16N改为0。

6.2 清理高危残留:禁用 SAP*、重置 DDIC 密码、删除测试请求

SAP*是超级用户,复制后若不处理,将成为最大安全漏洞。同时,测试过程中生成的 transport request 若不清除,会污染后续开发流。

执行步骤:

  1. 以SAP*登录 790 → 运行SU01→SAP*→Logon data标签页 → 勾选Lock user→ 保存;
  2. 同样在SU01中 →DDIC→Logon data→ 点击Change password→ 设新密码(如Abap2024!)→ 保存;
  3. 运行SE09→ 输入Request = *→User = DDIC→ 执行 → 全选所有 request → 点击Delete(仅删除 request header,不删对象);
  4. 运行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 当生产环境操作,必须视觉强提醒。这不是形式主义,是事故预防的最后防线。

执行步骤:

  1. 运行SE61→Object = ZLOGIN_SCREEN→ 创建新文本(若不存在)→ 输入:
    • Login screen text:*** TEST CLIENT 790 - FOR CUSTOMIZING ONLY ***
  2. 运行RZ10→ 编辑JHG_DEVBMGSOO_SAPIDESprofile → 新增参数:
    • Parameter name:login/system_info
    • Parameter value:TEST ENVIRONMENT - CLIENT 790
  3. 运行SPRO→SAP Reference IMG→General Settings→System Configuration→Set System Parameters→ 修改System name为QAS_790;
  4. 重启应用服务器(同 3.2 步骤),使login/system_info生效。

从那以后我每次完成 Client Copy,都强制走一遍这三件事:SE16N 抽五表、SU01 锁 SAP*、SE61 打水印。曾有一次跳过SE16N验证,结果T001公司代码漏了一半,开发同事在 790 里跑了三天增强,最后发现主数据根本不存在——重来一遍损失 40 人时。希望帮到你。

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

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

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

立即咨询