[SAP CO] CO T-CODE 정리

 

계속 있을 때마다 업데이트 할 예정 

카테고리 T-Code 기능 설명
CO 설정 OKKS 관리회계 변경
CO 설정 KEBC 경영단위 변경
CO 설정 OKE6 관리회계 영역 세팅 전송
CO 설정 KE3I 경영단위 전송
CO 설정 KSES 배부구조
CO 설정 KEI3 PA전송구조
CO 설정 TKA01 관리회계영역 마스터 테이블
CO 설정 OKP1 기간잠금
CO 설정 KL13 액티비티유형 리스트
CO 설정 KEA5 특성 편집
코스트센터 OKEON 표준 계층구조 변경
코스트센터 OKENN 표준 계층구조 조회
코스트센터 KS01 코스트 센터 생성
코스트센터 KS02 코스트 센터 변경
코스트센터 KS03 코스트 센터 조회
코스트센터 KS04 코스트 센터 삭제
코스트센터 KS05 코스트 센터 : 변경 사항 조회
코스트센터 KS07 코스트 센터 개략 엔트리 실행
코스트센터 KS12 코스트 센터 변경
코스트센터 KS13 코스트 센터 : 마스터 데이터 리포트
코스트센터 KS14 코스트 센터 삭제
코스트센터 KSH1 코스트 센터 그룹 생성
코스트센터 KSH2 코스트 센터 그룹 변경
코스트센터 KSH3 코스트 센터 그룹 조회
손익센터 KE51 손익 센터 생성
손익센터 KE52 손익 센터 변경
손익센터 KE53 손익 센터 조회
손익센터 KE54 손익 센터 삭제
손익센터 KE55 손익 센터 데이터 일괄 유지 보수
손익센터 KCH1 손익 센터 그룹 생성
손익센터 KCH2 손익 센터 그룹 변경
손익센터 KCH3 손익 센터 그룹 조회
손익센터 KCH5N 손익 센터 표준 계층구조 변경
손익센터 KCH6N 손익 센터 표준 계층구조 조회
통계주요지표 KK01 통계 주요 지표 생성
통계주요지표 KK02 통계 주요 지표 변경
통계주요지표 KK03 통계 주요 지표 조회
통계주요지표 KK04 통계 주요 지표 : 마스터 데이터 리포트
통계주요지표 KK03DEL 통계 주요 지표 삭제
통계주요지표 KAK2 통계 주요 지표 변경(뷰)
통계주요지표 KAK3 통계 주요 지표 조회
통계주요지표 KBH1 통계 주요 지표 그룹 생성
통계주요지표 KBH2 통계 주요 지표 그룹 변경
통계주요지표 KBH3 통계 주요 지표 그룹 조회
통계주요지표 KB31N 통계 주요 지표 값 입력
통계주요지표 KB33N 통계 주요 지표 값 조회
통계주요지표 KB34N 통계 주요 지표 값 취소 역 분개
통계주요지표 KBC3 화면 변형 : 통계 주요 지표
원가요소 FS00 원가요소 조회, G/L계정 조회
원가요소 KA05 원가 요소 : 변경 사항 조회
원가요소 KA23 원가 요소 : 마스터 데이터 리포트
원가요소 KA24 원가 요소 삭제
원가요소 KAH1 원가 요소 그룹 생성
원가요소 KAH2 원가 요소 그룹 변경
원가요소 KAH3 원가 요소 그룹 조회
값필드 KEA6 값필드 편집
값필드 KEU1 PA사이클 생성
값필드 KEA0 경영단위 유지보수. 값필드 추가
값필드 KECM 값 필드 분석(영업쪽하고)
내부오더 KO01 내부 오더 생성
내부오더 KO02 오더 변경
내부오더 KO03 내부 오더 조회
내부오더 KO04 오더 관리자
내부오더 KOH1 오더 그룹 생성
내부오더 KOH2 오더 그룹 변경
내부오더 KOH3 오더 그룹 조회
내부오더 KOT3 오더 유형 조회
내부오더 KO12 오더 계획 값 변경(전체, 연도)
내부오더 KO13 오더 계획 값 조회(전체, 연도)
내부오더 KO14 내부 오더에 대한 계획 -> 계획 복사
내부오더 KO15 내부 오더에 대한 실제 -> 계획 복사
내부오더 KO22 오더 예산 변경
내부오더 KO23 오더 예산 조회
내부오더 KO24 오더 보충 변경
내부오더 KO25 오더 보충 변경
내부오더 KO26 오더 리턴 변경
내부오더 KO30 오더 가용성 통제 활성화
내부오더 KO88 실제 정산 : 오더
내부오더 KOB1 오더 : 실제 개별 항목
내부오더 KOB2 오더 : 약정 개별 항목
내부오더 KOB4 오더 : 예산 개별 항목
내부오더 KOB6 오더 : 계정 금액 개별 항목 정산
내부오더 KOBP 오더 : 계획 개별 항목
내부오더 KOCF 오더 약정금액 차기 이월
내부오더 KOCO 오더에 대한 예산 이월
내부오더 KOL1 오더 리스트 (마스터 데이터)
내부오더 KONK 오더 번호 범위 유지 보수
내부오더 KABL 오더 : 계획 리포트
내부오더 KAB9 오더 : 계획 리포트 (백그라운드 처리)
내부오더 KOC2 오더 : 관련 리포트 조회
내부오더 KOC4 오더 : 원가 분석
배부/사이클 KSW5 실제 정기재전기 실행
배부/사이클 KSW6 정기재전기 실행 내역 추적
배부/사이클 KSW3 정기재전기 사이클 조회
배부/사이클 KSV5 실제 1차 배부 (Distribution)
배부/사이클 KSU5 실제 2차 배부 (Assessment)
배부/사이클 KSU6 평가 실행 내역 추적
배부/사이클 KEU5 실제 평가 실행 PA CYCLE
배부/사이클 KEU6 평가 실행 PA CYCLE 내역 추적
배부/사이클 KSVB 계획 1차 배부 Distribution
배부/사이클 KSUB 계획 2차 배부 Assessment
assessment KSU7 계획 평가 사이클 생성
assessment KSU8 계획 평가 사이클 변경
assessment KSU9 계획 평가 사이클 조회
assessment KSUA 계획 2차 요소 배부 삭제
assessment KSUB 계획 2차 요소 배부 실행
distribution KSV5 실제 배부 실행
distribution KSV1 실제 배부 생성
distribution KSV2 실제 배부 변경
distribution KSV3 실제 1차 요소 배부 조회
distribution KSV6 실제 1차 요소 배부 : 개요
distribution KSV7 계획 배부 생성
distribution KSV8 계획 배부 변경
distribution KSV9 계획 1차 요소 배부 조회
distribution KSVB 계획 배부 실행
distribution KSVC 계획 1차 요소 배부 : 개요
리포트(KE30) KER1 주요지표체계 생성
리포트(KE30) KE34 리포트페인터 서식변경
리포트(KE30) KE30 리포트
리포트(KE30) KE3I 경영단위전송(리포트, 서식, 주요지표체계 등)
결산 MMRV 물류기간확인
결산 MMPV 물류기간오픈
표준원가 CK11N 표준원가 개별 추정
표준원가 CK11N 표준원가 개별 추정 결과 조회
표준원가 KKF6N 원가취합처 일괄생성
표준원가 MF30 제품원가취합처 예비원가 생성
표준원가 CKM3 자재가격 분석

[SAP] SE16N 테이블 데이터 삭제 (&SAP_EDIT / GD-EDIT / SE16N_INTERFACE)

SAP의 장점 중 하나는 데이터의 신뢰성이다.

데이터를 추가,수정,삭제를 하면 일반적으로 로그가 남고, 이러한 이력들은 나중에 감사자료에 사용이 된다.

이런 철저한(?) 시스템 때문에 SAP를 사용하는 회사의 재무제표는 신뢰도가 높다.

 

SAP는 원칙적으로 데이터(특히, 운영서버)를 삭제하지 말라고 한다. 

하지만 프로젝트나 운영업무를 하다보면 데이터를 삭제해야 하는 경우가 생긴다. 그럴 때 SE16N EDIT 모드 등을 사용하여 데이터를 삭제한다. (회바회, 케바케)

 

데이터를 삭제하는 방법들 중에 어떤 것들은 변경 로그를 남기고 어떤 것들은 변경 로그를 남기지 않는다.

이게 나중에 감사에서 큰 이슈( 재무제표 조작가능성 의심 등)가 된다. 특히, 현업이 운영서버에서 직접 데이터를 수정 / 삭제 하는 것은 정말 큰일이기 때문에 외주사에 데이터 삭제를 요청하거나 증빙을 남긴다. (회바회, 케바케)

 

오늘은 그런 어쩔 수 없는 상황에서 데이터를 삭제하려고 할 때, 하는 방법에 대해서 정리했다.

여러가지 방법들 중에 많이 사용하는 방법은 3가지이다.

  1. &SAP_EDIT
  2. SE16N 디버깅으로 편집모드 접속
  3. CALL FUNCTION SE16N_INTERFACE 사용

하나씩 살펴보자.

1. &SAP_EDIT (S/4HANA 불가)

T-CODE: SE16N 에 접속해 테이블 명을 검색한다.

 

좌측 상단에 &SAP_EDIT을 입력 후, ENTER를 누르면 우측의 엔트리 유지보수에 체크표시가 생긴다.

만약에 아무 반응이 없거나 권한 에러가 뜬다면, 그것은 S/4HANA를 사용해서 생기는 문제이다.

 

 

실제로 노츠에서 찾아볼 수 있는데 S/4HANA 이후로 데이터의 정합성을 유지하기 위해서 “&SAP_EDIT”를 활용하여 데이터를 수정하는 부분을 비활성화 했다는 것이다. 단, 특정 권한 오브젝트가 있는 사람에게는 사용을 허락할 수 있다고 한다. ( 해결 방법은 노츠에 있으니 필요하면 찾아보도록 하자. )

 

그래서 사람들이 가장 많이 사용하는 방법이 SE16N 디버깅 방법이다.

2. SE16N 디버깅으로 편집모드 접속

T-CODE : SE16N 에 들어가고 테이블 명을 입력해준다.

CBO 테이블은 바로 편집모드로 들어가지고, 스탠다드 테이블은 디버깅에서 EDIT 모드로 접속해야 한다. 

 

먼저 CBO 테이블의 경우,

F8 실행시키면 편집모드로 바로 들어가진다.

 

애초에 엔트리 유지보수에 체크가 되어있다

 

빨간색 박스 부분처럼 편집 기능인 행 추가, 삽입, 삭제의 버튼들이 존재한다.

그러면 스탠다드 테이블을 봐보자.

 

대표적인 스탠다드 테이블로 BKPF로 예시를 들어보자.

스크린 샷을 보면은 엔트리 유지보수가 비활성화 되어있다. F8 을 눌러서 실행시키자.

 

실행 화면에서 ALV의 버튼 중 편집 기능의 버튼들이 존재하지 않는다.

스탠다드 테이블의 경우, 데이터의 정합성이 더욱 중요하기 때문에 그렇다.

그래서 보통 비공식 방법으로 편집모드를 들어가는거다.

 

방법은 정말 간단하다.

 

명령에 필드에 디버깅 ‘/H’ 를 입력하고 ENTER를 누른다.

 

그러면 아래에 디버깅을 설정했다는 메세지가 뜬다.

 

이후 F8 또는 시계 모양을 통해 실행시키면 디버깅 모드로 진입하게 된다.

디버깅 모드에 들어왔으면 아래 빨간색 박스에다가 편집모드 명령어를 입력해줄거다.

 

화면처럼 입력해주면 된다.

GD-EDIT 입력 후 ENTER         → 연필 클릭 → X 입력 후 ENTER

GD-SAPEDIT 입력 후 ENTER → 연필 클릭 → X 입력 후 ENTER

 

입력을 다했으면 F8 키를 누르거나 사진의 빨간색 박스 부분을 클릭한다.

 

그러면 편집 모드로 들어오고, 원하는 데이터를 클릭하고 삭제한 뒤 저장 버튼을 클릭하면 된다. 

 

저장 버튼을 클릭하면 변경 내역을 알려주고, 체크 박스를 누르면 저장이 완료된다. 

 

3. CALL FUNCTION SE16N_INTERFACE 사용

마지막으로 펑션 모듈 사용법이다.

보통 SE16N에 권한이 없는 경우 사용한다. 

 

이 펑션모듈에서 수행된 모든 변경 사항은 SE16N_CD_KEY 및 SE16N_CD_DATA 테이블의 기록이 된다. 

변경 로그가 기록되기 때문에 담당자와 상의하고 사용해야 한다. 

해당 Function에는 여러개의 Import가 존재한다. 빨간색 박스로 표시한 3개의 매개변수를 사용하면 된다. 

사용하기 위해서는 Z프로그램으로 하나의 CBO 프로그램을 만들면 된다. 

 

START-OF-SELECTION을 써주고 그 아래에 Function을 적어준다. 

이후, 프로그램을 실행하면 SE16N 편집모드와 동일한 결과를 볼 수 있다. 

 

하지만, BKPF처럼 수십만건이 조회될 수 있는 스탠다드 테이블의 경우 조건을 걸고 싶을 수도 있다. 

그럴 때는 SE16N_SELTAB 를 사용하면 된다.  

필드는 레인지 변수와 동일하다. 나 같은 경우는 SE16N_SELETAB의 TABLE TYPE을 사용하였다. 

 

위처럼 SELTAB에 원하는 조건을 추가하면 된다.

해당 코드는 회사코드가 1000번이고, 회계연도가 2024년~2025년 사이인 데이터들이 조회하기 위한 조건이다. 

 

오늘도 파이팅이다! 

[SAP FI] SAP FI 용어 정리

 SAP FI 주요 용어

영문 국문 내용/뜻
Additional account assignment 추가계정 지정 계정번호, 금액과 포스팅 키(Posting key) 이외에 개별항목(Line item)에 이루어지는 모든 선택적 입력사항, 지급조건, 지급방법, 코스트 센터(Cost center) 등이 포함된다.
Additional Tax 부가세 판매 및 구입에 따른 세금(부가가치세)이외에 부과되는 세금. 이러한 세금으로는 투자세(Investment tax), 결제세 (Clearing tax) 또는 베네룩스국가들에서 사용되는 회계제도하에 부과되는 세금 등이 있다.
Adjustment charge 수정차변 기표 세금수정금액(Tax adjustment amount)과 같이 이미 기록된 하나이상의 거래에 추가적인 차변기표를 하는 것.
Adjustments 조정 한 계정에 이미 전기된 개별항목 (Line item)을 다른 계정으로 전기하는 것. 예를 들어 결산을 하는 경우에 조정이 이루어 진다.
Allocation concept 배분 한 계정내의 개별항목들(Line items)을 어떻게 구분하여 표시할 것인가에 관한 것.유사어 : 구분 (Sorting concept)
Assets (총)자산 기업이 소유하고 있는 재화, 채권 및 법률상의 권리(대차대조표의 왼쪽에 나타남)
Balance 잔액 한 계정이나 전표의 차변과 대변의 차이. 만일 대변이 차변보다 크면 대변잔액 이라고 하고, 차변이 크면 차변잔액 이라고 함.
Balance audit trail 잔액변화 기록 특정기간의 한 계정에 관한 모든 거래의 기록. 잔액변화기록은 기초잔액과 기말까지의 계정의 변화를 보여준다.
Balance carried forward 전기이월액 전년도로부터의 계정잔액의 이월. 대차대조표의 계정잔액만이 이월된다.
Balance check 잔액검토 전표가 올바로 입력되었는가를 확인하는 절차. 전표의 차변금액은 반드시 대변금액과 같아야 한다.
Balance sheet 대차대조표 자산, 부채, 자본의 계정잔액을 목록화한 보고서
Balance sheet account 대차대조표계정 반대어 : 손익계산서계정(Profit and loss account )
Balance sheet adjustments 대차대조표 조정 대차대조표를 만들기전의 준비작업. 다음과 같은 작업들이 포함된다 :· 외화로 표시된 채권, 채무 및 고정자산의 평가 및 조정· 조정계정(Reconciliation account)에 변화가 있는 채권 및 채무의 조정· 대변잔액이 있는 Customer계정이나 차변잔액이 있는 Vendor계정의 조정· 만기일(Maturity date)에 따른 채권, 채무의 장, 단기 구분
Balance verification 잔액확인 전표가 올바로 입력되었는가를 확인하는 과정 . 차변금액은 반드시 대변잔액과 같아야 한다.
Bank buying price 은행매입율 은행이 재화, 외환이나 증권을 구입하는 교환율.
Bank collection procedure 은행회수 절차 채권자가 채무자로부터 서면으로 (은행을 통한) 채권회수승인을 받는 특별한 절차. 은행이 직접 입금을 해주는 경우 이러한 승인을 받아야 한다.
Bank direct debiting procedure 은행직접 입금절차 채무자가 자기의 은행구좌로부터 직접 (거래처구좌로)입금을 하라고 서면으로 자신의 거래은행에 지시를 하는 특별한 절차.
Bank master data 은행마스터데이타 은행과 관련된 거래를 수행하기위해 필요한 은행에 관한정보. 이것은 은행 디렉토리에 저장되며, 필요한 모든 은행에 관한 정보를 갖고 있다. 은행 마스터 데이타에는 은행이름, 주소와 그 나라에 고유한 사항 등이 포함된다.
Bank selling price 은행매도율 은행이 재화나 외환, 증권 등을 매도하는 교환율.
Baseline date for payment 지급기준일 지급조건에 있어서의 기준일.
Bill discounting 어음할인 참고 : Discounting (할인)
Bill of exchage 환어음 본래의 법률상의 거래에서 파생된는 것으로 추상적인 문서의 형태로 지급을 약속하는 것.
Bill of exchange collection (환)어음추심 회수 어음대금을 회수하는 방법중의 하나로서 은행이 만기에 지급인에게 어음을 제시하는 일을 인수하는 것. 은행이 어음회수를 인수하게 되면 고객에게 회수비용(수수료)를 부과하게 된다.
Bill of exchange deposit (환)어음 대금 회수기록 어음대급의 회수는 SAP R/3시스템에서 다음과 같이 기록된다;· 만기전 할인· 만기결제· 어음의 양도(수출업무에서)
Bill of exchange discount 어음할인 참고 : 할인 (Discounting)
Bill of exchange list (환)어음 목록 모든 어음채권에 대하여 만기일, 금액, 발행인(수취인)의 이름과 주소, 이전 보유자의 이름과 주소, 지급지, 지급인의 이름과 주소 등을 기록한 것.
Bill of exchange payment request 어음발행 요청 고객에게 채무를 어음으로 지급할 것을 요청하는 것. 이 절차는 스페인, 이태리, 프랑스에서 보편적으로 쓰임. 어음발행요청은 SAP 시스템에서 주의항목(Noted item)으로 기록된다.
Bill of exchange receivable 받을어음 (또는 미수금중 어음상의 채권) Customer로부터 회수하기로 되어있는 어음. 차용증서(IOU)와 유사함.
Bill of exchange usage (환)어음의 대금회수 방법 SAP R/3에서는 다음과 같이 구분한다.· 할인을 위한 제시· 추심회수률을 위한 제시· 어음의 양도(Ractoring or forfeiting, 수출업무에서)
Branch account 지점계정 SAP R/3에서 Customer나 Vendor의 본점과 지점의 관계를 표시하기 위해 사용하는 계정. 지점계정으로 입력된 구매요청서, 배달증명서, Invoice등은 본점계정으로 전기된다. 모든 지점계정은 반드시 본점계정에 연결되어 있다.
Budgeted balance sheet 예산대차 대조표 어느 특정일에 모든 계획들 (판매계획, 생산계획 , 투자계획, 인적자원게획, 현금흐름표)을 고려하여 만든 대차대조표.
Business area 활동영역(사업부) 특별한 활동을 수행하는 회사내부의 부서와 같이 하나의 회사코드내의 경제적 단위로서 내부대차대조표나 내부손익계산서를 만드는 경우에 사용된다. 이러한 보고서들은 법률상의 요건들 (일반적으로 인정된 회계원칙)을 충족시키는 것은 아니다.유사어 : 손익센터 (Profit center)(주 : 사업부와 반드시 일치하는 개념은 아니나 FI측면에서 회사단위이하에서 관리하고자 하는 하나의 회사조직상의 단위를 지칭하는 것으로 이해하면 될 것임.)
Cash concentration 현금집중관리 현금집중관리에있어서는 여러 은행 구좌들의 잔액이 사전에 정한 최소잔액을 초래하는 경우 하나의 목표계정(Target account)으로 집중되어 관리된다. 결과적으로 목표계정은 현금관리잔액 (Cash management closing balance)을 유지하게 되어 여러가지의 재무적 투자활동에 사용된다.
Cash discount 현금할인 사전에 약정된 특정기간내에 채무자가 대금지급을 하는 경우의 지급금액의 감소액 (사전에 약정한 이자상당액을 차감한 금액을 지급하게 됨)
Cash discount base amount (Cash discount basis) 현금할인기준금액 현금할인의 대상이 되는 원본 금액
Cash discount terms 현금할인조건 특정기간내에 지급이 이루어지는 경우 현금할인을 받을 수 있는 권리. SAP R/3에서는 3개까지 지급조건을 사용하여 여러 형태의 현금할인을 부여할 수 있도록 해준다.
Cash forecast 현금예측 현금예측은 유동성의 측면에서 보조부계정들의 변화모습을 보여준다. 현금예측은 현금으로 회수되거나 지급될 금액과 관련된 기대되는 현금흐름에 기초를 두고 이루어 진다.
Cash management and forecast 현금관리및 예측 유동성 혹은 준유동성 재무자원에 관한 중, 단기적 접근.유사어 : 현금관리포지션 (Cash management position)
Cash management position 현금관리포지션 현금관리포지션은 은행계정의 단기적인 변화모습을 보여준다. 이러한 표시는 다음의 두가지 원칙으로부터 자료를 가져온다.· 현금관리와 예측과 관련된 G/L 계정의 FI 기표· 지급통지 (Payment advice)와 같은 계획목적으로 입력된 메모기록(Memo record)
Cashed checks 수표대금회수보고 현금관리포지션은 은행계정의 단기적인 변화모습을 보여준다. 이러한 표시는 다음의 두가지 원칙으로부터 자료를 가져온다.· 현금관리와 예측과 관련된 G/L 계정의 FI 기표· 지급통지 (Payment advice)와 같은 계획목적으로 입력된 메모기록(Memo record)
Change document 변경사항기록문서 마스터 레코드, 테이블, 전표에서의 변경 (수정)사항을 담고 있는 문서.
Chart of accounts index 계정과목일람표목록 한 Client내에서 사용되는 모든 계정과목일람표의 목록.
Check with bill of exchange 수표지급부 환어음 구매자금융을 할 수 있게 해주는 금융절차 (독일에서 보편적으로 사용 ). 구매자는 수표로 대금을 지급하는 동시에 판매자에게 환어음을 발행하도록 한다. (구매자가 환어음을 만들어 판매자가 발행인으로서 어음상에 서명을 하는 형식을 취한다. ) 구매자는 동 환어음을 인수하여 은행에 어음을 제시하여 (환어음상에 구매자는 수취인으로도 표시되어 있는 것으로 보임) 할인을 함으로써 구매자금의 차입의 효과를 얻는다.참고 : 반환어음 (Returned bill of exchange)
Clearing 반제 계정내의 미결사항을 정리 (예 : 지급 )하는 절차. 미결항목은 계정의 반대쪽 차변 또는 대변에 동일한 금액을 입력함으로써 반제된다. 예 : 고객이 대금을 지불하면 이와 관련된 외상매출금이 반제된다.유사어 : 정산 (settle)
Clearing account 관리목적용 임시계정 일시적인 기표가 이루어지는 계정. 관리목적용 임시계정은 다음과 같은 이유로 반복적으로 반제가 이루어지는 보조계정이다 :· 거래의 시간차이 (미송장입고 재고자산계정, 미입고 매입채무계정)· 조직상의 업무배분 (은행정리계정)· 불분명한 거래유사어 : 중간계정
Clearing business area 반제업무영역 업무영역간의 채권과 채무를 계산하기 위해 사용되는 전표상의 추가계정지정 .
Clearing function(procedure) 반제기능(절차) 미결계정을 정리하는 기능 (절차). 시스템은 두가지 기능을 제공한다 : 계정의 반제(Clearing an account)와 반제기표(Clearing with posting: 미결항목을 반제하기 위해 전표를 전기하는 것).계정을 반제하는 경우, 개별항목들은 같은 화폐로만 정리가 가능하며 추가적인 기표는 할 수 없다. 이 기능은 관리목적용 임시계정 (Clearing account)을 정리하는데 사용된다. 하지만 반제기표에서는 기표가 가능하다. 예를 들어, 대금회수기표를 함으로써 관련된 매출채권을 정리한다.
Clearing tax 결제세 몇 나라에서 부가가치세이외에 부과하는 세금. Vendor가 계산을 하여 부가가치세가 면제되는 Customer에게 부과된다. Vendor는 거래징수한 세금을 과세당국에 납부해야 한다.
Clearing transaction 반제거래 대금의 회수 또는 수표의 지급과 같이 반제절차를 수행하게 하는 거래.
Closing(operations) 결산(마감)절차 일일마감, 월말결산, 연말결산에 필요한 모든 절차의 준비와 수행.
Collection (매출채권)회수 만기가 된 매출채권, 특히 어음의 회수.
Collection procedure 회수절차 만기가 된 매출채권, 특히 어음의 회수.
Commitments 약정사항 다음과 같은 모든 형태의 약정사항과 부채 :· 미실행 주문 (Outstanding orders, 확인된 주문에 대한 배달약속)· 미실행 구매주문 (Open purchasing orders, 주문에 대한 인수약속 )· 어음채무 (Bill liability, 은행의 총어음사용한도승인금액 )
Company code 회사코드 독립적인 회계단위. 법률상으로 요구되는 대차대조표와 손익계산서는 회사코드수준에서 이루어 진다. 독립적인 회사들의 계정들을 동시에 관리하기 위해서 하나의 Client에 대해 여러개의 회사코드를 만들 수 있다.
Company code currency 회사코드통화 해당 회사에 적용되는 기준통화참고 : 현지통화 (Local currency)
Contigent claims 우발채권 대차대조표에 표시되지 않은 채권. 지급보증을 받은 금액이 한 예이다.
Contigent liability 우발채무 대차대조표에 표시되지 않은 우발상황이나 채무, 어음상의 피소구권, 지급보증, 제품보증 등이 포함된다.
Control account 통제계정 외상매출금, 외상매입금, 고정자산계정과 같이 보조에 기록된 거래금액의(부분) 합계를 관리하는 G/L계정.참고 : 조정계정 (Reconciliation account)
Control totals 합계통제 전표금액이 올바로 입력되었는지를 확인하기 위하여 사용하는 합계금액. 기표를 하는 경우 시스템이 자동적으로 합계통제금액을 계산한다.
Controlling 통제 경영의사결정과 그 수행을 준비하기위한 회사경영의 하위기능.
Conversion date 환산일 하나의 금액을 다른 통화로 환산하는 기준일.
Conversion rate 환율 두 통화의 교환비율로 하나의 통화를 다른 통화로 환산하는 경우에 사용된다.
Corporate income tax 법인세 소득세의 일종으로서 당해과세기간 즉 사업년도에 기업이 획득한 수익과 비용의 차액 즉 이익에 대해 부과되는 국세
Correspondence (거래처간)왕복문서 회사로 도착되거나 회사에서 송부한 (거래처간) 왕복문서, 주문확인서, 지급통자, 독촉장 등이 포함된다.
Costs 원가 재화나 용역의 생산 및 판매를 위해 필요한 유무형의 경제적 재화의 사용가치.
Country variant 국가고유특성 특정나라의 거래를 입력하기 위한 그 나라 고유의 거래입력화면의 버전.
Credit control area 신용관리영역(여신관리영역) 고객에 대한 채권 한도를 측정하고 점검하는 회사내의 조직단위.신용관리 영역은 하나 이상의 회사코드를 포함할 수 있다.하지만 하나의 회사코드를 하나 이상의 신용관리영역에 지정할 수는 없다.
Credit limit 신용한도(여신한도) 고객에게 부여할 수 있는 최대 신용금액.
Credit memo 대변메모 손상된 제품의 반환과 같이 Customer로부터의 채권을 줄이는 거래.이와 반대로 Vendor에게 상품을 반환하는 경우의 차변메모(Debit memo)는 채무액을 줄여 준다.
Currency 통화 한 나라의 법적인 지불수단.
Customer 고객 회사로부터 재화나 용역을 구입하고 대가를 지불하는 개인이나 회사.(주 :SAP R/3에서는 반드시 일반적인 상거래의 거래대상이 아닌 경우에도 보조부와 마스터 레코드를 통하여 관리를 할 필요가 있는 자산계정 (예 : 전도금의 대상을 customer로 부르기도 한다)
Customer master record 고객 마스터 레코드 판매를 기록하는데 필요한 고객에 대한 모든 정보를 포함하고 있는 데이타 레코드.
Daily closing 일일마감 기업의 경영활동 결과를 일단위로 회계처리하여 집계함
Day-end closing 일일마감  
Debit memo(direct debiting) procedure 직접입금에 의한 대금회수절차 은행으로부터의 직접입금(Direct debiting)에 의한 대금회수절차· 직접입금절차 : 참고 : 은행직접입금절차 ( Bank direct debiting procedure)· 회수절차 : 참고 : 은행회수절차(Bank collection procedure)
Debtor 채무자 참고 : 어음지급자 (Drawee)
Direct debiting procedure 직접차변절차 고객 송장을 전자문서방식으로 회수하는 방법에는 2가지가 있다.1)직접차변절차방식(Direct debiting procedure)참고: 은행직접차변절차(Bank direct debitingprocedure)2)은행회수방식(Bank collection)참고: 은행회수절차(Bank collectionprocedure)
Discount ledger 어음할인장 모든 어음에 대하여 만기일, 금액, 발행인의 이름 및 주소, 이전 보유자의 이름과 주소, 지급지, 지급인의 이름과 주소, 할인내역 등을 기록하는 장부.
Discounting 어음할인 만기전에 (환)어음이나 수표를 은행에 제시하는 것.은행은 만기일까지의 이자상당액과 수수료를 공제하고 금액을 지급한다.
Document 증빙 (FI에서는 특별한 언급이 없는 경우 전표로 해석하는 것이 무방함 ) 거래의 증거.원시증빙 (Original document)과 SAP R/3 증빙과는 차이 있음.원시증빙에는 Invoice나 은행원장 (Bank statement) 등이 있음.SAP R/3증빙에는 (회계)전표, 견본전표 (Sample document), 반복입력전표 (Recurring entry document) 등이 있음.회계전표는 시스템에서 원시증빙을 반영하여 준다.다른 DP증빙은 입력을 편리하게 해주는 역할을 한다.
Document currency 전표통화 전표 기표시의 사용통화
Document date 원시거래일 원시증빙 ( 예 :Iinvoice)이 생성된 날짜.원시거래일은 거래기록일 (Posting date)과 틀릴 수 있음.
Document entry 전표입력 전표를 SAP R/3시스템으로 수동 또는 자동으로 입력하는 것.수동입력은 관련돤 거래에 따라 거래의 입력을 위해 특별히 고안된 몇가지의 화면들을 통하여 이루어진다.자동입력은 다이알로그 인터페이스 (Dialog interface)를 통하여 수행된다.
Document header 표제부 원시거래일 (Document date)이나 전표번호와 같이 전표전체에 적용되는 정보를 갖고 있는 전표의 부분.
Document number 전표번호 한 회계연도에 있어서 하나의 회사코드내의 각각의 전표를 구분하여 주는 key.
Document principle 전표작성원칙 기표는 항상 전표의 형태로 이루어진다는 원칙.SAP R/3에서는 이것을 종종 전표없이는 기표없다(No posting without a document) 라고 표현한다.전표는 하나의 완성된 단위로 보관되며 데이타 베이스에서 별도로 이관 (Archive)되기 전까지 항상 화면에 표시하는 것이 가능하다.
Document type 전표유형 기표되어야 할 거래와 어떤 형식의 계정을 계정에 기표를 할 수 있는가 (예 : Customer 계정, Vendor계정, G/L계정 )를 구분하여 주는 key.전표유형은 전표의 filing을 통제하고 전기되어야 할 계정유형 (Account type )을 결정하여 준다.
Down payment 계약금(선수금, 선급급 ) 아직 생산되거나 제공되지 않은 재화나 용역에 대한 지급액.계약금은 대차대조표상에서 다른 채권이나 채무와 별도로 표시된다.즉 지급한 계약금은 자산으로, 지급받은 계약금은 부채로 재무제표에 표시된디.
Down payment request 계약금지급요청 어느 특정시점에 계약금을 지급하여 달라는 요청.계약금지급요청은 시스템에서 별도로 저장된다.계약금지급요청은 월 차변 및 대변잔액을 새로운 금액으로 수정하지는 않지만 (참조 : 주의항목 (Noted item)) 독촉이나 자동지불 거래시에 이용된다.
Drawee(of a bill of exchage) (환어음의) 지급자(인수자) (어음의 ) 지불요구를 받은자.지급자는 어음의 만기일에 약속한 금액을 지불할 의무가 있다.
Drqwer(of a bill of exchage) (환어음)의 발행인 환어음을 발행하는 자.발행인은 지급자에게 어음대금을 지급할 것을 지시하며 미래에 발생할 수 있는 소구에 대하여 2차적인 책임을 진다.만일 지급자가 어음대금을 상환하지 않으면 채무를 부담하게 된다.
Due date 만기일 채무자가 채권자에게 상환을 해야 하는 기일.특히 어음거래를 시스템에 입력하는 경우에는 반드시 만기일을 입력해야 한다.
Due date for net payment 무현금할인지급만기일 현금할인을 받을 수는 없는 상태이지만 미지급채권을 지급해야 하는 만기일
Due date interest calculation 만기이자계산 참고 : 개별항목이자계산 (Item interest calculation)
Dunning area 독촉영역 독촉절차를 위해 사용되는 회사코드내의 조직단위.독촉절차의 관리와 독촉장의 송부는 독촉영역별로 분리되어 수행된다.독촉영역은 부서, 유통채널, 판매조직, 손익센터 (Profit center) 또는 활동영역 (Business area) 등으로 정의할 수 있다.
Dunning block 독촉방지 상환기한이 지난 개별 매출채권에 대한 지급이행을 실시하도록 촉구하는 것을 막음.
Dunning block indicator 독촉방지표시자 특정 Customer계정이나 개별항목들 (Line items)에 대하여 독촉절차가 수행되지 않도록 하는 표시자.독촉방지표시자는 Customer의 마스터 레코드나 개별항목에 입력시킬 수 있다.
Dunning key 독촉구분키 미결 항목이나 통지항목 (Notified item, 예 : 지급통보된 항목 ) 등과 같이 별도로 독촉절차를 취해야할 항목을 구분해주는 key.
Dunning level 독촉수준 한 항목에 대해 몇번 독촉을 하였는가를 특정하는 자리수.
Dunning procedure 독촉절차 어떻게 Customer나 Vendor를 독촉할 것인가에 관한 절차.각각의 절차는 독촉수준의 수, 독촉의 빈도, 독촉장의 문구 등을 결정하여 준다.유사어 : 독촉유형 (Dunning type)
Entry, automatic 자동입력 특정 유형의 거래를 입력하는 경우에 시스템이 관련되 자료를 자동으로 계산하여 전기하는데 다음과 같은 경우가 해당됨.· 매입/매출부가세· 외환차손익· 현금할인비용/이익
Exchange rate 환율 상이한 통화간의 금액상 전환비율
Exchange rate difference 외환차손익 외화표시자산, 부채를 국내 통화로 환산하는 경우 발생하는 차이.
Expense 비용 기업의 경영활동에 수반하여 발생된 또는 발생된 것으로 간주되는 재화나 용역의 소비에 해당되는 금액
Export credit insurance 수출신용보험 고객이 지급불능상태에 빠질 경우에 발생하는 손실에 대비한 보험.장기매출채권에서 주로 발생한다.
Factoring 팩토링 무역에서 언급되는 재무활동의 한 형태.은행 또는 금융회사가 해당회사의 매출채권 또는 환어음을 구입해주므로써 그 회사에게 현금을 지급하는 형태.참고: Forfeiting
Field status 필드상태 입력화면상의 필드가 단지 입력준비상태인가 혹은 반드시 입력을 해야 하는가를 특정하는 표시자.필드상태는 주로 G/L계정과 포스팅키 (Posting key)에 관계된다.
Financial budgeting 재무예산 판매계획, 생산계획, 구매계획, 투자계획, 인적자원계획 등의 결과나 요구사항을 고려한 이용가능한 재무적 자원을 중, 장기적으로 이용하여 만든 것.
Fiscal year 회계연도 회사가 정기적으로 대차대조표와 손익계산서를 작성하는 기간으로 일반적으로 12개월임.12개월보다 적은 기간을 하나의 회계연도로 하는 것도 허용됨.
Foreign currency 외국통화 하나의 회사코드의 국가에서 쓰이는 통화 (자국통화, Local currency)이외의 통화 .
Foreign currency balance sheet account 외화계정 외화로 관리되는 계정.예를 들어 외화계정은 외화은행계정을 나타내는 데에 사용된다.
Foreign currency valuation 외화평가(외화환산) 외화로 기표된 자산 및 부채의 값을 자국통화로 계산하는 절차.외화평가는 개별적으로 , 즉 미결항목수준에서 발생한다.한 계정이 미결항목으로 관리되지 않는 경우, 계정잔액이 평가된다.
Forfeiting(factoring) 매출채권(어음)의 특수양도 무역에서 사용되는 금융의 한 종류.안전성이 충분히 있는 경우 은행이나 금융기관에게 수출업자가 매출채권이나 어음을 상환청구불능조건으로 (은행이나 금융기관이 매출채권의 회수에 따른 위험을 인수하게 된다.) 양도하고 은행등은 수출업자에게 현금을 지급한다.수출업자는 이를 통하여 추가적인 유동성을 확보하게 되고 매출채권은 대차대조표에 표시되지 않는다.
General ledger 총계정원장 모든 총계정원장의 계정을 갖고 있는 장부.대차대조표와 손익계산서는 총계정원장을 근거로 하여 만들어 진다.
General ledger account 총계정원장 계정 총계정원장에서 관리되는 계정과목
General ledger account master record 총계정원장 계정 마스타 레코드 G/L계정의 관리나 데이타의 입력을 통제하는 정보를 갖고 있는 데이타레코드 통화 등이 한 예이다.
Group 그룹 하나의 회사 (Controlling company)에 의해 공통적인 관리를 받는 법률상으로 독립된 회사의 집합.법률상으로 그룹은 연결재무재표를 작성하여야 한다.(주 : 우리나라의 경우 연결기업회계기준과 주식회사 의부감사에 관한 법률에 의하여 연결재무재표의 작성범위가 규정되어 있다.)
Guarantee 보증 이해당사자인 권리자 갑에 대한 또다른 이해당사자인 의무자 을의 의무 불이행시 이에 대해 제3자가 대신하여 책임질것을 약속함.
Guarantee of payment 지급보증 지급보증제공자 (Guarantor)가 제3자 (주채무자)의 채권자에게 주채무자의 의무이행을 책임질 것을 약속하는 계약.지급보증에 재무제표에 대한 주석사항으로 공시된다.
Head office account 본점계정 SAP R/3내의 Customer나 Vendor에게 존재하는 본점과 지점의 관계를 나타내는데에 사용되는 계정.구매요청서, 배달증명서 (Deliveries), Invoice는 지점계정에 기록이 되지만, 반제는 본점계정을 통하여 이루어진다.
Input tax 매입부가가치세 판매처에 의하여 부과되는 세금.매입부가가치세는 과세당국에 환급을 요청할 수 있다.
Intercompany document number 관계회사전표번호 법률적 또는 사실적으로 특정한 관계가있는 회사간의 거래에서 발생하는 모든 전표에 하나의 번호가 부여된다.
Intercompany posting 관계회사간 기표 두개 이상의 회사코드가 관련되는 기표.시스템은 관련되는 각 회사코드에 대해 전표를 생성하여 준다.관계회사간 거래를 사용하여 중앙집중적인 판매나 지급(Central sales or payment)을 기록하게 된다.
Interest 이자 타인의 재화를 이용하는 대가로 지불하는 금전적인 반대급부
Interest on arrears 연체이자 채무지급의 만기일이 지난 경우에 Customer에게 부과하는 이자.
Interest on the balance 계정잔액이자계산 어떤 계정잔액에 대하여 이자를 계산하는 절차.예를 들어 종업원대여금에 대한 이자를 이 기능에 의하여 계산한다.만기가 지난 Vustomer계정등에 대해 연체이자를 계산하는 것과는 구별된다.
Investment tax 투자세 몇 나라에서 자본투자에 대해 부과하는 세금.
Invoice 송장 판매하는 재화나 용역의 내역, 수량, 금액 및 부가가치세 등과 같은 정보를 Customer에게 보여주는 증빙. (세금계산서, 송장 등)
Invoice reference 송장연결번호 지급조건을 복사 (Copy)하고 올바른 항목에 대해 지급보증을 하기위해, 개별항목(Line item)과 기표된 Invoice의 개별항목사이를 연결하는데 사용된다.송장연결 번호는 시스템이 전표의 개별 항목에 invoice의 전표번호를 부여함으로써 만들어진다.예를 들어 부분지급(Partial payment)이나 Invoice와 관련된 대변메모 (Credit memo)의 경우에 사용된다.
Item interest calculation 개별항목이자계산 하나의 개별항목의 만기일과 지급일사이의 기간에 대한 이자계산.유사어 : 만기일이자계산 (Due date interest)
Items 항목 참고 : 개별항목 (Line items)
Journal 분개목록 한 기간의 모든 전기사항을 열거한 것으로 언제나 적시에 생성될 수 있다.
Ledger 원장 시스템이 유지하고 있는 관련되는 계정잔액들을 모은 것.예를 들어 시스템에서는 항상 G/L계정에 대한 원장을 유지하고 있다.
Liabilities 부채 기업이 부담하고 있는 채무
Line item 개별항목 기표되는 거래에 관한 자세한 내역을 기록하는 전표의 한 부분으로서 금액, 계정번호, 차, 대변의 지정과 기표될 거래에 관한 특별한 사항 등을 포함하고 있다.
Line item display 개별항목표시 계정내의 개별항목의 표시.이에 대한 전제조건은 계정들이 개별항목표시가 되도록 관리되어야 한다는 것이다.시스템에 의하여 Customer나 Vendor 계정에 있어서는 항상 개별항목표시가 가능하다.하지만 G/L계정의 개별항목표시를 하기위해서는 그 계정의 마스터 레코드에 미리 설정을 해 놓아야 한다.
Liquidity 유동성 개인이나 회사가 예정된 지급의무를 충족시킬 수 있는 능력.
List of charts of accounts 계정과목일람표목록 Client내에서 사용될 수 있는 모든 계정과목 일람표의 목록.
Local currency 현지통화 그 나라의 원장들이 관리되고 있는 회사코드의 통화 (회사통화, Country currency).반대어 : 외국통화 (Foreign currency)
Local currency amount 현지통화금액 회사통화로 기록이 되어 있는 금액.만일 어떤 금액이 외국통화로 생성이 되면, 시스템이 자동적으로 현지통화로 환산을 한다.
Month-end closing 월차결산 유사어 : 주기적인 결산 (Periodic closing)
Monthly debits and credits 월 차변금액과 대변금액 한 계정에 전기된 모든금액의 합계로서, 거래기록대상기간 (Posting period)과 차변 및 대변으로 구분되어 표시된다.각 거래기록대상기간의 잔액과 누적잔액도 표시된다.
Net (invoicing) procedure 현금 할인 차감 후순 금액 기록 절차 Invoice를 전기할 때 기대되는 현금 할인 금액을 자동적으로 차감하여 원가나 재고 자산을 기록하는 절차.예를 들면 이 기능을 이용하여 현금 할인을 차감한 정확한 고정자산의 취득 금액으로 전기하는 것이 가능하게 된다.유사어 : 현금 할인 차감 후 순 금액 기표(Net posting)구매처 현금 할인 차감 후 순금액 기록 절차 (Vendor net procedure)
Net posting 현금 할인 차감 후 순금액기록 절차 참고 : 현금 할인 차감 후 순금액 기록 절차(Net procedure)
Noted items 비망항목 계정잔액에 영향을 미치지 않는 (계정잔액을 수정하지 않는 ) 특별한 항목.각각의 비망항목에 대해 시스템은 전표를 생성한다.계정내의 다른 항목들과 함께 비망항목을 화면표시하는 것이 가능하다.지급프로그램이나 독촉프로그램은 계약금지급청구와 같은 비망항목들을 처리한다.유사어 : Statistical items
Offsetting entry 상대계정입력 복식부기의 원리에 따라 거래를 기표하는 경우의 반대(상대)계정 (차변이나 대변) 의 입력.
One-time account 일회용계정 거래가 한번 혹은 매우 드물게 이루어지는 거래상대방을 관리하는 일회용계정.모든 일회용계정에는 하나의 특별한 마스터 레코드가 필요하다.주소나 은행관련자료와 같은 거래상대방에 대한 데이타는 마스터 레코드에는 입력이 되지 않고 전표 자체에만 입력이 된다.
Open item management 미결항목관리 한 계정내의 미결항목은 같은 계정내의 다른 항목에 의해 반제가 되도록 하는 것.한 계정내의 개별항목을 반제하는 경우 차변금액은 반드시 대변금액과 같아야 한다.따라서, 계정잔액은 항상 미결항목의 합계이다.
Original document 원시증빙 기표가 정확함을 증명하는 역할을 하는 증빙.
Output tax 매출부가가치세 생산이나 매매의 경우 고객에게 부과되는 세금.과세당국에 납부할 금액이 된다.
Partial payment 부분지급 미결된 Invoice금액의 일부만을 지급하는 것.
Payables 채무 은행차입금, 매입채무, 선수금과 같은 회사의 확정된 부채로서 발생원인, 금액, 만기일 등이 관련된다.
Payee, alternative 대체수취인 본래 채무액을 지급받아야 할 Vendor가 아닌 자로서 지급을 받는 자.예 : 채권의 양도
Payment advice 지급통지 물품의 수령, 지급액의 수령, 신용장 (무역거래시)의 수령 등을 문서로서 통지하는 것.
Payment block 지급방지표시자 개별항목이나 한 계정에 대해 지급프로그램 (Payment program)에 의한 자동지급이 되지 않도록 하는 표시자.지급방지표시자는 Customer나 Vendor의 마스타 레코드 또는 개별항목에 표시할 수 있다.
Payment history 지급추이 Customer의 매출채권 발생, 지급, 만기초과, 현금할인 등에 대한 일정기간 누적자료.
Payment history analysis 지급추이분석 Customer에 대하여 만기일을 지나서 지급한 경우나 현금할인을 활용한 경우 등에 관한 분석.
Payment method 지급방법 지급을 수행하는 방법 (수표, (환)어음, 외국은행을 통한 이체 등 )
Payment notice 지급내역확인요청 지급사실을 확인하거나 지급금액의 차이 또는 지급액의 해당항목을 확실히 밝혀줄 것을 요청하기위해 고객이나 내부부서에 의사전달을 하는 것.
Payment on account 계정지정지급 특정 Invoice나 특정거래를 지정되지 않고 하나의 계정에 대해 이루어진 지급액.이것은 계약금이나 부분지급과 다르다.
Payment transactions 지급거래 채권의 회수 또는 채무의 지급을 처리하는 것.
Period-end closing 기간말결산 참고 : 월말결산 (Month-end closing)
Planned item 계획항목 예상되는 회수액이나 지급액을 계획항목으로 입력한다.이러한 항목들은 현금예측과 관련된다.
Planning group 계획그룹 현금관리와 예측에 있어서 Customer와 Vendor를 계획그룹으로 지정하는데, 이러한 계획그룹은 다음과 같은 사항과 관련되는 특성.거래의 위험이나 형식 등을 반영한다.· Customer : 은행회수· Customer : 위기영역 (Crisis area)· Vendor : 연결그룹의 Member이렇게 함으로써 현금의 유입과 유출에 관한 예측의 신뢰성에 따라 현금예측을 구분하여 표시하는 것이 가능해진다.
Planning level 계획수준 계획자료의 원천.계획수준은 다음과 같은 전형적인 재무거래를 반영한다.· 은행계정에의 FI기표· 관리목적용 임시계정 (Clearing account)에의 FI기표· 확인/미확인된 지급통지 (Payment advice)계획수준은 현금관리포지션과 현금예측을 좀 더 분명하게 표시하게 해준다 : 계획수준은 자료의 원천을 설명하여 줌으로써 그 신뢰성을 추정하는 것을 가능하게 해 준다.
POR procedure 피오알(POR)지불요청절차 스위스에 본부를 두고 있는 회사에 대하여 Swiss Postal Service가 사용하는 지불요청절차.POR 사용자는 그들의 Vendor 마스터 레코드에 POR번호를 부여받는다.
Posting block 기표방지 계정에 기표되는 것을 막는 표시자.한 계정에 대하여 모든 회사코드에 대해 한꺼번에 기표방지를 할 수도 있고 한 회사코드에 대하여만 할 수도 있다.
Posting date 거래기록일(전표일, 기표일) 발생한 거래가 실제로 장부에 입력되는 날짜.
Posting key 포스팅 키 전표의 개별항목의 입력을 통제하는 두자리수의 key.포스팅 키는 다음과 같은 요소를 특정한다 :· 계정유형· 차변 또는 대변기표의 구분· 입력용화면의 배치·
Posting period 거래기록대상기간 한 회계연도내의 일정 기간을 의미하는 것으로 일반적으로 하나의 달(Month)이 거래기록대상이 된다.시스템은 전표의 표제부 (Header)에 있는 거래기록일 (Posting date)에 따라 모든 전표들을 특정한 거래기록대상기간에 기록을 한다.이 기간내의 누적금액은 시스템에 의해 계속 새로운 금액으로 수정되어진다.
Posting, automatic 자동기표 어떤 절차에 의하여 자동적으로 생성되는 기표.다음과 같은 것이 예이다 :· 부가가치세관련 기표· 와환차손익관련기표· 현금할인수입 또는 비용 관련 기표각각의 자동기표는 별도의 전표상의 개별항목을 표시된다.
Posting, cross-company 다회사코드간 기표 여러 회사코드(Company code)가 관계되는 기표.시스템이 자동적으로 각각의 관계되는 회사코드에 대한 전표를 생성하여 준다.다회사코드간 기표는 중앙집중적인 구매나 지급을 하는 경우에 사용된다.유사어 : 관계회사간 기표(Intercompany posting)
Posting, statistical 비망항목기표 상대계정입력 (Offsetting entry)이 특정한 관리목적용 임시계정 (Specified clearing account)에 자동적으로 이루어지는 특별 G/L거래 (Special G/L transaction)의 기표.예 : 지급보증을 받은 경우.
Posting, to a prior period 전기분 기표 이전 기간에 대한 기표.
Profit and loss statement 손익계산서 유사어 : 손익계산서 (Income statement)
Ratios 비율 한 기업의 영업실적등을 측정하기위한 모든 종류의 계량화된 수치들, 업적평가, 수익성, 생산성, 유동성의 회사내부 또는 회사간 비교에 비율들이 사용된다.예 : 종업원 1인당 매출액, 재고자산회전율.
Receivable 매출채권 대차대조표에 유동자산으로 구분되며 일반 상거래에서 발생한 외상매출금.관계 회사외상매출금 등으로 구분된다.
Reconciliation account 조정계정 보조부 (Customer, Vendor, 자산영역 )의 거래가 자동적으로 반영이 되는 G/L계정.
Recurring entry 반복분개 반복분개전표에 기초를 둔 반복분개프로그램에 의하여 주기적, 반복적으로 이루어 지는 기표.예를 들어 임차료, 보험료, 대출금이 상환 등의 반복적으로 기표가 이루어 지는 경우에 사용된다.
Recurring entry document 반복분개전표 전표를 주기적으로 생성하는 반복분개 프로그램의 표준역할을 하는 특별한 전표.
Reference document 참조전표 전표를 입력하는 경우 참조로 사용되는 전표.이미 기표가 이루어진 일반적인 전표나 견본전표 (Sample document)를 참조전표로 사용할 수 있다.
Regional code 지역코드 SAP R/3시스템에서 주소를 구분하기위해 사용되는 key.지역코드는 몇 나라에서 주소의 일부로 정해져 있다.(우편번호와 유사한 기능을 하는 것으로 보임 )
Reserve for bad debt 대손충당금 채권금액중 미래에 회수가 불가능하다고 추정되는 금액에 대하여 설정하는 충당금.예 : 외상매출금의 대손충당금.
Residual item 잔여항목 미결항목을 반제하는 경우에 발생하는 차이금액 (Invoice금액과 지급액의 차이) Customer로부터의 부분지급 (Partial payment) 을 기표하여 미결항복을 반제하는 경우 시스템에 의해 미결항목이 잔여항목으로 이월된다.
Revenue account 수익계정 기업의 영업활동의 반대급부로서 발생하여 기업내로 유입되는 재화나 용역의 금전적 가치
Reversal 역분개 기표된 금액의 반대쪽에 동일한 금액을 기표함으로써 기표된 것을 취소하는 것.
Reverse document 역분개전표 역분개를 하는 경우에 만드는 전표.
Rollup 롤업 집계를 위한 원장에 데이타를 어떻게 집계하는가에 대한 정의. 상위 레벨의 보고서 및 평가를 위해, 원장에 지나치게 상세한 데이타가 기록될 수 있는데, 이러한 세부 데이타가 하나 혹은 여러개의 하위 원장에 기록되고 Rollup 원장으로 요약 집계된다. 세가지 형태의 Rollup이 있다. :· 표준 Rollup : 하나 혹은 그 이상의 Rollup 순서를 정의하고 그에 따라 데이타를 하나 혹은 그 이상의 Rollup 원장에 집계.· 계층적 Rollup : 특정한 계층구조에 따라( 예 : 원가 중심적 계층구조 ) 하나의 Rollup 원장에 데이타를 집계.· Expert Rollup : 지역시스템으로 부터 중앙시스템으로 데이타를 집계.
Sales indicator 특별거래표시자 참고 : 특별G/L표시자.
Sales relevant 판매관련거래 포스팅 키에 의해 표시되는 거래의 특성.예를 들어 U라는 포스팅 키는 판매관련거래 라는 것을 표시하며 따라서 그 거래는 Customer의 매출액 기록을 새롭게 수정하게 된다.
Sample account 견본계정 회사코드와 관련돤 G/L계정의 마스터 레코드를 생성하는 경우에 이용되는 것으로, 기본적인 데이타들을 갖고 있는 특별한 마스타 레코드 견본계정으로부터 값들을 어떻게 이체시킬 것인가를 결정하기위해 데이타 이체 규칙도 정의해야 한다.
Sample document 견본전표 특별한 형태의 참조전표(Reference document) 로서 사용자가 새로운 전표를 입력하는 경우 견본이 되는 자료들을 갖고 있다.일반적인 전표와는 달리 견본전표는 월 차변 및 대변잔액을 수정하지 않는다.다만 전표의 자료원천으로 사용된다.
Sorting concept 구분 유사어: 배분(Allocation concept)
Special G/L account 특별G/L계정 보조부상의 특별한 거래(선수금, 선급금, 어음, 보증금, 지급보증 등 판매나 구매와 직접적으로 관련이 되지 않는 거래)를 기록하기 위한 조정계정(Reconciliation account)으로 일반적인 조정계정과 구분된다.
Special G/L indicator 특별G/L거래표시자 특별G/L거래를 구분해 주는 한 자리로 된 표시자.특별G/L거래에는 계약금과 환어음, 보증금, 지급보증 등이 있다.
Special G/L transaction 특별G/L거래 총계정원장과 보조부(Customer계정, Vendor계정)에 별도로 표시되는 매출채권과 매입채무의 특별한 거래.(환)어음, 계약금과 지급보증 등이 있다.
Special period 특별거래기록대상기간 결산업무를 위해 마지막 거래기록 대상기간(예를 들면 12월)과 구분되는 특별히 설정한 거래기록을 하는 기간.
Subsidiary ledger(sub-ledger accounting) 보조부 외상매출금, 외상매입금, 고정자산 등의 기록에 사용된다.보조부는 G/L의 조정계정(Reconciliation account)에 전기(Posting)된 전표들에 대한 자세한 설명을 해주는 역할을 한다.
Summary data 요약자료 기표된 금액이나 수량에 관한 정보의(분석목적의) 요약형태.
Supplemen-tation 보충작업 전표입력과정 중 자동으로 생성된 전표의 개별항목을 수작업으로 보충하는 것.
SWIFT code SWIFT코드 Society for Worldwide Interbank Financial Telecommunication.해외지급거래에 있어서 은행의 주소나 번호가 없이도 SWIFT 코드(세계적으로 표준화되어 있슴)를 통해 은행을 확인하는 것이 가능하다.이것은 자동지급거래를 위하여 필요하다.
Tax amount 세금 영업세, 원천징수된 세금, 매출부가가치세, 매입부가가치세 등으로 기표되어 과세당국에 보고해야 하는 금액.
Tax base amount 과세표준 세금계산의 대상이 되는 금액.나라에 따라 현금할인액이 (부가가치세의) 과세표준에 포함되거나 제외된다.
Tax code 세금코드 세금을 구분하고 계산하는데에 필요한 정보를 나타내는 두자리 코드.세금코드에서 규정하는 정보에는 다음과 같은 것들이 있다.· 세율세금종류(매입부가가치세 또는매출부가가치세)· 계산방법(%포함 또는 %제외)
Taxes on Sales / Purchases 판매/구입세 매입부가가치세와 매출부가가치세에 사용하는 일반용어.나라에 따라 다음과 같이 구분된다:· 미국: GST, PST· 영국: VAT· 프랑스: TVA· 스웨덴: MOMS
Terms of payment 지급조건 거래대금의 지불에 대해 거래상대방과 합의한 조건.
Tolerance 허용편차 어떤 값으로부터 허용되는 편차.
Transfer 이전 동일 계열사의 주식의 일부 혹은 전부를 같은 계열내 타사에 매각하는 거래 행위 혹은 재분배로 인한 예산의 이전.
Transfer posting 대체기표 이미 기표된 금액을 한 계정에서 다른 계정으로 기표하는 것.예를 들어 대체기표는 예비적인 결산작업을 하는 경우에 생성된다.
Transitory account 임시계정 참고: 관리목적용 임시계정(Clearing account)
Translation date 환산일 금액을 다른 통화로 환산하는 기준일.
Valuation 평가 법률상의 요건(일반적으로 인정된 회계원칙으로 해석됨)에 맞추어 특정 시점에 고정자산이나 유동자산에 속한 모든 상품이나 채무액의 가치를 계산하는 것.
Value-added tax 부가가치세 매출 부가가치세(Output tax)와매입 부가가치세(Input tax) 에 관한 일반용어.
Vendor 구매처 재화나 용역을 제공하여 대가를 받는 거래의 상대방
Vendor master record 구매처 마스터 레코드 거래를 기록하는데에 필요한 Vendor에 관한 모든 정보를 포함하고 있는 데이타레코드로서 주소나 은행관련 자료가 그 예이다.
Vendor net procedure 구매처 현금할인차감후 순금액기록절차 참고: 현금할인차감후 순금액기록절차(Net procedure)
Withholding tax 원천세 Invoice 금액의 일부.몇몇 나라에서는 Invoice금액의 일부를 Vendor가 원천징수 하여 과세당국에 보고하고 납부하여야 한다.

[SAP FI] FI T-code 총정리

내가 보려고 정리한 T-CODE

ㅁ 전표 처리 관련 T-code

T-code 전표 구분 설명 기능 요약
FB01 실전표 전표 생성 새로운 회계 전표를 생성
FB02 실전표 전표 수정 (헤더 중심) 전표 헤더 정보나 기본 데이터를 수정
FB03 실전표 전표 조회 생성된 실전표 및 임시전표를 조회
FB09 실전표 전표 수정 (항목 중심) 전표 개별 항목만 선택적으로 수정
FB05 실전표 반제 전기 수동 반제 전표를 생성 및 전기 처리
FBRA 실전표 반제 재설정 반제 전표를 역분개 전 상태로 복원
FB08 실전표 / 임시전표 전표 역분개 기존 전표를 반대로 분개하여 취소 처리
FBV1 임시전표 임시전표 생성 임시 저장된 전표를 새로 생성
FBV2 임시전표 임시전표 수정 저장된 임시전표의 내용을 수정
FBV3 임시전표 임시전표 조회 임시로 생성된 전표의 내용을 확인
FBV0 임시전표 → 실전표 임시전표 전기 임시전표를 실전표로 전기 실행

 

* 반제 전표 역분개 처리 순서

  • 1단계: FBRA – 반제 전표의 반제 상태를 재설정
  • 2단계: FB08 – 해당 전표를 역분개 처리하여 취소

 

ㅁ 마스터 데이터 관리: 고객 / 공급업체 / G/L 계정

T-code 이름 기능 요약
FD01 고객 마스터 생성 새로운 고객 마스터 데이터를 등록
FD02 고객 마스터 변경 등록된 고객 마스터 정보를 수정
FD03 고객 마스터 조회 고객 마스터 데이터를 조회
FK01 공급업체 마스터 생성 새로운 공급업체 데이터를 등록
FK02 공급업체 마스터 변경 기존 공급업체 정보를 수정
FK03 공급업체 마스터 조회 공급업체 마스터 데이터를 확인
FS01 G/L 계정 생성 신규 G/L 계정을 등록
FS02 G/L 계정 변경 등록된 G/L 계정 정보를 수정
FS03 G/L 계정 조회 G/L 계정 상세 정보를 확인
FS00 G/L 계정 통합 관리 G/L 생성, 변경, 조회를 통합하여 관리 확인

참고:
FS01~FS03은 개별 작업용이며, FS00은 SAP ECC 시절부터 존재하던 통합 관리용 T-code이다.
S/4HANA 이후에는 단일 관리화가 강조되며 FS00 중심으로 활용되는 추세이다.

 

ㅁ 원가요소 / 코스트 센터 / 그룹 관리

T-code 이름 기능 요약
KA01 원가요소 생성 1차 원가요소를 신규 등록
KA02 원가요소 변경 등록된 원가요소 정보를 수정
KA03 원가요소 조회 원가요소 상세 내용을 조회
KAH1 원가요소 그룹 생성 새로운 원가요소 그룹을 등록
KAH2 원가요소 그룹 변경 원가요소 그룹 정보를 수정
KAH3 원가요소 그룹 조회 그룹 구성 내역을 확인
KS01 코스트 센터 생성 코스트 센터를 신규 생성
KS02 코스트 센터 변경 코스트 센터 정보를 수정
KS03 코스트 센터 조회 코스트 센터 상세 내역을 확인

 

 

ㅁ 명세 조회 / 잔액 확인

T-code 이름 기능 요약
FBL1N 공급업체 항목 명세 조회 특정 공급업체 기준의 거래 항목을 조회
FBL3N G/L 계정 항목 명세 조회 G/L 계정별 전표 항목 내역을 확인
FBL5N 고객 항목 명세 조회 고객 기준의 거래 항목 상세를 조회
FAGLB03 G/L 잔액 조회 G/L 계정의 잔액 상태를 확인

 

 

[SAP FI] FI Table 총정리 ( 전표테이블, 임시전표테이블, 고객테이블, 벤더테이블, 은행테이블, 자산테이블 등 )

FI 모듈에 대한 Table의 종류가 많아서 한번 정리를 하려고 한다. 

 

해당 사진처럼 많은 테이블이 존재한다. 

 

먼저 가장 기본적인 Table에 대해서 봐보자. 

 

1. 전표 TABLE

1) BKPF

- 전표의 Header 정보가 저장되는 테이블 ( 전표유형, 증빙일, 전기일, 회계기간,역분개여부 등)

- 전표에 대한 제목을 담는다고 생각하면 된다. 전표를 치면은 BKPF 1개와 1개 이상의 BSEG로 구성되어있다.

- 정규전표(실전표), 임시전표(BKPF-BSTAT) = ‘V’)가 존재한다.

 

* 정규전표(실전표)와 임시전표

- 정규전표(실전표) : 재무제표에 금액이 반영되는 전표

- 임시전표 : 재무제표에 금액이 반영되지 않는 전표 (상신을 받기 전의 전표)

  • 상신 승인시 임시전표가 정규전표로 전환(정규 전표가 된 순간 재무제표에 금액이 반영된다.)
  • 회사의 프로세스에 따라 임시전표가 존재하는 곳이 있고,  존재하지 않는 곳이 있다.

2) BSEG

-정규전표(실전표)의 개별항목만 관리된다.

-FI 전표의 개별항목(Line item) 정보(차변과대변)가 저장되는 테이블이다.

- 계정과목, 금액 등을 확인할 수 있다. 

 

3) ACDOCA

- S/4HANA가 도입이 되면서 새로 추가된 테이블이다.

- 목적은 FI-CO의 통합 데이터 관리이다. 그렇다보니 BSEG에 있는 참조필드 1,2,3 등 불필요한 필드가 존재하지 않는다.

- 가끔씩 BKPF와 BSEG에 조회가 되지 않는 전표는 ACDOCA에서 조회가 가능하다.

- 설정 등록에서 역분개 시에 차변에 - 표시로 처리되게 할 수도 있다. 

 


2. 미결 및 반제 관련 전표 TABLE

미결(Open Item)은 거래는 발생했으나, 돈을 아직 받지 못한 상태이다. 회계 분개로 따지면 아래와 같은 상황이다. 

  • 외상 매출금 500 / 매출 500

* 매출이 발생했지만 돈의 거래가 이루어지지 않음

 

반제(Clearing Item)는 실질적으로 돈이 들어와 거래가 종결되는 것을 의미한다.

그래서 거래 종결 전표라고 부르기도 한다. 회계 분개 상으로 아래와 같은 상황이다. 

  • 현금 500 / 외상매출금 500

* 현금을 지급 받으면서 외상매출금이 없어짐

 


분류
미결 비고 반제 테이블 비고 
고객(D) BSID
-고객에 대한 미결 항목을 관리하는 테이블
- 반제가 되면 삭제되고, BSAD 로 이관
BSAD 고객에 대한 반제를 관리하는 테이블
구매처(K) BSIK
-구 매처관련 미결 항목을 관리하는 테이블
- 반제가 되면 삭제되고, BSAK 로 이관
BSAK 구매처관련 반제항목을 관리
GL(S) BSIS
-G/L 계정의 미결항목을 관리
- 반제가 되면 삭제되고, BSAS 로 이관
BSAS G/L 계정의 반제항목을 관리 

 

해당 표에서 BSID를 예시로 설명을 하자면, BSID는 AR 미결에 대한 전표만 조회가 된다.

예를 들어, FB01에서 전표를 생성하면 BKPF와 BSEG / ACDOCA에만 반영이 되는게 아니라,

고객과 관련된 전표면은 BSID / 구매처는 BSIK 이런식으로 함께 추가가 된다. 

 

만약에 고객관련 전표를 찾는다면은 BSEG와 ACODC보다 BSID를 보는 것이 빠르다

여기서 반제를 하게 된다면, BSID의 데이터는 삭제되고 BSAD로 넘어간다.

 

# S/4 HANA의 ACDOCA의 영향

S/4 HANA 전환 이후로 미결과 반제관련 테이블은 ACODC 기반의 CDS VIEW다.

ACDOCA는 HANA 전환의 핵심 존재다. 기존의 FI-CO의 복잡성을 하나의 테이블에서 통합시키기 위해 도입되었다. 

그로 인해 중복 저장 제가하고 리포트 성능을 극대화 시킬려는 목적이 있었다. 

항목 ECC(R/3) S/4 HANA 비고(주요 변경사항)
BSEG Cluster Table Transparent Table 성능 향상, HANA의 인메모리 처리에 최적화
ACDOCA
에 일부 데이터 포함됨
BSID/BSAD Transparent Table CDS View 성능 향상 + 중복 제거 목적
실제 데이터는 ACDOCA에서 가져옴
BSIK/BSAK Transparent Table CDS View 성능 향상 + 중복 제거 목적
마찬가지로 ACDOCA 기반
BSIS/BSAS Transparent Table CDS View 계정별 잔액을 ACDOCA 기반으로 실시간
계산됨

 

3. 임시전표 TABLE

-임시전표를 관리하는 테이블은 ‘V’라는 영문이 붙는다. ( BKPF-BSTAT = ‘V’ )

테이블 명 비고
VBKPF 임시테이블의 전표 header
VBSEGA 자산관련 임시전표의 ITEM
VBSEGD 고객관련 임시전표의 ITEM
VBSEGK 구매처관련 임시전표의 ITEM
VBSEGS G/L관련 임시전전표의 ITEM

 

 

4. BP(Business Partner)관련 TABLE

- BP 또한 S/4 HANA로 전환되면서 BUT0000이라는 BP 마스터에 하나로 통합되었다. 

 

 

# 고객

테이블 비고
KNB1 고객 회사 코드 데이터
KNVV 고객 판매 데이터
KNBK 고객 은행 세부정보
KNVH 고객 계층
KNVP 고객 파트너 기능
KNVS 고객 배송 데이터
KNVK 고객 담당자
KNVI 고객 세금 정보
KNMT 고객-자재 정보

 

 

# 공급업체 

테이블 비고
LFB1 공급업체 회사 코드 데이터
LFB5 독촉 관련 정보
LFM1 구매 조직 데이터
LFM2 추가 구매 데이터
LFBK 공급업체 은행 정보

 

5. 자산 관련 TABLE

테이블
비고
ANLH
주요 자산 번호
ANLA
자산 마스터레코드 세그먼트
ANLC
자산 가치 필드
ANLP
기간별 자산가액
ANLZ
시간 종속 자산 배부
ANLB
감가상각 조건
ANEK
자산 전표 헤더
ANEP
자산 전표 개별 항목
TABA
감가상각 전기 전표
ANKA
자산 클래스 : 일반
ANKT
자산 클래스 : 내역
ANKB
자산 클래스: 감가상각 영역

 

6. 그 외 TABLE

테이블 비고
T001 회사 코드
BNKA 은행 마스터
T012 House Banks(거래은행) 테이블
T012K House Banks(거래은행)  계정 테이블
SKA1 G/L 계정마스터 (계정과목표)
SKAT G/L 계정마스터 TEXT 테이
SKB1 G/L 계정마스터 (회사코드)
BSET 세금관련
WITH_ITME 원천세 전표 관리
CSKS 코스트센터 마스터
CEPC 손익센터 마스터
TGSB 사업영역 마스터 

'Moduls > FI' 카테고리의 다른 글

[SAP FI] SAP FI 용어 정리  (1) 2025.04.19
[SAP FI] FI T-code 총정리  (0) 2025.04.18

[SAP] CTS 릴리즈 및 품질/운영 반영 확인하기

 

처음에 CTS 릴리즈와 운영서버 반영이라는 게 쉽지 않았다. 

한번도 해보지 않았고, 혹시나 운영서버를 잘못 건드릴까봐 무섭고 긴장되었다.  

 

그래서 나같은 사람을 위해 CTS 릴리즈와 운영 반영 방법에 대해서 정리해보려고 한다.

# CTS 릴리즈

일단 CTS 릴리즈든 이관이든 CTS 보내주세요든 다 똑같은 말이다.

처음에는 CTS 개념이 어렵고 헷갈렸는데 이제는 이해가 되었다.

 

내가 딱 정의를 내린 건, CTS 릴리즈은 고가의 물건 배송이다.

이 예시를 이해하기 위해 먼저 일반적인 SAP 서버 구성을 봐보자.

 

개발(D) - 품질(Q)- 운영 (P)

 

대부분의 SAP 서버는 위와 같이 구성되어있다.

SAP Logon의 시스템 ID를 보면은 D,Q,P 라는 문자가 포함이 되어있다.

 

D가 포함되면 개발,

Q가 포함되면 품질,

P가 포함되면 운영이다.

 

실무에서 각 서버의 역할은 다음과 같다. 

 

ㅁ 개발(D) 서버

말 그대로 개발 및 TEST를 진행하는 서버이다. 여기서 TEST 데이터도 만들어보고 현업 요청사항에 맞게 이것저것 개발한다.

 

ㅁ 품질(Q) 서버

개발서버에서 수정한 코드를 품질서버에 반영하고 TEST를(현업 or 개발자) 한다.

'왜 TEST를 또 해?' 할 수 있지만 이유는 크게 2가지이다.

 

1) 현업 담당자가 직접 TEST를 하는 경우

- SAP 관리를 외주에 맞기는 경우 현업은 품질과 운영에만 권한이 있는 경우도 있다.

- 또한 프로그램의 실 사용자는 현업이기 때문에 프로세스에 맞게 수정되었는 지, 문제가 없는 지 빠르게 확인할 수 있다. 

 

2) 실 데이터(운영서버 데이터)가 개발서버에 없고 품질에 있는 경우

- 운영 서버의 데이터는 하루에도 많게는 수십만개가 생성될 수도 있다. 해당 데이터를 매번 개발에 반영을 하는 것도 비용    이다.

- 일반적으로 BC팀에게 비용을 지불하고 주기적으로 품질서버에만 운영 데이터를 업데이트 하는 경우가 많다.

 

어떻게 보면은 IT 전공자들에게는 당연할 수 있다. 품질서버의 결론은 코드에 대한 검증을 하는 곳이다.

쉽게 말해, 실제로 운영에 넘겨도 문제가 없는 지 확인하는 절차다.

 

* 하지만 품질 서버가 없는 경우도 존재한다. (서버도 곧 돈이기 때문에… )

   그럴 경우에는 개발에서 개발과 품질의 역할을 둘 다 한다. )

 

ㅁ 운영(P) 서버

실제 현업이 사용하는 서버다. 흔히 회계 감사, 재무제표 등 모든 것들은 운영 데이터를 토대로 한다.

코드 수정 / 데이터 변경 및 삭제 등 대부분 로그가 남기 때문에 모두가 민감하게 받아 드리고 조심스러운 것이다.

 

운영서버에 이러한 로그들이 생기면 감사에서 문제가 되기 때문이다.

 

SAP를 사용하는 많은 이유 중 한 가지는 '신뢰성'이다. 

운영서버의 데이터들을 통해 실제 회사의 재무상태표가 만들어진다. 로그들이 다 남기 때문에 감사에서도 충분히 확인할 수 있고 그만큼 신뢰성 있는 재무상태표가 되기 때문에 대기업에서도 SAP를 사용한다. 

 

근데 만약에 운영서버를 수정했다?? 감사 때 재무상태표를조작에 대한 의심을 가질 수 밖에 없다.

그렇다보니 잘못 건들여서 데이터가 문제 생기면 현업에서는 직접 수정을 하기 어렵다. (현업 ID로 로그가 남으니까) 결국에는 외주사에게 수정을 요청하는데 이것도 다 비용(공수 시간에 포함) 이다.

 

또한 외주사도 잘못 수정하면 책임을 질 수 밖에 없기에... 운영서버는 왠만해서 절대 건들지 않는 편이다. 

 

그런 일이 없도록 개발과 품질에서 현업과 함께 철저하게 검증을 하는 것이 중요하다.

나중에 이슈가 생기면 '너(현업)가 문제 없다고 해서 운영에 반영한거야!' 라는 보호막을 만드는 역할도 한다.

 

이제 다시 고가의 주문제작 물건을 파는 회사에 예시를 들어보려고 한다. 

약간 억지 예시이긴 한데...

만약 어마어마한 금액의 자체제작 물건을 판다고 해보자. 먼저 고객의 요구사항을 정확하게 파악해야 한다.

그리고 금액이 큰 만큼 고객의 요구사항이 잘 반영되었는 지 중간 체크를 하고 최종적으로 고객에게 배송하는

신기한(?) 회사라고 생각해보자.

 

이 상황을 SAP랑 대입에 대입하면 나는 이해하기 좀 수월했다.....

 

주문 제작(개발서버)

1. 고객에게 주문 (현업 요청 사항)이 들어왔다.

 

2. 생산직 직원(개발자)은 그 주문(요청 사항 - 개발 or IMG 세팅) 꼼꼼히 확인하고 공장(개발 서버)에서 맞춤 제작을

    시작한다.

 

3. 생산직 직원(개발자)은 해당 제품의 불량, 작동여부, 마감처리 등(데이터 오류 검증) 나름의 품질 검사(TEST)를 한다. 

 

중간 검사 (품질서버)

4. 우리는 고가의 맞춤제작 회사이기 때문에 고객의 요구사항 대로 맞춤 제작(개발)을 했을지라도 고객에게 한번 중간 점검을 해야한다. 

- 이 사람이 나는 노란색이 좋아! 했지만 이 노란색이 아니라 옅은 노란색! 찐한 노란색! 이럴 수도 있으니까... ( 개발서버의 실 데이터가 없는 경우, 데이터가 다른 경우, 원했던 요구사항이 아닌 경우, 막상 보니까 새로운 문제가 있는 경우 등등의 문제를 방지하는 거다. ) 

 

5. 고객(현업)을 품질공장(품질서버)으로 불러서 '맘에 드세요??'(TEST 요청)하는 거랑 똑같다. 

 

6. 고객이 맘에 든다고 '이렇게 해줘요!(운영반영)' 라고 말하면 우리는 그 물건을 고객의 집으로 배송한다. (문제가 생겨도 책임 소지가 명확해진다.)  

 

고객 전달 (운영 서버)

 

7. 품질 검사를 통과하면 고객(현업)에게 전달(운영서버 반영)한다.

 

 

이해가 잘 될 지는 모르겠지만! 나름 고민했던 예시다…..ㅠ

대부분 블로그에는 개발 → 품질 → 운영 이런 순서의 설명이 많다보니,

SAP를 글로 배운 나는 실제 CTS 릴리즈 시 착각을 했었다. ( 나같은 사람이 세상에 존재하지 않을까 싶어 공유한다...)

 

개발서버의 CTS를 품질서버로 릴리즈(전송)

품질서버에 개발서버의 CTS 반영

품질서버의 CTS를 운영서버로 릴리즈(전송)

→ 운영서버에 품질서버의 CTS 반영

 

실제로는 저런 과정이 아니라, 아래 과정이다. 

 

개발서버 CTS 릴리즈

품질서버의 개발서버 CTS 반영

→ 엇? 문제가 없네?

→ 운영서버에 개발서버의 CTS 반영

 

품질서버에서 따로 CTS를 또 만드는 것이 아니라, 개발서버에 CTS에 수정된 코드가 반영되어있으니, 품질서버에서 TEST하고 해당 CTS를 그대로 반영을 하면 되는 거였다. ( 지금 생각하면 당연한건데... 왜 그땐 그랬을까...)

 

어쨌든... 서론이 너무 길었지만 CTS의 대한 설명은 이정도로 하고 실제로 방법에 대해서 봐보자. 

 

1. CTS 릴리즈하기 (T-CODE: SE09)

SE09에 들어가면 다음과 같은 화면이 나온다.

 

수정가능은 아직 전송을 안한 CTS, 릴리즈는 이미 전송한 CTS 를 조회하는 조회 조건이다.

원하는 조건을 선택하고 Display를 누른다.

 

그러면 해당 화면처럼 조회가 된다.

내가 생성한 CTS를 찾고, CTS 번호 옆의 + 폴더 파일을 클릭한다.

 

 

그러면 한개 이상의 CTS가 하위 노드로 보일거다.

여기서 중요한거는 CTS 릴리즈는 Tree의 아래부분(하위노드)에서 위부분(상위노드) 순서대로 릴리즈를 해줘야 한다. 

 

제일 하위 노드인 1번의 CTS를 클릭하고 3번 버튼(릴리즈)을 클릭한다.

 

그러면 옆과 같은 체크박스 표시가 생길거다.

 

그다음에 2번(상위 노드 CTS) 을 클릭하고 3번을 한번 더 누른다.

그러면 화면 우측 하단에 타이머(?)가 돌아가면서 기달리면 아래와 같은 화면이 나온다.

예시 사진이 마땅한 게 없어서 노션에서 찾아왔는데 빨간색 네모 두 부분만 보면 된다.

 

CTS 릴리즈가 되면 위 화면처럼 빨간색 배경의 CTS 넘버가 보일거다

처음에 나는 내가 뭐 잘못한 줄 알고 땀이 흘렀는데…. 당연한 증상이니 전혀 두려워할 필요 없고 좌측 상단의 새로고침 버튼을 눌러주자.

 

그러면 하늘색으로 돌아오고 정상적으로 CTS 릴리즈가 된 것이다.

 


2. CTS 반영 여부 확인하기

그러면 이제 릴리즈는 알았으니 반영 여부는 어떻게 확인해야 할까??? 

 

총 세 가지 방법이 있는 것 같다.

1) 개발서버 SE09에서 CTS 로그를 통해 확인하기 

2) 반영된 서버의 STMS에 접속하여 반영 여부를 확인하기

3) 내가 수정한거 해당 서버에 들어가서 바뀌었는 지 확인

 

솔직히 3번은 예를들어, 프로그램 코드를 고쳤으면 직접 ABAP Editor가서 변경된 코드가 있는 지 확인하면 되는거다. 

나는 처음에 이렇게 했다... 하지만 반영된 서버에 못들어가는 경우도 있을 수도 있으니...?? 또, 1-2번이 전문적인(?) 느낌이 나니까 알아두자. 

 

 

2-1. 개발서버 SE09에서 CTS 로그를 통해 확인하기

개발서버에서 확인하는 방법은 간단하다.

기존의 CTS 로그화면이 반영전과 이후가 다르다.

 

다시 SE09에 들어가 Display를 누르자. (이때 조회조건 꼭 릴리즈 체크하자)

 

그러면 릴리즈 내역에 내 CTS가 뜰거다.

CTS에 마우스클릭 한번을 하고, 빨간색 박스의 안경잽이를 클릭하자.

저 안경잽이는 CTS 전송 로그를 볼 수 있게 해주는 기능이다.

 

해당 사진은 이미 반영된 CTS의 로그이다. (예시 캡쳐본이 없다..)

빨간색 박스 부분이 존재한다면, 반영이 된거다. 

빨간색 박스의 상위 노드가 'P'가 포함되어있으니 해당 시스템은 운영서버라는 것을 확인할 수 있고,

하위 노드 내역처럼 여러개가 조회가 되고 성공적으로 완료라고 써져있을 거다. 

 

이걸 보고 아 현업에서 반영 했구나! 생각하면 된다. (개발자가 직접 반영하는 고객사도 있다.)

 

2-2. 반영된 서버의 STMS에 접속하여 반영 여부를 확인하기 ( T-CODE :STMS )

반영한 서버로 sap 로그인을 한다. -> 해당 T-CODE를 들어간다.

예시 이미지는 품질 서버로 들지만, 운영도 방법은 똑같다.

좌측 상단의 트럭을 클릭하기

 

 

빨간색 박스의 ‘큐’라는 부분을 보면은 서버의 종류가 나온다.

개발/품질/운영을 사용하는 회사라면은 3개의 큐가 조회가 될 거고,

품질이 없다면 개발과 운영 2개의 서버만 조회 될 것이다.

 

만약 품질에 반영했다면

품질서버 로그인 → 품질서버(Q가 포함된)의 큐 더블클릭

만약 운영에 반영했다면

운영서버 로그인 → 운영서버(P가 포함된)의 큐 더블클릭

 

반영된 서버를 더블클릭하면 2가지 화면이 나온다.

 

 

# 필터가 걸려있는 경우,

해당 필터를 클릭하여 요청 기준으로 필터를 잡고 CTS 번호를 입력해주면 된다.

 

# 필터가 안 걸려있는 경우,

 

CTS 번호 컬럼을 기준으로 필터를 걸면 조회가 된다.

 

 

* 내 CTS 번호로 필터를 걸었는데 조회가 안된다?!

내가 릴리즈를 분명히 했는데 CTS가 조회가 안될 때 있다.

 그때는 당황하지말고 좌측 상단의 새로고침을 클릭해주면 된다.

 

* 그래도 안된다?!

그러면 필터 값에 공백이 포함되어 있을 가능성이 높다.

 

 

CTS가 정상적으로 반영이 되었다면 ICON이 초록색이다.

 

반영이 되지 않았다면은 RC 부분이 다음과 같은 ICON으로 표시된다.

 

이렇게 확인하면 된다.

 

원래 CTS 릴리즈와 반영 방법을 한 번에 포스팅하려 했지만,

생각보다 내용이 길어져서.... CTS 반영 방법은 추후에 올리도록 하겠다...!

 

오늘도 모두 파이팅! 

[SAP ABAP] NEW SYNTAX #4 - VALUE 구문

VALUE문은 NEW SYNTAX의 핵심 중의 핵심이라고 할 수 있다.

 

누군가 나에게 실무에서 가장 많이 본 NEW SYNTAX가 뭐냐고 물어본다면, 

나는 고민도 없이 VALUE 였다고 말할 것 같다. 기존에 APPEND와 INSERT의 기능과 여러 타입의 변수에 값을 할당 하는 기능을 한다. 

 

긴 코드를 간략하게 바꿀 수 있다는 것이 개발자에게 정말 편한 구문이다. 그만큼 가독성이 좋아 유지보수가 더 쉬워진다. 

얼마나 편하길래? 라는 궁금증이 들 수도 있으니, 아래 내가 경험한 코드를 봐보자.

 

가장 먼저 내가 SYNC 교육 과정을 하면서 했었던 방법이다. 물론 예시이기 때문에 4건의 데이터 밖에 없지만 실제로 6개 이상 노가다 하면서 썼었다. 이게 은근 정말 귀찮다. 

 

기존의 ECC 버전에서 많이 볼 수 있는 방법이다. 물론 해당 코드가 문제가 있다는 것이 아니다. 

어떤 사람은 이게 더 가독성이 좋다고 이야기할 수 도 있다. 

 

이 코드에 VALUE 문법을 사용하면 어떻게 될까? 

 

Old Syntax의 30줄 길이의 GT_FCAT이 단 4줄의 코드로 줄어든다. 

무엇보다 한줄이 하나의 데이터처럼 보여, 4건의 스트럭쳐를 테이블에 넣었구나를 빠르게 확인할 수 있다. 

테이블의 필드도 가로로 정렬되서 보기도 편하다. 

 

이정도면은 충분히 가독성의 차이를 느꼈을테니, 자세히 이야기를 해보자 .

 

# VALUE

VALUE는 간단하게 ECC 버전의 ‘=’ 코드를 쉽게 만들어준다고 생각하면 된다. 그로인해 개발자는 불필요한 변수 선언과 가독성 있는 코드를 짤 수 있다. 

 

내가 찾아보고 직접 해본 결과 VALUE는 아래 4가지로 설명할 수 있을 거 같다.

  1. VALUE 구문
  2. 스트럭쳐의 값 넣기
  3. 테이블의 값 넣기
  4. 변수의 값 넣기

그래서 해당 목차대로 하나씩 이야기해보려 한다.

 

 

1. VALUE 구문 

VALUE는 아래와 같은 구문들을 쓸 수 있다.

  1. VALUE #
  2. VALUE TYPE
  3. VALUE ~ BASE
  4. VALUE ~ OPTIONAL

 

1-1. VALUE # 이란? 

내가 VALUE를 처음 만난건 SYNC 교육 과정을 듣기도 전에 SAP JOY에서 NEW SYNTAX 세미나를 시청했을 때 였다.

‘#’ 표현이 들어가면서 VALUE 구문을 굉장히 어렵게 느껴졌고 더군다나 비전공자였던 나에게 괴리감이 있었다.

 

VALUE의 ‘#’은 쉽게 설명하기 위해서는 인라인 선언이라고 생각하면 쉽고 그냥 TYPE 의 또 다른 표현이라고 생각하자.

# 을 쓰면 TYPE을 써주지 않아도 알아서 앞의 변수를 참고해서 TYPE을 받는다.

 

정확하게는 VALUE [ Type ] 이 문법이다. 할당할 변수의 TYPE을 받겠다는 것을 #으로 표현한다. . 

 

아래의 예시를 봐보자. 

 

우리는 여기서 LS_SCARR을 인라인 선언하면서 GT_SCARR의 타입을 그대로 받아온다는 것을 알고 있다.

그거랑 똑같다. 할당 받을 데이터의 타입을 그대로 참조한다.

 

VALUE #도 똑같다. 

 

자동적으로 SCARR 타입을 받는다. 사람들은 대부분 편하니 #을 많이 사용한다.

 

하지만! 중요한 점이 있다. 

만약에 VALUE 뒤에 지정해줄 수 있는 TYPE이 존재한다면, #을 써주는 것보다 TYPE을 명시해주는 것이 퍼포먼스에 좋다.  그게 바로 2번 내용의 VALUE TYPE이다.


1-2. VALUE TYPE 이란? 

말 그대로 TYPE을 지정해 주는 것이다.  퍼포먼스의 차이를 알아보자. 

 

예를들어 1번과 2번의 구문이 존재한다. 

데이터가 수십만 건이 존재한다면 2번 방법이 퍼포먼스 적으로 유리하다. ( 대부분의 회사는 수십만건의 데이터는 가볍게 가지고 있다...! )

 

왜냐하면,  #을 써주는 순간 SAP 시스템 상에서 GS_SCARR의 타입을 확인하기 위한 과정이 생겨버린다. 

해당 과정을 보면은 

 

# 1번의 코드의 경우

엇? Type이 #이네? -> GS_SCARR이 뭐지?( Type 확인)  →해당 타입에 알맞게 값넣기

 

# 2번의 코드의 경우 

Type이 SCARR 이구나? -> 해당 타입에 알맞게 값넣기

 

잘 이해될 지 모르겠는데 1번의 빨간색 글씨처럼 할당할 변수의 TYPE을 확인하는 과정이 생기기 때문에, 

만약 TYPE을 입력해줄 수 있다면 입력해주는 것이 좋다. 

 

1-3. VALUE BASE

BASE 문은 기존 데이터를 유지하면서 데이터를 추가하는 방법이다. 한마디로 APPEND 다. 

예를 들어, 우리가 많이 쓰는 INTO 이런식의 표현은 기존에 있는 데이터를 없애고 새로운 데이터를 집어 넣는 방식이다.

 

기존의 데이터를 유지하면서 데이터를 추가하는 방식이다. 해당 코드처럼 GT_DATA에 이미 데이터가 존재한다면

BASE를 써서 GT_DATA의 기존 데이터를 데이터를 유지하고~ 이 값을 넣어~~ 라는 식의 표현이 될 수 있다.

 

1-4. VALUE OPIONAL

이거는 이전의 READ TABLE 할 때, 했던 내용이랑 똑같다. 덤프 관련의 내용이다.

OPTIONAL은 특정 조건에 데이터가 없어도 덤프를 안나게 막아준다.

 

* 해당 게시글에 자세하게 나와있다.

2025.03.07 - [SAP/NEW SYNTAX] - [SAP ABAP] NEW SYNTAX #2 - 테이블 표현식(Table Expressions)

 

[SAP ABAP] NEW SYNTAX #2 - 테이블 표현식(Table Expressions)

오늘은 NEW SYNTAX의 2번째 Table Expressions, 테이블 표현식이다! READ TABLE을 대체할 수 있는 신 문법으로, 내부 테이블이나 표준 테이블의 특정 행에 직접 접근할 수 있다.기존에 없었던 새로운 접근

roblige.tistory.com

 

아래와 같은 상황이 존재한다. 

 

만약 이 과정에서 GT_DATA의 1번 INDEX가 존재하지 않는다. 라고 가정해보자. 

그러면 OLD 구문은 덤프가 나지 않고 SY-SUBRC 4로 떨어지면서 넘어간다.

 

하지만 VALUE 구문은 바로 ITAB_LINE_NOT_FOUND 이라는 Runtime Errors가 생긴다.

 

이런 경우에는 OPTIONAL을 사용해주거나 Try Catch을 사용해야 덤프가 안난다. 데이터가 존재할 수도 있고 안할 수도 있다면 OPTIONAL을 추가해서 덤프를 나지 않도록 방지해주자. 

2. 변수에 값 할당

 

기존의 OLD 방식으로 하는 방법을 NEW 방법으로 사용이 가능하다.

 

3. Structure에 값 할당

스트럭쳐에 하나씩 값을 넣을 때는 아래와 같이 사용하면 된다. 

 

조건에 맞는 테이블의 ROW를 INTO 하는 상황.

 

4. TABLE에 값 할당

테이블에 값 넣기
여러건 데이터 라인 넣기

 

코드길이를 줄이는 것은 물론 가독성까지 좋게 만들 수 있다.

READ TABLE의 코드 간결화하기

 

해당 사진들은 모두 다 #으로 표기했지만, 

실제 상황에서는 꼭 TYPE을 써주는 것 잊지 말자!! 

 

오늘도 파이팅! 

[SAP ABAP] NEW SYNTAX #3 - CONV 연산자(데이터 변환)

CONV란?

CONV 연산자는 데이터 타입을 변환하는데 사용된다.

한 타입의 변수를 다른 타입으로 변환할 수 있다.

 

CONV type( [let_exp] dobj )  형식으로 사용되며, 아래와 같이 사용할 수 있다.

 

CONV #(     

CONV I(       

 CONV STRING(

 

내가 느낀 것은 인라인 선언과 함께 사용할 때나, CLASS 나 FUNCTION의 파라미터를 입력할 때 편하다고 느꼈다.

 

예제를 통해서 하나씩 봐보자.

1. TYPE 변환

 

두 가지 타입이 다른 경우가 있다.

LV_VALUE는 TYPE C 이고 LV_INT는 TYPE I 이다.

 

CONV 연산자는 데이터의 TYPE을 변환해준다. 

해당 코드는 LV_VALUE의 값을  TYPE 'I' 로 변환해 LV_INT에 할당하라는 코드이다. 

 

실제 프로그램에서는 CHAR 와 INT 타입은 SAP 스탠다드 설정으로 자동 변환되어 CONV를 사용하지 않아도 정상적으로 실행된다. 

 

저렇게 사용한다는 것만 참고하자.

 

2. FUNCTION 에서 사용

- CONV는 TYPE 변환 연산자라고 했다. 우리가 TYPE 변환을 많이 사용하는 FUNCTION MODULE에서의 사용법이다.

 

해당 FUNCTION은 DAY_IN이라는 파라미터가 날짜타입이다. 우리는 여기에 문자형을 넣을거다.

그러면 당연히 파라미터와 TYPE이 맞지 않아 덤프가 뜰거다.

 

위의 코드는 TYPE 불일치로 덤프가 나오는 코드이다. 

나는 과거에 교육 과정 프로젝트에서 TYPE 생각을 안하다가 덤프를 마주한적이 간혹 있었다.

 

 

Function Module의 파라미터와 변수가 TYPE이 맞지 않아 덤프가 뜬다. 

 

이럴 때마다 나는 해당 TYPE에 맞는 변수를 새로 생성해주고 TYPE을 변환시켰었다. (근데 이게 은근 귀찮다....)

하지만 이제는! CONV를 써서 간편하게 TYPE을 변환할 수 있다. 

 

CONV 연산자를 사용해 LV_VALUE를 TYPE D로 변환하는 코드이다. 

 

근데 여기서도 한가지 의문이 생겼다. 

대부분 CONV 연산자에 예시로 TYPE I, TYPE STRING 등만 있어서

CONV SFLIFHT-FLDATE (LV_VALUE) 처럼 TABLE의 필드도 사용되는지 궁금했다.

 

 

정상적으로 프로그램이 실행되고 LV_VALUE가 BKPF 테이블의 BLDAT TYPE으로 변환된다. 

 

3. CLASS

만약에 아래와 같은 클래스가 있다고 치자.

 

I_INT1과 I_INT2는 I 타입이다.

 

만약 LV_F가 F 타입이기 때문에 CONV 없이 그냥 들어간다면 FUNCTION 때 처럼 덤프가 발생할 거다.

하지만 CONV # 을 사용하면은 CLASS의 파라미터 타입으로 변환되어 덤프가 뜨지 않는다.

 

그러면 여기서 CLASS의 CONV # 과 FUNCTION의 CONV랑 차이가 궁금할거다.

 

CONV #

  • CLASS에서만 사용 가능
  • 자동적으로 파라미터의 TYPE을 받아준다 ( VALUE # 과 동일 )

CONV TYPE

  • Function 에서 사용 시, CONV 뒤에 타입을 꼭 지정해줘야 한다. (CONV # 불가능 )
  • TABLE의 Field로도 TYPE을 받을 수 있다. 

 

만약에 왜 CLASS에서는 #이되고, Function에서는 #이 안되는 지 궁금하다면, 

내가 이전의 데이터 인라인 선언 게시글에 정리하였으니, 그거를 참고하면 된다!

 

# 데이터 인라신 선언 포스팅 참고! 

2025.03.05 - [SAP/NEW SYNTAX] - [SAP ABAP] NEW SYNTAX # - 데이터 인라인 선언( Inline Declarations )

 

[SAP ABAP] NEW SYNTAX # - 데이터 인라인 선언( Inline Declarations )

SAP의 ERP 시스템은 방대한 데이터를 효율적으로 관리하는 것이 핵심이다. 기존 ABAP Old SYNTAX는 오랫동안 사용되어 왔지만, 대량의 데이터를 처리할 때 성능 문제와 제한 사항이 존재했었다. 그러

roblige.tistory.com

 

4. 응용 방법

1)  TABLE의 라인 수를 이용하여, 메세지 출력 또는 TITLE 에 사용

 

2) CLASS에서 사용 

 

해당 응용 방법 말고도 많은 방법이 존재하니, 잘 활용하기를 바란다.

 

오늘도 파이팅 입니다. :)

[SAP ABAP] NEW SYNTAX #2 - 테이블 표현식(Table Expressions)

 

오늘은 NEW SYNTAX의 2번째 Table Expressions, 테이블 표현식이다! 

READ TABLE을 대체할 수 있는 신 문법으로, 내부 테이블이나 표준 테이블의 특정 행에 직접 접근할 수 있다.

기존에 없었던 새로운 접근 방식으로, 개발자가 코드를 더 간결하고 읽기 쉽게 만들 수 있도록 돕는다.


지난 포스팅에서 정리한 데이터 인라인 선언 방식을 적용하여, 함께 사용한다면 코드가 더 간결해 질 수 있다.

 

# 데이터 인라신 선언은 이전 포스팅 참고! 

2025.03.05 - [SAP/NEW SYNTAX] - [SAP ABAP] NEW SYNTAX # - 데이터 인라인 선언( Inline Declarations )

 

[SAP ABAP] NEW SYNTAX # - 데이터 인라인 선언( Inline Declarations )

SAP의 ERP 시스템은 방대한 데이터를 효율적으로 관리하는 것이 핵심이다. 기존 ABAP Old SYNTAX는 오랫동안 사용되어 왔지만, 대량의 데이터를 처리할 때 성능 문제와 제한 사항이 존재했었다. 그러

roblige.tistory.com

 

일단은 늘 하던대로, 얼마나 간결해지는 지 예시부터 보자. 

 

 

 

READ TABLE은 SAP 개발을 하면서 많이 쓰는 구문 중의 하나이다. 우리가 자주 쓰는 구문이 사진의 NEW SYNTAX처럼 사용을 할 수 있다. 기존의 4줄의 코드는 데이터 인라인 선언과 테이블 표현식을 사용하여 1줄이 되었다. 

 

테이블 표현식의 코드를 해석하면 LV_CARRID2를 만들고, GT_DATA 테이블의 1번 INDEX(첫줄)를 찾고 1번 INDEX의 CARRID 값을 넣어라! 가 된다. 이런식으로 간결하게 표현할 수 있는게 큰 장점이다.

 

해당 예시는 여러가지 경우에서 변수에 값을 넣는 부분이지만 내가 공부하면서 느낀 거는 다양한 코드들을 정말 간결하게 표현할 수 있는 것 같다. 

 

 

하지만,

이 테이블 표현식을 사용하려면 우리는 아래의 2가지 사항을 정확하게 숙지해야 한다. 

  1. 값을 할당할 때, 테이블에 데이터가 존재하지 않으면 ITAB_LINE_NOT_FOUND 이라는 Runtime Errors(덤프)가 발생한다.
  2. SY-SUBRC 는 존재하지 않는다. 데이터가 들어가도 SY-SUBRC 는 4 값을 가진다.

자세한 내용은 아래에서 예시와 함께 보자.

 

1. READ TABLE INDEX

 

처음 예시랑 똑같은 내용이다.

테이블에 데이터를 스트럭쳐로 옮기는 경우 해당 코드를 작성할 수 있다.

 

하지만!! 가장 중요한 사항은 해당 INDEX에 대한 데이터가 존재하지 않으면 ITAB_LINE_NOT_FOUND 이라는 Runtime Errors(덤프)가 생긴다.

 

테이블 표현식은 데이터가 존재하지 않는다면 무조건 덤프를 낸다. 

 

"근데 우리가 개발하다 보면은 TABLE에 데이터가 존재할 수도 있고, 없을 수도 있는데 그런 상황에서는 쓰지 못할까? "

그래서 열심히 구글링과 SAP docu을 찾아봤다. 

 

역시 해결 방법이 존재했었다. 

1) TRY-CATCH를 이용하여 해결하기.


해당 코드는 TRY-CATCH를 이용해 데이터가 없을 경우, CATCH 로 빠지게 했다. 

프로그램을 실행시키면

실행 결과

덤프가 나지 않고 CATCH로 빠지게 된다. 

TRY-CATCH를 이용해 데이터가 없는 경우에 대한 로직을 작성하여 이 부분을 해결 할 수 있었다. 

 

그러나 만약 반복되는 코드일 경우 TRY-CATCH로 인해 가독성이 더 안좋질 수도 있다. 

그래서 두번째 방법이 존재하더라... 


2) VALUE와 OPTIONAL 이용하여 해결하기.

VALUE 구문은 NEW SYNTAX에서 핵심 중에 핵심이다. 제일 많이 본 것 같다. 

스트럭쳐와 변수에 데이터를 집어넣는 과정이다. 

OPTIONAL의 역할은 테이블에 원하는 데이터가 없을 때, CX_SY_ITAB_LINE_NOT_FOUND 예외가 발생하지 않도록 막아준다. 이녀석의 정확한 역할은 값이 있으면 넣고 없으면 패스~ 느낌인거 같다. 

 

그렇기 때문에 데이터가 없을 가능성이 있다면 잊지말고 항상 써줘야 한다. 

 


2. READ TABLE ~ WITH KEY.

WITH KEY 뒤 조건에 맞는 스트럭쳐를 테이블에서 가져오는 구문이다. 


WITH KEY를 입력하지 않고 대괄호([ ]) 사이에 해당 조건을 바로 나열해주면 된다. 

3. TRANSPORTING NO FIELDS.

우리는 원하는 조건의 데이터가 있는 지 확인하기 위해 TRANSPORTING NO FIELDS를 사용했다. 

그리고 IF SY-SUBRC를 이용해 데이터 존재 여부를 체크했었다. 

 

하지만 테이블 표현식을 사용할 때는 처음에 주의사항으로 이야기했던 

2. SY-SUBRC는 존재하지 않는다. 데이터가 들어가도 SY-SUBRC 는 4 값을 가진다 

이거를 기억해야 한다.

 

내가 직접 테스트 해본 결과, 데이터가 들어가도 이녀석들은 무조건 SY-SUBRC 4를 내뱉는다. 

그러면 같은 상황에서 데이터 핸들링을 하려면 어떻게 해야 할까? 

 

그래서 테이블 표현식에서는 두 가지 키워드가 존재한다.

# LINE_EXISTS와 LINE_INDEX.

1) LINE_EXISTS.

 

LINE_EXISTS는 조건에 맞는 테이블의 데이터 존재 여부를 확인해준다. 한마디로 ‘IF SUBRC = 0’ 이랑 같은 의미를 지낸다.

해당 조건에 DATA 여부를 확인하고, 존재하면 IF 문을 타게 된다.

 

2) LINE_INDEX.

LINE_INDEX는 해당 조건에 맞는 INDEX 값을 반환해준다.

인터널 테이블에 조건에 맞는 데이터가 몇번 INDEX에 있는 지 반환을 하게 된다.

 

기존에는 SY-TABIX로 인덱스 값을 확인했다면, 

테이블 표현식은 LINE_INDEX 키워드를 사용해서 조건에 맞는 데이터의 인덱스 값을 추출할 수 있다. 

 

실행 결과를 보면 CARRID가 FJ라는 데이터는 6번 INDEX에 존재하는 점을 알 수 있다. 

 

만약 데이터가 없는 경우는 0 값을 반환한다. 또한 INDEX가 존재할 수 없는 Hashed Table이나 Hashed Secondary Key를 사용한 경우에는 -1을 반환한다.

 

4. FIELD-SYMBOL ASSIGN.

필드심볼에 할당에 대한 테이블 표현식이다.

 

OLD 버전에서 IF조건문이 없고 데이터가 존재하지 않아도 덤프가 나지않는다. 

하지만 테이블 표현식은 데이터 없으면 가차없이! 덤프나기 때문에 무조건 IF 조건문으로 감싸줘야한다.

이렇게 반겨준다. 

 

25번에 데이터가 존재하지 않는 경우, 두 경우에 덤프 에러가 뜨지 않는다 .

 

근데 여기서 중요한 점은

SAP에서 해당 테이블 표현식을 쓸 때, IS ASSGIN 말고 SY-SUBRC를 사용하라고 권장을 한다. (SY-SUBRC 사용 못한다고 할때는 언제고…?)

 

이 경우에는 놀랍게도 기존에 4값만 들어오던 SY-SUBRC가 0값이 들어오게 된다........ 

이 부분에 대해서 찾아봤는데 필드 심볼의 할당은 ASSIGN을 사용하는 방법이 올바르지만, 여러 개발자의 유지보수 등을 고려하여 SY-SUBRC를 권장하는 거라고 한다. ( 어떤 개발자든 직관적으로 성공! 실패! 를 구분할 수 있다나 머라나.... ) 

 

# 응용

4-1. TABLE에서 데이터 변경

 

MODIFY로 인터널 테이블에서 값을 수정하는 과정을 간단하게 바꿀 수 있다.

NEW SYNTAX를 해석해보면 GT_SCARR테이블의 CARRID가 ‘AA’인 ROW의 CARRNAME을 ‘비행기’로 변경해라 가 될 수 있다.


다만 여기서도 해당 조건의 데이터가 없다면, ITAB_LINE_NOT_FOUND 가 반긴다는 것...

 

그렇기 때문에 나는 위 사진처럼 LINE_EXISTS를 사용하여 덤프를 방지 시킨다.

 

물론 TRY CATCH도 가능하다.

 

4-2. 2개의 테이블 데이터 핸들링.

GT_SCARR 의 특정 데이터의 값을 LT_DATA에 APPPEND 하는 상황이라고 가정.

 

 

둘 다 동일한 값을 가진다

 

4-3. F4 서치헬프 함수로 띄우는 과정에서 적용하기

실제 내가 적용했던 방법이다.

서치헬프에서 클릭한 값을 받아서 CALL FUNCTION 'DYNP_VALUES_UPDATE’에 사용하는 상황이다.

 

잘 참고하면 좋겠고 도움이 되었으면 좋겠다! 

올바르고 정답이 있는 코드는 없다고 생각한다. 

 

잘못된 코드는 있지만 올바른 코드는 없다! 각자 상황에 맞게 잘 활용하기를 바란다! 

+ Recent posts