AWS 기술 블로그
AWS Supply Chain 서비스를 활용하여 SAP 데이터로 수요 예측하기
기존 SAP ECC 6.0, SAP S/4 HANA 를 사용하는 기업은 매일 발생하는 다량의 자재, 생산, 물류, 판매 데이터와 같은 여러 트랜잭션 데이터를 활용하여 수요 예측, 재고 관리 등 공급망 프로세스에서 가시성을 확보하고 데이터 기반 의사 결정을 하고자 합니다. 하지만 기존 ERP솔루션에는 인사이트를 빠르고 간편하게 생성하기 위한 도구가 부족하고 기계 학습(Machine Learning) 모델, 사용자 인터페이스(User Interface) 등의 추가적인 개발이 필요하게 됩니다.
AWS Supply Chain은 기존 전사적 자원 관리(ERP) 및 공급망 관리 시스템과 함께 작동하는 클라우드 기반 공급망 관리 애플리케이션입니다. 데이터만 있다면 AWS Supply Chain의 Supply Chain 데이터 레이크를 통해 SAP ECC, SAP S/4HANA와 같은 ERP 데이터를 편리하게 연결하여 활용할 수 있습니다. 현재 AWS Supply Chain에서 지원하는 데이터 소스는 SAP S/4 HANA, SAP ECC 6.0, S3 커넥터, EDI(Electronic data interchange) 입니다. 각 데이터 소스별로 데이터를 수집하는 방법은 다르며, 사용하는 환경에 맞게 단일 혹은 여러 데이터 소스에서 수집할 수 있습니다. 예를 들어, SAP 데이터 외에 상공회의소로부터 FTA(Free Trade Agreement) 관련 데이터를 수집하고자 한다면 추가로 EDI 데이터 소스를 활용할 수 있습니다. 데이터 연결에 대해 보다 상세한 내용을 확인하려면 AWS Supply Chain 사용자 가이드 – 데이터 소스에 연결을 참고하십시오.
이 글에서는 SAP에서 MM(Material Management), SD(Sales and Distribution) 모듈을 운영하는 전문가들의 입장에서, 별도의 클라우드 및 기계 학습에 대한 이해가 없이도 데이터만을 활용하여 쉽게 기계 학습 기반의 수요 예측을 하는 방안을 다룹니다. AWS클라우드에서 SAP 데이터 파이프라인을 구축한 고객이 아니더라도 SAP의 각 모듈에서 생성되는 데이터에 대한 이해만 있다면 데이터 엔티티 별 계층 구조(Hierarchy) 에 맞게 데이터를 수집하고 AWS Supply Chain을 사용할 수 있습니다.
솔루션 개요
AWS Supply Chain에서 제공하는 다양한 인사이트를 활용하기 위해서는 각 인사이트 별로 필수 데이터 엔티티를 수집해야 합니다. 수요 예측(Demand Planning)의 경우, SAP의 아웃바운드 주문(Outbound Order Line), 상품(Product), 그리고 사이트(Site) 엔티티가 필요합니다. 이 외에도 회사(Company), 지리(Geography), 상품 계층(Product Hierarchy)와 같은 수요 예측에 필요한 엔티티를 추가하여 인사이트의 품질을 높이는 데 활용할 수도 있습니다. 정리하면 아래의 표 1과 같은 엔티티 리스트를 수요 예측에 활용할 수 있습니다.
표 1과 같이 엔티티 이름 별로 필수 또는 선택 사항의 SAP 데이터 소스가 무엇인지 확인할 수 있습니다. SAP 데이터 파이프라인(SAP Designer, RFC등)이 없을 경우, 사용 중인 SAP 테이블에서 직접 익스포트하여 로컬 환경에 데이터를 준비할 수 있습니다. Master Data → Product → 0MATERIAL_ATTR 데이터의 경우, 필수(Required) 데이터이자 부모(Parent) 계층을 가지고 있으므로 의무적으로 수집이 필요한 데이터 엔티티입니다. 따라서 사용자는 SAP T-Code인 ‘SE16N’ 혹은 ‘SE11’에서 ‘ATTR’ 테이블을 검색하고 원하는 데이터를 익스포트한 후, csv파일로 준비합니다.
표1 – 수요 예측에 사용되는 SAP데이터
Type | Data Entity | SAP Data Source / SAP Table | Hierarchy | Data Entity Action | |
Required | Master Data | Product | 0MATERIAL_ATTR | Parent | Replace |
0MATERIAL_TEXT | Child | Update | |||
Site | T001W | Parent | Replace | ||
ADRC | Child | Update | |||
GEOLOC | Child | Update | |||
Transactional Data | Outbound Order Line | 2LIS_11_VAITM | Parent | Update | |
0BP_DEF_ADDRESS_ATTR | Child | Update | |||
0MATERIAL_ATTR | Child | Update | |||
2LIS_11_VAHDR | Child | Update | |||
Optional | Master Data | Company | OCOMP_CODE_TEXT | Parent | Replace |
Geography | ADRC | Parent | Replace | ||
Product Hierarchy | T179 | Parent | Replace |
이 글에서는 필수(Required) 데이터 엔티티 중, 0MATERIAL_ATTR, T001W, 2LIS_11_VAITM, 그리고 T001W만 수집해도 실습을 할 수 있습니다. SAP 데이터가 준비되면 2가지 방법으로 데이터를 수집할 수 있습니다. 첫째는 S/4 HANA 데이터 레이크로 Amazon AppFlow를 사용해 연결하는 방법입니다. 둘째는 SAP ECC 6.0 데이터 레이크로 미들웨어를 구축하거나 AWS CLI를 활용하여 지정된 경로에 데이터를 업로드하는 방법입니다. 이 글에서는 SAP ECC 6.0 데이터 레이크를 생성하고 AWS CLI를 사용하여 SAP 데이터를 수집합니다.
단계 요약
- 단계 1 : AWS Supply Chain 인스턴스 생성
- 단계 2: SAP ECC 6.0 데이터 레이크 생성
- 단계 3: SAP 데이터 이해 및 준비
- 단계 4: 매핑 레시피 이해
- 단계 5: SAP 데이터 수집
- 단계 6: 수요 예측 확인하기
사전 준비사항
본 실습을 위해서는 아래와 같은 사항을 준비 해야 합니다. 현재AWS Supply Chain 서비스는 미국 동부(버지니아 북부), 미국 서부(오레곤) 및 유럽(프랑크푸르트) AWS 리전에서 제공되고 있습니다.
- AWS 계정
- AWS CLI(Command Line Interface)
- AWS IAM Identity Center
- AWS IAM Identity Center와 AWS Supply Chain은 동일한 리전에 배포가 되어야 합니다.
- AWS Supply Chain 인스턴스를 생성하기 전에 활성화하고 사용자를 추가합니다.
- AWS Identiy Center 사용자 가이드를 참고하여 구성할 수 있습니다.
- 운영중인 SAP 환경 및 데이터
- 이 글에서는 SAP Cloud Appliance Library와 해당 환경의 샘플 데이터가 사용이 되었습니다. 별도의 운영 환경이 없고, SAP Cloud Appliance Library로 실습을 위한 SAP환경을 구성하려면 아래의 ‘SAP Cloud Appliance Library로 운영 환경 구성’을 참조하십시오.
SAP Cloud Appliance Library로 운영 환경 구성
SAP Cloud Appliance Library는 클라우드 인프라에서 SAP 워크로드를 빠르고 쉽게 생성할 수 있는 방법을 제공합니다. AWS를 클라우드 공급자로 선택하여 SAP 워크로드를 구축하면 Amazon EC2환경에서 샘플 SAP환경을 운영해 볼 수 있습니다. 본 실습에서는S/4 HANA환경에서 샘플 데이터를 로컬 환경에 가져오기 위해 사용합니다.
SAP CAL을 사용하려면, “SAP Cloud Appliance Library“에 접속하여 우측 ‘Log On’을 클릭합니다.
단계 1: AWS Supply Chain 인스턴스 생성
AWS Supply Chain은 사용자가 데이터만 수집하면 기계 학습 기반의 유용한 인사이트를 제공하는 클라우드 기반 애플리케이션입니다. AWS Supply Chain배포 작업도 매우 간편하게 할 수 있습니다.
- AWS Management Console에서 AWS Supply Chain 을 검색합니다.
- 우측 ‘Create AWS Supply Chain Instance’를 클릭합니다. 해당 리전에 AWS IAM Identity Center활성화 되어 있어야 합니다.
- ‘Instance name’을 입력하고 데이터 암호화를 위한 AWS KMS 키를 선택합니다.
- KMS 키는 반드시 ‘symmetric encryption key’를 사용합니다.
- 우측의 ‘Create’ 링크를 이용하여, 전용 KMS 키를 생성하는 것을 권장합니다.
- symmetric encryption key가 아니라면 아래와 같은 에러가 발생합니다.
- ‘Create Instance’를 클릭합니다.
- 인스턴스가 생성되면 ‘Proceed with Identity source’를 클릭합니다. AWS Identity Center가 활성화 되어 있다면, Status가 ‘Identity source connected’로 변경이 됩니다.
- ‘Select an application owner’를 클릭하여 애플리케이션에 접속할 사용자를 선택하고 ‘Send Invite’를 클릭합니다. 사용자는 언제든지 추가할 수 있습니다.
- 사용자의 등록 후에, Sub-domain이 활성화됩니다.
- Sub-domain을 클릭하고 사용자 정보를 입력하여 AWS Supply Chain 인스턴스에 접속합니다.
- 추가적으로 사용자 프로파일과 같은, AWS Supply Chain설정을 완료하고 아래와 같이 인스턴스 접속을 확인합니다.
단계 2: SAP ECC 데이터 레이크 생성
AWS Supply Chain은 공급망용 기계 학습 모델을 사용해서 데이터 레이크를 설정합니다. 데이터 레이크를 활용하면 간편하게 SAP ECC 6.0, S/4 HANA, EDI 856, S3와 같은 데이터 소스에서 데이터를 수집할 수 있습니다.
- AWS Supply Chain환경의 좌측 메뉴에 위치한 ‘데이터 레이크’를 클릭합니다.
- ‘연결’을 클릭하고 우측의 ‘+새로운 데이터 연결’을 클릭합니다.
- ‘시작하기’ 클릭 후, 데이터 소스로 ‘SAP ECC’를 선택하고 ‘다음’을 클릭합니다.
- 연결 이름 입력 및 아마존 S3 버킷 청구서에 ‘확인’을 클릭하고 ‘다음’을 클릭합니다.
데이터 연결을 생성한 후에, 각 엔티티 별 매핑 레시피를 확인하실 수 있습니다. 아래의 그림과 같이 가장 먼저 ‘회사’ 카테고리에 대한 매핑 레시피를 나타냅니다. 회사 코드(BUKRS)는 필수 소스 필드로서 SAP 계층에서 가장 위에 있는 계층입니다. 여러 법인이 있는 기업의 경우, 회사 코드를 기준으로 회사명(TXTMD), 언어(LANGU), 플랜트(WERKS), Cost Center(PRCTR) 등을 매핑하고 관리할 수 있습니다. 여기서는 추가 소스 필드로 TXTMD를 수집할 수 있습니다. 해당 필드에 대한 데이터를 수집한다면 BUKRS는 id, TXTMD는 description으로 각각 매핑이 됩니다. 데이터에 대한 추가적인 내용은 ‘단계 3: SAP 데이터 이해 및 준비’에서 확인합니다.
단계 3: SAP 데이터 이해 및 준비
각 엔티티 별로 제공되는 매핑 레시피에서 ‘필수 소스 필드’는 변경이 불가능 하지만 ‘추가 소스 필드’의 경우, 지원되는 형식의 데이터가 있다면 추가할 수 있습니다. 예를 들어 아래의 그림은 SAP T-CODE SE16N에서 ‘BIW_T001T’ 테이블을 조회한 내용입니다. 사용자는 LANGU필드를 제외한 BUKRS와 TXTMD를 사용해도 되지만 LANGU필드를 매핑 레시피에 추가할 수도 있습니다.
필드를 추가하려면 아래의 [필드 추가하기]로 이동하고, 필드의 추가 없이 진행을 하고자 한다면 [데이터 준비]로 이동하기 바랍니다.
[필드 추가하기]
위 테이블에서 제공되는 ‘LANGU’ 필드를 레시피에 포함하고 싶다면, 3개 필드에 대한 파일을 csv 포맷으로 아래와 같이 저장합니다.
다음으로 저장한 csv 파일을 아래와 같이 회사 노드(0COMP-CODE-TEXT)에 드래그 & 드롭 방식으로 업로드합니다.
이제 업로드 된 파일에 포함된 ‘LANGU’필드를 추가하고 수집에 활용할 수 있습니다. 여기서는 ‘LANGU’ 필드를 사용하지 않으므로 저장하지 않습니다.
추가 대상 필드를 드롭 다운하면 ‘LANGU’와 매칭할 필드를 선택할 수 있는 데, 여기서 ‘LANGU’와 매핑이 되는 필드가 존재하지 않으므로 사용할 수 없습니다.
[데이터 준비]
본 실습에서는 회사(0COMP-CODE-TEXT), 상품(0MATERIAL_ATTR), 사이트(T001W), 아웃바운드 주문 라인(2LIS_11_VAITM) 엔티티에 해당하는 데이터만 준비합니다. 아래의 표 2는 각 엔티티에 매핑될 수 있는 SAP 테이블 예시입니다.
아래 예시 외에 SAP상에서 직접 원하는 필드로 구성된 사용자 테이블을 생성하거나, T-Code SQVI에서 다양한 필드를 조합한 뷰 테이블을 생성하여 csv파일로 활용할 수 있습니다.
표2 – 실습에 사용되는 SAP데이터 목록
Entity Group | Node Name | SAP table |
회사 → 회사 | 0COMP-CODE-TEXT | BIW_T001 |
제품 → 상품 | 0MATERIAL_ATTR | MARA |
사이트 → 사이트 | T001W | T001W |
아웃바운드 → 아웃바운드 주문 라인 | 2LIS_11_VAITM | VAITM |
아래와 같이 파일을 준비하고 다음 단계로 이동합니다.
단계 4: 매핑 레시피 이해
각 매핑 레시피는 고유의 레시피 파일이 존재하며 우측의 ‘레시피 액션’을 클릭하여 레시피 파일을 다운로드할 수 있습니다. 레시피 파일을 활용하면 2가지의 이점이 있습니다. 첫째, 수집이 실패할 때, 디버깅하는 용도로 사용할 수 있습니다. 둘째, 기존 레시피에 없는 필드를 추가하고 싶을 경우, 로직을 추가하여 파일을 업로드하실 수 있습니다.
아래의 예시는 ‘아웃바운드 주문 라인’ 레시피로 그룹화(Group By)에 필요한 컬럼 리스트가 나열된 것을 확인할 수 있습니다. 해당 레시피는 ‘아웃바운드 주문 라인’ 데이터를 수집하기 위한 필수 조건으로 스텝을 추가하는 것 외에 지우거나 변경하면 안됩니다.
단계 5: SAP 데이터 수집
데이터가 준비되면 AWS Supply Chain 데이터 레이크에서 지정한 S3버킷 경로에 직접 파일을 업데이트, 삭제하도록 미들웨어 솔루션을 구축하거나 AWS CLI를 통해 직접 수집할 수 있습니다. 데이터 수집 방법은 업데이트(Update), 교체(Replace), 삭제(Delete)가 있으며, 각각 별도의 S3경로를 복사하여 사용할 수 있도록 제공합니다. 이 글에서는 csv파일을 AWS CLI를 통해 수집합니다.
아래와 같이 BIW_T001.csv 파일을 주어진 경로에 업데이트합니다. 여기서 주의할 점은 콘솔에서 제공하는 URL은 S3경로를 제공하는 것이므로 ‘S3 cp’ 명령어를 입력하고, 어떤 이름으로 파일이 저장될 것인지도 지정해 주어야 합니다. 여기서 파일명은 원본 csv 파일명을 동일하게 사용하였습니다.
사용한 명령어의 예시는 아래와 같습니다.
aws s3 cp BIW_T001.csv <제공되는 업데이트용 경로>/BIW_T001.csv
업로드 후에는 아래와 같이 데이터 레이크의 ‘회사’ 엔티티가 활성 된 것을 확인할 수 있으며, 수집 현황을 확인하려면 우측 버튼에서 ‘동기화 기록’을 클릭합니다.
동기화 기록을 통해 수집한 자료가 성공적으로 수집되었는지 확인할 수 있습니다. 위와 동일한 방법으로 상품(0MATERIAL_ATTR), 사이트(T001W), 아웃바운드 주문 라인(2LIS_11_VAITM) 엔티티에 해당하는 데이터를 수집합니다. 자세한 명령어의 예시는 표 3 을 참고하십시오.
표3 – 엔티티 별 사용할 AWS CLI
상품(0MATERIAL_ATTR) | aws s3 cp 0MATERIAL_ATTR.csv <제공되는 업데이트용 경로>/ 0MATERIAL_ATTR.csv |
사이트(T001W) | aws s3 cp T001W.csv <제공되는 업데이트용 경로>/ T001W.csv |
아웃바운드 주문 라인 (2LIS_11_VAITM) |
aws s3 cp 2LIS_11_VAITM.csv <제공되는 업데이트용 경로>/ 2LIS_11_VAITM.csv |
단계 6: 수요 예측 생성하기
AWS Supply Chain 수요 예측은 비즈니스 사용자가 수요 계획을 작성, 협업 및 게시할 수 있는 웹 기반 수요 계획 애플리케이션입니다. 위의 데이터는 수요 예측을 하기 위한 최소한의 수집 조건이며, 준비가 되면 바로 데이터에 기반한 수요 예측을 해볼 수 있습니다.
- AWS Supply Chain Console에서 좌측의 ‘수요 예측’을 클릭합니다.
- ‘계획 작성 워크북 작성’을 클릭합니다.
- 워크북 이름을 입력하고 ‘다음’을 클릭합니다.
- 아웃바운드 주문 라인 데이터(필수)에 ‘OutboundOrderLine’ 데이터 세트 선택합니다.
- 제품 메타데이터에 ‘Product’ 데이터 세트 선택합니다. 데이터가 잘 수집이 되었다면 수요 예측에 사용될 데이터 유무가 아래와 같이 ‘행 수’에 표현됩니다.
- 계획 작성 사이클 구성 및 예측 구성을 아래 예시처럼 자유롭게 입력하고 ‘리뷰’를 클릭합니다.
- ‘예측 생성’을 클릭합니다.
- 예측이 준비가 되면 가입한 이메일로 발송이 됩니다. 예측 생성에는 데이터의 양, 주기에 따라 수분에서 수 십분 소요됩니다. 아래 예시는 제품(SS03)에 대한 일별 수요 예측을 나타내고 있습니다.
결론
이 글에서는 SAP를 사용하는 모듈 전문가라면 SAP 데이터로 편리하게 AWS Supply Chain의 수요 예측 기능을 쉽고 간단하게 사용하는 기능에 대해 소개를 하였습니다. AWS Supply Chain을 통해 SAP 사용자는 기계 학습에 대한 이해가 없어도 매일 생성되는 자재, 판매 데이터를 기반으로 간편하게 미래에 대한 수요 예측을 해 볼 수 있습니다.