솔루션 홈
일반회계

SAP 계정 업로드 — 엑셀 한 장으로 G/L 마스터 만들기

작성한 양식을 읽어 계정과목을 한 번에 생성·변경하고, 라인마다 성공 여부와 오류 사유를 돌려주는 화면입니다.

계정과목을 수십 개 새로 만들어야 할 때, 화면을 하나씩 열어 입력하면 하루가 갑니다. 더 큰 문제는 중간에 하나가 틀렸을 때입니다.

어디까지 들어갔는지 알 수 없어 처음부터 다시 확인해야 합니다. 그래서 업로드는 넣는 것보다 무엇이 왜 안 들어갔는지 돌려주는 것이 핵심입니다. 이 화면은 양식을 읽어 라인마다 다섯 가지를 검증하고, 통과한 줄만 표준 트랜잭션으로 처리한 뒤, 실패한 줄은 사유와 함께 남깁니다. 오류만 걸러 보고 고쳐서 다시 올리면 됩니다.

SAP 표준 구조를 그대로 이어받은 부분

  • 마스터 구조 — SKA1(계정과목표) · SKB1(회사코드) 그대로
  • 처리 방식 — 계정은 FS00, 텍스트는 FST2 BDC 로 표준 트랜잭션 경유
  • 입력값 점검 — BUKRS · KTOPL · WAERS · SPRAS
  • 결과 출력 — 계정별 성공 여부와 메시지 (사양서의 ALV 결과 목록)
항목내용
업무 영역재무회계(FI-GL) · 마스터 일괄 등록
Namespacezui5.glupload
셸 구조실행조건 영역(우측 실행) + 라인별 결과 목록, 오류만 보기 토글
화면 수조회·실행 화면 1개
데이터업로드 31행 (정상 26 · 오류 5) · 기존 마스터 16개
성격등록형(Batch Input) — 마스터 생성·변경은 표준 트랜잭션이 수행
UI 테마sap_horizon 단일 적용

실제 화면 7종 둘러보기

조건을 넣고 양식을 선택하면 내용이 올라옵니다 → 실행하면 줄마다 검증 후 처리되고 → 오류만 보기로 고칠 줄을 추립니다.

아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.

Main.view.xml
초기 화면 — 실행 조건과 안내
초기 화면 — 실행 조건과 안내 — 회사코드·계정과목표·통화·언어 네 가지가 필수 입력값입니다. 처리 유형은 계정 업로드와 텍스트 업로드 중 하나를 고릅니다. 실행 버튼은 조건 영역 오른쪽 끝에 있습니다.
파일 미선택
파일 없이 실행 — 사전 차단
파일 없이 실행 — 사전 차단 — 업로드 파일을 고르지 않고 실행하면 진행을 막습니다. 사양서의 '업로드 취소 혹은 에러 발생 시 메시지 출력'에 해당하는 처리입니다.
양식 적재
파일 선택 — 헤더 제외 후 적재
파일 선택 — 헤더 제외 후 적재 — 양식을 읽어 Header 행을 제외한 나머지가 목록에 올라옵니다. 이 단계에서는 아직 처리하지 않고 내용만 보여 줍니다.
실행 확인
실행 확인 — 대상과 T-code
실행 확인 — 대상과 T-code — 몇 행을 어떤 트랜잭션으로 처리할지, 어느 회사코드·계정과목표에 넣을지 확인하고 진행합니다.
처리 결과
실행 완료 — 생성·변경·오류 집계
실행 완료 — 생성·변경·오류 집계 — 전체 행수와 생성·변경·오류 건수를 함께 알려 줍니다. 오류가 있으면 성공이 아닌 경고로 표시해 그냥 지나치지 않도록 했습니다.
라인별 결과
라인별 결과 — 처리구분과 메시지
라인별 결과 — 처리구분과 메시지 — 줄마다 성공/오류, 생성/변경, 적용된 T-code 와 메시지가 붙습니다. 기존 마스터에 있으면 변경, 없으면 생성으로 자동 판정됩니다.
오류만 보기
오류만 보기 — 고칠 줄만 남기기
오류만 보기 — 고칠 줄만 남기기 — 실패한 줄만 걸러 보여 줍니다. 라인번호가 양식의 행 번호와 같아 엑셀에서 바로 찾아 고칠 수 있습니다.

조작 방법

  1. 회사코드 · 계정과목표 · 통화 · 언어 네 가지를 넣습니다. 하나라도 비면 실행 단계에서 막습니다.
  2. 처리 유형을 고릅니다. 속성까지 올리려면 G/L Acc. Upload, 명칭만 고치려면 G/L Text Upload 입니다.
  3. 양식 받기로 빈 양식을 내려받아 작성합니다. 헤더 1줄과 예시 1줄이 들어 있습니다.
  4. 파일 선택으로 작성한 양식을 올립니다. Header 행을 제외한 나머지가 목록에 표시됩니다.
  5. 실행을 누르면 라인별로 검증한 뒤 통과한 줄만 처리하고, 결과가 줄마다 붙습니다.
  6. 오류만 보기로 실패한 줄을 추리고, 결과 CSV로 전체 결과를 내려받아 수정합니다.

업로드 검증 규칙

업로드는 넣는 것보다 걸러 내는 것이 중요합니다. 라인마다 다음 다섯 가지를 점검합니다.

업로드 흐름
  1) 입력값 점검   BUKRS · KTOPL · WAERS · SPRAS
  2) 파일 적재     Header line 제외
  3) 라인 검증     아래 5가지
  4) 생성/변경 판정  기존 마스터 존재 여부
  5) BDC 처리      계정 → FS00,  텍스트 → FST2
  6) 결과 출력     라인별 성공 여부와 메시지
항목산식 · 규칙
E01 계정과목 형식8자리 숫자가 아니면 반려
E02 계정그룹계정과목표에 정의되지 않은 그룹이면 반려
E03 계정명단문(20자)이 비어 있으면 반려
E04 재무제표 구분대차 계정인데 대차대조표 표시가 없거나, 손익인데 표시가 있으면 반려
E05 계정통화회사코드 통화와 다르면 반려
생성 / 변경 판정기존 마스터에 있으면 변경, 없으면 생성

오류 메시지에 코드를 함께 남기는 이유

사유만 적으면 담당자마다 다르게 읽습니다. E02 처럼 코드를 붙이면 같은 오류가 반복될 때 무엇을 고쳐야 하는지 바로 합의됩니다. 결과 CSV 에도 코드가 함께 나가므로 여러 사람이 나눠 수정할 때 기준이 됩니다.

처리 유형 2종

같은 업로드지만 무엇을 바꾸느냐에 따라 거치는 트랜잭션이 다릅니다.

T-code처리 유형대상포함 속성
FS00G/L Acc. Upload계정과목표(SKA1)와 회사코드(SKB1) 속성을 함께 생성·변경계정그룹 · 재무제표 구분 · 계정통화 · 필드상태그룹 · 미결관리
FST2G/L Text Upload계정 텍스트만 변경계정명 단문 · 장문

텍스트 업로드를 따로 둔 덕분에 명칭만 고칠 때 다른 속성이 함께 바뀌는 사고를 막습니다.

실행 조건

필드필수설명
회사코드 BUKRS필수마스터를 넣을 회사코드
계정과목표 KTOPL필수계정과목표 키
통화 WAERS필수계정통화 검증 기준
언어 SPRAS필수계정 텍스트 언어
처리 유형필수G/L Acc. Upload (FS00) / G/L Text Upload (FST2)
업로드 파일필수작성한 양식. [양식 받기]로 헤더와 예시를 내려받을 수 있음

결과 컬럼

컬럼의미 · 표시
라인양식의 행 번호. 오류 라인을 엑셀에서 찾는 기준
상태성공 / 오류 — 색으로 구분
계정과목G/L 계정 코드
처리구분생성 / 변경 — 기존 마스터 존재 여부로 판정
계정명(단문) · (장문)20자 · 50자 텍스트
계정그룹 · 재무제표 · 대차계정계정 성격을 정하는 속성
계정통화 · 필드상태그룹 · 미결관리회사코드 레벨 속성
T-code실제 처리에 쓰인 트랜잭션
메시지성공 내용 또는 오류 코드와 사유

보조 기능

컬럼의미 · 표시
오류만 보기실패한 줄만 남겨 수정 대상을 추림
결과 CSV전체 라인을 상태·메시지와 함께 내려받아 담당자에게 전달
양식 받기헤더 1줄과 예시 1줄이 담긴 빈 양식

SAP 표준 기능 매핑

마스터 생성·변경은 표준 트랜잭션이 수행합니다. 이 화면은 그 앞뒤에서 검증과 결과 정리를 맡습니다.

표준역할이 화면에서의 확장
FS00G/L 계정 개별 처리양식의 각 줄을 BDC 로 넘겨 일괄 처리
FST2계정 텍스트 변경텍스트만 바꿀 때 별도 유형으로 분리
SKA1 · SKB1계정과목표·회사코드 마스터생성·변경 대상 테이블
T001회사코드계정과목표·통화 확인 기준
FS10N 관점계정 잔액업로드 후 계정이 실제로 쓰이는지 확인하는 후속 화면

운영 데이터 소스 매핑

항목SAP 원천비고
계정과목표 마스터SKA1계정그룹 · 재무제표 구분 · 텍스트
회사코드 마스터SKB1계정통화 · 필드상태그룹 · 미결관리
회사코드T001계정과목표(KTOPL) · 통화(WAERS) 확인
처리 방식BDC FS00 / FST2표준 트랜잭션 경유
결과 출력ALV 결과 목록라인별 성공 여부와 메시지

도입 시 확인이 필요한 부분

계정그룹별 필수 필드는 필드상태그룹 설정에 따라 달라집니다. 여기서 검증하는 다섯 가지는 공통 항목이고, 실제 도입 때는 회사의 필드상태 설정을 읽어 필수 항목을 동적으로 점검하는 편이 안전합니다. 미결관리나 조정계정처럼 나중에 바꾸기 어려운 속성은 업로드 전에 한 번 더 확인하는 절차를 두길 권합니다.

참고 CDS 뷰

업로드 결과를 확인하거나 기존 마스터를 조회할 때는 계정과목표와 회사코드 속성을 묶은 뷰가 편합니다.

@AbapCatalog.sqlViewName: 'ZCGLMASTER'
@EndUserText.label: 'G/L 계정 마스터 (Z)'
define view Z_C_GL_ACCOUNT_MASTER
  as select from ska1 as Coa
    inner join      skb1 as CcData   on  Coa.ktopl = CcData.ktopl
                                     and Coa.saknr = CcData.saknr
    left outer join skat as AcctText on  Coa.ktopl = AcctText.ktopl
                                     and Coa.saknr = AcctText.saknr
                                     and AcctText.spras = $session.system_language
{
  key Coa.ktopl        as Ktopl,
  key Coa.saknr        as Saknr,
  key CcData.bukrs     as Bukrs,
      Coa.ktoks        as Ktoks,
      Coa.xbilk        as IsBalanceSheet,
      AcctText.txt20   as ShortText,
      AcctText.txt50   as LongText,
      CcData.waers     as Waers,
      CcData.fstag     as Fstag,
      CcData.xopvw     as OpenItemMgmt,
      CcData.mitkz     as ReconAcctType
}

업로드 후 결과를 확인하거나 기존 마스터를 조회할 때 쓰는 참고용 설계입니다. 생성·변경은 표준 트랜잭션이 담당합니다.

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.m.Page + 실행조건 영역 · 결과 목록
실행조건sap.m.Input · sap.m.RadioButtonGroup — 우측 끝에 실행
결과 목록sap.ui.table.Table — 라인·상태·계정 3컬럼 고정
상태 표시RowSettings.highlight · sap.m.ObjectStatus — 성공·변경·오류 구분
진행 단계sap.m.ObjectStatus — 파일 선택 전 · 실행 대기 · 실행 완료
오류 필터버튼 토글로 오류 라인만 남김
CSVBlob + UTF-8 BOM — 양식 · 결과 2종

적재와 실행을 나눈 이유

파일을 고르는 즉시 처리하면 잘못된 파일을 골랐을 때 되돌릴 수 없습니다. 적재 단계에서는 내용만 보여 주고, 실행은 확인 창을 거쳐 별도로 누르게 했습니다. 무엇이 몇 줄 들어가는지 눈으로 보고 나서 진행하는 순서입니다.

파일 구성

경로역할
manifest.json앱 디스크립터 — 앱 ID(zui5.glupload) · ko 로케일 · sap_horizon
Component.js실행조건 모델 · 결과 모델 초기화
view/Main.view.xml실행조건 + 라인별 결과 목록
controller/Main.controller.js입력값 점검 · 파일 적재 · 실행 · 오류 필터 · CSV
model/ModelMock.js양식 파싱 자리 · 라인 검증 · 생성/변경 판정 · BDC 처리
model/formatter.js상태 · 처리구분 · 재무제표 구분 · 플래그 포맷터
i18n/i18n_ko.propertiesko 로케일 리소스 — 오류 메시지 포함
localdata/glupload.json업로드 양식 샘플과 기존 마스터

검증 결과

화면 구성에 쓴 데이터는 신규·변경·오류가 섞인 업로드 양식과 기존 마스터입니다.

데이터규모구성
업로드 양식31행정상 26행 (생성 20 · 변경 6) · 오류 5행
기존 마스터16개변경 판정 기준
검증 규칙5종형식 · 계정그룹 · 계정명 · 재무제표 구분 · 통화
검증 항목결과
정상 라인의 계정과목 코드는 8자리 숫자통과
정상 라인의 계정그룹이 계정과목표에 정의됨통과
계정그룹 유형과 재무제표 구분 일치통과
정상 라인의 통화가 회사코드 통화와 동일통과
계정명 단문·장문 존재 · 단문 20자 이내통과
처리구분 생성은 기존에 없고, 변경은 존재통과
오류 라인의 오류코드가 정의 목록에 존재통과
E01~E05 각 오류가 실제 위반 조건과 일치통과
라인번호 연속·중복 없음통과
화면 렌더링 — 파일 미선택 차단 → 적재 → 실행 → 오류 필터7/7

계정과목·명칭은 모두 검증용 데이터입니다.

자주 묻는 질문

오류가 섞여 있으면 전체가 취소되나요?

아닙니다. 줄 단위로 처리합니다. 통과한 줄은 들어가고 실패한 줄만 남습니다. 전체를 되돌리면 정상인 줄까지 다시 올려야 해서 오히려 손이 많이 갑니다. 대신 실행 결과에 오류 건수를 함께 띄워 그냥 지나치지 않도록 했습니다.

생성과 변경을 따로 고르지 않아도 되나요?

네. 계정과목이 기존 마스터에 있으면 변경, 없으면 생성으로 자동 판정합니다. 담당자가 신규인지 아닌지를 매번 확인해 표시할 필요가 없고, 표시를 잘못해서 생기는 오류도 사라집니다.

계정 업로드와 텍스트 업로드를 왜 나눴나요?

명칭만 바꾸는 일이 잦기 때문입니다. 계정 속성은 그대로 두고 텍스트만 고칠 때 전체 속성을 다시 채워 올리면 실수로 다른 값이 바뀔 수 있습니다. 텍스트 업로드는 FST2 로 텍스트만 건드립니다.

라인번호는 어디에 쓰나요?

양식의 행 번호와 같습니다. 오류 라인 27번이 나오면 엑셀 27행을 열어 고치면 됩니다. Header 행을 제외한 뒤에도 번호가 양식과 어긋나지 않도록 맞춰 뒀습니다.

SAP 표준 기능과 어떻게 이어지나요?

마스터 생성·변경 자체는 FS00 과 FST2 표준 트랜잭션이 수행합니다. 이 화면은 그 앞단에서 양식을 읽고 검증해 통과한 줄만 넘기며, 뒷단에서 라인별 결과를 모아 돌려주는 역할을 합니다. 데이터는 SKA1·SKB1 표준 구조 그대로 남습니다.

마스터 일괄 등록, 지금 쓰는 SAP 위에서 확장해 보세요

무엇이 왜 안 들어갔는지 줄 단위로 돌려주면, 마스터 정비에 드는 시간이 크게 줄어듭니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

계정 업로드G/L 마스터SKA1SKB1FS00FST2OpenUI5