SAP 통제 매트릭스 점검 — 업무영역별 통제 테스트 결과를 한 화면에서 가른다
정상·예외·미실시가 흩어져 있던 통제 테스트 결과를 한 화면에 모읍니다
통제 테스트는 보통 업무영역별로 담당팀이 따로 수행합니다. 전표 자가승인은 총계정원장팀이, 마스터 변경 승인은 마스터관리팀이, 중복지급 점검은 매입채무팀이 — 이렇게 결과가 흩어져 있으면 이번 달에 어느 통제가 예외 상태인지, 어느 팀이 아직 테스트를 마치지 않았는지 한눈에 보기가 어렵습니다.
여러 업무영역의 통제 테스트 결과를 통제 항목 단위로 모아 정상·예외·미실시로 구분하고, 예외로 판정된 통제는 위반 후보 상세까지 바로 확인할 수 있는 화면을 OpenUI5로 구현했습니다. 판정 결과는 "점검 필요" 수준으로만 표시해 최종 확인은 담당팀이 하도록 안내합니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 통제 원천 — 표준 회계전표(BKPF/BSEG)·변경문서(CDHDR/CDPOS)·미결항목 구조를 그대로 활용
- 표준 화면 — 계정별 회선항목 조회(FBL3N) · 변경이력 조회(FB04)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 내부통제 |
| 관련 대상 영역 | - (내부통제 · 통제 테스트 결과 집계) |
| Namespace | zui5.ctrlmatrix |
| 셸 구조 | 조회조건 영역(우측 조회) + 통제 매트릭스 표, 위반 후보 상세 Dialog |
| 화면 수 | 조회 화면 1개 + 상세 다이얼로그 |
| SAP 표준 T-code | - |
| 성격 | 조회·집계형 — 통제 위반 여부의 최종 확인은 회사·감사인 몫 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
업무영역·점검월·결과상태를 넣고 조회하면 통제 매트릭스가 뜹니다 → 예외건수를 클릭하면 위반 후보 상세가 다이얼로그로 열립니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
사용 방법
- 업무영역 · 점검월 · 결과상태를 지정합니다.
- 점검월 입력 필드에서 Enter 키를 누르거나 조회조건 영역 오른쪽 끝의 조회 버튼을 누르면 재조회됩니다. 초기화 버튼은 조건을 기본값으로 되돌립니다.
- 업무영역·결과상태를 "전체"로 두면 해당 조건 없이 조회합니다.
- 예외건수 숫자를 클릭하면 위반 후보 상세 다이얼로그가 열립니다(0건이면 열리지 않습니다).
- 현재 조회된 목록은 CSV로 내려받을 수 있습니다.
결과상태 판정 규칙
| 결과상태 | 판정 조건 | 사용자 조치 |
|---|---|---|
| 정상 | 해당 점검월 테스트 결과가 통제 기준을 모두 충족 | 별도 조치 불요 |
| 예외 | 위반 후보가 1건 이상 발견됨(예외건수 > 0) | 예외건수를 클릭해 상세 확인 후 담당팀에 후속 확인 요청 |
| 미실시 | 해당 점검월에 테스트가 아직 수행되지 않음 | 테스트 수행 여부와 일정 확인 |
이 화면이 대신 정하지 않는 것
예외로 표시된 통제라도 정당한 사유가 있는 경우가 있어, 곧바로 통제 위반으로 단정하지 않습니다. 최종 판단은 회사와 감사인이 하며, 이 화면은 그 판단이 필요한 후보를 가려내는 점검 도구입니다.
통제 테스트 집계 절차
| 단계 | 내용 |
|---|---|
| 1단계 | 업무영역별 통제 항목을 마스터로 정의 |
| 2단계 | 정의된 주기(월·분기)에 따라 통제 테스트를 수행하고 결과를 기록 |
| 3단계 | 예외로 판정된 통제는 위반 후보 건을 통제ID 단위로 상세 기록 |
| 4단계 | 통제별 예외건수와 위반 후보 상세 건수를 대사해 집계 오차 여부 확인 |
| 5단계 | 집계 결과를 업무영역 · 점검월 · 결과상태 기준으로 화면에 표시 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 업무영역 | 선택 | 전체/매출채권/매입채무/총계정원장/고정자산/세무/마스터데이터/자금(전체 선택 시 조건 미전달) |
| 점검월 | 선택 | YYYY-MM, Enter 키로 바로 조회 |
| 결과상태 | 선택 | 전체/정상/예외/미실시 |
결과 컬럼
| 컬럼 | 설명 |
|---|---|
| 통제ID·업무영역·통제항목 | 통제 항목 식별 정보 |
| 점검주기·점검월·최종점검일 | 테스트 수행 주기와 최근 수행 이력 |
| 결과상태·예외건수 | 정상/예외/미실시 및 위반 후보 건수(클릭 시 상세) |
| 담당팀 | 해당 통제의 담당 조직 |
SAP 표준 기능 매핑
| SAP 표준 T-code | 연관 기능 |
|---|---|
| - | 여러 업무영역 통제 테스트 결과를 통합 요약하는 화면으로, 단일 표준 T-code에는 대응되지 않습니다. |
분석 지표 정의표
| 지표 | 정의 | 산출 방식 |
|---|---|---|
| ExceptionCount | 통제별 위반 후보 집계 건수 | COUNT(위반 후보 상세 WHERE 통제ID = 해당 통제) |
| ResultStatus | 정상/예외/미실시 판정 결과 | 예외건수와 테스트 수행 여부 기준 판정 |
참고 CDS 뷰
운영 서비스로 연결할 때를 가정해 새로 스케치한 조회 뷰 예시입니다(운영 반영 시 권한 체크를 추가해야 합니다).
define view I_CtrlMatrixSketch
as select from bkpf as Header
left outer join cdhdr as Chg
on Chg.objectid = Header.bukrs
{
key Header.bukrs as ControlId,
'GL' as ControlArea,
count(*) as TestedCount
}
// 통제별 예외건수는 위반 후보 상세를 통제ID로 집계해 별도 산출
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 Panel + 통제 매트릭스 표 |
| 조회조건 | sap.m.Select · sap.m.Input — 우측 끝에 조회 버튼, Enter 키로 즉시 재조회 |
| 결과 목록 | sap.m.Table — 예외건수 링크 클릭 시 상세 다이얼로그 |
| 상세 | sap.m.Dialog — 선택 통제의 위반 후보 상세 표시 |
| 공통 처리 | 전역 오류 처리기(ErrorHandler) |
서비스 경로는 manifest.json 의 dataSources 에 상대 경로로 선언한 OData 모델을 그대로
바인딩하며, 조회조건은 sap.ui.model.Filter 로 조립해 $filter 로만 전달합니다. 업무영역·결과상태를
"전체"로 둘 때는 필터를 아예 생성하지 않습니다.
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon |
Component.js | 컴포넌트 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.ctrlmatrix · OData dataSources · ko 로케일 |
view/Main.view.xml | 조회조건 + 통제 매트릭스 표 |
view/DetailDialog.fragment.xml | 위반 후보 상세 다이얼로그 |
controller/Main.controller.js | 조회·필터 조립·다이얼로그 로직 |
controller/BaseController.js | 공통 처리(CSV 다운로드 등) |
model/ErrorHandler.js | 전역 오류 처리 |
model/formatter.js | 결과상태·위험도 서식 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
검증 환경 구성 상세는 이 글에서 다루지 않습니다. 운영 전환 시에는 화면과 판정 로직은 그대로 두고 데이터 계층만 실제 서비스 호출에 맞추면 됩니다.
검증 결과
화면 구성에 쓴 데이터는 통제별 예외건수 = 위반 후보 상세 건수 관계가 항상 성립하도록 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| 대사식 전수 검증(예외건수 = 위반 후보 상세 건수, 20건 대상) | 통과(불일치 0건) |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 필터 → 상세 확인까지 실동작 후 캡처 | 3/3 |
| 조회 버튼 위치 · sap_horizon 테마 적용 · Enter 키 조회 | 확인 |
| OData 계약 — 동사 경로 미사용, $filter·$orderby 로만 조회조건 전달 | 확인 |
통제·거래 데이터는 모두 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면은 어떤 통제를 대상으로 하나요?
전표 자가승인·마스터 변경 승인·중복지급·여신한도 등 여러 업무영역의 통제 테스트 결과를 통제 항목 단위로 모아 보여줍니다. 개별 통제의 세부 판정 로직은 각 통제별 점검 화면에서 별도로 관리합니다.
결과상태는 어떻게 나뉘나요?
해당 점검월 테스트가 기준을 모두 충족하면 정상, 위반 후보가 1건 이상이면 예외, 아직 테스트가 수행되지 않았으면 미실시로 구분합니다.
예외로 표시되면 곧바로 통제 위반인가요?
아니요. 이 화면은 통제 테스트 결과를 모아 보여주는 조회·점검 도구이며, 위반 후보로 표시된 건에 대한 최종 판단은 회사와 감사인이 합니다.
화면의 수치는 실시간 SAP 데이터인가요?
실제 운영 화면은 OData 서비스를 통해 조회합니다. 이 글에 표시된 수치와 캡처는 검증용 샘플 데이터이며 실제 업무 데이터가 아닙니다.