목표: 승인 워크플로우를 자동화하고, 5일간의 학습을 완성된 엔드-투-엔드 시나리오로 통합한다.
시나리오: SAP Build Process Automation으로 자동 승인 워크플로우 생성 → 앱과 통합 → 전체 데모.
소요 시간: 이론 1.5시간 + 실습 2.5시간
이론:
자동화의 정의와 BTP에서의 위치를 이해한다
SAP Build Process Automation (RPA + BPM)의 개념을 안다
Workflow vs Integration Automation을 구분한다
BTP 4대 기둥을 모두 경험한다
실습:
SAP Build Process Automation 테넌트 활성화
간단한 승인 워크플로우 생성 (UI 기반)
앱과 API 통합 (REST API 호출)
5일 동안 만든 앱의 완전한 E2E 데모 시나리오 구성
동료 앞에서 발표 (선택)
최종 Git 커밋 및 다음 단계 가이드
출장비 승인 프로세스 (Traditional):
1. 신청자: 이메일로 신청서 작성
2. 신청자: PDF로 변환 후 매니저에게 이메일
3. 매니저: 이메일 확인, 스프레드시트에 기록
4. 매니저: 회계팀에 이메일 전달
5. 회계팀: 또 다른 시스템에 재입력
6. 회계팀: 지출 처리 및 송금
7. 신청자: "언제 나오나?" 추적 불가
→ 4-5일 소요, 에러 발생 확률 높음
1. [신청자] 앱에서 신청
↓
2. [시스템] 자동으로 매니저에게 알림 (메일)
↓
3. [매니저] 앱에서 승인/반려 (1-2시간 내)
↓
4. [시스템] 자동으로 회계팀에 전달
↓
5. [회계팀] 다른 시스템 수동 입력 (또는 API 자동화로 제거)
↓
6. [신청자] 앱에서 실시간 상태 조회 가능
→ 2-3시간 소요, 에러 0%, 추적 가능
비용 효과:

BTP 4대 기둥을 모두 사용하는 예시:
데이터&분석:
→ 매월 출장비 대시보드 (SAP Analytics Cloud)
통합:
→ 회계 시스템과 연결 (Integration Suite)
→ ERP에 자동 송금 (API 기반)
앱 개발:
→ 출장비 신청 앱 (CAP + Fiori) ← DAY1-4
자동화:
→ 승인 워크플로우 (SAP Build PA) ← 오늘
| 구분 | RPA (Robotic Process Automation) | BPM (Business Process Management) |
|---|---|---|
| 대상 | 사람의 반복 작업 | 비즈니스 프로세스 |
| 예 | 웹 양식 자동 입력 | 승인 워크플로우 |
| 기술 | 화면 조작 자동화 | 프로세스 흐름 정의 |
| 개발자 | 불필요 | 비즈니스 애널리스트 |
| 이 강좌 | 간략 시연 | 집중 실습 |
┌────────────────────────────────────────────┐
│ SAP Build Process Automation Tenant │
│ │
│ ┌──────────────┐ ┌────────────────────┐ │
│ │ Build Apps │ │ Build Processes │ │
│ │ (NoCode UI) │ │ (Workflow Design) │ │
│ └──────────────┘ └────────────────────┘ │
│ ↓ ↓ │
│ 낮은 난이도 중간 난이도 (오늘) │
│ │
│ ┌──────────────┐ ┌────────────────────┐ │
│ │ Build Agents │ │ AI & Insights │ │
│ │ (RPA) │ │ (분석) │ │
│ └──────────────┘ └────────────────────┘ │
│ ↓ ↓ │
│ 복잡 업무 데이터 기반 최적화 │
└────────────────────────────────────────────┘

출장비 승인 워크플로우:
[신청서 제출]
↓
[매니저 확인]
├─ 금액이 100만 원 이상?
│ ├─ YES → [CFO 승인 필요]
│ │ ├─ YES → [승인 완료]
│ │ └─ NO → [반려]
│ │
│ └─ NO → [매니저 승인]
│ ├─ YES → [승인 완료]
│ └─ NO → [반려]
↓
[회계팀 처리]
├─ 영수증 수집
├─ ERP 전자결재 생성
└─ [송금 완료]
↓
[신청자 알림]
BTP Cockpit:
trial Subaccount
→ Service Marketplace
→ "SAP Build Process Automation" 검색
→ Create Instance
Plan: "Standard"
Instance Name: "travel-automation"
→ Create

대기 시간: 3-5분
경로: BTP Cockpit → trial Subaccount → Security → Users
Security → Users 메뉴로 이동
본인 이메일 계정을 클릭
우측의 Assign Role Collection 버튼 클릭
검색창에 ProcessAutomation 입력
아래 두 가지 Role Collection을 모두 선택하여 할당:
✅ ProcessAutomationAdmin (또는 SAP Build Process Automation - Administrator)
✅ ProcessAutomationDeveloper (또는 SAP Build Process Automation - Developer)
Assign Role Collection 버튼을 눌러 저장
주의: 역할 할당 후 브라우저에서 시크릿 모드로 새 탭을 열어 다시 https://0ca34102trial.ap21.build.cloud.sap/lobby 에 접속해보세요. 기존 세션에 권한 정보가 캐싱되어 있어서 바로 반영이 안 될 수 있습니다.

생성 완료 후:
Service Instances and Subscriptions
→ "SAP Build Process Automation"
→ "Go to Application"
테넌트 홈페이지:

---
### 실습 2. 간단한 승인 워크플로우 생성
#### 2-1. 새 프로세스 생성
SAP Build Tenant
→ Build Processes
→ Create
Process Name: "Travel Approval Workflow"
Project: "Travel Expense App"
→ Create




**프로세스 에디터 로드:**
시각적 워크플로우 캔버스

Step 1: 트리거 (Trigger)

| 옵션 | 설명 | 우리 상황 |
|---|---|---|
| 서식 제출 | SBPA 자체 양식(Form)을 통해 시작 | X 우리는 CAP 앱 UI가 있음 |
| API 트리거 | 외부 시스템이 API 호출로 시작 | O 이것 선택! |
| 이벤트 대기 | 특정 이벤트 발생 시 시작 | X 복잡한 이벤트 기반 |
| 예정된 트리거 | 정해진 시간에 자동 시작 | X 배치성 작업용 |
CAP 앱에서 [제출] 버튼 클릭
→ travel-service.js 에서 API 호출
→ SBPA 워크플로우 시작
→ 승인자에게 태스크 전달
CAP 백엔드(travel-service.js)가 나중에 이 워크플로우를 API로 호출하기 때문에 API 트리거를 선택!
API 트리거 클릭 후, 우측에 입력 변수를 설정하는 패널이 열리면 다음처럼 추
Trigger: "Travel Request Created"
├─ Input:
│ ├─ request_id (UUID)
│ ├─ title (String)
│ ├─ amount (Decimal)
│ └─ requester (String)




트리거와 종료 사이의 + 버튼을 누르면 단계 선택 메뉴가 나옴. > 승인 선택

빈승인 클릭 (승인 양식을 새로 만들겠다는 의미)

Manager Approval 입력하고 생성 버튼 누름

오른쪽 편집기 열기 버튼 누름 > 폼디자이너 열림
폼 디자이너의 왼쪽 사이드바 아이콘 설명
| 아이콘 | 의미 | 사용 |
|---|---|---|
| H1, H2 | 제목/소제목 | 섹션 구분용 |
| T | 텍스트 입력 | 출장 제목, 신청자 |
| # | 숫자 입력 | 신청 금액 |
추가할 필드 순서
T (텍스트) 를 캔버스 중앙으로 드래그 또는 클릭
레이블: 출장 제목
읽기 전용(Read Only) 체크
# (숫자) 추가
레이블: 신청 금액 (KRW)
읽기 전용 체크
T (텍스트) 추가
레이블: 신청자
읽기 전용 체크

저장 버튼 누름

매핑 후 저장

테스트 전달 받을 이메일 작성 후 저장 -> 릴리스

릴리스 확인 메세지에 상세링크로 들어가 배포를 누름.

배포를 해야만:
워크플로우가 실제로 실행 가능한 상태가 됩니다
API 트리거 URL이 발급됩니다
CAP 앱에서 이 URL로 호출할 수 있게 됩니다
배포 방법
우측 상단 ▷ 배포 버튼 클릭!
→ 환경(Environment) 선택 모달이 뜨면 Public 선택 후 배포 클릭
배포 완료 후 트리거(1) 탭을 누르면 TravelRequestTrigger의 API URL을 확인할 수 있습니다. 그게 CAP 백엔드와 연동하는 핵심 주소입니다!

API 트리거까지 완료하신 상태에서 서식(Form) 방식으로 전환하여 테스트하시려면, 프로젝트 에디터에서 다음 3가지만 수정하시면 됩니다.
기존 트리거 삭제 및 새 트리거 추가
TravelApprovalProcess 캔버스를 엽니다.
상단의 트리거 (TravelRequestTrigger) 노드를 클릭하고, 우측의 ... 버튼을 눌러 삭제(Delete) 합니다. (삭제해도 아래 승인 단계는 유지됩니다.)
빈 트리거 자리의 + 버튼을 누르고 서식 제출(Form)을 선택합니다.
새 서식 이름을 TravelRequestForm으로 입력하고 생성합니다.
입력 서식 설계 (직접 입력할 항목)
방금 만든 TravelRequestForm의 편집기 열기를 클릭합니다.
왼쪽에서 T (텍스트)와 # (숫자)를 끌어다 아래 3개 필드를 만듭니다. (이번엔 읽기 전용 체크 금지! 우리가 직접 입력해야 하니까요.)
출장 제목 (텍스트)
신청 금액 (숫자)
신청자 (텍스트)
저장 후 다시 워크플로우 캔버스로 돌아옵니다.
데이터 다시 연결 (매핑)
Manager Approval 노드를 클릭합니다.
우측 패널의 입력 탭으로 갑니다.
기존 연결이 끊어져 있을 겁니다. 다시 연결해 주세요:
출장 제목 ← TravelRequestForm > 출장 제목
신청 금액 ← TravelRequestForm > 신청 금액
신청자 ← TravelRequestForm > 신청자
릴리스 및 배포 (버전 업그레이드)
상단 저장 후 릴리스를 누릅니다. (버전은 1.0.1이 됩니다.)
릴리스 완료 후 배포(Deploy)를 다시 실행합니다.
배포된 워크플로우가 정상적으로 동작하는지 모니터링 대시보드에서 확인합니다.
SAP Build 로비 (lobby)
→ 좌측 사이드바 [모니터링] 클릭
→ [프로세스 및 워크플로우 인스턴스] 탭
모니터링 화면 구성:
프로세스 인스턴스 목록
├─ 상태 필터: 실행 중 / 완료 / 오류
├─ 인스턴스 ID
├─ 시작 시간
└─ 현재 단계 (예: Manager Approval 대기 중)
처음엔 인스턴스가 없습니다. 다음 실습(테스트 실행)을 마치면 여기에 나타납니다.
배포된 워크플로우를 SBPA 내에서 직접 실행하여 승인 흐름을 체험합니다.
SAP Build 로비
→ Travel Approval Workflow 프로젝트 클릭
→ 아티팩트 탭에서 TravelApprovalProcess 클릭
→ 프로세스 에디터 열림
→ 상단 [테스트] 버튼 또는 [▷ 실행] 버튼 클릭
입력값 예시:
{
"requestId": "test-001",
"title": "도쿄 고객사 미팅",
"amount": 850000,
"requester": "홍길동"
}
[실행] 버튼 클릭 → 인스턴스가 생성되고 Manager Approval 단계에서 대기 상태가 됩니다.
모니터링 → 프로세스 인스턴스 목록
→ 방금 생성된 인스턴스 클릭
→ 단계별 진행 상황 확인
├─ TravelRequestTrigger 완료
├─ Manager Approval 대기 중 (승인자 응답 기다림)
└─ 종료 미실행
승인자(수신자로 등록한 이메일 계정)의 수신함에 태스크가 생성됩니다.
SAP Build 로비
→ 우측 상단 [벨 아이콘] 또는 [My Inbox] 클릭
또는 직접 URL 접속:
https://0ca34102trial.ap21.build.cloud.sap/comsapbpmtaskcenter
My Inbox
→ "출장비 승인 필요" 태스크 클릭
→ 승인 폼 확인:
├─ 출장 제목: 도쿄 고객사 미팅
├─ 신청 금액: 850000
└─ 신청자: 홍길동
→ [승인] 또는 [거부] 버튼 클릭
처리 결과 확인:
모니터링 → 프로세스 인스턴스
→ 해당 인스턴스 상태: 완료(Completed)
├─ TravelRequestTrigger
├─ Manager Approval (승인/거부 결과 기록)
└─ 종료
포인트: CAP 앱과 연동하면 이 승인 결과가 자동으로 출장 신청의 상태를 변경합니다.
이번 실습에서는 SBPA 자체 흐름만 확인합니다.
cd c:\dev\space\sap-btp-travel-expense
# 최종 파일 상태 확인
git status
# 모든 변경사항 커밋
git add .
git commit -m "day5: SAP Build PA 워크플로우 생성 + 배포 완료"
git push origin main
# 최종 태그 추가 (버전 관리)
git tag -a v1.0.0-complete -m "5일 강좌 완성 버전"
git push origin v1.0.0-complete
# 프로젝트 구조 최종 확인
tree -L 3 -I 'node_modules' travel-expense-app/
# 예상 출력:
# travel-expense-app/
# ├── app/
# │ └── travel_expense_ui/
# │ ├── webapp/
# │ ├── package.json
# │ └── README.md
# ├── db/
# │ ├── data/
# │ ├── schema.cds
# │ └── index.cds
# ├── srv/
# │ ├── annotations.cds
# │ ├── travel-service.cds
# │ ├── travel-service.js
# │ └── index.js
# ├── app-router/
# │ ├── index.js
# │ ├── xs-app.json
# │ └── package.json
# ├── mta.yaml
# ├── xs-security.json
# ├── package.json
# ├── README.md
# └── .gitignore
travel-expense-app/README.md:
# 출장비 승인 앱 (Travel Expense Approval Application)
SAP BTP에서 구축한 완전한 엔드-투-엔드 출장비 승인 애플리케이션입니다.
## 아키텍처
┌─────────────────────────────────────┐
│ Fiori Elements UI │ ← 사용자 인터페이스
│ (List Report + Object Page) │
└──────────────┬──────────────────────┘
│ OData V4 REST API
┌──────────────▼──────────────────────┐
│ CAP (Cloud Application Programming)│ ← 백엔드
│ - Node.js Express │
│ - SQLite (로컬) / HANA (클라우드) │
│ - CDS 데이터 모델 │
└──────────────┬──────────────────────┘
│ REST API
┌──────────────▼──────────────────────┐
│ SAP Build Process Automation │ ← 자동화
│ - 승인 워크플로우 │
│ - 사용자 태스크 관리 │
└─────────────────────────────────────┘
## 🚀 빠른 시작 (로컬)
### 1. 환경 설정
```bash
# Node.js 18.x 이상 필요
node --version
# 프로젝트 클론
git clone https://github.com/[your-account]/sap-btp-travel-expense.git
cd sap-btp-travel-expense/travel-expense-app
# 의존성 설치
npm install
npm run start:mock
# 또는 XSUAA 필요시
npm start
cd app/travel_expense_ui
npm install
npm start
# http://localhost:5173 에서 접속
mbt build
cf login -a https://api.cf.ap21.hana.ondemand.com/
cf deploy mta_archives/travel-expense-app-1.0.0.mtar
| 기능 | 설명 |
|---|---|
| 신청 생성 | 출장비 신청서 작성 및 저장 |
| 비용 항목 | 항공권, 호텔, 식비 등 상세 기록 |
| 승인 워크플로우 | 자동 매니저/CFO 승인 프로세스 |
| 실시간 추적 | 신청 상태 실시간 조회 |
| 이력 관리 | 승인/반려 이력 자동 기록 |
| 권한 관리 | 역할 기반 접근 제어 (XSUAA) |
Draft → Submitted → (Approved | Rejected)
Approver: 승인 권한Requester: 신청 권한Viewer: 읽기 권한CAP OData 서비스: /travel
GET /travel/TravelRequests # 목록 조회
POST /travel/TravelRequests # 신청 생성
PATCH /travel/TravelRequests(ID) # 수정
DELETE /travel/TravelRequests(ID) # 삭제
POST /travel/TravelRequests(ID)/submit # 제출 Action
POST /travel/TravelRequests(ID)/approve # 승인 Action
POST /travel/TravelRequests(ID)/reject # 반려 Action
# Mock 사용자로 (모든 역할)
npm run start:mock
# 실제 XSUAA와 함께
npm start
# SQLite (로컬)
dbeaver로 db/travel.sqlite 연결
# HANA (클라우드)
BTP Cockpit → HANA Database Tool
# 로컬
npm start 의 콘솔 출력
# 클라우드
cf logs travel-api --recent
네, 가능합니다. 하지만 CDS의 선언형 개발 장점을 잃게 됩니다.
개발 중에는 SQLite, 프로덕션에는 HANA 권장입니다. PostgreSQL 드라이버도 있지만 SAP는 HANA 최적화입니다.
가능합니다. CAP의 Custom Action으로도 상태 관리는 가능하지만, 사용자 승인 UI는 별도로 만들어야 합니다.
확인 항목:
[ ] SAP Build Process Automation 테넌트 활성화
[ ] 승인 워크플로우 설계 (Decision, User Task, REST Call)
[ ] 워크플로우 테스트 완료
[ ] CAP 앱과 BPA 통합 (axios REST 호출)
[ ] E2E 데모 시나리오 실행 (생성 → 제출 → 승인 → 상태 변경)
[ ] 모든 단계에서 데이터 흐름 확인
[ ] 최종 Git 커밋 + 태그
[ ] README 작성 완료
[ ] 동료/강사에게 5분 데모 프레젠테이션 (선택)
Q&A 주제:
[ ] RPA와 BPM의 실제 차이?
[ ] 워크플로우가 실패하면?
[ ] 얼마나 복잡한 프로세스까지 자동화 가능?
[ ] 한글 설정은?
[ ] 모바일에서도 워크플로우 승인 가능?
오늘 배운 것:
┌─────────────────────────────────────────────┐
│ 자동화 = 사람의 반복 작업 제거 │
│ │
│ RPA: 화면 조작 자동화 │
│ BPM: 비즈니스 프로세스 자동화 │
│ │
│ SAP Build PA: 노코드로 워크플로우 설계 │
│ │
│ 앱 + 워크플로우 통합 = 완전한 자동화 │
└─────────────────────────────────────────────┘
5일 강좌의 성과:
┌─────────────────────────────────────────────┐
│ DAY1: CAP 백엔드 (OData API) ✓ │
│ DAY2: 고급 데이터 모델링 ✓ │
│ DAY3: Fiori Elements UI ✓ │
│ DAY4: 클라우드 보안 & 배포 ✓ │
│ DAY5: 자동화 & 통합 ✓ │
│ │
│ 완성한 시스템: │
│ ├─ 엔터프라이즈급 웹 앱 │
│ ├─ 클라우드 배포 (BTP) │
│ ├─ 사용자 인증 (XSUAA) │
│ ├─ 자동화 워크플로우 │
│ └─ 프로덕션급 코드 품질 │
│ │
│ "이제 혼자 BTP 앱을 만들 수 있습니다!" │
└─────────────────────────────────────────────┘
출장비 승인 앱
↓ (API)
SAP S/4HANA (ERP)
↓ (자동화)
지출 처리 & 송금
누적 데이터
↓
실시간 대시보드
├─ 월간 출장비 추이
├─ 부서별 지출
└─ 승인 시간 분석
웹 앱 (Fiori)
+
모바일 네이티브
+
푸시 알림
모놀리식 CAP 앱
→
마이크로서비스 분리
→ 각 도메인별 독립 배포
| 주제 | 링크 | 난이도 |
|---|---|---|
| CAP 공식 튜토리얼 | https://cap.cloud.sap/docs | 초급 |
| Fiori Elements 심화 | https://developer.sap.com/fiori-elements | 중급 |
| BTP 아키텍처 | SAP Discovery Center | 중급 |
| Cloud Foundry 운영 | Cloud Foundry Documentation | 중급 |
| SAP Build PA 고급 | SAP Learning Hub | 중급-상급 |
| Clean Core 전략 | SAP TechEd 세션 | 중급 |
┌─────────────────────────────────────┐
│ 5일간의 여정을 완료했습니다! │
│ │
│ 처음: 빈 화면 │
│ → CAP로 API 만들고 │
│ → Fiori로 UI 구성하고 │
│ → Cloud Foundry로 배포하고 │
│ → XSUAA로 보안 추가하고 │
│ → SAP Build PA로 자동화했습니다 │
│ │
│ 마지막: SAP BTP에서 실행 중인 │
│ 엔터프라이즈 앱! │
│ │
│ 다음 단계: 혼자 비슷한 앱을 │
│ 만들어 보세요! │
└─────────────────────────────────────┘