sap-sac — SAP Analytics Cloud
1. Environment Intake Checklist
- SAC tenant region — eu10 / us10 / kr-canary 등?
- Edition — SAC for BI / Planning / Smart Predict / Augmented Analytics?
- Connection type — Live (HANA, BW, S/4) vs. Import (Datasphere, Files)?
- Underlying data source — S/4HANA Cloud / On-Premise / BW / Datasphere / non-SAP?
- Use case — BI Story, Analytic App, Planning, Predictive scenario?
- User role — Story creator, Modeler, Planning user, Admin?
- SAP release — ECC 6.0 EhP 또는 S/4HANA release year?
- Deployment — On-Premise / RISE Private Cloud / Public Cloud?
- Industry — 제조·유통·금융·공공 등 데이터 통제와 마감 패턴은 무엇인가?
- Failure scope — 전체/특정 사용자, 최초 시각, 재현 빈도, 정확한 에러 문구?
- Authentication path — SAML SSO / OAuth / basic / identity propagation 중 무엇인가?
- Change history — 인증서·metadata·proxy·role·model 변경 직후인가?
환경이 부족해도 답을 멈추지 않는다. 위 질문을 최대 4개로 묶어 요청하고,
동시에 운영 변경 없는 provisional diagnosis와 read-only check를 제시한다.
2. Core Concepts
2.1 Connection Models
- Live Connection — real-time query, no data copy. HANA, BW, S/4 CDS views.
- Import Connection — periodic data load. Files, Datasphere, non-SAP DBs.
2.2 Models
- Analytic Model — flexible, dimension/measure-based, for BI Story
- Planning Model — supports input, version, allocation, value driver
- Predictive Model — Smart Predict / Augmented (regression, classification, time series)
2.3 Stories vs. Analytic Applications
- Story — drag-drop dashboards, smart insight, easy for business users
- Analytic Application — scriptable (JS), customizable UI, for app developers
3. Typical Issues
Data Issues
- "Story is empty" — check connection, model permissions, member filter
- "Numbers don't match S/4" — live vs. import mismatch, currency/unit conversion
- "Hierarchy missing" — refresh hierarchy in connection, check role mapping
- "Live connection failed" — SAC connection → network/auth → S/4
SICF → SAML2 순서
Performance
- Story slow → live query optimization (CDS views, indexes), reduce visible measures, use story-level filters
- Live BW: check BW query performance, OLAP cache
Planning
- "Cannot save value" — check write access, locked dimensions, version status (Public/Private)
- Allocation fail → check source/target model, rule structure
- Forecast not generating → check data history, model dimensions
Predictive
- Smart Predict accuracy low → review data quality, target balance, feature relevance
- Time-series forecasting → ensure consistent intervals
4. Connections to S/4 / Datasphere
| Source |
Connection |
Notes |
| ECC 6.0 |
BW Query 또는 지원되는 Import/OData |
S/4 Released CDS 경로를 가정하지 않음 |
| S/4HANA Public Cloud |
지원되는 cloud connection/API |
Released CDS/API만 사용, 고객 SICF 조정 불가 |
| S/4HANA On-Prem / RISE |
Live via 지원되는 network path |
Cloud Connector/reverse proxy 선택은 실제 아키텍처 기준 |
| BW/4HANA |
Live via InA |
BW Query 권한과 성능을 분리 확인 |
| Datasphere |
Live (Spaces) or Import |
preferred for cloud BI |
| HANA Cloud |
Live |
direct |
| Non-SAP DB |
Import via OData/JDBC |
Datasphere as bridge recommended |
5. Korean Context
- 한국 데이터 위치: SAC tenant region이 ap-southeast-1 (싱가포르) 또는 kr-canary
- 공공기관 컴플라이언스: K-ISMS, 망분리 환경에서 SAC 사용은 Private Cloud 검토
- 한국어 UI: SAC Story Title/Label 한국어 OK; 데이터 dimension name은 영문 권장
- 다국가 자회사 통합 보고: 한국 본사 SAC tenant에 자회사 데이터 통합 (consolidation)
6. Cross-module Routing
- BTP 환경/Cloud Connector 이슈 →
sap-btp
- S/4 CDS view →
sap-abap-developer
- Datasphere 연동 →
sap-integration-cloud (Datasphere 포함 시)
- Planning workflow → 비즈니스 컨설턴트 (CO/FI)
7. SAP Notes & References
- SAP Note 2511489 — SAC performance troubleshooting (registered in
data/sap-notes.yaml)
- SAP Note 3056467 — Slow performance when opening/running stories (registered)
- SAP Note 2651014 — Common errors with charts and tables (registered)
- SAC Help: https://help.sap.com/docs/SAP_ANALYTICS_CLOUD
- SAC Best Practices Guide (Story design, Planning, Predictive)
8. Out of Scope
- BW dataflow design (use sap-abap)
- Datasphere modeling (use sap-integration-cloud)
- Non-SAC BI tools (Tableau, Power BI 등)
9. Diagnostic Response Contract
SAC 장애·숫자 불일치·성능 이슈는 다음 순서로 답한다.
- Issue — 증상, 영향 사용자, 시작 시각, source, connection mode를 재정의한다.
- Primary Root Cause — 현재 evidence가 가장 강하게 지지하는 원인 하나를 먼저 쓴다.
- Falsification — 원인이 틀렸다면 보여야 할 관찰값을 두 개 이상 쓴다.
- Check — SAC UI 경로와 backend T-code + 메뉴 경로 + monitor/table field를 쓴다.
- Fix — 최소 변경, QA Test Connection, 샘플 Story 검증 순으로 쓴다.
- Rollback — 원복 artifact, trigger, owner, 정상 판정 기준을 쓴다.
- Prevention — 인증서 만료, content transport, 성능 budget, refresh SLA를 쓴다.
단순 용어 질문은 Quick Advisory로 끝낼 수 있다.
실패 원인이 둘 이상이거나 cross-system 변경이 필요하면 Evidence Loop를 사용한다.
Evidence Loop에서는 운영자가 COLLECT를 수행하며 에이전트가 프로덕션 변경을 대행하지 않는다.
9.1 Minimum Evidence Bundle
- SAC tenant 리전과 tenant ID의 마스킹된 식별자
- SAC update wave 또는 문제 발생 전후 release 정보
- Story / model / connection 종류와 마스킹된 object 이름
- ECC EhP 또는 S/4HANA release year, deployment model, industry
- 전체 사용자/특정 사용자 여부와 성공하는 비교 사용자 존재 여부
- 최초·최근 실패 시각(타임존 포함), HTTP status, correlation ID
- SAML assertion 본문이 아닌 issuer·audience·NameID type의 마스킹된 요약
- 변경 이력: 인증서, metadata, proxy, role, content transport, source query
Token, cookie, password, assertion 원문, 개인정보, 실제 재무 상세값은 수집하지 않는다.
화면 캡처에는 tenant host·사용자 ID·고객명·사업장명을 마스킹한다.
10. Environment and Release Decision Matrix
| Environment |
First supported path to identify |
Do not assume |
| ECC 6.0 |
BW Query, supported OData/Import, existing HANA/BW architecture |
S/4 Released CDS or direct S/4 InA semantics |
| S/4HANA On-Premise |
actual live endpoint, reverse proxy/Cloud Connector, backend ICF |
every landscape uses the same proxy pattern |
| RISE Private Cloud |
customer-managed vs SAP-managed boundary, approved connectivity |
customer can change every backend component |
| S/4HANA Public Cloud |
released analytical content/API and cloud administration |
customer access to SICF, SAML2, STRUST |
| BW/4HANA |
InA endpoint, BW Query, authorizations, query runtime |
Story rendering is always the bottleneck |
| Datasphere |
Space exposure, live/import mode, replication freshness |
federation and replication have the same latency |
Public Cloud action에는 T-code: 없음(Cloud UI)을 명시하고 해당 Fiori/SAC 메뉴 경로를 쓴다.
On-Premise/RISE action에는 아래 T-code directory의 메뉴 경로를 함께 쓴다.
어느 release인지 모르면 S/4 전용 CDS 이름이나 customer-maintainable backend setting을 단정하지 않는다.
11. Live Connection Failure Playbook
진단 순서는 반드시 SAC → network/auth → S/4 SICF → SAML2 이다.
각 단계가 통과한 evidence를 남긴 뒤 다음 단계로 간다.
11.1 Phase A — SAC Object and Scope
T-code: 없음(SAC UI) + SAC Home > Connections > 해당 connection > Test Connection에서
connection 자체가 실패하는지, Story만 실패하는지 분리한다.
T-code: 없음(SAC UI) + SAC Home > Files > 해당 Story > View에서
같은 model을 쓰는 최소 Story와 원본 Story를 비교한다.
T-code: 없음(SAC UI) + SAC Home > Security > Users/Roles에서
실패 사용자와 성공 사용자의 SAC role·team·sharing 차이만 read-only로 비교한다.
- connection owner만 성공하면 shared credential/SSO/user mapping 가설을 올린다.
- 모두 실패하면서 endpoint DNS/TLS에 도달하지 못하면 Story 계산 가설을 내린다.
Falsification A
- 같은 connection의 최소 Story가 정상 조회되면 connection 전체 장애 가설은 기각한다.
- 같은 사용자·같은 시간에 Test Connection은 성공하고 특정 Story만 실패하면 network 가설을 낮춘다.
- 성공 사용자와 실패 사용자의 role·team이 동일하면 SAC sharing만의 문제라는 가설을 낮춘다.
11.2 Phase B — Network and Authentication Edge
- 브라우저 개발자 도구에서 실패 request의 host·path·HTTP status·timing만 수집한다.
Header, cookie, token, payload는 내보내지 않는다.
- reverse proxy 또는 Cloud Connector를 쓰는지 실제 topology로 확인한다.
두 방식을 동시에 당연한 구성으로 적지 않는다.
SMICM + SAP Easy Access > Tools > Administration > Monitor > System Monitoring > Internet Communication Manager에서 실패 시각의 HTTP/TLS 연결 흔적을 read-only로 본다.
STRUST + SAP Easy Access > Tools > Administration > Administration > Trust Manager에서
endpoint가 사용하는 PSE의 인증서 유효기간·issuer chain·hostname 관계를 확인한다.
- proxy가 TLS를 terminate하면 browser→proxy와 proxy→backend 인증서 체인을 분리한다.
- HTTP 401/403이면 endpoint 도달은 성공했으므로 DNS/firewall 가설의 우선순위를 낮춘다.
- timeout/502/503이면 auth mapping을 바꾸기 전에 proxy route·backend reachability를 증명한다.
Falsification B
- backend
SMICM에 같은 시각 request가 보이면 firewall이 backend 도달을 막았다는 가설은 기각한다.
- TLS handshake와 인증서 체인이 정상이고 401/403이 반환되면 인증서 만료 단독 가설은 기각한다.
- SAC가 아닌 승인된 기술 테스트도 같은 endpoint에서 실패하면 Story/model 가설을 낮춘다.
11.3 Phase C — S/4 ICF Service (SICF)
이 단계는 S/4HANA On-Premise 또는 customer-managed RISE 범위에서만 수행한다.
Public Cloud에는 T-code: 없음(고객 접근 불가)로 표시하고 SAP cloud 운영 경로로 에스컬레이션한다.
- 실패 request에서 실제 service path를 먼저 확인한다.
SICF + SAP Easy Access > Tools > Administration > Administration > Network > HTTP Service Hierarchy에서 그 path에 대응하는 InA 또는 OData node의 활성 상태를 조회한다.
- InA 계열은 실제 configured endpoint의
/sap/bw/ina 하위 path를 기준으로 확인한다.
- OData 계열은 실제 configured endpoint의
/sap/opu/odata 하위 path를 기준으로 확인한다.
- 상위 node가 보인다는 이유로 subtree 전체를 활성화하지 않는다.
- node 활성 상태와 handler/authorization 오류를 분리하고 실패 시각을 기록한다.
- 활성 변경이 필요하면 개발/QA에서 정확한 node 하나만 변경하고 TR·변경 승인에 연결한다.
- 변경 후
SAC Home > Connections > 해당 connection > Test Connection
(T-code: 없음(SAC UI))과 최소 read-only Story를 재실행한다.
Falsification C
- 정확한 node가 활성이고 같은 path가 유효한 HTTP 응답을 내면 inactive ICF 가설은 기각한다.
- ICF 활성화 전후 HTTP status가 동일하면 서비스 비활성 단독 가설을 기각하고 auth로 이동한다.
- 다른 사용자에게 동일 endpoint가 정상이라면 전역 ICF 비활성 가설은 기각한다.
11.4 Phase D — SAML Trust and Metadata (SAML2)
ICF endpoint가 응답하는 것을 증명한 뒤에 수행한다.
SAML2 + SAP Easy Access > Tools > Administration > Administration > Security > SAML 2.0 Configuration에서 Local Provider 활성 상태를 확인한다.
- SAC/IdP의 Trusted Provider가 enabled인지 확인한다.
- 양쪽 metadata의 entity ID, ACS URL, issuer, audience가 현재 endpoint와 맞는지 비교한다.
- signing certificate 유효기간과 교체 이력, metadata 재import 시각을 확인한다.
- NameID/user mapping이 실패 사용자에게 어떤 backend ID를 만드는지 마스킹해 비교한다.
- 시스템 clock 차이로 assertion validity window를 벗어나는지 확인한다.
SU53 + System > Utilities > Display Authorization Check를 실패 직후 실행해
마지막 실패 authorization object를 수집한다. 성공 후 나중에 실행한 결과는 evidence로 쓰지 않는다.
- role 변경이 필요하면
PFCG + SAP Easy Access > Tools > Administration > User Maintenance > Role Administration > Roles에서 승인된 role owner와 함께 최소 권한만 검토한다.
Falsification D
- 동일 SAML identity로 backend launch가 성공하고 SAC만 실패하면 backend trust 단독 가설을 낮춘다.
- Local/Trusted Provider, metadata, certificate, clock이 모두 일치하면 trust mismatch 가설을 기각한다.
SU53에 실패 authorization이 재현되고 role 차이가 있으면 network 가설보다 권한 가설을 올린다.
11.5 Live Fix and Rollback Pairs
| Confirmed cause |
Minimal Fix after QA |
Mandatory Rollback |
| wrong SAC connection setting |
approved connection copy에서 endpoint/auth 수정 후 Test Connection |
기존 connection export/설정으로 복원하고 테스트 |
| expired TLS chain |
승인된 새 chain을 QA PSE에 반영 후 handshake 검증 |
기존 PSE backup·certificate chain으로 원복 |
| exact ICF node inactive |
필요한 node 하나만 QA에서 활성화하고 TR 승격 |
같은 node를 이전 상태로 되돌리고 request 재검증 |
| stale SAML metadata |
현 endpoint metadata를 QA에서 재import하고 mapping 검증 |
이전 metadata/certificate backup 재적용 |
| missing authorization |
role owner 승인 후 최소 object만 role transport |
이전 role version/transport로 복원하고 user 비교 |
Fix 전후에 같은 사용자, 같은 최소 Story, 같은 filter, 같은 시간대 기준을 사용한다.
Rollback trigger는 오류율 상승, 다른 SSO consumer 영향, 응답 status 악화처럼 측정 가능해야 한다.
12. Import vs Live — Do Not Mix the Diagnosis
| Dimension |
Live Connection |
Import Connection |
| Data location |
source에 남아 query됨 |
SAC model에 snapshot 적재 |
| Freshness |
source query 시점 |
마지막 successful job 시점 |
| Main failure surface |
endpoint, SSO, source authorization, query |
job, mapping, delta, transformation, model load |
| Security |
source row/data authorization + SAC sharing |
SAC model security + import credential |
| Performance |
source runtime + network + rendering |
model size + calculation + rendering |
| Safe first test |
Test Connection + minimal Story |
preview + small scoped import job |
| Wrong first fix |
cache/full reload |
SICF/SAML activation |
12.1 Import Job / Schedule Failure Intake
Import가 "안 돌았다"는 말만으로 scheduler를 원인으로 단정하지 않는다.
아래 환경과 시간축을 먼저 맞춘다.
- SAC tenant 리전, update wave, license/edition을 확인한다.
- source가 ECC EhP, S/4HANA release year, BW/4HANA, Datasphere, cloud/non-SAP 중 무엇인지 확인한다.
- deployment가 On-Premise, RISE Private Cloud, Public Cloud인지와 업종의 운영 window를 확인한다.
- model·connection 종류, Import job 이름의 마스킹된 식별자, full/delta 방식을 확인한다.
- 실패가 manual import, scheduled import 또는 둘 다인지 분리한다.
- schedule owner, enabled/paused 상태, timezone, recurrence, 시작 window를 확인한다.
- last successful run과 first failed run의 start/end time, duration, row count를 비교한다.
- 평소와 실패 run의 extracted, loaded, rejected row 수와 watermark를 비교한다.
- credential rotation, owner 퇴사/잠금, agent update, proxy/TLS, source query/schema 변경 이력을 받는다.
- on-premise data acquisition agent가 필요한 connection인지 실제 architecture에서 확인한다.
모든 SAC Import가 agent 또는 DPA를 쓴다고 가정하지 않는다.
- maintenance window, concurrent job, source batch와 겹치는지 확인한다.
- 정확한 status, error category, correlation ID를 받되 token, password, payload 원문은 받지 않는다.
환경 정보가 부족하면 release/deployment/source, manual-vs-schedule, last success/first failure,
credential/agent/query change 네 묶음으로 질문하고 read-only check를 동시에 제시한다.
12.2 Read-only Evidence Collection
T-code: 없음(SAC UI) +
SAC Home > Files > 해당 model > Data Management > Import Jobs에서 다음을 기록한다.
- scheduled/manual trigger
- owner와 schedule enabled/paused 상태
- tenant timezone과 표시된 execution time
- queued/start/end 시각과 duration
- extracted/loaded/rejected row 수
- error stage, correlation ID, 마지막 성공 run
T-code: 없음(SAC UI) +
SAC Home > Connections > 해당 connection에서 connection type, credential 상태,
Test Connection 결과, agent binding을 read-only로 확인한다.
- 동일 source·mapping에 작은 기간 또는 제한된 row를 사용한 manual Test Run을 준비한다.
프로덕션 full reload가 아니라 QA/model copy에서 실행한다.
- 같은 connection의 다른 Import job이 같은 시간대 성공했는지 비교한다.
- 같은 schedule owner의 다른 job과 성공 owner의 비교 job을 확인한다.
- agent 기반 connection이면 인프라 담당자에게 service/heartbeat, last seen, proxy/TLS,
agent log의 시각·error category만 요청한다. log의 credential과 payload는 마스킹한다.
- agent 미사용 cloud connection이면 agent 장애 가설을 즉시 제외한다.
- ODP delta architecture가 확인된 경우에만
ODQMON +
SAP Easy Access > Tools > Administration > Monitor > Operational Delta Queue에서
subscription, request, last successful delta, backlog를 read-only로 확인한다.
- BW Query가 source이면
RSRT +
SAP Easy Access > Business Warehouse > Business Explorer > Query > Query Monitor에서
같은 변수·권한으로 query 실행 가능 여부와 result volume을 확인한다.
- backend HTTP 도달 여부가 쟁점인 경우에만
SMICM +
SAP Easy Access > Tools > Administration > Monitor > System Monitoring > Internet Communication Manager에서 실패 시각의 request 도달 흔적을 본다.
- backend component가 Application Log를 남기는 경우에만
SLG1 +
SAP Easy Access > Tools > Administration > Monitor > System Monitoring > Application Log > Display에서 object/subobject/time window를 좁혀 조회한다.
ODQMON queue reset, delta reinitialization, full reload, credential overwrite,
agent reinstall은 evidence collection이 아니라 변경이므로 이 단계에서 수행하지 않는다.
read-only evidence가 끝난 뒤에만 QA/model copy에서 다음 controlled test를 수행한다.
- 같은 source·mapping의 작은 기간 manual Test Run
- 같은 owner·timezone의 one-time schedule
- 같은 작은 범위의 full-vs-delta 비교(실제 delta architecture일 때만)
- 각 test 사이에 target row/watermark/duplicate를 대사하고 다음 test로 이동
12.2.1 Job Stage Decision Gate
| Read-only job observation |
Primary layer |
First comparison |
| expected time에 run record 없음 |
schedule paused/disabled, owner, timezone, recurrence |
정의가 같은 QA one-time schedule |
| run record가 queued에 머묾 |
concurrency, maintenance, capacity/window |
격리 window의 queued duration |
| start 후 extracted rows = 0 |
credential, connection, agent, source availability |
Test Connection + source/manual history |
| extracted > 0, loaded = 0 |
mapping, transform, target model |
preview + model copy sample load |
| loaded > 0, rejected > 0 |
data type/key/date/member 품질 |
rejected field + schema change history |
| small scope 성공, full scope timeout |
volume, partition, resource window |
같은 volume의 격리 window run |
Stage evidence가 없으면 "agent down" 또는 "volume limit"을 Primary로 단정하지 않는다.
run record가 없는 문제에 mapping을 고치거나, extraction 완료 뒤 오류에 credential을 먼저 바꾸지 않는다.
12.2.2 Release and Deployment Boundary for Import
- SAC schedule control은 source가 ECC인지 S/4인지와 별개로 tenant에서 확인한다.
- ECC/BW Query source는 실제 BW Query일 때만
RSRT로 source 실행을 확인한다.
- ECC라고 해서 S/4 Released CDS 또는 S/4 Public Cloud 메뉴를 적용하지 않는다.
- ODP delta 사용이 architecture evidence로 확인될 때만
ODQMON을 사용한다.
- S/4HANA On-Premise/RISE도 agent, direct cloud connection, BW 경유 중 실제 경로를 식별한다.
- S/4HANA Public Cloud는
T-code: 없음(Cloud UI)으로 표시하며 고객 backend T-code를 안내하지 않는다.
- non-SAP/cloud source는 SAC job·connection·provider monitor를 사용하고 ABAP T-code를 억지로 붙이지 않는다.
12.3 General Cause Classification
| Layer |
Typical causes |
Distinguishing evidence |
| Schedule control |
paused/disabled, wrong timezone, expired owner, overlap/concurrency |
manual 성공, schedule만 실패; queued/start time 불일치 |
| Connection/auth |
credential expiry/rotation, role loss, account lock |
Test Connection 실패; rotation 시각과 first failure 일치 |
| Agent/network |
acquisition agent down, heartbeat loss, proxy/TLS route change |
agent-based connection만 실패; last seen 단절 |
| Source/query |
source unavailable, query/schema/variable change, permission change |
source test/RSRT 실패; extraction 전에 종료 |
| Delta state |
subscription/backlog/watermark inconsistency |
ODQMON evidence; full test와 delta 결과가 갈림 |
| Mapping/data |
dimension key/type/date change, rejected rows, transform error |
preview와 rejected sample이 같은 field를 지목 |
| Volume/resource |
timeout, row/size growth, concurrency or tenant/source resource pressure |
작은 범위 성공, 큰 범위만 duration 증가 후 실패 |
| Target/model |
target model lock/change, member limit or incompatible model change |
extraction 성공 뒤 load stage에서만 실패 |
가능성이 높은 한 원인을 Primary Root Cause로 두고 나머지는 Alternatives로 낮춘다.
각 가설에는 아래처럼 서로 독립적인 반증 조건을 두 개 이상 붙인다.
12.4 Hypotheses with Falsification
H1 — Schedule metadata, owner, timezone, or concurrency
- 지지: 같은 scope의 manual import는 성공하고 scheduled trigger만 실패한다.
- 지지: schedule이 paused/disabled이거나 표시 timezone·실행 window가 기대와 다르다.
- 반증 1: 같은 owner·timezone·definition의 QA one-time schedule이 두 번 연속 성공한다.
- 반증 2: manual import도 같은 stage·같은 error로 실패한다.
- 반증 3: 실패 window에 겹친 job이 없고 schedule은 실제로 정시에 start됐다.
H2 — Credential, connection, or agent path
- 지지: Test Connection이 실패하고 credential rotation/owner lock이 first failure와 일치한다.
- 지지: agent-based connection의 heartbeat/last seen이 실패 전 끊겼다.
- 반증 1: Test Connection과 agent heartbeat가 정상이고 같은 connection의 다른 import가 성공한다.
- 반증 2: 해당 connection은 agent를 사용하지 않는 cloud path이다.
- 반증 3: extraction은 끝났고 target load/mapping stage에서만 실패한다.
H3 — Source query, schema, authorization, or availability
- 지지: source query/schema/variable 변경 직후 모든 trigger가 extraction stage에서 실패한다.
- 지지: BW source의 같은 변수 query가
RSRT에서도 실패한다.
- 반증 1: 같은 credential과 변수의 source query·preview가 반복해서 성공한다.
- 반증 2: extraction row는 정상인데 rejected/load row에서만 실패한다.
- 반증 3: 같은 source의 다른 job은 같은 window에 정상 추출된다.
H4 — Delta subscription or watermark
- 지지: 확인된 ODP delta path에서 backlog/request 오류가 first failure와 일치한다.
- 지지: 작은 full Test Run은 성공하지만 delta run만 같은 watermark에서 실패한다.
- 반증 1: 실제 architecture가 ODP delta를 사용하지 않는다.
- 반증 2:
ODQMON subscription/request가 정상이며 source와 target watermark가 일치한다.
- 반증 3: full과 delta가 모두 같은 auth/connection stage에서 실패한다.
H5 — Mapping, transformation, or data quality
- 지지: rejected rows와 source type/key/date format 변경이 같은 field를 지목한다.
- 지지: extraction은 완료되고 mapping/load stage에서만 실패한다.
- 반증 1: model copy의 preview·mapping·샘플 rows가 정상이고 rejected row가 없다.
- 반증 2: 이전 mapping도 extraction 전에 같은 connection 오류로 실패한다.
- 반증 3: 실패가 schedule start 전에 발생해 source row를 읽지 않았다.
H6 — Volume, timeout, quota, or resource window
- 지지: 작은 기간은 성공하고 전체 범위만 row 증가와 함께 timeout된다.
- 지지: 실패 duration이 평소보다 길고 resource/concurrent job window와 겹친다.
- 반증 1: 작은/전체 범위가 모두 즉시 같은 auth 오류로 실패한다.
- 반증 2: row count와 duration이 평소 수준인데 schedule start 전에 실패한다.
- 반증 3: 동일 volume을 격리 window에서 반복 성공한다.
12.5 Fix and Rollback Pairs
| Confirmed cause |
Fix after QA/Test Run |
Rollback |
| schedule paused/timezone/owner |
승인된 owner·timezone·enabled 상태를 최소 수정하고 QA one-time schedule 실행 |
기록한 이전 owner·timezone·recurrence·enabled 상태로 복원 |
| overlap/concurrency |
실행 window를 분리하고 source/tenant 운영 캘린더와 맞춤 |
이전 window로 복원하고 새 schedule을 disable |
| credential expired |
secure store/connection UI에서 승인된 credential 갱신 후 Test Connection |
유효한 이전 credential reference로 복원; 불가하면 schedule disable 후 owner 에스컬레이션 |
| agent unavailable |
인프라 owner가 기존 agent service/route를 복구하고 heartbeat 확인 |
변경 전 service/proxy/agent config로 복원; 무계획 reinstall 금지 |
| source query/schema |
source contract 또는 mapping을 model copy에서 수정하고 content transport |
이전 query/interface version과 model package 복원 |
| delta state |
원인과 impact가 확정된 승인 절차만 수행 |
이전 subscription/watermark evidence로 복구; queue reset/full init은 별도 change gate |
| mapping/data quality |
model copy에서 field mapping/transform 수정 후 rejected-row Test Run |
이전 mapping/content package 복원 |
| volume/timeout |
범위 partition, window 조정, 증분 scope로 QA 실행 |
이전 import definition/schedule 복원 후 duplicate와 watermark 대사 |
Backend role·query·service 구성 변경은 승인된 TR을 사용한다.
SAC model/job 변경은 개발/테스트 tenant와 content transport를 사용한다.
환경 종속 credential은 transport에 평문으로 포함하지 않는다.
12.6 Reverification and Prevention
- QA manual small-scope Test Run이 성공하는지 확인한다.
- 같은 owner·timezone·mapping으로 QA one-time schedule을 실행한다.
- status, queued/start/end time, duration, extracted/loaded/rejected rows를 baseline과 비교한다.
- delta이면 source/target watermark와 duplicate/missing key를 확인한다.
- target model의 freshness timestamp와 대표 집계 slice를 source와 대사한다.
- 의존 Story가 새 snapshot을 표시하고 숫자·통화·기간 filter가 유지되는지 확인한다.
- 정상 운영 window에서 scheduled run을 관찰하고 최소 두 주기 성공을 기록한다.
- 오류가 재발하거나 row/숫자 대사가 깨지면 정의한 Rollback을 실행한다.
- schedule owner는 개인이 아닌 승인된 운영 owner 정책을 사용하고 정기 재인증한다.
- credential/certificate 만료, agent heartbeat, last success age, duration, rejected row에 alert를 둔다.
- 월마감 D+3 같은 SLA에는 source close, import completion, Story release 순서를 명시한다.
- full reload와 delta reinitialization은 별도 change, Test Run, rollback plan이 없으면 실행하지 않는다.
12.7 Import Schedule Answer Template
환경이 빠진 단발 질문에도 "정보가 필요하다"로만 끝내지 않는다.
최대 4개 인테이크 질문과 provisional diagnosis, read-only check를 한 답변에 함께 준다.
## Issue
SAC Import model의 예약 job이 실패했으며 manual 실행 여부와 source/deployment는 확인 필요
## Primary Root Cause
manual은 성공하고 schedule만 실패한다는 evidence가 있으면 schedule execution context
(owner/credential, enabled 상태, timezone, concurrent window) 중 관찰값이 가장 강한 하나.
manual 결과가 없으면 "provisional"로 표시하고 확정하지 않음.
## Falsification
1. 같은 scope의 manual Test Run도 동일 stage/error로 실패하면 schedule-only 가설 기각.
2. 같은 owner/timezone의 QA one-time schedule이 반복 성공하고 overlap이 없으면 metadata 가설 기각.
3. Test Connection이 실패하면 schedule metadata보다 credential/connection/agent 가설로 전환.
## Check
1. SAC Home > Files > model > Data Management > Import Jobs
status, trigger, owner, timezone, last success, first failure, row counts, correlation ID
2. SAC Home > Connections > connection
Test Connection과 agent binding, secret 미수집
3. QA manual small-scope Test Run
4. 실제 architecture에 해당할 때만 ODQMON/RSRT/SMICM/SLG1 read-only evidence
## Fix
확정 원인 하나만 QA에서 최소 수정하고 manual small-scope 후 one-time schedule 실행.
Backend 구성은 TR, SAC content는 content transport 사용.
## Rollback
이전 owner/timezone/recurrence/connection/model snapshot으로 복원.
credential rollback이 안전하지 않으면 schedule을 disable해 오적재를 막고 보안 owner에게 이관.
## Prevention
last-success age, credential expiry, agent heartbeat, duration, rejected rows, duplicate/watermark alert.
운영 window에서 최소 두 주기 성공과 의존 Story 숫자 대사를 완료.
Primary Root Cause selection은 다음 evidence 순서를 사용한다.
- manual 성공 + schedule 실패 → schedule execution context
- Test Connection 실패 → credential / connection / agent
- source query test 실패 → source / query / authorization
- extraction 성공 + load/rejected 실패 → mapping / data quality / target model
- small scope 성공 + full timeout → volume / resource window
- 확인된 ODP delta만 실패 → subscription / watermark
동일 우선순위의 원인을 5~6개 한꺼번에 Root Cause로 나열하지 않는다.
Primary 하나, Alternatives 최대 2개, 각 가설의 반증 evidence 2개 이상으로 답한다.
13. Planning Model Save Failure
"저장 안 됨"을 version, lock, authorization, validation, action, browser/network로 나눈다.
13.1 Read-only Isolation Sequence
T-code: 없음(SAC UI) + Story > Planning Table > Version Management에서
Public/Private version, publish 상태, owner를 확인한다.
- 같은 model에 새 Private Version을 만들고 허용된 테스트 member 한 셀만 변경한다.
T-code: 없음(SAC UI) + Modeler > 해당 Planning Model > Data Locking에서
잠긴 교차영역과 lock owner를 확인한다.
T-code: 없음(SAC UI) + Security > Roles/Teams에서 model read와 planning write 권한을 구분한다.
- dimension member가 존재하고 leaf/input-ready 상태인지 확인한다.
- validation rule 또는 data action이 저장 시 실행되는지 분리하기 위해
rule/action 없는 model copy에서 같은 셀을 테스트한다.
- browser network에서 status와 correlation ID만 수집하고 입력값·token은 마스킹한다.
- 동시 편집자가 있으면 동일 data slice가 아니라 격리된 test slice에서 재현한다.
13.2 Planning Hypotheses and Falsification
| Hypothesis |
Supporting evidence |
Falsification evidence |
| Public Version locked |
Private save 성공, Public만 실패 |
같은 권한으로 unlocked Public test가 실패 |
| Data Lock blocks cell |
실패 좌표가 locked slice와 정확히 일치 |
unlocked test slice에서도 동일 실패 |
| Write permission missing |
read 성공, save 시 authorization error |
같은 user가 같은 model의 허용 slice에 저장 성공 |
| Invalid member/rule |
특정 member·rule path에서만 실패 |
model copy에서 rule 제거 후에도 모든 member 실패 |
| Network/session issue |
여러 model에서 같은 시각 4xx/5xx |
다른 model save와 connection이 계속 정상 |
가설마다 위 표의 반증 항목 두 개 이상을 실제 환경에 맞게 구체화한다.
"권한 문제 같습니다"처럼 관찰값 없는 진단은 하지 않는다.
13.3 Planning Fix and Rollback
- Version/lock Fix: owner 승인 후 필요한 기간·scope만 unlock하고 테스트 셀 저장 후 다시 lock한다.
- Version/lock Rollback: 기존 lock snapshot과 owner를 기준으로 즉시 재잠금한다.
- Role Fix: role owner 승인과 segregation-of-duties 확인 후 최소 planning privilege만 부여한다.
- Role Rollback: 변경 전 role export/transport로 복원하고 사용자 session을 재검증한다.
- Rule Fix: model copy에서 validation/data action을 수정해 Test Run 후 content transport한다.
- Rule Rollback: 이전 model/content version으로 복원하고 미게시 Private Version은 보존한다.
- Model Fix: dimension/member mapping 수정 전 model export와 영향 Story 목록을 보관한다.
- Model Rollback: 이전 mapping/content package를 재import하고 대표 Story 숫자를 대사한다.
Public Version publish·data action actual run은 운영자 승인 없이 실행하지 않는다.
Test Run 결과에는 test version, test slice, before/after 값을 마스킹해 기록한다.
14. Story Performance Playbook
14.1 Build a Comparable Baseline
T-code: 없음(SAC UI) + Story > Tools > Performance 또는 tenant가 제공하는
Performance Analysis 화면에서 initial load, query, script, rendering 시간을 분리한다.
- 대표 사용자·대표 filter·동일 브라우저로 cold/warm 조건을 구분해 3회 측정한다.
- 최초 로딩, input control 변경, drill, page navigation, export 중 느린 동작을 하나로 고정한다.
- Story 복사본에서 widget 절반을 제거해 binary isolation을 반복한다.
- linked analysis, blended data, calculated measure, large table, custom widget을 하나씩 분리한다.
14.2 Live Story Backend Split
- BW source면
RSRT + SAP Easy Access > Business Warehouse > Business Explorer > Query > Query Monitor에서 같은 변수로 query runtime과 result volume을 확인한다.
- S/4/HANA source의 backend 병목이 의심되면 승인된 QA 짧은 구간에만
ST12 + SAP Easy Access > Tools > ABAP Workbench > Test > Performance Analysis > Single Transaction Analysis를 사용한다.
- SQL 병목을 더 좁혀야 할 때만 승인된 QA에서
ST05 + SAP Easy Access > Tools > ABAP Workbench > Test > Performance Analysis > SQL Trace를 사용한다.
- trace는 한 사용자·한 동작·짧은 window로 제한하고 즉시 종료한다.
- source query가 빠르고 SAC rendering만 느리면 CDS/index 변경 가설을 기각한다.
14.3 Import Story Split
- backend trace보다 model size, exception aggregation, calculated measure, hierarchy를 먼저 본다.
- 화면 밖 widget도 query를 발생시키는지 Story copy에서 확인한다.
- table row/column과 visible measure를 줄여 response curve를 측정한다.
- page별 lazy-load 또는 Story 분할은 사용자 navigation 영향과 함께 테스트한다.
- 성능을 위해 business 의미가 다른 aggregation으로 바꾸지 않는다.
14.4 Performance Falsification and Rollback
- widget 절반 제거 후 시간이 그대로면 제거한 widget 집합 가설을 기각한다.
RSRT query가 느리고 SAC overhead가 작으면 Story-only 가설을 기각한다.
- source query는 빠르지만 rendering이 widget 수에 비례하면 backend index 가설을 기각한다.
- calculation 제거가 숫자 의미를 바꾸면 최적화 후보가 아니라 기능 변경으로 취급한다.
- 변경 전 Story 복사본·model version·baseline 3회 측정값을 보관한다.
- 개선이 성능 budget을 못 맞추거나 숫자 대사가 깨지면 기존 Story/content package로 롤백한다.
15. Number Reconciliation — SAC vs Source
다음 축을 한 번에 하나씩 고정해 비교한다.
- Live인지 Import인지, Import라면 마지막 성공 job 시각을 고정한다.
- source document/posting cutoff와 SAC 기준시각·타임존을 맞춘다.
- 통화 유형, 환율일, scale, 단위를 맞춘다.
- fiscal year variant, period, calendar hierarchy를 맞춘다.
- debit/credit 또는 income/expense sign convention을 맞춘다.
- hierarchy node, story/page/widget filter, input control을 모두 기록한다.
- source authorization과 SAC data access control이 같은 population을 허용하는지 비교한다.
- 한 document를 임의로 찍지 말고 승인된 최소 집계 slice로 drill-down한다.
ECC는 classic FI/BW 추출 구조를 전제로 검토하고 S/4의 universal journal을 암묵적으로 적용하지 않는다.
S/4는 released analytical view·query의 semantic aggregation을 확인하되 backend release year를 먼저 받는다.
회사코드·G/L·코스트 센터 값은 사용자가 제공한 값만 사용한다.
16. Deployment-specific Boundaries
16.1 ECC 6.0
- ECC EhP, BW 유무, extractor/OData architecture를 먼저 확인한다.
- S/4 Released CDS 명명 규칙이나 Public Cloud communication arrangement를 적용하지 않는다.
- BW Query가 source면
RSRT + 위 T-code directory 경로로 query 자체를 먼저 검증한다.
16.2 S/4HANA On-Premise
- customer-managed ICF, SAML, PSE, role 영역을 변경 전 read-only로 확인할 수 있다.
SICF, SAML2, STRUST 변경은 QA, TR, 승인, Test Connection을 필수로 한다.
- release year에 따라 available content가 다르므로 view/service 이름을 추정하지 않는다.
16.3 RISE Private Cloud
- 고객, MSP, SAP 책임 경계를 먼저 확인한다.
- customer 권한 밖의 ICM/PSE/service 변경은 evidence bundle로 운영 주체에 요청한다.
- 긴급 변경도 TR·change record·rollback owner를 생략하지 않는다.
16.4 S/4HANA Public Cloud
T-code: 없음(Cloud UI) + SAC/Fiori 관리 메뉴에서 released content와 connection을 확인한다.
- 고객에게 backend
SICF, SAML2, STRUST, PFCG 실행을 지시하지 않는다.
- quarterly release 전 preview/test tenant에서 Story·connection·planning regression을 수행한다.
- key-user/cloud transport mechanism으로 content를 승격하고 직접 운영 수정을 하지 않는다.
17. T-code, Menu Path, Table and Monitor Directory
아래 T-code는 data/tcodes.yaml 등록을 확인한 항목만 사용한다.
메뉴 label은 release별로 조금 다를 수 있으므로 T-code와 함께 식별한다.
| T-code |
Menu path |
Evidence / safe use |
SICF |
SAP Easy Access > Tools > Administration > Administration > Network > HTTP Service Hierarchy |
exact InA/OData node status; blanket activation 금지 |
SAML2 |
SAP Easy Access > Tools > Administration > Administration > Security > SAML 2.0 Configuration |
provider, metadata, certificate, user mapping |
STRUST |
SAP Easy Access > Tools > Administration > Administration > Trust Manager |
PSE certificate validity and chain |
SMICM |
SAP Easy Access > Tools > Administration > Monitor > System Monitoring > Internet Communication Manager |
request reachability, HTTP/TLS timing |
SU53 |
System > Utilities > Display Authorization Check |
실패 직후 last failed authorization |
PFCG |
SAP Easy Access > Tools > Administration > User Maintenance > Role Administration > Roles |
approved role review; change requires TR |
SLG1 |
SAP Easy Access > Tools > Administration > Monitor > System Monitoring > Application Log > Display |
object/subobject/time-window application log |
RSRT |
SAP Easy Access > Business Warehouse > Business Explorer > Query > Query Monitor |
BW Query variables, runtime, result |
ODQMON |
SAP Easy Access > Tools > Administration > Monitor > Operational Delta Queue |
delta subscription/request read-only check |
ST12 |
SAP Easy Access > Tools > ABAP Workbench > Test > Performance Analysis > Single Transaction Analysis |
approved short QA trace |
ST05 |
SAP Easy Access > Tools > ABAP Workbench > Test > Performance Analysis > SQL Trace |
approved focused QA SQL trace |
SAC-specific evidence는 ABAP table이 아니라 tenant monitor가 ground truth인 경우가 많다.
Application Log를 쓰는 backend component라면 SLG1 결과와 함께
BALHDR.OBJECT, BALHDR.ALDATE, BALHDR.ALTIME을 read-only 식별자로 기록할 수 있다.
BALHDR/BALDAT를 직접 편집하거나 생산 SE16N으로 고치지 않는다.
SAML·ICF 내부 저장 테이블을 직접 수정하는 방식은 지원 경로가 아니다.
18. Transport, Test Run, and Rollback Governance
18.1 Before Change
- 변경 object owner, business approver, Basis/security owner를 기록한다.
- SAC Story/model/connection은 export 또는 versioned copy를 보관한다.
- backend config는 현 상태 캡처, 관련 TR, 대상 system/client를 기록한다.
- SAML metadata/certificate는 비밀키를 노출하지 않는 승인된 backup 절차를 사용한다.
- 대표 사용자·대표 Story·성능/숫자 baseline을 만든다.
18.2 Test Run
- connection: QA
Test Connection + 최소 read-only Story
- import: 작은 기간/row scope preview + test job
- planning: Private Version의 승인된 test slice 저장, publish 금지
- Story: 복사본에서 before/after 3회 측정과 숫자 대사
- backend: 정확한 service/user/request만 대상으로 짧게 trace
18.3 Transport
- SAC content는 개발/테스트 tenant에서 content transport로 승격한다.
- backend service·role·configuration 변경은 승인된 TR을 사용한다.
- 환경별 certificate와 endpoint를 다른 system에 그대로 복사하지 않는다.
- transport 불가 환경 종속 항목도 관련 TR/change record에 수동 단계와 dual control을 연결한다.
- 운영 direct change 후 사후 TR로 맞추는 방식을 정상 절차로 권하지 않는다.
18.4 Rollback Gate
- rollback artifact가 없으면 Fix를 확정하지 않는다.
- rollback trigger, 의사결정자, 허용 downtime, 정상 판정 기준을 먼저 쓴다.
- 원복 후 Test Connection, 최소 Story, 숫자 대사, 사용자 SSO를 다시 확인한다.
- rollback이 다른 consumer를 깨뜨릴 수 있으면 영향 시스템을 사전에 식별한다.
19. Anti-patterns
- Live 장애인데 Import full reload부터 수행
- Import 지연인데
SICF나 SAML trust부터 변경
- 401/403을 firewall 문제로 단정하거나 timeout을 role 문제로 단정
- 정확한 service path 없이
SICF subtree 전체 활성화
- metadata backup 없이
SAML2 provider 삭제·재생성
- certificate chain/hostname 확인 없이
STRUST에 인증서 추가
- Public Cloud 사용자에게 backend T-code 실행 지시
- Story가 느리다는 이유로 source trace와 widget 제거를 동시에 시행
- Planning Public Version을 테스트 목적으로 바로 publish
- 숫자 불일치에 cache만 지우고 기준시각·통화·sign·filter를 기록하지 않음
- 운영에서
SE16N 직접 편집 또는 table update 권고
- 회사코드·G/L·코스트 센터·조직 값을 임의로 예시화
- 승인·TR·Test Run·Rollback 없는 운영 config 변경
- 미등록 T-code나 확인하지 않은 SAP Note 번호를 추정해 제시
20. Operator Checklists
Live Connection handoff
Planning save handoff
Story performance handoff
21. Delegation and References
- Cloud Connector, ICM, TLS, SAML, role →
sap-basis-consultant; 한국 망분리 → sap-bc
- CDS/query semantics and backend trace →
sap-abap-developer
- BTP destination/subaccount →
sap-btp
- Datasphere federation/replication →
sap-integration-cloud
- FI/CO planning logic →
sap-fi-consultant / sap-co-consultant
- Multi-turn diagnosis state →
plugins/sap-session/skills/sap-session/SKILL.md
- 현장체 →
plugins/sap-session/skills/sap-session/references/korean-field-language.md
- verified T-codes →
data/tcodes.yaml
- verified Notes →
data/sap-notes.yaml
위임 시 evidence는 최소화하고 secret·개인정보·실제 재무 상세값을 제거한다.
불확실한 service 이름·T-code·Note는 추가하지 말고 "확인 필요"로 남긴다.
1---2name: sap-sac3description: This skill handles all SAP Analytics Cloud (SAC) tasks including Story design, Analytic Applications, Smart Insights, Predictive scenarios, Planning models, data connectivity (live vs. import), HANA Cloud connection, BW Bridge, BTP destination configuration, Datasphere integration, R visualizations, Smart Discovery, allocation, value driver tree, Time-series forecasting, Calculated Measures, Hierarchies, SAC Mobile, embedding (SAP Build Apps, Fiori), and performance optimization. Use whenever the user mentions SAC, Analytics Cloud, SAC Story, Analytic Application, BW Bridge, SAC Planning, Smart Insights, Predictive, or BTP analytics.4---56# sap-sac — SAP Analytics Cloud78## 1. Environment Intake Checklist9101. **SAC tenant region** — eu10 / us10 / kr-canary 등?112. **Edition** — SAC for BI / Planning / Smart Predict / Augmented Analytics?123. **Connection type** — Live (HANA, BW, S/4) vs. Import (Datasphere, Files)?134. **Underlying data source** — S/4HANA Cloud / On-Premise / BW / Datasphere / non-SAP?145. **Use case** — BI Story, Analytic App, Planning, Predictive scenario?156. **User role** — Story creator, Modeler, Planning user, Admin?167. **SAP release** — ECC 6.0 EhP 또는 S/4HANA release year?178. **Deployment** — On-Premise / RISE Private Cloud / Public Cloud?189. **Industry** — 제조·유통·금융·공공 등 데이터 통제와 마감 패턴은 무엇인가?1910. **Failure scope** — 전체/특정 사용자, 최초 시각, 재현 빈도, 정확한 에러 문구?2011. **Authentication path** — SAML SSO / OAuth / basic / identity propagation 중 무엇인가?2112. **Change history** — 인증서·metadata·proxy·role·model 변경 직후인가?2223환경이 부족해도 답을 멈추지 않는다. 위 질문을 최대 4개로 묶어 요청하고,24동시에 운영 변경 없는 provisional diagnosis와 read-only check를 제시한다.2526## 2. Core Concepts2728### 2.1 Connection Models29- **Live Connection** — real-time query, no data copy. HANA, BW, S/4 CDS views.30- **Import Connection** — periodic data load. Files, Datasphere, non-SAP DBs.3132### 2.2 Models33- **Analytic Model** — flexible, dimension/measure-based, for BI Story34- **Planning Model** — supports input, version, allocation, value driver35- **Predictive Model** — Smart Predict / Augmented (regression, classification, time series)3637### 2.3 Stories vs. Analytic Applications38- **Story** — drag-drop dashboards, smart insight, easy for business users39- **Analytic Application** — scriptable (JS), customizable UI, for app developers4041## 3. Typical Issues4243### Data Issues44- "Story is empty" — check connection, model permissions, member filter45- "Numbers don't match S/4" — live vs. import mismatch, currency/unit conversion46- "Hierarchy missing" — refresh hierarchy in connection, check role mapping47- "Live connection failed" — SAC connection → network/auth → S/4 `SICF` → `SAML2` 순서4849### Performance50- Story slow → live query optimization (CDS views, indexes), reduce visible measures, use story-level filters51- Live BW: check BW query performance, OLAP cache5253### Planning54- "Cannot save value" — check write access, locked dimensions, version status (Public/Private)55- Allocation fail → check source/target model, rule structure56- Forecast not generating → check data history, model dimensions5758### Predictive59- Smart Predict accuracy low → review data quality, target balance, feature relevance60- Time-series forecasting → ensure consistent intervals6162## 4. Connections to S/4 / Datasphere6364| Source | Connection | Notes |65|---|---|---|66| **ECC 6.0** | BW Query 또는 지원되는 Import/OData | S/4 Released CDS 경로를 가정하지 않음 |67| **S/4HANA Public Cloud** | 지원되는 cloud connection/API | Released CDS/API만 사용, 고객 `SICF` 조정 불가 |68| **S/4HANA On-Prem / RISE** | Live via 지원되는 network path | Cloud Connector/reverse proxy 선택은 실제 아키텍처 기준 |69| **BW/4HANA** | Live via InA | BW Query 권한과 성능을 분리 확인 |70| **Datasphere** | Live (Spaces) or Import | preferred for cloud BI |71| **HANA Cloud** | Live | direct |72| **Non-SAP DB** | Import via OData/JDBC | Datasphere as bridge recommended |7374## 5. Korean Context7576- **한국 데이터 위치**: SAC tenant region이 ap-southeast-1 (싱가포르) 또는 kr-canary77- **공공기관 컴플라이언스**: K-ISMS, 망분리 환경에서 SAC 사용은 Private Cloud 검토78- **한국어 UI**: SAC Story Title/Label 한국어 OK; 데이터 dimension name은 영문 권장79- **다국가 자회사 통합 보고**: 한국 본사 SAC tenant에 자회사 데이터 통합 (consolidation)8081## 6. Cross-module Routing8283- BTP 환경/Cloud Connector 이슈 → `sap-btp`84- S/4 CDS view → `sap-abap-developer`85- Datasphere 연동 → `sap-integration-cloud` (Datasphere 포함 시)86- Planning workflow → 비즈니스 컨설턴트 (CO/FI)8788## 7. SAP Notes & References8990- SAP Note 2511489 — SAC performance troubleshooting (registered in `data/sap-notes.yaml`)91- SAP Note 3056467 — Slow performance when opening/running stories (registered)92- SAP Note 2651014 — Common errors with charts and tables (registered)93- SAC Help: https://help.sap.com/docs/SAP_ANALYTICS_CLOUD94- SAC Best Practices Guide (Story design, Planning, Predictive)9596## 8. Out of Scope9798- BW dataflow design (use sap-abap)99- Datasphere modeling (use sap-integration-cloud)100- Non-SAC BI tools (Tableau, Power BI 등)101102## 9. Diagnostic Response Contract103104SAC 장애·숫자 불일치·성능 이슈는 다음 순서로 답한다.1051061. **Issue** — 증상, 영향 사용자, 시작 시각, source, connection mode를 재정의한다.1072. **Primary Root Cause** — 현재 evidence가 가장 강하게 지지하는 원인 하나를 먼저 쓴다.1083. **Falsification** — 원인이 틀렸다면 보여야 할 관찰값을 두 개 이상 쓴다.1094. **Check** — SAC UI 경로와 backend T-code + 메뉴 경로 + monitor/table field를 쓴다.1105. **Fix** — 최소 변경, QA Test Connection, 샘플 Story 검증 순으로 쓴다.1116. **Rollback** — 원복 artifact, trigger, owner, 정상 판정 기준을 쓴다.1127. **Prevention** — 인증서 만료, content transport, 성능 budget, refresh SLA를 쓴다.113114단순 용어 질문은 Quick Advisory로 끝낼 수 있다.115실패 원인이 둘 이상이거나 cross-system 변경이 필요하면 Evidence Loop를 사용한다.116Evidence Loop에서는 운영자가 COLLECT를 수행하며 에이전트가 프로덕션 변경을 대행하지 않는다.117118### 9.1 Minimum Evidence Bundle119120- SAC tenant 리전과 tenant ID의 마스킹된 식별자121- SAC update wave 또는 문제 발생 전후 release 정보122- Story / model / connection 종류와 마스킹된 object 이름123- ECC EhP 또는 S/4HANA release year, deployment model, industry124- 전체 사용자/특정 사용자 여부와 성공하는 비교 사용자 존재 여부125- 최초·최근 실패 시각(타임존 포함), HTTP status, correlation ID126- SAML assertion 본문이 아닌 issuer·audience·NameID type의 마스킹된 요약127- 변경 이력: 인증서, metadata, proxy, role, content transport, source query128129Token, cookie, password, assertion 원문, 개인정보, 실제 재무 상세값은 수집하지 않는다.130화면 캡처에는 tenant host·사용자 ID·고객명·사업장명을 마스킹한다.131132## 10. Environment and Release Decision Matrix133134| Environment | First supported path to identify | Do not assume |135|---|---|---|136| ECC 6.0 | BW Query, supported OData/Import, existing HANA/BW architecture | S/4 Released CDS or direct S/4 InA semantics |137| S/4HANA On-Premise | actual live endpoint, reverse proxy/Cloud Connector, backend ICF | every landscape uses the same proxy pattern |138| RISE Private Cloud | customer-managed vs SAP-managed boundary, approved connectivity | customer can change every backend component |139| S/4HANA Public Cloud | released analytical content/API and cloud administration | customer access to `SICF`, `SAML2`, `STRUST` |140| BW/4HANA | InA endpoint, BW Query, authorizations, query runtime | Story rendering is always the bottleneck |141| Datasphere | Space exposure, live/import mode, replication freshness | federation and replication have the same latency |142143Public Cloud action에는 `T-code: 없음(Cloud UI)`을 명시하고 해당 Fiori/SAC 메뉴 경로를 쓴다.144On-Premise/RISE action에는 아래 T-code directory의 메뉴 경로를 함께 쓴다.145어느 release인지 모르면 S/4 전용 CDS 이름이나 customer-maintainable backend setting을 단정하지 않는다.146147## 11. Live Connection Failure Playbook148149진단 순서는 반드시 **SAC → network/auth → S/4 `SICF` → `SAML2`** 이다.150각 단계가 통과한 evidence를 남긴 뒤 다음 단계로 간다.151152### 11.1 Phase A — SAC Object and Scope1531541. `T-code: 없음(SAC UI)` + `SAC Home > Connections > 해당 connection > Test Connection`에서155 connection 자체가 실패하는지, Story만 실패하는지 분리한다.1562. `T-code: 없음(SAC UI)` + `SAC Home > Files > 해당 Story > View`에서157 같은 model을 쓰는 최소 Story와 원본 Story를 비교한다.1583. `T-code: 없음(SAC UI)` + `SAC Home > Security > Users/Roles`에서159 실패 사용자와 성공 사용자의 SAC role·team·sharing 차이만 read-only로 비교한다.1604. connection owner만 성공하면 shared credential/SSO/user mapping 가설을 올린다.1615. 모두 실패하면서 endpoint DNS/TLS에 도달하지 못하면 Story 계산 가설을 내린다.162163**Falsification A**164165- 같은 connection의 최소 Story가 정상 조회되면 connection 전체 장애 가설은 기각한다.166- 같은 사용자·같은 시간에 Test Connection은 성공하고 특정 Story만 실패하면 network 가설을 낮춘다.167- 성공 사용자와 실패 사용자의 role·team이 동일하면 SAC sharing만의 문제라는 가설을 낮춘다.168169### 11.2 Phase B — Network and Authentication Edge1701711. 브라우저 개발자 도구에서 실패 request의 host·path·HTTP status·timing만 수집한다.172 Header, cookie, token, payload는 내보내지 않는다.1732. reverse proxy 또는 Cloud Connector를 쓰는지 실제 topology로 확인한다.174 두 방식을 동시에 당연한 구성으로 적지 않는다.1753. `SMICM` + `SAP Easy Access > Tools > Administration > Monitor > System Monitoring >176 Internet Communication Manager`에서 실패 시각의 HTTP/TLS 연결 흔적을 read-only로 본다.1774. `STRUST` + `SAP Easy Access > Tools > Administration > Administration > Trust Manager`에서178 endpoint가 사용하는 PSE의 인증서 유효기간·issuer chain·hostname 관계를 확인한다.1795. proxy가 TLS를 terminate하면 browser→proxy와 proxy→backend 인증서 체인을 분리한다.1806. HTTP 401/403이면 endpoint 도달은 성공했으므로 DNS/firewall 가설의 우선순위를 낮춘다.1817. timeout/502/503이면 auth mapping을 바꾸기 전에 proxy route·backend reachability를 증명한다.182183**Falsification B**184185- backend `SMICM`에 같은 시각 request가 보이면 firewall이 backend 도달을 막았다는 가설은 기각한다.186- TLS handshake와 인증서 체인이 정상이고 401/403이 반환되면 인증서 만료 단독 가설은 기각한다.187- SAC가 아닌 승인된 기술 테스트도 같은 endpoint에서 실패하면 Story/model 가설을 낮춘다.188189### 11.3 Phase C — S/4 ICF Service (`SICF`)190191이 단계는 S/4HANA On-Premise 또는 customer-managed RISE 범위에서만 수행한다.192Public Cloud에는 `T-code: 없음(고객 접근 불가)`로 표시하고 SAP cloud 운영 경로로 에스컬레이션한다.1931941. 실패 request에서 실제 service path를 먼저 확인한다.1952. `SICF` + `SAP Easy Access > Tools > Administration > Administration > Network >196 HTTP Service Hierarchy`에서 그 path에 대응하는 InA 또는 OData node의 활성 상태를 조회한다.1973. InA 계열은 실제 configured endpoint의 `/sap/bw/ina` 하위 path를 기준으로 확인한다.1984. OData 계열은 실제 configured endpoint의 `/sap/opu/odata` 하위 path를 기준으로 확인한다.1995. 상위 node가 보인다는 이유로 subtree 전체를 활성화하지 않는다.2006. node 활성 상태와 handler/authorization 오류를 분리하고 실패 시각을 기록한다.2017. 활성 변경이 필요하면 개발/QA에서 정확한 node 하나만 변경하고 TR·변경 승인에 연결한다.2028. 변경 후 `SAC Home > Connections > 해당 connection > Test Connection`203 (`T-code: 없음(SAC UI)`)과 최소 read-only Story를 재실행한다.204205**Falsification C**206207- 정확한 node가 활성이고 같은 path가 유효한 HTTP 응답을 내면 inactive ICF 가설은 기각한다.208- ICF 활성화 전후 HTTP status가 동일하면 서비스 비활성 단독 가설을 기각하고 auth로 이동한다.209- 다른 사용자에게 동일 endpoint가 정상이라면 전역 ICF 비활성 가설은 기각한다.210211### 11.4 Phase D — SAML Trust and Metadata (`SAML2`)212213ICF endpoint가 응답하는 것을 증명한 뒤에 수행한다.2142151. `SAML2` + `SAP Easy Access > Tools > Administration > Administration > Security >216 SAML 2.0 Configuration`에서 Local Provider 활성 상태를 확인한다.2172. SAC/IdP의 Trusted Provider가 enabled인지 확인한다.2183. 양쪽 metadata의 entity ID, ACS URL, issuer, audience가 현재 endpoint와 맞는지 비교한다.2194. signing certificate 유효기간과 교체 이력, metadata 재import 시각을 확인한다.2205. NameID/user mapping이 실패 사용자에게 어떤 backend ID를 만드는지 마스킹해 비교한다.2216. 시스템 clock 차이로 assertion validity window를 벗어나는지 확인한다.2227. `SU53` + `System > Utilities > Display Authorization Check`를 실패 직후 실행해223 마지막 실패 authorization object를 수집한다. 성공 후 나중에 실행한 결과는 evidence로 쓰지 않는다.2248. role 변경이 필요하면 `PFCG` + `SAP Easy Access > Tools > Administration > User Maintenance >225 Role Administration > Roles`에서 승인된 role owner와 함께 최소 권한만 검토한다.226227**Falsification D**228229- 동일 SAML identity로 backend launch가 성공하고 SAC만 실패하면 backend trust 단독 가설을 낮춘다.230- Local/Trusted Provider, metadata, certificate, clock이 모두 일치하면 trust mismatch 가설을 기각한다.231- `SU53`에 실패 authorization이 재현되고 role 차이가 있으면 network 가설보다 권한 가설을 올린다.232233### 11.5 Live Fix and Rollback Pairs234235| Confirmed cause | Minimal Fix after QA | Mandatory Rollback |236|---|---|---|237| wrong SAC connection setting | approved connection copy에서 endpoint/auth 수정 후 Test Connection | 기존 connection export/설정으로 복원하고 테스트 |238| expired TLS chain | 승인된 새 chain을 QA PSE에 반영 후 handshake 검증 | 기존 PSE backup·certificate chain으로 원복 |239| exact ICF node inactive | 필요한 node 하나만 QA에서 활성화하고 TR 승격 | 같은 node를 이전 상태로 되돌리고 request 재검증 |240| stale SAML metadata | 현 endpoint metadata를 QA에서 재import하고 mapping 검증 | 이전 metadata/certificate backup 재적용 |241| missing authorization | role owner 승인 후 최소 object만 role transport | 이전 role version/transport로 복원하고 user 비교 |242243Fix 전후에 같은 사용자, 같은 최소 Story, 같은 filter, 같은 시간대 기준을 사용한다.244Rollback trigger는 오류율 상승, 다른 SSO consumer 영향, 응답 status 악화처럼 측정 가능해야 한다.245246## 12. Import vs Live — Do Not Mix the Diagnosis247248| Dimension | Live Connection | Import Connection |249|---|---|---|250| Data location | source에 남아 query됨 | SAC model에 snapshot 적재 |251| Freshness | source query 시점 | 마지막 successful job 시점 |252| Main failure surface | endpoint, SSO, source authorization, query | job, mapping, delta, transformation, model load |253| Security | source row/data authorization + SAC sharing | SAC model security + import credential |254| Performance | source runtime + network + rendering | model size + calculation + rendering |255| Safe first test | Test Connection + minimal Story | preview + small scoped import job |256| Wrong first fix | cache/full reload | `SICF`/SAML activation |257258### 12.1 Import Job / Schedule Failure Intake259260Import가 "안 돌았다"는 말만으로 scheduler를 원인으로 단정하지 않는다.261아래 환경과 시간축을 먼저 맞춘다.2622631. SAC tenant 리전, update wave, license/edition을 확인한다.2642. source가 ECC EhP, S/4HANA release year, BW/4HANA, Datasphere, cloud/non-SAP 중 무엇인지 확인한다.2653. deployment가 On-Premise, RISE Private Cloud, Public Cloud인지와 업종의 운영 window를 확인한다.2664. model·connection 종류, Import job 이름의 마스킹된 식별자, full/delta 방식을 확인한다.2675. 실패가 manual import, scheduled import 또는 둘 다인지 분리한다.2686. schedule owner, enabled/paused 상태, timezone, recurrence, 시작 window를 확인한다.2697. last successful run과 first failed run의 start/end time, duration, row count를 비교한다.2708. 평소와 실패 run의 extracted, loaded, rejected row 수와 watermark를 비교한다.2719. credential rotation, owner 퇴사/잠금, agent update, proxy/TLS, source query/schema 변경 이력을 받는다.27210. on-premise data acquisition agent가 필요한 connection인지 실제 architecture에서 확인한다.273 모든 SAC Import가 agent 또는 DPA를 쓴다고 가정하지 않는다.27411. maintenance window, concurrent job, source batch와 겹치는지 확인한다.27512. 정확한 status, error category, correlation ID를 받되 token, password, payload 원문은 받지 않는다.276277환경 정보가 부족하면 release/deployment/source, manual-vs-schedule, last success/first failure,278credential/agent/query change 네 묶음으로 질문하고 read-only check를 동시에 제시한다.279280### 12.2 Read-only Evidence Collection2812821. `T-code: 없음(SAC UI)` +283 `SAC Home > Files > 해당 model > Data Management > Import Jobs`에서 다음을 기록한다.284 - scheduled/manual trigger285 - owner와 schedule enabled/paused 상태286 - tenant timezone과 표시된 execution time287 - queued/start/end 시각과 duration288 - extracted/loaded/rejected row 수289 - error stage, correlation ID, 마지막 성공 run2902. `T-code: 없음(SAC UI)` +291 `SAC Home > Connections > 해당 connection`에서 connection type, credential 상태,292 Test Connection 결과, agent binding을 read-only로 확인한다.2933. 동일 source·mapping에 작은 기간 또는 제한된 row를 사용한 manual Test Run을 준비한다.294 프로덕션 full reload가 아니라 QA/model copy에서 실행한다.2954. 같은 connection의 다른 Import job이 같은 시간대 성공했는지 비교한다.2965. 같은 schedule owner의 다른 job과 성공 owner의 비교 job을 확인한다.2976. agent 기반 connection이면 인프라 담당자에게 service/heartbeat, last seen, proxy/TLS,298 agent log의 시각·error category만 요청한다. log의 credential과 payload는 마스킹한다.2997. agent 미사용 cloud connection이면 agent 장애 가설을 즉시 제외한다.3008. ODP delta architecture가 확인된 경우에만 `ODQMON` +301 `SAP Easy Access > Tools > Administration > Monitor > Operational Delta Queue`에서302 subscription, request, last successful delta, backlog를 read-only로 확인한다.3039. BW Query가 source이면 `RSRT` +304 `SAP Easy Access > Business Warehouse > Business Explorer > Query > Query Monitor`에서305 같은 변수·권한으로 query 실행 가능 여부와 result volume을 확인한다.30610. backend HTTP 도달 여부가 쟁점인 경우에만 `SMICM` +307 `SAP Easy Access > Tools > Administration > Monitor > System Monitoring >308 Internet Communication Manager`에서 실패 시각의 request 도달 흔적을 본다.30911. backend component가 Application Log를 남기는 경우에만 `SLG1` +310 `SAP Easy Access > Tools > Administration > Monitor > System Monitoring >311 Application Log > Display`에서 object/subobject/time window를 좁혀 조회한다.312313`ODQMON` queue reset, delta reinitialization, full reload, credential overwrite,314agent reinstall은 evidence collection이 아니라 변경이므로 이 단계에서 수행하지 않는다.315316read-only evidence가 끝난 뒤에만 QA/model copy에서 다음 controlled test를 수행한다.3173181. 같은 source·mapping의 작은 기간 manual Test Run3192. 같은 owner·timezone의 one-time schedule3203. 같은 작은 범위의 full-vs-delta 비교(실제 delta architecture일 때만)3214. 각 test 사이에 target row/watermark/duplicate를 대사하고 다음 test로 이동322323### 12.2.1 Job Stage Decision Gate324325| Read-only job observation | Primary layer | First comparison |326|---|---|---|327| expected time에 run record 없음 | schedule paused/disabled, owner, timezone, recurrence | 정의가 같은 QA one-time schedule |328| run record가 queued에 머묾 | concurrency, maintenance, capacity/window | 격리 window의 queued duration |329| start 후 extracted rows = 0 | credential, connection, agent, source availability | Test Connection + source/manual history |330| extracted > 0, loaded = 0 | mapping, transform, target model | preview + model copy sample load |331| loaded > 0, rejected > 0 | data type/key/date/member 품질 | rejected field + schema change history |332| small scope 성공, full scope timeout | volume, partition, resource window | 같은 volume의 격리 window run |333334Stage evidence가 없으면 "agent down" 또는 "volume limit"을 Primary로 단정하지 않는다.335run record가 없는 문제에 mapping을 고치거나, extraction 완료 뒤 오류에 credential을 먼저 바꾸지 않는다.336337### 12.2.2 Release and Deployment Boundary for Import338339- SAC schedule control은 source가 ECC인지 S/4인지와 별개로 tenant에서 확인한다.340- ECC/BW Query source는 실제 BW Query일 때만 `RSRT`로 source 실행을 확인한다.341- ECC라고 해서 S/4 Released CDS 또는 S/4 Public Cloud 메뉴를 적용하지 않는다.342- ODP delta 사용이 architecture evidence로 확인될 때만 `ODQMON`을 사용한다.343- S/4HANA On-Premise/RISE도 agent, direct cloud connection, BW 경유 중 실제 경로를 식별한다.344- S/4HANA Public Cloud는 `T-code: 없음(Cloud UI)`으로 표시하며 고객 backend T-code를 안내하지 않는다.345- non-SAP/cloud source는 SAC job·connection·provider monitor를 사용하고 ABAP T-code를 억지로 붙이지 않는다.346347### 12.3 General Cause Classification348349| Layer | Typical causes | Distinguishing evidence |350|---|---|---|351| Schedule control | paused/disabled, wrong timezone, expired owner, overlap/concurrency | manual 성공, schedule만 실패; queued/start time 불일치 |352| Connection/auth | credential expiry/rotation, role loss, account lock | Test Connection 실패; rotation 시각과 first failure 일치 |353| Agent/network | acquisition agent down, heartbeat loss, proxy/TLS route change | agent-based connection만 실패; last seen 단절 |354| Source/query | source unavailable, query/schema/variable change, permission change | source test/`RSRT` 실패; extraction 전에 종료 |355| Delta state | subscription/backlog/watermark inconsistency | `ODQMON` evidence; full test와 delta 결과가 갈림 |356| Mapping/data | dimension key/type/date change, rejected rows, transform error | preview와 rejected sample이 같은 field를 지목 |357| Volume/resource | timeout, row/size growth, concurrency or tenant/source resource pressure | 작은 범위 성공, 큰 범위만 duration 증가 후 실패 |358| Target/model | target model lock/change, member limit or incompatible model change | extraction 성공 뒤 load stage에서만 실패 |359360가능성이 높은 한 원인을 Primary Root Cause로 두고 나머지는 Alternatives로 낮춘다.361각 가설에는 아래처럼 서로 독립적인 반증 조건을 두 개 이상 붙인다.362363### 12.4 Hypotheses with Falsification364365**H1 — Schedule metadata, owner, timezone, or concurrency**366367- 지지: 같은 scope의 manual import는 성공하고 scheduled trigger만 실패한다.368- 지지: schedule이 paused/disabled이거나 표시 timezone·실행 window가 기대와 다르다.369- 반증 1: 같은 owner·timezone·definition의 QA one-time schedule이 두 번 연속 성공한다.370- 반증 2: manual import도 같은 stage·같은 error로 실패한다.371- 반증 3: 실패 window에 겹친 job이 없고 schedule은 실제로 정시에 start됐다.372373**H2 — Credential, connection, or agent path**374375- 지지: Test Connection이 실패하고 credential rotation/owner lock이 first failure와 일치한다.376- 지지: agent-based connection의 heartbeat/last seen이 실패 전 끊겼다.377- 반증 1: Test Connection과 agent heartbeat가 정상이고 같은 connection의 다른 import가 성공한다.378- 반증 2: 해당 connection은 agent를 사용하지 않는 cloud path이다.379- 반증 3: extraction은 끝났고 target load/mapping stage에서만 실패한다.380381**H3 — Source query, schema, authorization, or availability**382383- 지지: source query/schema/variable 변경 직후 모든 trigger가 extraction stage에서 실패한다.384- 지지: BW source의 같은 변수 query가 `RSRT`에서도 실패한다.385- 반증 1: 같은 credential과 변수의 source query·preview가 반복해서 성공한다.386- 반증 2: extraction row는 정상인데 rejected/load row에서만 실패한다.387- 반증 3: 같은 source의 다른 job은 같은 window에 정상 추출된다.388389**H4 — Delta subscription or watermark**390391- 지지: 확인된 ODP delta path에서 backlog/request 오류가 first failure와 일치한다.392- 지지: 작은 full Test Run은 성공하지만 delta run만 같은 watermark에서 실패한다.393- 반증 1: 실제 architecture가 ODP delta를 사용하지 않는다.394- 반증 2: `ODQMON` subscription/request가 정상이며 source와 target watermark가 일치한다.395- 반증 3: full과 delta가 모두 같은 auth/connection stage에서 실패한다.396397**H5 — Mapping, transformation, or data quality**398399- 지지: rejected rows와 source type/key/date format 변경이 같은 field를 지목한다.400- 지지: extraction은 완료되고 mapping/load stage에서만 실패한다.401- 반증 1: model copy의 preview·mapping·샘플 rows가 정상이고 rejected row가 없다.402- 반증 2: 이전 mapping도 extraction 전에 같은 connection 오류로 실패한다.403- 반증 3: 실패가 schedule start 전에 발생해 source row를 읽지 않았다.404405**H6 — Volume, timeout, quota, or resource window**406407- 지지: 작은 기간은 성공하고 전체 범위만 row 증가와 함께 timeout된다.408- 지지: 실패 duration이 평소보다 길고 resource/concurrent job window와 겹친다.409- 반증 1: 작은/전체 범위가 모두 즉시 같은 auth 오류로 실패한다.410- 반증 2: row count와 duration이 평소 수준인데 schedule start 전에 실패한다.411- 반증 3: 동일 volume을 격리 window에서 반복 성공한다.412413### 12.5 Fix and Rollback Pairs414415| Confirmed cause | Fix after QA/Test Run | Rollback |416|---|---|---|417| schedule paused/timezone/owner | 승인된 owner·timezone·enabled 상태를 최소 수정하고 QA one-time schedule 실행 | 기록한 이전 owner·timezone·recurrence·enabled 상태로 복원 |418| overlap/concurrency | 실행 window를 분리하고 source/tenant 운영 캘린더와 맞춤 | 이전 window로 복원하고 새 schedule을 disable |419| credential expired | secure store/connection UI에서 승인된 credential 갱신 후 Test Connection | 유효한 이전 credential reference로 복원; 불가하면 schedule disable 후 owner 에스컬레이션 |420| agent unavailable | 인프라 owner가 기존 agent service/route를 복구하고 heartbeat 확인 | 변경 전 service/proxy/agent config로 복원; 무계획 reinstall 금지 |421| source query/schema | source contract 또는 mapping을 model copy에서 수정하고 content transport | 이전 query/interface version과 model package 복원 |422| delta state | 원인과 impact가 확정된 승인 절차만 수행 | 이전 subscription/watermark evidence로 복구; queue reset/full init은 별도 change gate |423| mapping/data quality | model copy에서 field mapping/transform 수정 후 rejected-row Test Run | 이전 mapping/content package 복원 |424| volume/timeout | 범위 partition, window 조정, 증분 scope로 QA 실행 | 이전 import definition/schedule 복원 후 duplicate와 watermark 대사 |425426Backend role·query·service 구성 변경은 승인된 TR을 사용한다.427SAC model/job 변경은 개발/테스트 tenant와 content transport를 사용한다.428환경 종속 credential은 transport에 평문으로 포함하지 않는다.429430### 12.6 Reverification and Prevention4314321. QA manual small-scope Test Run이 성공하는지 확인한다.4332. 같은 owner·timezone·mapping으로 QA one-time schedule을 실행한다.4343. status, queued/start/end time, duration, extracted/loaded/rejected rows를 baseline과 비교한다.4354. delta이면 source/target watermark와 duplicate/missing key를 확인한다.4365. target model의 freshness timestamp와 대표 집계 slice를 source와 대사한다.4376. 의존 Story가 새 snapshot을 표시하고 숫자·통화·기간 filter가 유지되는지 확인한다.4387. 정상 운영 window에서 scheduled run을 관찰하고 최소 두 주기 성공을 기록한다.4398. 오류가 재발하거나 row/숫자 대사가 깨지면 정의한 Rollback을 실행한다.4409. schedule owner는 개인이 아닌 승인된 운영 owner 정책을 사용하고 정기 재인증한다.44110. credential/certificate 만료, agent heartbeat, last success age, duration, rejected row에 alert를 둔다.44211. 월마감 D+3 같은 SLA에는 source close, import completion, Story release 순서를 명시한다.44312. full reload와 delta reinitialization은 별도 change, Test Run, rollback plan이 없으면 실행하지 않는다.444445### 12.7 Import Schedule Answer Template446447환경이 빠진 단발 질문에도 "정보가 필요하다"로만 끝내지 않는다.448최대 4개 인테이크 질문과 provisional diagnosis, read-only check를 한 답변에 함께 준다.449450```text451## Issue452SAC Import model의 예약 job이 실패했으며 manual 실행 여부와 source/deployment는 확인 필요453454## Primary Root Cause455manual은 성공하고 schedule만 실패한다는 evidence가 있으면 schedule execution context456(owner/credential, enabled 상태, timezone, concurrent window) 중 관찰값이 가장 강한 하나.457manual 결과가 없으면 "provisional"로 표시하고 확정하지 않음.458459## Falsification4601. 같은 scope의 manual Test Run도 동일 stage/error로 실패하면 schedule-only 가설 기각.4612. 같은 owner/timezone의 QA one-time schedule이 반복 성공하고 overlap이 없으면 metadata 가설 기각.4623. Test Connection이 실패하면 schedule metadata보다 credential/connection/agent 가설로 전환.463464## Check4651. SAC Home > Files > model > Data Management > Import Jobs466 status, trigger, owner, timezone, last success, first failure, row counts, correlation ID4672. SAC Home > Connections > connection468 Test Connection과 agent binding, secret 미수집4693. QA manual small-scope Test Run4704. 실제 architecture에 해당할 때만 ODQMON/RSRT/SMICM/SLG1 read-only evidence471472## Fix473확정 원인 하나만 QA에서 최소 수정하고 manual small-scope 후 one-time schedule 실행.474Backend 구성은 TR, SAC content는 content transport 사용.475476## Rollback477이전 owner/timezone/recurrence/connection/model snapshot으로 복원.478credential rollback이 안전하지 않으면 schedule을 disable해 오적재를 막고 보안 owner에게 이관.479480## Prevention481last-success age, credential expiry, agent heartbeat, duration, rejected rows, duplicate/watermark alert.482운영 window에서 최소 두 주기 성공과 의존 Story 숫자 대사를 완료.483```484485Primary Root Cause selection은 다음 evidence 순서를 사용한다.4864871. manual 성공 + schedule 실패 → schedule execution context4882. Test Connection 실패 → credential / connection / agent4893. source query test 실패 → source / query / authorization4904. extraction 성공 + load/rejected 실패 → mapping / data quality / target model4915. small scope 성공 + full timeout → volume / resource window4926. 확인된 ODP delta만 실패 → subscription / watermark493494동일 우선순위의 원인을 5~6개 한꺼번에 Root Cause로 나열하지 않는다.495Primary 하나, Alternatives 최대 2개, 각 가설의 반증 evidence 2개 이상으로 답한다.496497## 13. Planning Model Save Failure498499"저장 안 됨"을 version, lock, authorization, validation, action, browser/network로 나눈다.500501### 13.1 Read-only Isolation Sequence5025031. `T-code: 없음(SAC UI)` + `Story > Planning Table > Version Management`에서504 Public/Private version, publish 상태, owner를 확인한다.5052. 같은 model에 새 Private Version을 만들고 허용된 테스트 member 한 셀만 변경한다.5063. `T-code: 없음(SAC UI)` + `Modeler > 해당 Planning Model > Data Locking`에서507 잠긴 교차영역과 lock owner를 확인한다.5084. `T-code: 없음(SAC UI)` + `Security > Roles/Teams`에서 model read와 planning write 권한을 구분한다.5095. dimension member가 존재하고 leaf/input-ready 상태인지 확인한다.5106. validation rule 또는 data action이 저장 시 실행되는지 분리하기 위해511 rule/action 없는 model copy에서 같은 셀을 테스트한다.5127. browser network에서 status와 correlation ID만 수집하고 입력값·token은 마스킹한다.5138. 동시 편집자가 있으면 동일 data slice가 아니라 격리된 test slice에서 재현한다.514515### 13.2 Planning Hypotheses and Falsification516517| Hypothesis | Supporting evidence | Falsification evidence |518|---|---|---|519| Public Version locked | Private save 성공, Public만 실패 | 같은 권한으로 unlocked Public test가 실패 |520| Data Lock blocks cell | 실패 좌표가 locked slice와 정확히 일치 | unlocked test slice에서도 동일 실패 |521| Write permission missing | read 성공, save 시 authorization error | 같은 user가 같은 model의 허용 slice에 저장 성공 |522| Invalid member/rule | 특정 member·rule path에서만 실패 | model copy에서 rule 제거 후에도 모든 member 실패 |523| Network/session issue | 여러 model에서 같은 시각 4xx/5xx | 다른 model save와 connection이 계속 정상 |524525가설마다 위 표의 반증 항목 두 개 이상을 실제 환경에 맞게 구체화한다.526"권한 문제 같습니다"처럼 관찰값 없는 진단은 하지 않는다.527528### 13.3 Planning Fix and Rollback529530- **Version/lock Fix**: owner 승인 후 필요한 기간·scope만 unlock하고 테스트 셀 저장 후 다시 lock한다.531- **Version/lock Rollback**: 기존 lock snapshot과 owner를 기준으로 즉시 재잠금한다.532- **Role Fix**: role owner 승인과 segregation-of-duties 확인 후 최소 planning privilege만 부여한다.533- **Role Rollback**: 변경 전 role export/transport로 복원하고 사용자 session을 재검증한다.534- **Rule Fix**: model copy에서 validation/data action을 수정해 Test Run 후 content transport한다.535- **Rule Rollback**: 이전 model/content version으로 복원하고 미게시 Private Version은 보존한다.536- **Model Fix**: dimension/member mapping 수정 전 model export와 영향 Story 목록을 보관한다.537- **Model Rollback**: 이전 mapping/content package를 재import하고 대표 Story 숫자를 대사한다.538539Public Version publish·data action actual run은 운영자 승인 없이 실행하지 않는다.540Test Run 결과에는 test version, test slice, before/after 값을 마스킹해 기록한다.541542## 14. Story Performance Playbook543544### 14.1 Build a Comparable Baseline5455461. `T-code: 없음(SAC UI)` + `Story > Tools > Performance` 또는 tenant가 제공하는547 Performance Analysis 화면에서 initial load, query, script, rendering 시간을 분리한다.5482. 대표 사용자·대표 filter·동일 브라우저로 cold/warm 조건을 구분해 3회 측정한다.5493. 최초 로딩, input control 변경, drill, page navigation, export 중 느린 동작을 하나로 고정한다.5504. Story 복사본에서 widget 절반을 제거해 binary isolation을 반복한다.5515. linked analysis, blended data, calculated measure, large table, custom widget을 하나씩 분리한다.552553### 14.2 Live Story Backend Split5545551. BW source면 `RSRT` + `SAP Easy Access > Business Warehouse > Business Explorer >556 Query > Query Monitor`에서 같은 변수로 query runtime과 result volume을 확인한다.5572. S/4/HANA source의 backend 병목이 의심되면 승인된 QA 짧은 구간에만558 `ST12` + `SAP Easy Access > Tools > ABAP Workbench > Test > Performance Analysis >559 Single Transaction Analysis`를 사용한다.5603. SQL 병목을 더 좁혀야 할 때만 승인된 QA에서561 `ST05` + `SAP Easy Access > Tools > ABAP Workbench > Test > Performance Analysis > SQL Trace`를 사용한다.5624. trace는 한 사용자·한 동작·짧은 window로 제한하고 즉시 종료한다.5635. source query가 빠르고 SAC rendering만 느리면 CDS/index 변경 가설을 기각한다.564565### 14.3 Import Story Split5665671. backend trace보다 model size, exception aggregation, calculated measure, hierarchy를 먼저 본다.5682. 화면 밖 widget도 query를 발생시키는지 Story copy에서 확인한다.5693. table row/column과 visible measure를 줄여 response curve를 측정한다.5704. page별 lazy-load 또는 Story 분할은 사용자 navigation 영향과 함께 테스트한다.5715. 성능을 위해 business 의미가 다른 aggregation으로 바꾸지 않는다.572573### 14.4 Performance Falsification and Rollback574575- widget 절반 제거 후 시간이 그대로면 제거한 widget 집합 가설을 기각한다.576- `RSRT` query가 느리고 SAC overhead가 작으면 Story-only 가설을 기각한다.577- source query는 빠르지만 rendering이 widget 수에 비례하면 backend index 가설을 기각한다.578- calculation 제거가 숫자 의미를 바꾸면 최적화 후보가 아니라 기능 변경으로 취급한다.579- 변경 전 Story 복사본·model version·baseline 3회 측정값을 보관한다.580- 개선이 성능 budget을 못 맞추거나 숫자 대사가 깨지면 기존 Story/content package로 롤백한다.581582## 15. Number Reconciliation — SAC vs Source583584다음 축을 한 번에 하나씩 고정해 비교한다.5855861. Live인지 Import인지, Import라면 마지막 성공 job 시각을 고정한다.5872. source document/posting cutoff와 SAC 기준시각·타임존을 맞춘다.5883. 통화 유형, 환율일, scale, 단위를 맞춘다.5894. fiscal year variant, period, calendar hierarchy를 맞춘다.5905. debit/credit 또는 income/expense sign convention을 맞춘다.5916. hierarchy node, story/page/widget filter, input control을 모두 기록한다.5927. source authorization과 SAC data access control이 같은 population을 허용하는지 비교한다.5938. 한 document를 임의로 찍지 말고 승인된 최소 집계 slice로 drill-down한다.594595ECC는 classic FI/BW 추출 구조를 전제로 검토하고 S/4의 universal journal을 암묵적으로 적용하지 않는다.596S/4는 released analytical view·query의 semantic aggregation을 확인하되 backend release year를 먼저 받는다.597회사코드·G/L·코스트 센터 값은 사용자가 제공한 값만 사용한다.598599## 16. Deployment-specific Boundaries600601### 16.1 ECC 6.0602603- ECC EhP, BW 유무, extractor/OData architecture를 먼저 확인한다.604- S/4 Released CDS 명명 규칙이나 Public Cloud communication arrangement를 적용하지 않는다.605- BW Query가 source면 `RSRT` + 위 T-code directory 경로로 query 자체를 먼저 검증한다.606607### 16.2 S/4HANA On-Premise608609- customer-managed ICF, SAML, PSE, role 영역을 변경 전 read-only로 확인할 수 있다.610- `SICF`, `SAML2`, `STRUST` 변경은 QA, TR, 승인, Test Connection을 필수로 한다.611- release year에 따라 available content가 다르므로 view/service 이름을 추정하지 않는다.612613### 16.3 RISE Private Cloud614615- 고객, MSP, SAP 책임 경계를 먼저 확인한다.616- customer 권한 밖의 ICM/PSE/service 변경은 evidence bundle로 운영 주체에 요청한다.617- 긴급 변경도 TR·change record·rollback owner를 생략하지 않는다.618619### 16.4 S/4HANA Public Cloud620621- `T-code: 없음(Cloud UI)` + SAC/Fiori 관리 메뉴에서 released content와 connection을 확인한다.622- 고객에게 backend `SICF`, `SAML2`, `STRUST`, `PFCG` 실행을 지시하지 않는다.623- quarterly release 전 preview/test tenant에서 Story·connection·planning regression을 수행한다.624- key-user/cloud transport mechanism으로 content를 승격하고 직접 운영 수정을 하지 않는다.625626## 17. T-code, Menu Path, Table and Monitor Directory627628아래 T-code는 `data/tcodes.yaml` 등록을 확인한 항목만 사용한다.629메뉴 label은 release별로 조금 다를 수 있으므로 T-code와 함께 식별한다.630631| T-code | Menu path | Evidence / safe use |632|---|---|---|633| `SICF` | SAP Easy Access > Tools > Administration > Administration > Network > HTTP Service Hierarchy | exact InA/OData node status; blanket activation 금지 |634| `SAML2` | SAP Easy Access > Tools > Administration > Administration > Security > SAML 2.0 Configuration | provider, metadata, certificate, user mapping |635| `STRUST` | SAP Easy Access > Tools > Administration > Administration > Trust Manager | PSE certificate validity and chain |636| `SMICM` | SAP Easy Access > Tools > Administration > Monitor > System Monitoring > Internet Communication Manager | request reachability, HTTP/TLS timing |637| `SU53` | System > Utilities > Display Authorization Check | 실패 직후 last failed authorization |638| `PFCG` | SAP Easy Access > Tools > Administration > User Maintenance > Role Administration > Roles | approved role review; change requires TR |639| `SLG1` | SAP Easy Access > Tools > Administration > Monitor > System Monitoring > Application Log > Display | object/subobject/time-window application log |640| `RSRT` | SAP Easy Access > Business Warehouse > Business Explorer > Query > Query Monitor | BW Query variables, runtime, result |641| `ODQMON` | SAP Easy Access > Tools > Administration > Monitor > Operational Delta Queue | delta subscription/request read-only check |642| `ST12` | SAP Easy Access > Tools > ABAP Workbench > Test > Performance Analysis > Single Transaction Analysis | approved short QA trace |643| `ST05` | SAP Easy Access > Tools > ABAP Workbench > Test > Performance Analysis > SQL Trace | approved focused QA SQL trace |644645SAC-specific evidence는 ABAP table이 아니라 tenant monitor가 ground truth인 경우가 많다.646Application Log를 쓰는 backend component라면 `SLG1` 결과와 함께647`BALHDR.OBJECT`, `BALHDR.ALDATE`, `BALHDR.ALTIME`을 read-only 식별자로 기록할 수 있다.648`BALHDR`/`BALDAT`를 직접 편집하거나 생산 `SE16N`으로 고치지 않는다.649SAML·ICF 내부 저장 테이블을 직접 수정하는 방식은 지원 경로가 아니다.650651## 18. Transport, Test Run, and Rollback Governance652653### 18.1 Before Change654655- 변경 object owner, business approver, Basis/security owner를 기록한다.656- SAC Story/model/connection은 export 또는 versioned copy를 보관한다.657- backend config는 현 상태 캡처, 관련 TR, 대상 system/client를 기록한다.658- SAML metadata/certificate는 비밀키를 노출하지 않는 승인된 backup 절차를 사용한다.659- 대표 사용자·대표 Story·성능/숫자 baseline을 만든다.660661### 18.2 Test Run662663- connection: QA `Test Connection` + 최소 read-only Story664- import: 작은 기간/row scope preview + test job665- planning: Private Version의 승인된 test slice 저장, publish 금지666- Story: 복사본에서 before/after 3회 측정과 숫자 대사667- backend: 정확한 service/user/request만 대상으로 짧게 trace668669### 18.3 Transport670671- SAC content는 개발/테스트 tenant에서 content transport로 승격한다.672- backend service·role·configuration 변경은 승인된 TR을 사용한다.673- 환경별 certificate와 endpoint를 다른 system에 그대로 복사하지 않는다.674- transport 불가 환경 종속 항목도 관련 TR/change record에 수동 단계와 dual control을 연결한다.675- 운영 direct change 후 사후 TR로 맞추는 방식을 정상 절차로 권하지 않는다.676677### 18.4 Rollback Gate678679- rollback artifact가 없으면 Fix를 확정하지 않는다.680- rollback trigger, 의사결정자, 허용 downtime, 정상 판정 기준을 먼저 쓴다.681- 원복 후 Test Connection, 최소 Story, 숫자 대사, 사용자 SSO를 다시 확인한다.682- rollback이 다른 consumer를 깨뜨릴 수 있으면 영향 시스템을 사전에 식별한다.683684## 19. Anti-patterns685686- Live 장애인데 Import full reload부터 수행687- Import 지연인데 `SICF`나 SAML trust부터 변경688- 401/403을 firewall 문제로 단정하거나 timeout을 role 문제로 단정689- 정확한 service path 없이 `SICF` subtree 전체 활성화690- metadata backup 없이 `SAML2` provider 삭제·재생성691- certificate chain/hostname 확인 없이 `STRUST`에 인증서 추가692- Public Cloud 사용자에게 backend T-code 실행 지시693- Story가 느리다는 이유로 source trace와 widget 제거를 동시에 시행694- Planning Public Version을 테스트 목적으로 바로 publish695- 숫자 불일치에 cache만 지우고 기준시각·통화·sign·filter를 기록하지 않음696- 운영에서 `SE16N` 직접 편집 또는 table update 권고697- 회사코드·G/L·코스트 센터·조직 값을 임의로 예시화698- 승인·TR·Test Run·Rollback 없는 운영 config 변경699- 미등록 T-code나 확인하지 않은 SAP Note 번호를 추정해 제시700701## 20. Operator Checklists702703### Live Connection handoff704705- [ ] SAC Test Connection 결과와 시각706- [ ] 전체/특정 user 및 비교 user 결과707- [ ] request host/path/status/timing, secret 마스킹708- [ ] network topology와 TLS termination 지점709- [ ] exact `SICF` node read-only 상태(On-Prem/RISE only)710- [ ] `SAML2` entity/ACS/issuer/audience/certificate 요약711- [ ] 실패 직후 `SU53` 결과 또는 권한 실패 없음712- [ ] 가설별 falsification evidence 2개 이상713- [ ] Fix용 QA test, TR, Rollback artifact714715### Planning save handoff716717- [ ] model/version type과 owner718- [ ] 실패 cell의 마스킹된 dimension intersection719- [ ] data lock·write role·member input readiness720- [ ] Private Version test 결과721- [ ] validation/data action 격리 결과722- [ ] 변경 전 model export와 rollback criteria723724### Story performance handoff725726- [ ] 느린 동작 하나와 baseline 3회727- [ ] Live/Import 및 source release/deployment728- [ ] Story copy binary isolation 결과729- [ ] source query와 SAC rendering 시간 분리730- [ ] 대표 filter·사용자·브라우저 조건731- [ ] 숫자 대사와 rollback Story package732733## 21. Delegation and References734735- Cloud Connector, ICM, TLS, SAML, role → `sap-basis-consultant`; 한국 망분리 → `sap-bc`736- CDS/query semantics and backend trace → `sap-abap-developer`737- BTP destination/subaccount → `sap-btp`738- Datasphere federation/replication → `sap-integration-cloud`739- FI/CO planning logic → `sap-fi-consultant` / `sap-co-consultant`740- Multi-turn diagnosis state → `plugins/sap-session/skills/sap-session/SKILL.md`741- 현장체 → `plugins/sap-session/skills/sap-session/references/korean-field-language.md`742- verified T-codes → `data/tcodes.yaml`743- verified Notes → `data/sap-notes.yaml`744745위임 시 evidence는 최소화하고 secret·개인정보·실제 재무 상세값을 제거한다.746불확실한 service 이름·T-code·Note는 추가하지 말고 "확인 필요"로 남긴다.