구매부터 지급까지의 송장 처리 데이터 템플릿
구매부터 지급까지의 송장 처리 데이터 템플릿
- 수집 권장 속성
- 추적할 주요 활동
- SAP ECC 데이터 추출 안내
구매부터 지급까지의 송장 처리 속성
| 이름 | 설명 | ||
|---|---|---|---|
| 송장 번호 InvoiceNumber | 공급업체 송장 문서를 식별하는 고유 번호입니다. | ||
| 설명 송장 번호는 송장 처리 과정에서 각 건을 구분하는 고유 식별자입니다. 번호 하나가 공급업체에서 접수한 송장 하나에 해당하므로, 데이터 수집부터 최종 지급까지 관련 활동을 하나의 프로세스 사례로 추적할 수 있습니다. process mining 분석에서 이 속성은 각 송장의 엔드투엔드 수명 주기를 재구성하는 데 필수적입니다. SAP에 기록된 임시 저장, 전기, 지급 보류, 반제 등의 개별 이벤트를 시간순으로 연결할 수 있습니다. 이를 통해 각 송장이 어떻게 처리되는지, 얼마나 걸리는지, 표준 프로세스에서 벗어나는 지점은 어디인지 명확히 파악할 수 있습니다. 중요한 이유 송장 하나와 관련된 모든 이벤트를 연결하는 기본 키로, 프로세스 분석과 변형 탐색의 토대가 됩니다. 확보 방법 일반적으로 SAP 테이블 RBKP의 문서 번호 필드 BELNR를 사용하며, 고유성을 보장하기 위해 회사 코드(BUKRS)와 회계연도(GJAHR)를 함께 연결하기도 합니다. 예시 510004567851000456795100045680 | |||
| 이벤트 시간 EventTime | 활동이 발생한 날짜와 시간을 포함한 정확한 타임스탬프입니다. | ||
| 설명 이벤트 시간은 업무 활동이 원천 시스템에서 실행되고 기록된 정확한 시점을 나타냅니다. 이 타임스탬프를 기준으로 각 송장의 활동을 시간순으로 정렬해 일관된 흐름을 구성합니다. 분석에서는 주기 시간, 대기 시간, 활동 간 처리 시간 등 시간 기반 지표를 계산하는 데 이벤트 시간이 필요합니다. '송장 엔드투엔드 주기 시간'과 '지급 보류 해결 기간' 대시보드도 이 데이터를 사용해 프로세스의 두 시점 사이에 경과한 시간을 측정합니다. 지연과 성과 병목을 찾으려면 정확한 타임스탬프가 중요합니다. 중요한 이유 이 타임스탬프는 이벤트를 올바른 순서로 정렬하고 주기 시간과 병목 지속 시간 등 성과 지표를 계산하는 데 필요합니다. 확보 방법 일반적으로 변경 문서 헤더 테이블 CDHDR의 변경일(UDATE)과 변경 시간(UTIME)을 결합해 도출합니다. 특정 생성 이벤트의 경우 RBKP의 생성일 및 생성 시간(ERNAM, ERZET)을 사용할 수 있습니다. 예시 2023-03-15T10:30:00Z2023-03-16T14:05:21Z2023-03-28T09:00:00Z | |||
| 활동 Activity | 송장 처리 과정에서 발생한 특정 업무 단계 또는 이벤트의 이름입니다. | ||
| 설명 활동 속성은 송장 처리 워크플로의 개별 단계나 작업을 나타냅니다. 문서 생성, 상태 변경, 승인, SAP 변경 로그에 기록된 사용자 작업 등 다양한 시스템 이벤트에서 활동을 도출합니다. 활동 분석은 process mining의 중심입니다. 이를 통해 프로세스 맵을 시각화하고, 병목(예: '송장 승인 요청' 후 긴 대기), 재작업 반복(예: '지급 보류 설정'과 '지급 보류 해제'의 반복), 규정 준수 편차를 파악할 수 있습니다. 활동의 순서와 빈도를 살펴보면 실제 프로세스 흐름을 확인할 수 있습니다. 중요한 이유 프로세스 맵의 단계를 정의해 프로세스 흐름을 시각화하고 병목과 재작업을 찾아낼 수 있습니다. 확보 방법 일반적으로 트랜잭션 코드(SY-TCODE), RBKP의 상태 필드(예: RBSTAT), CDHDR 및 CDPOS 테이블의 변경 이벤트 등 여러 데이터 원천에서 도출합니다. 예시 송장 임시 저장송장 승인 요청송장 승인송장 전기송장 반제 | |||
| 공급업체 번호 VendorNumber | 송장을 제출한 공급업체를 식별하는 고유 번호입니다. | ||
| 설명 공급업체 번호는 공급업체를 식별하는 마스터 데이터 키입니다. 송장 거래를 특정 비즈니스 파트너와 연결해 공급업체 특성에 따른 분석을 지원합니다. 공급업체 번호별로 프로세스를 분석하면 공급업체 관계와 성과에 관한 중요한 정보를 얻을 수 있습니다. 예를 들어 지급 보류나 불일치를 유발하는 송장을 반복해서 제출하는 공급업체, 또는 송장이 가장 효율적으로 처리되는 공급업체를 파악할 수 있습니다. 이러한 정보는 공급업체 관리와 전략적 소싱에 유용합니다. 중요한 이유 공급업체별 분석을 통해 특정 공급업체와 관련된 패턴, 문제 또는 효율성을 파악할 수 있습니다. 확보 방법 송장 문서 헤더 테이블 RBKP의 '송장 발행 당사자' 필드(LIFNR)입니다. 예시 100345100876200112 | |||
| 구매 주문서 번호 PurchaseOrderNumber | 송장 대사의 기준이 되는 구매 주문서(PO)의 식별자입니다. | ||
| 설명 구매 주문서 번호는 송장과 원래의 구매 문서를 연결합니다. 구매 주문서, 입고, 송장을 대사하는 3자 대사와 구매 주문서 기반 송장 프로세스의 효율성 분석에 필수적입니다. 이 속성은 '송장과 구매 주문서 간 대사 불일치율' 대시보드에 중요합니다. 구매 주문서 기반 송장과 비구매 주문서 송장을 구분할 수 있으며, 두 유형은 처리 경로와 복잡도가 크게 다를 수 있습니다. 특정 구매 주문서와 관련된 문제를 분석하면 조달 프로세스의 상위 단계에서 발생한 문제를 진단하는 데 도움이 됩니다. 중요한 이유 송장과 조달 프로세스를 연결해 구매 주문서 기반 송장과 비구매 주문서 송장을 구분하고 대사 불일치를 찾을 수 있습니다. 확보 방법 일반적으로 개별 항목 수준에서 확인합니다. 송장 항목 테이블 RSEG의 '구매 주문서 번호'(EBELN)를 사용하며, 헤더 수준으로 집계해야 할 수 있습니다. 예시 450001756345000175644500017565 | |||
| 반제일 ClearingDate | 대금이 지급되고 매입채무에서 청구서가 반제된 날짜입니다. | ||
| 설명 반제일은 청구서 처리 과정의 마지막 단계인 지급을 나타냅니다. 시스템에서 미결 청구 항목이 지급 문서로 반제된 날짜이며, 실제 지급이 처리된 시점을 보여줍니다. 이 속성은 '평균 청구서 처리 시간'과 '기한 내 지급률' 등 여러 주요 KPI의 종료 시점입니다. 지급 성과를 측정할 때 지급 만기일과 비교합니다. 현금 할인 분석에서는 할인 기간과 비교해 할인 적용 기한 내에 지급했는지 확인합니다. 중요한 이유 프로세스 완료 시점을 나타내며 전체 처리 시간, 기한 내 지급률, 현금 할인 적용 여부를 계산하는 기준이 됩니다. 확보 방법 반제된 항목의 경우 반제된 공급업체 항목 테이블 BSAK의 '반제일' 필드(AUGDT)입니다. 예시 2023-04-152023-05-022023-05-20 | |||
| 사용자 이름 UserName | 활동을 수행한 사람의 SAP 사용자 ID입니다. | ||
| 설명 사용자 이름 속성은 프로세스에서 특정 활동을 수행한 사람을 식별합니다. 일반적으로 트랜잭션이나 변경 이벤트에 기록된 SAP 사용자 이름을 사용합니다. 이 속성은 사용자 또는 팀 단위의 성과 분석에 중요합니다. '승인 속도가 가장 빠른 사용자는 누구인가요?', '재작업을 가장 많이 발생시키는 사용자는 누구인가요?'와 같은 질문에 답할 수 있습니다. 대시보드에서 업무량 분포를 분석하고 교육이 필요한 영역을 찾으며 직원별 성과 차이를 파악하는 데 사용됩니다. 중요한 이유 개인 또는 팀별 성과와 업무량을 분석해 우수 성과자, 교육 기회, 리소스 불균형을 파악할 수 있습니다. 확보 방법 일반적으로 변경 문서 헤더 테이블 CDHDR의 '변경자' 필드(USERNAME)를 사용합니다. 생성 이벤트에는 RBKP와 같은 테이블의 '입력자' 필드(ERNAM)를 사용할 수 있습니다. 예시 JSMITHBWILSONCHEN | |||
| 송장 금액 InvoiceAmount | 원본 문서 통화로 표시된 송장의 총액입니다. | ||
| 설명 송장 금액은 공급업체가 제출한 송장의 총액을 나타내며, 각 송장 사례의 주요 재무 지표입니다. process mining에서는 금액 기준 분석에 이 속성이 필요합니다. 송장 금액에 따라 프로세스를 필터링하고 구분할 수 있으며, 금액은 프로세스 복잡도와 승인 요건에 영향을 주는 경우가 많습니다. 예를 들어 고액 송장은 더 엄격한 별도 승인 절차를 거칠 수 있습니다. 규정 준수 분석에도 사용되며, 고액 송장이 필수 승인 단계를 건너뛰는지 확인할 수 있습니다. 중요한 이유 금액 기준 분석을 통해 고액 송장의 우선순위를 정하고 송장 금액이 프로세스 흐름과 규정 준수에 미치는 영향을 파악할 수 있습니다. 확보 방법 송장 문서 헤더 테이블 RBKP의 '총 송장 금액' 필드(RMWWR)입니다. 예시 1500.7512500.00850.20 | |||
| 전기일 PostingDate | 청구서가 재무 원장에 공식적으로 전기된 날짜입니다. | ||
| 설명 전기일은 회계 프로세스에서 중요한 날짜입니다. 총계정원장에서 청구 비용을 인식하는 회계 기간을 결정합니다. 일반적으로 매입채무 담당자가 청구서를 처리할 때 지정합니다. 프로세스 분석에서 이 날짜로 표시되는 '청구서 전기' 활동은 주요 이정표입니다. 청구서 접수일부터 전기일까지 걸린 시간은 전체 처리 시간의 중요한 부분입니다. 또한 주별 또는 월별 전기 청구서 수를 추적하는 등 재무 보고와 처리량 분석에도 이 날짜가 기본적으로 사용됩니다. 중요한 이유 프로세스의 주요 이정표를 나타내고 거래의 회계 기간을 결정하며, 처리 시간 계산에도 중요한 기준이 됩니다. 확보 방법 청구 문서 헤더 테이블 RBKP의 '전기일' 필드(BUDAT)입니다. 예시 2023-03-202023-04-052023-04-11 | |||
| 지급 만기일 PaymentDueDate | 지급 조건에 따라 공급업체에 청구 대금을 지급해야 하는 날짜입니다. | ||
| 설명 지급 만기일은 청구서의 기준일과 합의된 지급 조건을 바탕으로 계산합니다. 연체에 따른 벌금이나 공급업체와의 관계 악화를 피하려면 이 날짜까지 대금을 지급해야 합니다. 이 속성은 '기한 내 지급률', '현금 할인 기회 손실'과 같은 성과 및 규정 준수 KPI를 측정하는 데 중요합니다. 실제 지급일(반제일)과 지급 만기일을 비교하면 지급이 기한 내, 조기 또는 지연 처리됐는지 자동으로 확인할 수 있습니다. 지급 조건 준수 대시보드의 기본 데이터이기도 합니다. 중요한 이유 기한 내 지급 성과를 측정하고 조기 지급 할인을 받을 기회를 파악하는 기준으로 사용됩니다. 확보 방법 이 날짜는 계산되는 경우가 많습니다. 지급 기준일(ZFBDT)은 테이블 BSEG에 있으며, 만기일 계산에는 지급 조건(BSEG-ZTERM)도 적용됩니다. 예시 2023-04-192023-05-052023-05-11 | |||
| 지급 보류 사유 PaymentBlockReason | 청구서 지급을 보류한 이유를 나타내는 코드입니다. | ||
| 설명 청구서에 불일치가 있거나 추가 조사가 필요한 경우 지급을 보류합니다. 지급 보류 사유 코드는 수량 차이, 가격 차이, 수동 보류 등 보류 이유를 나타냅니다. 이 속성은 '지급 보류 해결 기간' 대시보드에 필수적입니다. 사유별 보류 빈도와 기간을 분석하면 지급 지연의 근본 원인을 파악할 수 있습니다. 예를 들어 '가격 불일치'로 장기간 보류되는 경우가 가장 많다면 기준 데이터나 구매 주문 프로세스에 개선이 필요한 문제가 있을 수 있습니다. 중요한 이유 청구서 지급이 지연된 이유를 설명하므로 지급 보류의 근본 원인을 분석하고 프로세스 개선의 우선순위를 정하는 데 도움이 됩니다. 확보 방법 지급 보류 사유는 테이블 RSEG의 항목 수준 필드 SPGRS 또는 회계 문서 테이블 BSEG의 필드 ZLSPR에서 확인할 수 있습니다. 예시 반품송장대변 메모 | |||
| 거부 사유 RejectionReason | 승인 워크플로에서 청구서가 거부된 이유를 설명하는 코드 또는 텍스트입니다. | ||
| 설명 승인자가 청구서를 거부할 때는 일반적으로 사유를 남깁니다. '잘못된 구매 주문 번호', '중복 청구서', '금액 오류'와 같은 표준 코드나 자유 형식의 설명을 사용할 수 있습니다. 이 데이터는 '청구서 거부 사유 및 추이' 대시보드에 중요합니다. 거부 사유별 빈도를 분석하면 반복되는 문제를 찾아 시정 조치를 마련할 수 있습니다. 예를 들어 '잘못된 구매 주문 번호'가 자주 발생한다면 공급업체와의 소통을 개선하거나 데이터 입력 담당자를 교육해야 할 수 있습니다. 이러한 분석은 프로세스 재작업을 줄이는 데 도움이 됩니다. 중요한 이유 거부의 근본 원인을 파악해 재작업을 줄이고 최초 처리 성공률을 높이는 개선 방안을 마련할 수 있습니다. 확보 방법 이 정보는 표준 필드 하나에 저장되지 않는 경우가 많습니다. 워크플로 컨테이너 로그, 문서에 연결된 장문 텍스트 필드 또는 사용자 지정 워크플로 솔루션의 특정 필드에서 확인할 수 있습니다. 예시 중복 청구서금액 오류구매 주문 불일치 | |||
| 기한 초과 여부 IsOverdue | 청구서 대금이 지급 만기일 이후에 지급됐는지 나타내는 계산된 플래그입니다. | ||
| 설명 '반제일'(실제 지급일)과 '지급 만기일'을 비교해 계산하는 불리언 속성입니다. 반제일이 만기일보다 늦으면 true, 그렇지 않으면 false로 설정됩니다. 이를 통해 청구서별 기한 내 지급 성과를 간단하고 직접적으로 측정할 수 있습니다. 이 속성을 사용하면 대시보드에서 분석하고 시각화하기가 쉬워집니다. 간편하게 필터링하고 집계해 '기한 내 지급률' KPI를 계산할 수 있습니다. 사용자는 기한을 넘긴 청구서와 제때 지급한 청구서의 프로세스 흐름을 비교해 지연 지급으로 이어지는 패턴을 찾을 수 있습니다. 중요한 이유 기한 내 지급 성과를 쉽게 분석하고, 제때 지급된 청구서와 지연 지급된 청구서의 프로세스를 비교할 수 있습니다. 확보 방법 이 속성은 SAP에 없습니다. 데이터 변환 중 ClearingDate > PaymentDueDate 공식을 사용해 계산합니다. 예시 truefalse | |||
| 문서 유형 DocumentType | 공급업체 청구서나 대변 메모 등 회계 문서를 분류하는 코드입니다. | ||
| 설명 문서 유형은 SAP에서 다양한 업무 거래를 분류하는 데 사용됩니다. 청구서 처리에 흔히 쓰이는 유형으로는 일반 청구서의 'RE'와 공급업체 대변 메모의 'KG'가 있습니다. 문서 유형에 따라 전기에 사용할 번호 범위 등 전기 방식이 달라집니다. 분석 시 이 속성으로 특정 거래 유형만 필터링할 수 있습니다. 예를 들어 대변 메모 처리 프로세스는 일반 청구서 처리와 크게 다를 수 있습니다. 문서 유형으로 흐름을 구분하면 프로세스를 더 정확하고 의미 있게 파악할 수 있습니다. 중요한 이유 서로 다른 프로세스를 따르는 청구서와 대변 메모 등 업무 거래를 구분해 분석할 수 있습니다. 확보 방법 청구 문서 헤더 테이블 RBKP의 '문서 유형' 필드(BLART)입니다. 예시 일반 청구서공급업체 청구서공급업체 대변 메모 | |||
| 원천 시스템 SourceSystem | 데이터를 추출한 원천 시스템을 식별합니다. | ||
| 설명 원천 시스템 속성은 이벤트 데이터가 어디에서 왔는지 나타냅니다. 예를 들어 특정 SAP ECC 인스턴스 이름을 기록할 수 있습니다. 여러 ERP 시스템을 사용하거나 여러 원천의 데이터를 결합하는 환경에서 특히 중요합니다. 분석 시 이 속성을 사용하면 별도의 인스턴스에서 운영되는 시스템, 지역 또는 사업부별 프로세스와 성과를 구분할 수 있습니다. 데이터 계보를 명확히 하고 시스템별 필터링과 분석을 지원합니다. 중요한 이유 여러 시스템을 사용하는 환경에서 데이터 분리와 시스템별 성과 분석에 필요한 맥락을 제공합니다. 확보 방법 일반적으로 데이터 추출 과정에서 고정값으로 추가하며, SAP 시스템 ID(TADIR-SRCSYSTEM) 또는 해당 SAP 인스턴스에 수동으로 지정한 식별자를 사용합니다. 예시 SAPECC_PROD_EUECC_US_FINSAP_ERP_6_EHP8 | |||
| 종료 시간 EndTime | 활동이 완료된 시점을 나타내는 타임스탬프입니다. 순간적으로 발생하는 이벤트의 경우 시작 시간과 같습니다. | ||
| 설명 종료 시간 속성은 특정 활동이 완료된 시점을 나타냅니다. SAP의 여러 이벤트는 한 시점에 발생한 것으로 기록되므로 종료 시간과 시작 시간이 같습니다. 하지만 실제 작업 시간이 측정되는 승인 단계와 같은 활동은 작업이 끝난 시점을 종료 시간으로 기록할 수 있습니다. 별도의 종료 시간이 있으면 활동 처리 시간을 그 전에 발생한 대기 시간과 구분해 측정할 수 있습니다. 이를 통해 활동을 실행하는 데 걸린 시간과 사례가 활동 시작을 기다린 시간을 구분하고 리소스 효율성을 더 자세히 파악할 수 있습니다. 중요한 이유 활동 처리 시간을 계산해 활동 간 대기 시간과 구분할 수 있으므로 병목 분석을 개선할 수 있습니다. 확보 방법 시작 시간과 동일한 경우가 많으며 CDHDR-UDATE와 CDHDR-UTIME에서 도출합니다. 작업의 시작과 종료를 명시적으로 기록하는 workflow 로그를 사용할 수도 있습니다. 예시 2023-03-15T10:35:10Z2023-03-16T14:10:00Z2023-03-28T09:02:45Z | |||
| 지급 조건 PaymentTerms | 할인 기간과 만기일 등 공급업체와 합의한 지급 조건을 정의하는 코드입니다. | ||
| 설명 지급 조건은 청구서의 지급 기한과 조기 지급 시 적용되는 현금 할인 여부를 정합니다. 예를 들어 '30일 이내 지급' 또는 '10일 이내 지급 시 2% 할인, 그 외에는 30일 이내 지급'과 같은 조건이 있습니다. 이 속성은 '현금 할인 기회 손실' 대시보드와 '현금 할인 적용률' KPI의 기본 데이터입니다. 분석에서는 지급 조건과 전기일 및 지급일을 함께 사용해 할인을 받을 수 있었는지, 실제로 적용했는지 확인합니다. 지급 조건 준수 대시보드에도 중요한 데이터입니다. 중요한 이유 현금 할인 적용률을 분석하고 프로세스 지연이 재무에 미치는 영향을 파악하는 데 필요합니다. 확보 방법 청구 문서 헤더 테이블 RBKP의 '지급 조건 키' 필드(ZTERM)입니다. 예시 Z0010001NT30 | |||
| 총계정원장 계정 GeneralLedgerAccount | 청구 비용 또는 원가를 전기할 총계정원장 계정 번호입니다. | ||
| 설명 총계정원장(G/L) 계정은 계정과목표에서 청구서의 재무 영향을 기록하는 계정입니다. 재무 보고와 원가 관리에 중요한 데이터입니다. process mining에서 총계정원장 계정을 분석하면 프로세스 흐름을 재무 관점에서도 살펴볼 수 있습니다. '총계정원장 계정 사용 분석' 대시보드에서 지출 패턴을 파악하고, 청구서 계정의 잘못된 분류 가능성을 찾아내며, 비용이 올바른 부서나 프로젝트에 배분되는지 확인할 수 있습니다. 이를 통해 프로세스 실행과 재무 영향의 관계를 파악할 수 있습니다. 중요한 이유 프로세스에 재무 관점을 더해 비용 배분과 지출 패턴, 청구서 계정의 잘못된 분류 가능성을 분석할 수 있습니다. 확보 방법 항목 수준에서 확인할 수 있습니다. '총계정원장 계정 번호'(HKONT)는 구매 주문 청구서의 경우 청구 항목 테이블 RSEG에, 직접 FI 청구서의 경우 BSEG에 있습니다. 예시 630000655100741000 | |||
| 최종 데이터 업데이트 LastDataUpdate | 원천 시스템에서 프로세스 데이터를 마지막으로 새로 고친 시점을 나타내는 타임스탬프입니다. | ||
| 설명 이 속성은 가장 최근에 데이터를 추출하거나 업데이트한 날짜와 시간을 기록합니다. 개별 이벤트가 아닌 전체 데이터셋에 적용되어 데이터의 최신 상태를 명확히 보여줍니다. 대시보드 사용자와 분석가에게 중요한 메타데이터입니다. 분석 대상 기간을 파악하고 최신 정보를 바탕으로 의사결정을 내리는 데 도움이 됩니다. 데이터가 언제 갱신되었는지 알 수 있도록 대시보드에 눈에 띄게 표시하는 것이 일반적입니다. 중요한 이유 데이터가 최신인지 사용자에게 알려 분석과 의사결정이 최신 정보를 바탕으로 이루어지도록 합니다. 확보 방법 데이터 새로 고침 시 데이터 추출 도구 또는 ETL 도구가 이 값을 생성해 데이터셋에 추가합니다. 예시 2024-05-20T08:00:00Z2024-05-21T08:00:00Z2024-05-22T08:00:00Z | |||
| 통화 Currency | 송장 금액의 통화 코드입니다. | ||
| 설명 통화 속성은 청구 금액이 어떤 통화로 표시되는지 지정합니다. 예를 들어 USD, EUR, JPY 등이 있습니다. 이 속성은 청구 금액을 해석하는 데 필요한 맥락을 제공합니다. 특히 여러 통화를 사용하는 글로벌 조직에서 재무 데이터를 정확히 해석하고 집계할 수 있습니다. 통화별로 분석을 필터링하면 통화권에 따른 처리 효율이나 문제를 비교할 수 있습니다. 의미 있는 재무 집계를 위해 금액을 하나의 보고 통화로 환산해야 할 수도 있습니다. 중요한 이유 재무 금액을 정확히 해석할 수 있도록 필요한 맥락을 제공하며, 통화별 필터링과 분석도 지원합니다. 확보 방법 청구 문서 헤더 테이블 RBKP의 '통화 키' 필드(WAERS)입니다. 예시 USDEURGBP | |||
| 현금 할인 손실 여부 IsCashDiscountLost | 적용 가능한 현금 할인을 놓쳤는지 나타내는 계산된 플래그입니다. | ||
| 설명 지급 조건과 실제 지급일을 바탕으로 계산하는 불리언 속성입니다. '지급 조건'에 조기 지급 할인이 포함되어 있고 '반제일'이 할인 기간 종료 후라면 true로 설정됩니다. 프로세스 비효율로 발생한 재무 손실을 직접 측정합니다. 이 속성은 '현금 할인 기회 손실' 대시보드의 기본 데이터입니다. 처리 지연이 재무에 미친 영향을 쉽게 수치화할 수 있습니다. 이 플래그가 true인 사례를 필터링하면 분석 담당자가 할인을 놓치게 만든 프로세스 변형과 병목을 조사할 수 있어 프로세스 개선의 근거를 마련하는 데 도움이 됩니다. 중요한 이유 프로세스 지연으로 발생한 재무 손실을 직접 수치화해 청구서 처리 워크플로 개선의 근거를 마련합니다. 확보 방법 이 속성은 SAP에 없습니다. 데이터 변환 중 'PaymentTerms'를 해석하고 'ClearingDate'를 할인 만기일과 비교해 계산합니다. 예시 truefalse | |||
| 회사 코드 CompanyCode | 청구서를 처리하는 법인 또는 회사를 식별하는 코드입니다. | ||
| 설명 회사 코드는 SAP Financials의 기본 조직 단위로, 독립된 법인을 나타냅니다. 청구서를 포함한 모든 재무 거래는 특정 회사 코드로 전기됩니다. 이 속성을 사용하면 법인별로 프로세스를 나누어 분석할 수 있습니다. 기업 그룹 내 여러 회사의 프로세스 성과, 규정 준수 및 효율성을 비교하는 데 중요합니다. 대시보드에서 회사 코드별로 필터링하면 청구서 처리 KPI를 회사별로 확인할 수 있습니다. 중요한 이유 조직 내 여러 법인의 프로세스를 비교하고 성과를 벤치마킹할 수 있습니다. 확보 방법 청구 문서 헤더 테이블 RBKP의 '회사 코드' 필드(BUKRS)입니다. 예시 10002000US01 | |||
구매부터 지급까지의 송장 처리 활동
| 활동 | 설명 | ||
|---|---|---|---|
| 송장 데이터 수집 | SAP에서 송장 문서가 임시 저장 또는 최종 전기 상태로 처음 생성된 시점을 나타냅니다. 일반적으로 시스템에서 송장 수명 주기에 대해 기록되는 첫 이벤트이며, 프로세스 시작 시점으로 사용됩니다. | ||
| 중요한 이유 이 활동은 송장 처리의 엔드투엔드 주기를 측정하는 주요 시작점입니다. 이 시점부터 걸린 시간을 분석하면 초기 데이터 입력과 문서 생성 단계의 지연을 찾을 수 있습니다. 확보 방법 생성 타임스탬프는 SAP 테이블 BKPF의 CPUDT(회계 문서 입력일) 및 CPUTM(입력 시간) 필드에 기록됩니다. 기록 BKPF 테이블 헤더의 문서 생성 타임스탬프(CPUDT)를 사용합니다. 이벤트 유형 explicit | |||
| 송장 반제 | 지급 문서로 미결 부채가 반제되어 송장 수명 주기가 성공적으로 마무리되는 단계입니다. 지급이 실행되었음을 나타냅니다. | ||
| 중요한 이유 주요 종료 이벤트로서 전체 엔드투엔드 주기를 계산하는 데 중요합니다. 프로세스가 성공적으로 완료되었음을 확인하고 정시 지급 성과를 측정하는 데 사용됩니다. 확보 방법 송장 개별 항목 테이블 BSEG에 기록되는 명시적 이벤트입니다. 반제일은 AUGDT 필드에, 반제 문서 번호는 AUGBL 필드에 저장됩니다. 기록 송장 문서의 개별 항목에서 반제일(BSEG-AUGDT)을 사용합니다. 이벤트 유형 explicit | |||
| 송장 전기 | 송장이 총계정원장에 공식 기록되어 부채가 발생하는 주요 재무 이벤트입니다. 문서가 임시 저장 상태에서 정식 회계 전표로 전환됩니다. | ||
| 중요한 이유 전기는 송장의 유효성을 확인하는 주요 단계입니다. 지급을 위한 선행 조건이며 처리량을 보여주는 주요 지표입니다. 확보 방법 문서 헤더 테이블 BKPF에 기록되는 명시적 이벤트입니다. 타임스탬프는 전기일인 BKPF-BUDAT입니다. 이 시점부터 문서는 더 이상 임시 저장 상태가 아닙니다. 기록 임시 저장 상태가 아닌 문서(BKPF-BSTAT가 공란 또는 ' ')에는 전기일(BKPF-BUDAT)을 사용합니다. 이벤트 유형 explicit | |||
| 송장 취소 | 전기된 송장 문서를 취소하는 활동입니다. 원본 송장의 재무 영향을 상쇄하는 역분개 문서가 생성됩니다. | ||
| 중요한 이유 이 활동은 중요한 예외 및 재작업 경로를 보여줍니다. 취소 빈도와 사유를 분석하면 송장 검증 및 전기 프로세스의 구조적인 문제를 찾을 수 있습니다. 확보 방법 문서 헤더 테이블 BKPF에 기록되는 명시적 이벤트입니다. 취소된 문서의 헤더에는 취소 문서 번호(STBLG)와 회계연도(STJAH)가 포함됩니다. 기록 BKPF-STBLG에 값이 입력된 문서를 찾습니다. 이벤트 타임스탬프는 취소 문서의 전기일입니다. 이벤트 유형 explicit | |||
| 지급 보류 설정 | 송장 개별 항목에 보류가 설정되어 지급이 제한되는 활동입니다. 3자 대사 불일치로 자동 설정되거나 여러 사유로 수동 설정될 수 있습니다. | ||
| 중요한 이유 이 이벤트는 지급 보류 해결 기간을 측정하고 지급 지연의 근본 원인을 찾는 데 중요합니다. 가격, 수량 또는 필수 승인과 관련된 문제를 보여줍니다. 확보 방법 BSEG 테이블의 ZLSPR 필드(지급 보류 키)에 대해 변경 문서 로그(CDHDR 및 CDPOS)를 확인해 추적할 수 있는 명시적 이벤트입니다. 기록 BSEG-ZLSPR 값이 공란에서 공란이 아닌 값으로 변경될 때 변경 문서(CDHDR)에 기록된 타임스탬프입니다. 이벤트 유형 explicit | |||
| 송장 반려 | 승인 과정에서 송장이 반려된 상태를 나타냅니다. 일반적으로 수정 후 다시 제출해야 하므로 재작업이 발생합니다. | ||
| 중요한 이유 반려를 추적하면 잘못된 데이터나 정책 위반 등 반복되는 반려 사유를 파악할 수 있습니다. 재작업 규모를 측정하고 프로세스 개선이나 공급업체 교육이 필요한 영역을 찾는 데 도움이 됩니다. 확보 방법 일반적으로 SAP Business Workflow 로그에서 반려 단계로 확인할 수 있습니다. 특정 상태 변경이나 송장 문서에 추가된 메모를 통해 추론할 수도 있습니다. 기록 workflow 로그에 기록된 반려 단계의 타임스탬프 또는 반려를 나타내는 문서 상태 변경 시각입니다. 이벤트 유형 inferred | |||
| 송장 승인 | 지정된 권한자가 송장을 공식 승인해 전기 및 지급 단계로 진행할 수 있음을 나타냅니다. 일반적으로 워크플로의 마지막 단계입니다. | ||
| 중요한 이유 이 시점에서 승인 주기 시간 측정이 끝납니다. 승인 완료로 프로세스가 다음 단계로 진행되어 적시에 지급할 수 있으며, 승인자 간 업무량 분포를 분석하는 데도 도움이 됩니다. 확보 방법 일반적으로 SAP Business Workflow 테이블에서 승인 작업의 완료를 확인해 수집합니다. 또는 승인과 관련된 지급 보류가 해제된 시점으로 추론할 수 있습니다. 기록 workflow 로그에 기록된 승인 단계 완료 시각 또는 특정 지급 보류가 해제된 시각입니다. 이벤트 유형 inferred | |||
| 송장 승인 요청 | 송장이 공식 승인 워크플로에 제출된 시점을 나타냅니다. 이 정보를 수집하는 방식은 SAP Workflow 또는 타사 시스템의 구체적인 구현에 따라 크게 달라집니다. | ||
| 중요한 이유 이 활동은 송장 승인 주기 KPI의 측정을 시작하는 시점입니다. 승인 과정의 지연과 승인자별 성과를 분석하는 데 필요합니다. 확보 방법 일반적으로 SAP Business Workflow 테이블(예: SWW_WI2OBJ, SWWLOG)에서 특정 승인 작업의 시작을 확인해 수집합니다. 간단한 경우에는 사용자 정의 필드의 상태 변경으로 추론할 수 있습니다. 기록 송장 문서와 연결된 SAP workflow 로그 또는 사용자 정의 상태 필드를 분석해야 합니다. 이벤트 유형 inferred | |||
| 송장 임시 저장 | 송장이 SAP에 입력되었지만 아직 총계정원장에 전기되지 않은 상태를 나타냅니다. 재무 전기 전에 검토, 수정 또는 승인을 진행할 수 있는 임시 상태입니다. | ||
| 중요한 이유 송장이 임시 저장된 시점과 그 기간을 추적하면 전기 전 검증 및 승인 과정의 병목을 파악할 수 있습니다. 데이터 입력 시간과 재무 처리 시간을 구분하는 데도 도움이 됩니다. 확보 방법 BKPF 테이블의 문서 상태 필드 BSTAT를 기준으로 추론합니다. 값이 'V'(임시 저장 문서) 또는 'W'(변경 승인 대기 중인 임시 저장 문서)이면 임시 저장 상태를 나타냅니다. 기록 상태 필드 BKPF-BSTAT가 'V'인 문서를 찾습니다. 이벤트 타임스탬프는 생성일인 BKPF-CPUDT입니다. 이벤트 유형 inferred | |||
| 송장 지급 기한 초과 | 현재 날짜가 송장의 순 지급 기한을 지났고 아직 지급되지 않은 경우 발생하는 계산 이벤트입니다. 지급 기한은 지급 조건과 기준일을 바탕으로 결정됩니다. | ||
| 중요한 이유 정시 지급률 KPI를 모니터링하는 데 필요한 활동입니다. 연체 위험이 있는 송장을 미리 표시해 공급업체 관계 악화와 벌금 발생을 예방할 수 있습니다. 확보 방법 현재 날짜와 순 지급 기한을 비교해 계산합니다. 지급 기한은 기준일(BSEG-ZFBDT)과 지급 조건(BSEG-ZTERM)에서 산출합니다. 기록
이벤트 유형 calculated | |||
| 지급 보류 해제 | 송장 개별 항목의 지급 보류가 해제되어 지급 실행 단계로 진행할 수 있음을 나타냅니다. 이전에 확인된 문제가 해결되었음을 의미합니다. | ||
| 중요한 이유 이 활동으로 보류 기간 측정이 끝납니다. 보류 설정부터 해제까지 걸린 시간을 분석하면 문제 해결 프로세스의 효율성을 확인할 수 있습니다. 확보 방법 BSEG 테이블의 ZLSPR 필드(지급 보류 키)에 대해 변경 문서 로그(CDHDR 및 CDPOS)를 확인해 보류가 해제된 시점을 추적합니다. 기록 BSEG-ZLSPR 값이 공란이 아닌 값에서 공란으로 변경될 때 변경 문서(CDHDR)에 기록된 타임스탬프입니다. 이벤트 유형 explicit | |||
데이터 추출 안내
단계
- ABAP 프로그램 만들기: 트랜잭션
SE38또는SE80을 사용해 새 실행 프로그램을 만듭니다. 예를 들어Z_PM_INVOICE_EXTRACT를 사용할 수 있습니다. 적절한 제목을 입력하고 유형을 '실행 프로그램'으로 설정합니다. - 선택 화면 정의: 사용자가 데이터를 필터링할 수 있도록 프로그램에 선택 화면을 정의합니다. 주요 매개변수에는 회사 코드(
BUKRS), 회계연도(GJAHR), 전기일 범위(BUDAT), 애플리케이션 서버의 출력 파일 경로가 포함되어야 합니다. - 데이터 구조 선언: 최종 이벤트 로그를 저장할 내부 테이블 구조를 정의합니다. 이 구조에는 필수 및 권장 속성인
InvoiceNumber,활동,EventTime,UserName,VendorNumber,PurchaseOrderNumber,InvoiceAmount,PostingDate,PaymentDueDate,PaymentBlockReason,ClearingDate가 포함되어야 합니다. - 데이터 선택 로직 구현: 송장 데이터를 선택하는 핵심 ABAP 로직을 작성합니다. 여러 번의 선택 작업을 수행한 뒤 결과를 최종 이벤트 로그 테이블에 결합합니다.
- 먼저 선택 화면의 조건에 따라 기본 송장 테이블
BKPF,BSEG,RBKP,RSEG에서 머리글 및 항목 데이터를 선택합니다. - 각 송장에 대해 생성 타임스탬프를 기준으로 '송장 데이터 수집' 이벤트를, 전기 타임스탬프를 기준으로 '송장 전기' 이벤트를 생성합니다.
- 변경 문서 테이블
CDHDR및CDPOS를 조회해 지급 보류(BSEG의ZLSPR필드)와 관련된 변경 사항을 찾습니다. 관련 변경이 있을 때마다 '지급 보류 설정' 및 '지급 보류 해제' 이벤트를 생성합니다. BSEG테이블의 반제 문서(AUGBL)와 반제일(AUGDT)을 확인해 '송장 반제' 이벤트를 식별합니다.BKPF머리글의 역분개 문서(STBLG)를 확인해 '송장 역분개' 이벤트를 식별합니다.- '송인 승인 요청', '승인됨', '거부됨'과 같은 워크플로 이벤트를 수집하는 사용자 지정 로직을 구현합니다. 이 부분은 고객별 차이가 크므로 해당 워크플로의 테이블이나 상태 필드에 맞춰 코드를 조정해야 합니다.
- 먼저 선택 화면의 조건에 따라 기본 송장 테이블
- 계산 이벤트 생성: 프로그램 로직에서
송장 연체이벤트를 계산합니다. 미지급 송장의 지급 기한(PaymentDueDate)과 현재 날짜를 비교해 산출합니다. 지급 기한이 지난 경우 지급 기한을EventTime으로 지정해 이벤트를 생성합니다. - 이벤트 로그 테이블 채우기: 여러 데이터 소스에서 각 송장의 데이터를 수집하면서 형식을 맞춘 뒤 최종 내부 이벤트 로그 테이블에 추가합니다. 활동마다 한 행을 생성합니다.
- 데이터를 파일로 내보내기:
OPEN DATASET,TRANSFER,CLOSE DATASET문을 사용해 최종 내부 테이블의 내용을 선택 화면에 지정된 SAP 애플리케이션 서버 경로의 일반 파일로 씁니다. 세미콜론이나 탭과 같이 일관된 구분 기호를 사용해 CSV 파일을 만듭니다. - 추출 예약: 정기적으로 데이터를 추출하려면 원하는 선택 기준으로 프로그램 변형을 만들고 트랜잭션
SM36을 사용해 백그라운드 작업으로 예약합니다. - 출력 파일 가져오기: 트랜잭션
AL11을 사용해 SAP 애플리케이션 서버 디렉터리에서 생성된 파일을 찾습니다. 트랜잭션CG3Y를 사용해 파일을 로컬 컴퓨터로 다운로드합니다. - 업로드 준비: 프로세스 마이닝 도구에 업로드하기 전에 CSV 파일을 열어 머리글이 올바른지, 데이터 형식(특히 타임스탬프)이 일관적인지, 구분 기호가 예상한 값인지 확인합니다. 파일은 UTF-8 인코딩으로 저장해야 합니다.
구성
- 선택 조건: ABAP 보고서에는 필요한 조건을 설정할 수 있는 선택 화면이 있어야 합니다. 주요 필터는 다음과 같습니다.
Company Code (BUKRS): 추출 대상을 특정 법인으로 제한합니다.Posting Date (BUDAT): 추출 기간을 지정합니다. 한 번에 3~6개월씩 나누어 추출하는 것이 좋습니다.Document Type (BLART): 물류 송장용 'RE', 거래처 송장용 'KR' 등 관련 송장 문서 유형만 포함합니다.
- 출력 파일 경로: SAP 애플리케이션 서버에서 출력 파일을 생성할 전체 경로와 파일명을 지정하는 필수 매개변수입니다. 보고서를 실행하는 사용자에게 해당 디렉터리에 파일을 쓸 권한이 있어야 합니다.
- 성능 고려 사항: 대용량 데이터는 시스템 성능 저하를 막기 위해 사용량이 적은 시간대에 백그라운드 작업으로 실행해야 합니다. 로직에서는 필요한 필드만 선택하고, 가능한 경우 SAP 표준 데이터베이스 인덱스를 활용해야 합니다.
- 사전 요건 및 권한: 추출을 실행하는 사용자 또는 서비스 계정에는 다음 권한이 필요합니다.
- ABAP 보고서 실행 권한(
S_PROGRAM의 일부). BKPF,BSEG,RBKP,RSEG,CDHDR,CDPOS를 비롯한 재무 및 물류 테이블에 대한 읽기 권한.- 지정된 애플리케이션 서버 디렉터리에 파일을 쓸 권한(
S_DATASET). - 개발, 예약, 파일 검색에 필요한 트랜잭션
SE38,SM36,AL11,CG3Y에 대한 접근 권한.
- ABAP 보고서 실행 권한(
샘플 쿼리 abap
REPORT Z_PM_INVOICE_EXTRACT.
*&---------------------------------------------------------------------*
*& Tables for Selection Screen
*&---------------------------------------------------------------------*
TABLES: BKPF, RBKP.
*&---------------------------------------------------------------------*
*& Data Declarations
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_event_log,
InvoiceNumber TYPE belnr_v,
Activity TYPE string,
EventTime TYPE timestamp,
UserName TYPE uname,
VendorNumber TYPE lifnr,
PurchaseOrderNumber TYPE ebeln,
InvoiceAmount TYPE wrbtr,
PostingDate TYPE budat,
PaymentDueDate TYPE faedt,
PaymentBlockReason TYPE rstgr,
ClearingDate TYPE augdt,
END OF ty_event_log.
DATA: gt_event_log TYPE TABLE OF ty_event_log,
gs_event_log TYPE ty_event_log.
DATA: lt_bkpf TYPE TABLE OF bkpf,
ls_bkpf TYPE bkpf,
lt_bseg TYPE TABLE OF bseg,
ls_bseg TYPE bseg.
DATA: lt_rbkp TYPE TABLE OF rbkp,
ls_rbkp TYPE rbkp.
*&---------------------------------------------------------------------*
*& Selection Screen
*&---------------------------------------------------------------------*
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs OBLIGATORY,
s_gjahr FOR bkpf-gjahr OBLIGATORY,
s_budat FOR bkpf-budat.
PARAMETERS: p_fpath TYPE string OBLIGATORY DEFAULT '/usr/sap/tmp/invoice_events.csv'.
*&---------------------------------------------------------------------*
*& Start of Program Logic
*&---------------------------------------------------------------------*
START-OF-SELECTION.
" Select FI Invoices (e.g., Doc Type KR)
SELECT * FROM bkpf INTO TABLE lt_bkpf
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND budat IN s_budat
AND blart = 'KR'.
" Select MM Invoices
SELECT * FROM rbkp INTO TABLE lt_rbkp
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND budat IN s_budat.
* --- Process FI Invoices ---
LOOP AT lt_bkpf INTO ls_bkpf.
CLEAR gs_event_log.
gs_event_log-InvoiceNumber = ls_bkpf-belnr.
gs_event_log-PostingDate = ls_bkpf-budat.
SELECT SINGLE * FROM bseg INTO ls_bseg
WHERE bukrs = ls_bkpf-bukrs
AND belnr = ls_bkpf-belnr
AND gjahr = ls_bkpf-gjahr
AND koart = 'K'. " Vendor Line Item
IF sy-subrc = 0.
gs_event_log-VendorNumber = ls_bseg-lifnr.
gs_event_log-InvoiceAmount = ls_bseg-wrbtr.
gs_event_log-ClearingDate = ls_bseg-augdt.
" Calculate Due Date
CALL FUNCTION 'DETERMINE_DUE_DATE'
EXPORTING
i_bseg = ls_bseg
IMPORTING
e_faedt = gs_event_log-PaymentDueDate.
ENDIF.
" Activity: Invoice Data Captured
gs_event_log-Activity = 'Invoice Data Captured'.
CONVERT DATE ls_bkpf-cpudt TIME ls_bkpf-cputm INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Parked (if BSTAT = 'V')
IF ls_bkpf-bstat = 'V'.
gs_event_log-Activity = 'Invoice Parked'.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Posted
gs_event_log-Activity = 'Invoice Posted'.
CONVERT DATE ls_bkpf-budat TIME ls_bkpf-cputm INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Cleared
IF ls_bseg-augbl IS NOT INITIAL.
gs_event_log-Activity = 'Invoice Cleared'.
CONVERT DATE ls_bseg-augdt INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bseg-usnam_cl.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Becomes Overdue
IF gs_event_log-PaymentDueDate IS NOT INITIAL AND gs_event_log-PaymentDueDate < sy-datum AND ls_bseg-augbl IS INITIAL.
gs_event_log-Activity = 'Invoice Becomes Overdue'.
CONVERT DATE gs_event_log-PaymentDueDate INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = 'SYSTEM'.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Reversed
IF ls_bkpf-stblg IS NOT INITIAL.
DATA: ls_rev_bkpf TYPE bkpf.
SELECT SINGLE budat, usnam FROM bkpf INTO ls_rev_bkpf
WHERE belnr = ls_bkpf-stblg AND bukrs = ls_bkpf-bukrs AND gjahr = ls_bkpf-gjahr.
IF sy-subrc = 0.
gs_event_log-Activity = 'Invoice Reversed'.
CONVERT DATE ls_rev_bkpf-budat INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_rev_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
ENDIF.
ENDIF.
ENDLOOP.
* --- NOTE: The logic for MM invoices (from lt_rbkp) would be similar, joining RBKP with RSEG.
* --- NOTE: The logic for Payment Blocks and Workflow events requires reading change documents (CDHDR/CDPOS)
* --- or custom workflow tables. Below is a conceptual example for payment blocks.
* --- Conceptual Example for 'Payment Block Set' / 'Released' using Change Docs
* DATA: lt_cdhdr TYPE TABLE OF cdhdr, ls_cdhdr TYPE cdhdr,
* lt_cdpos TYPE TABLE OF cdpos, ls_cdpos TYPE cdpos.
* SELECT * FROM cdhdr INTO TABLE lt_cdhdr
* WHERE objectclas = 'BELEG' AND objectid IN (SELECT belnr FROM bkpf WHERE ...).
* LOOP AT lt_cdhdr.
* SELECT * FROM cdpos INTO TABLE lt_cdpos
* WHERE changenr = ls_cdhdr-changenr AND tabname = 'BSEG' AND fname = 'ZLSPR'.
* LOOP AT lt_cdpos.
* "... logic to create 'Payment Block Set' (if VALUE_NEW is not blank)
* "... or 'Payment Block Released' (if VALUE_NEW is blank) events.
* ENDLOOP.
* ENDLOOP.
* --- Conceptual Example for Workflow events ('Sent For Approval', 'Approved', 'Rejected')
* --- This part MUST be customized based on your specific workflow implementation (e.g., OpenText VIM, SAP WF).
* --- You would query the relevant workflow tables or status change tables here.
*&---------------------------------------------------------------------*
*& Write to File
*&---------------------------------------------------------------------*
END-OF-SELECTION.
DATA: lv_string TYPE string,
lv_header TYPE string.
" Create Header
lv_header = 'InvoiceNumber;Activity;EventTime;UserName;VendorNumber;PurchaseOrderNumber;InvoiceAmount;PostingDate;PaymentDueDate;PaymentBlockReason;ClearingDate'.
OPEN DATASET p_fpath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc = 0.
TRANSFER lv_header TO p_fpath.
LOOP AT gt_event_log INTO gs_event_log.
CONCATENATE gs_event_log-InvoiceNumber
gs_event_log-Activity
gs_event_log-EventTime
gs_event_log-UserName
gs_event_log-VendorNumber
gs_event_log-PurchaseOrderNumber
gs_event_log-InvoiceAmount
gs_event_log-PostingDate
gs_event_log-PaymentDueDate
gs_event_log-PaymentBlockReason
gs_event_log-ClearingDate
INTO lv_string SEPARATED BY ';'.
TRANSFER lv_string TO p_fpath.
ENDLOOP.
CLOSE DATASET p_fpath.
ELSE.
MESSAGE 'Error opening file.' TYPE 'E'.
ENDIF. 시작할 준비가 되셨나요?
이 템플릿을 활용하면 구매부터 지급까지의 송장 처리에서 유용한 인사이트를 얻고 개선을 추진할 수 있습니다. 지금 데이터 추출을 시작해 운영을 개선해 보세요.
지금 구매부터 지급까지의 송장 처리를 개선하세요
비효율을 찾아 송장 처리 주기를 30% 단축하세요.
신용카드가 필요하지 않습니다. 몇 분이면 설정할 수 있습니다.