반응형

SAP에서 프로그램을 개발할 때 가장 많이 쓰는 ALV Class 에대해서 알아보자.

 

SAP에서 제공하는 ALV Class는 바로 CL_GUI_ALV_GRID .

 

ALV란 Report 프로그램에서 데이터를 조회하거나 조회된 데이터를 가공하는데 사용되는 

ABAP List Viewer.

 

아래 그림과 같이 하나의 테이블로 구성되어 화면에 나타나는 것을 ALV라고 한다.

ALV 화면

 

기본적으로 ALV Class인 CL_GUI_ALV_GRID 클래스를 사용하기 위해서는 

 

하기와 같이 DATA 타입을 선언이 필요하다. 

 

Data 타입 선언 후 생성

 

인라인 방법으로는 다음과 같다.

Inline 선언 (New Syntax)

 

container_name에는 스크린의 Custom Control Name에 넣어준 이름을 넣어주시면 됩니다.

 

그러면 CL_GUI_ALV_GIRD에서 자주 사용하는 메서드를 알아보자.

 

1. GET_SELECTED_ROWS

 

ALV에 선택된 행에 대한 정보를 받아오는 Method다.

.

 

해당 Method는 CL_GUI_ALV_GRID 를 참조하는 객체를 생성한 go_alv를 이용하여 호출.

 

'BACK' (뒤로가기) 버튼을 눌렀을 때 선택된 라인에 대한 정보를 얻기위해 아래와 같이 코드를 작성 후

 

디버깅을 위한 User command에 코드 작성

 

디버깅을 걸고 2개 선택을 한 후 lt_rows에 어떤 정보가 오는지 확인해보겠습니다.

2라인 선택 후 'BACK' 버튼 실행

 

하기와 같이 2번째와 4번째 선택된 행의 Index 정보를 얻을 수 있습니다.

해당 기능을 통해 Add버튼 혹은 Del 버튼 등 로직을 작성하는데 사용할 수 있습니다.

 

2. GET_CURRENT_CELL.

 

AVL에서 커서가 놓은 위치의 값과 속성들을 반환하는 메소드입니다.

 

호출 방법은 동일

 

해당 메소드는 2개의 라인과 컬럼의 인덱스 번호를 반환한다.

 

하나는 현재 선택된 셀의 라인과 컬럼을 반환하고 

 

다른 하나는 필터링을 통해 설정하거나 숨기기 했을 때 실제로 보이는 값과

 

인터널 데이블의 순서가 다르기 때문에 인터널 테이블의 라인과 칼럼을 반환한다.

 

 

다음과 같이 ALV에서 Over Days 컬럽에 5번째 라인 30을 선택하고 디버깅을 진행해보면

특정 셀 선택 후 실행

 

해당 셀에 몇번째 컬럼인지 , 라인의 인덱스 정보, 값 등 선택된 행에 대한 정보를 얻을 수 있다. 

해당 셀에 대한 세부 정보

 

3. CHECK_CHANGED_DATA.

 

ALV 내에서 변경된 데이터를 확인하는 Method입니다.

동일 방법으로 'BACK'시 디버깅을 위해 해당 위치에 코드 작성

 

위에서 확인했던 Over Days 30의 값을 40으로 변경해서 디버깅 진행해보겠습니다.

 

그러면 lv_valid 값이 변경되어서 'X'를 받아옵니다.

 

만약 alv에 아무것도 변경하지 않았다면 lv_valid 값은 빈값으로 반환 .

 

해당 기능을 이용하여 alv에 변경사항이 있을 시 언급해주는 로직을 작성 가능.

 

4. REFRESH_TABLE_DISPLAY

 

조회된 화면에 ALV 인터널 테이블을 다시 조회할 때 사용하는 메소드로,

 

데이터가 변경되거나 SELECT문을 다시 수행할 때 새로고침 해주는 메소드

 

해당 메소드는 아래와 같은 방법으로 호출 할 수 있다.

 

is_stable : 라인의 컬럼 위치를 기억하여 재조회 하고 이전의 위치에 화면을 보이게 하는 역할.

 

i_soft_refresh : 'X'를 주었을 때 sort, filter, sum 등 현재 alv의 layout 세팅을 그대로 유지한 상태로 refresh 진행.

 

i_soft_refresh에 빈값을 넣으면 alv sort등이 유지가 안되어 원하는 위치에 라인을 추가할 경우 

 

원하는 위치에 반영이 되지않을 수 있으니 참고하세요.

반응형

'SAP > ABAP' 카테고리의 다른 글

[ABAP] ALV Grid Event Handler - 2편  (0) 2024.06.11
[ABAP] ALV Grid Event Handler - 1편  (0) 2024.06.10
[ABAP] Search Help 초기 필드값 세팅  (0) 2024.05.28
[ABAP] Table 생성  (0) 2024.05.25
[ABAP] Class Method 정리  (0) 2024.05.23
반응형

Terms of Payment (지급조건) 발생한 채권/채무에 대하여 지급받는 기간과 할인율을 결정하는 필드값이다.

 

Vendor Customer 생성 company code 별로 설정을 해놓으면,

SD모듈의 판매오더나 MM모듈의 구매오더 입력 등록된 지급조건 값을 자동으로 가져와서 사용한다.

 

지급조건은 전표의 Line Item 부분에서 사용이 되며 사용자가 직접 전표입력

지급조건에 값을 직접 입력할 있다.

전표 Line Item 입력 화면

 

채권/채무 전표가 반제처리 되지 않은 미결상태인 경우엔

지급조건 필드값을 FB02(전표변경) 에서 가능하다.

(이미 반제 경우 수정 불가능)

 

지급조건 설정 IMG 경로
지급조건 설정화면

Day Limit 해당일자까지 입력된 채권/채무 전표를 대상으로 한다는 의미이다.

화면은 0으로 설정되어 있기에 해당월의 0일자 까지 들어온 것에 대하여 대상으로 삼는다는 의미다.

 

Account Type Customer 설정이 되어있기에 채권전표에서 사용가능 하다는 의미이다.

 

 

Baseline data calcuation Fixed Day Additional Months 빈칸으로 설정 되어 있고,

Default for baseline date Document Date 설정 되어있다.

 

,   전표생성일이 이번달 0 이전 (저번달) AR 대하여 당월까지 Baseline date 삼는다는 것이다.

 

Day Limit Payment Terms 합쳐서 독립된 값으로 관리가 된다.

화면으로 예시를 들면,

'A504' + '0' 값이 되기에

같은 Payment Terms라도 Day limit 값을 0이외에 다른 숫자로 세팅을 하게 되면

지급조건을 설정할 있다.

 

Cash Discount(할인) 화면에서 No. of days '30' 설정을 하는 걸로 되어있다.

Percentage 값이 비어 있기에 적용이 안되지만, 만약 2%라고 적혀 있다고 가정하면

 

만기일로부터(Baseline data) 30 이내 입금(지급) 처리하면 2% 할인해 준다는 의미다.

 

 

또한, Installment Payment(할부지급) 체크 박스에 선택을 한다면 할부 로직이 적용됩니다.

 

할부에 대한 실제 지급조건 설정 IMG 경로

 

아래를 예시로 들자면

할부 기간 지급조건 설정 화면

 

지급조건 설정화면

N6ZI 지급조건에는 5개월 할부가 세팅이 되어있다.

총금액중 20% 즉시 입금을 받고, 나머지는 30 후에 20%, 45 후에 20%, 60 이후 20%, 75 이후 20%

이렇게 5번에 걸쳐 분할하여 받는 케이스다.

 

실제 전표를 위와 같은 지급조건으로 설정한다면 전표라인을 5개로 자동 분리하여 전표를 생성한다.

 

Gross Method 방식 vs Net Method 방식

Gross Method 방식은 전체금액을 잡고 처리하는 일반적인 방식이고

Net Method 방식은 구매 미리 할인된 금액만큼 제외하고 매입으로 잡고 처리하는 방식이다.

Gross Method vs Net Method

 

국내에서는 할인제도가 거의 없기에 Gross Method방식으로 사용하지만,

유럽 국가는 할인제도를 많이 사용하여 Net Method방식을 많이 사용한다.

 

Net Method 방식으로 처리를 하려면

Net Method 설정 IMG 경로

 

화면 경로로 들어가서 설정이 가능하다.

 

Document Type(전표타입) 설정 Net Document Type 부분에 체크를 하면 된다.

Document Type 설정 화면

 

 

해당 글은 ' 알기쉽게 정리한 SAP FI' 책을 통해 스스로 공부하면서 정리한 내용이다. 
반응형
반응형

Customer Accounts Customer Master라고도 하며,

회사내에서 거래하는 모든 고객들을 등록하여 전표 처리시에 사용할 있다.

 

회사 내부거래를 위해 내부 사업장도 가상의 Customer등록 있고,

종업원도 Customer 등록하여 사용한다.

 

Vender Accounts Vender Master라고도 하며,

회사내에서 구매하는 모든 자재나 물품 등을 위한 거래처 등록 하여 전표 처리시에 사용한다.

Vendor 또한 Customer처럼 내부사업장,종업원 등록하여 사용한다.

 

이처럼, Customer Accounts Vendor Accounts 유사한 특성을 가지고 있다.

 

 

Customer/Vender 하나의 General Data 여러 개의 Company Code Data 가진다.

 

Customer 판매와 관련된 Sales Area Data,

 Vendor는구매와 관련된 Purchasing Organization Data 가진다.

 

예전에는 Customer/Vendor 따로 구성하였는데,

SAP에서는 BP(Business Partner) 통합하여 관리하고 있다.

BP 화면

 

이렇게 Business Parter 만들어 Customer 역할, Vendor 역할들을 한번에 관리한다.

 

Customer Vendor Master에서 Account Group 반드시 입력해줘야 하는데

가장 중요한 역할을 수행하기 때문이다.

 

Account Group 설정 필드

 

 

  1. Customer / Vendor 생성 사용 가능한 번호범위(Number Ranges) 결정한다.
  2. Customer / Vender 필드들을 통제할 있다.
  3. One time Account 설정이다.

 

번호범위 결정.

 

화면 IMG 경로에서 Number Range 설정할 있다.

 

Customer / Vender 주어진 범위내에서

순차적으로 번호가 부여되는 'Internal' 방식과

사용자가 직접 입력 값을 입력하여 사용하는 'External'방식이 있다.

Number Ranges 설정

 

External 방식으로 설정하고 싶으면 External 필드에 체크를 하면 되고 체크가 없으면

Internal 방식으로 자동 인식된다.

 

From No 반드시 To Number보다 작아야 하며 숫자는 문자보다 작게 정의되어 있다.

'0000000001' ~ '0000999999' 혹은 'AAA' to 'ZZZ' 가능하나 ,

'AAA' to '0000099999' 이런 으로는 설정이 안된다.

대신 반대 '0000099999' to 'AAA' 가능하다!

 

이렇게 만들어 Number Range Account Group Assign하기 위해서는 IMG 그림에서

Create Number Range 바로 아래 Assign Number Ranges to ~ 클릭하면

 

Number Range와 Account Group Assign 화면

다음과 같이 Account Group Number Range Assign 있는 화면이 나온다.

 

또한, 해외기업, 국내대기업, 공공기관, 종업원 계정그룹을 구분하여

그룹별로 별도의 번호 범위를 관리할 있다.

 

 

필드 통제.

 

회사가 사용하지 않을 필드들은 입력, 조회 화면에서 보이지 않게 설정하거나,

입력 해야하는 필수필드들이 입력되지 않으면 화면이 넘어가지 않도록 설정할 있습니다.

Field Status IMG경로

 

화면 IMG 경로에서 설정 가능하다.

 

이는 계정그룹 뿐만 아니라 생성, 조회인지 그리고 company code별로도 다르게 설정가능하다.

 

Vendor또한 동일한 형태로 되어있다.

 

 

회사코드(Company Code) 별로 동일한 Field Status 사용하고 싶다면 화면처럼

'*' 기호를 입력하여 설정하면 따로 Company Code 설정하지 않아도

'*' 설정된 Field Status 사용하여 필드를 통제 있다.

 

필드 통제는 Account Group , Company Code , Transaction 3군데에서 설정이 가능하기에

 

우선순위가 존재한다.

 

Suppress(Hidden) > Display > Required entry > Optional entry.

 

동일 필드에서 Suppress   Required entry 상반된 특성을 설정할 경우 Dump Error 발생.

 

 

One Time Account 설정

 

계속 거래되는 거래처가 아니고 한번만 사용하는 경우에 정식으로

Master Data 생성하여 관리할 필요가 없습니다.

 

경우, One time customer(vendor) Account group 생성하여

하나의 Dummy Customer(Vendor) 만들고 전표 입력시에 코드를 입력한

필요한 관련정보(고객명, 계좌정보 ) 전표에 입력하여 사용할 있다.

 

 

Customer & Vendor 상계 반제

 

회사와 거래를 하는 고객 Customer이면서 Vendor 경우가 존재합니다.

이러한 거래 고객은 AR(채권)전표도 발생하지만 AP(채무)전표도 발생 합니다.

 

이렇게 채권,채무 발생하는 경우에는 대금지불(Payment Run) 작업을 통하여 대금을 지불할 ,

채무 금액 - 채권금액 만큼 남은 금액에 대해서만 지급 합니다.

 

Automatic Payment Run (자동지급프로그램) 실행 경우

업체가 Customer 이면서 Vendor라는 정보를 있어야 한다.

 

BP 설정 화면

 

위에 화면과 같이 Customer Master에는 Vendor Master 등록되어 있고,

Vendor Master 에는 Customer Master 등록되어 있는 경우

Payment Transaction 탭에 Clearing w. customer 체크박스가 보이게 됩니다.

 

체크박스를 체크하면 Automatic Payment Run(자동지급) 프로그램에서

Customer Vendor 서로 상계하여 반제하고 남은 채무금액만 지급처리 수행 합니다.

 

해당 글은 ' 알기쉽게 정리한 SAP FI' 책을 통해 스스로 공부하면서 정리한 내용이다.
반응형
반응형

ABAP 개발을 하다보면 Search help 기능을 많이 만들게 된다.

 

그때마다 자주 사용하는 CALL FUNCTION인 

 

'F4IF_FIELD_VALUE_REQUEST'

 

'F4IF_INT_TABLE_VALUE_REQUEST'

FUNCTION에 대해서 알아보고, 초기 필드값을 넘겨줘서 제한된 값을 얻는 방법에 대해서 알아보자.

 

'F4IF_FIELD_VALUE_REQUEST' 는 기본적으로 이렇게 구성된다.

 

tabname 테이블 또는 스트럭쳐 Name일 말한다. 

 

fieldname 해당 tabname에 필드 네임을 넣어준다.

 

위에 코드로 예시를 들면 T001이라는 테이블에 BUKRS(company code) 필드를 말한다.

 

searchhelp는 해당 search help 이름을 말한다.

 

 

 

SE11에서 Tabname 'T001'을 조회해보면 해당 테이블에 필드 BUKRS가 있고,

Input Help/Check tab에 Srch help에 C_T001이라는 Search Help가 연결된 것을 확인 할 수 있다.

 

이렇게 할당되어있는 경우에는 위에 Search Help값을 필드 BUKRS가 Search Help C_T001이 연결되어있기에 문제없이 호출이 된다.

 

Search help값을 주석하고 돌려도 이렇게 잘 되는 것을 알 수 있다.

 

searchhelp 값 주석 처리

 

Search Help 실행

 

하지만 Tabname에 특정 필드에 연결된 search help가 없을 경우엔 Search help를 넣어줌으로써 해당search help를 불러온다.

 

Search help를 직접 할당한 경우엔 fieldname, tabname 아무 값이나 넣고 돌려도 C_T001이 열린다.

 

대신 tabname과 fieldname은 필수로 exporting해줘야 하는 값이기에 삭제하면 Dump에러가 발생한다.

 

tabname / fieldname 아무렇게나 설정

 

Search Help 실행

 

shlpparam은 Search Help에서 값을 가져올 Field 이름이다.

위에서는 BUKRS를 넣어줬으니 Bukrs값을 가져온다는 의미이다.

해당 C_T00l1은 BUKRS만 구성되어있지만,

 

아래 서치헬프 H_T002은 SPRAS, SPTXT값을 가져올 수 있다.

Search Help 'H_T002' 정보

 

 

dynprog Exporting 파라미터를 보낼 프로그램

 

dynnpr exporting 파라미터를 보낼 프로그램의 Screen 번호

 

dynprofiled exporting 파라미터를 내보낼 필드로 보시면 된다.

 

말그대로 dynamic하게 반영해주기 때문에 아주 편하고 유용하게 사용된다.

 

자 그럼 초기 필드값의 세팅하는 방법에 대해서 알아보자.

 

Exporting 에 callback_program과 callback_form을 넣어주면 됩니다.

 

callback_program 은 Search Help 실행 전 Perform문을 부를 프로그램 정보

 

callback_form은 callback_program에 있는 Perform문의 이름을 가리킨다.

 

 

그러면 sy-repid(현재 프로그램)에 CALL_BACK_BUKRS 퍼폼문을 부른다는 의미이기에 다음과 같이 해당 프로그램에 Perform문을 작성해준다.

 

이부분은 Exit을 이용한 Search Help를 만들때와 같은 방법으로 selopt을 설정하여 파라미터를 넘겨주는 것과 같다.

 

BUKRS필드에 '맛있닭'이라는 초기값을 세팅해서 F4(search help)를 사용해보면 다음과 같은 결과가나온다.

 

자 그러면 2번째로 많이 쓰이는 FUNCTION인 'F4IF_INT_TABLE_VALUE_REQUEST'와 비교해보자.

 

Function 이름에서 부터 Internal table을 가지고 search help할 것이라는 느낌을 받을 수 있듯이

위와 같이 search help할 테이블을 인터널 테이블로 구성하고 TABLES에 해당 인터널테이블을 보내

Search Help를 만들어 주는것으로 보면 된다.

 

특정 테이블의 필드와 매칭된 search help 나 혹은 만들어진 search help가 아니라 커스텀한 테이블을 가지고 search help를 구성할 때 사용한다고 생각하면 될 것 같다.

 

retfield는 internal table에서 구성된 어떤 필드를 exporting 할 파라미터인지를 정해주는 것으로 보면 된다.

 

초기 필드값 세팅하는 방법은 위의 방법과 같이 callback_program 과 callback_form을 지정해주고

Perform문을 만들어 주기만 하면 끝.

 

하지만 위에 설명한 CALL BACK FORM에서 다른점은 다음과 같다.

 

해당 펑션은 internal table로 받아오기 때문에, F4 실행전 수행하는 Form문에서는 

어떤 필드에 초기값을 넣어줘야할지 인식을 못한다.

 

첫번째 값이면 'F0001' 두번째면 'F0002' ~ 이런식으로 넣어주면 된다.

 

위의 코드를 보면 3번째 필드에 초기값을 세팅하는 것이라고 보면 된다.

 

 

User 필드에 세팅하고 싶다면 

ls_selopt-shlpfield = 'F0001'로 설정하면 User필드에 값이 들어 간다.

 

기존의 Search Help가 대량의 데이터거나 internal table이 대령 데이터일 경우

 

초기값을 세팅하여 초기값으로 제한된 Hit List를 띄어 선택할 수 있게 할 수 있어서

 

F4를 눌렀을 떄 시간을 단축시킬 수 있어 프로그램이 훨씬 깔끔해지는 장점이 생긴다.

 

반응형

'SAP > ABAP' 카테고리의 다른 글

[ABAP] ALV Grid Event Handler - 1편  (0) 2024.06.10
[ABAP] ALV Class - Method 1편  (1) 2024.06.04
[ABAP] Table 생성  (0) 2024.05.25
[ABAP] Class Method 정리  (0) 2024.05.23
[ABAP] Search Help Exit 함수 만들기 - 2편  (0) 2024.05.22
반응형

 

하나의 계정코드에는 2가지 종류의 세그먼트로 구분할 있다.

 

G/L 마스터 T-Code : FS00.

 

1. Chart of Account 세그먼트 (T-code : FSP0)

2. Company Code 세그먼트 ( T-code : FSS0 )

 

 

Chart of Account 세크먼트는 하나의 계정코드 마다 1개만 존재할 있지만,

Company Code 세그먼트는 Company code의 개수에 따라서 여러 개가 존재 있다.

 

Chart of Account Segment 정보 (FSP0)

Chart of Account 세그먼트 (T-Code : FSP0)

 

Account Group (계정그룹) 2가지 역할을 한다.

1) 계정코드(Account Number) 번호범위(Number Range) 통제한다.

2) Company code segment 필드를 통제한다. (Field status Group)  

 

Account Group 트랜젝션코드로 화면이 통제가 가능하기에 동일한 필드에 대하여 필드통제가

서로 다른 경우에는 아래와 같은 우선순위를 두어 높은 우선순위가 Activity 처리되도록 하고있다.

 

Field Status Group 우선순위

 

Suppress > Display > Required entry > Optional entry

 

하나의 동일 필드가 계정코드그룹에서는 Hidden(Suppress) 설정되어있고,

트랜젝션코드 설정에서는 Required entrty 설정되어있는경우엔 Dump 에러가 발생.

 

Account Group 설정 IMG 경로

 

위에 그림에 있는 Define Account Group 들어가보면 계정그룹 설정화면이 나온다.

 

모든 Account Group별로 계정코드의 번호범위를 동일하게 부여할 있지만,

위에 그림처럼 계정그룹별로 어느정도 사용할 있는 Number Range 설정하는 것이 오류를 줄일 있다.

 

위에 화면에서 라인을 선택하고 Field Status 버튼을 클릭하면 필드의 특성을 설정할 있다.

 

Account Group 별로 Field Status 설정 하는 화면

 

계정 특성 설정

계정코드는 각각 어떤 특성을 가진 계정인지 설정을 해야한다.

Balance Sheet 특성 (대차대조계정) P&: Statement Account 특성 (P/L 손익계정) 이다.

 

연말결산작업 잔액이월(Balance Carry-forward) 작업을 수행

Balance Sheet 특성을 가진 계정은 계정잔액금액을 금액 그대로 차년도 이월

 

P&L Statement Account 계정은 해당 계정으로 이월하지 않고,

이익잉여금계정(retained earnings account)으로 설정된 계정에 손익계정을 전체 합한 잉여금계정만 이월한다.

 

, B/S계정은 해당 잔액을 그대로 차기년도로 이월하는 것이고 P/L계정은 이익잉여금계정으로

P/L 계정들이 Summary 금액이 이월되는 차이점을 가지고 있다.

 

이익잉여금 설정하는 IMG 경로

 

Define Retained Earnings Account (이익잉여금 정의) 들어가보면

이익잉여금계정 설정화면이 나온다.

 

이익잉여금계정은 하나 혹은 여러 개를 설정할 있다.

화면은 1개의 이익잉여금 계정으로 집계되도록 설정된 경우다.

 

만약 'X' 말고 다른 계정 'A' 이익잉여금 계정을 추가했다면

 

G/L Account 설정 P&L Statement account 설정

Functional Area에서 X' 'A' 하나를 선택하는 화면이 나타나며 하나를 선택하면 된다.

 

 

Company Code Segment 정보 (FSS0)

Company Code  세그먼트  ( T-code : FSS0 )

 

Account Currency 필드는 해당 계정코드의 통화를 설정하는 필드다.

외화은행계좌인 경우엔 해당 외화 통화코드를 넣고 사용한다.

 

해당 필드가 특정 외화통화로 설정되어 있는 경우에는 계정으로 전표를

지정된 통화이외에 다른 통화를 입력할 경우에는 전표 입력이 되지 않는다.

 

보통 빈칸으로 두거나, Company Code Local 통화로 입력하여

사용자가 어떠한 통화로 입력하여도 전표가 가능하게 설정을 합니다.

 

 

Tax Category 필드는 계정코드가 어떤 타입의 세금코드 인지를 설정하는 필드다.

값이 '*' 경우 매입, 매출 어떠한 세금코드가 들어오더라도 전표기표가 가능하다.

값이 '-' 경우 매입부가세 코드만 입력할 있으며,

값이 '+' 경우 매출부가세 코드만 입력할 있다.

 

값이 '<' 경우 해당 계정코드 자체가 매입부가세 계정코드라는 의미이며,

값이 '>' 경우 해당 계정코드 자체가 매출부가세 계정코드를 의미한다.

 

Extended Open Item Management 미결계정(Open Item) 으로 관리할 것인지를 결정하는 필드다.

미결계정이란 반드시 반제(Clearing)처리가 필요한 계정이라는 의미다.

 

일반적으로 Customer , Vendor 등의 reconciliation 계정은 여기에 체크하지 않고 자동으로 미결계정으로 인식한다.

 

Bank(은행), tax(세금), raw material(자재), reconciliation(조정), P&L(손익) 계정 등은 Open 계정으로 설정하지 않아도 자동으로 Open계정으로 인식

 

Sort Key 필드는 전표의 Assignment 필드값에 어떤 값이 들어올 것인지를 결정하는 설정 조건이다.

Assignment 필드는 Line Item 화면에서 제일 좌측에 보여져 전표의 라인항목 순서를 결정하므로 sort key라는 명칭으로 설정되었다.

 

Company Code data - Create/bacnk/interest 탭

 

Field Status Group 필드는 계정코드로 전표를 입력할 나타나는 전표입력 필드의 화면을 설정 하는 필드다.

 

Post Automatically Only 필드 설정할 경우엔 자동 생성되는 전표의 계정으로만 사용할 있다.

 

Supplement Auto. Posting 필드는 자동으로 생성되는 전표라고 할지라도 체크하게 되면

수작업으로 전표를 입력할 있는 계정이 된다.

 

해당 글은 ' 알기쉽게 정리한 SAP FI' 책을 통해 스스로 공부하면서 정리한 내용이다.
반응형
반응형

Chart of Accounts 회사에서 사용할 G/L Account 모음으로 계정과목집 혹은 계정코드집이라 한다.

 

SAP시스템 내에서는 여러 개의 CoA 생성하여 사용할 있다.

 

Chart of Accounts 설정 경로

 

Chart of Account 위에 위치에서 정의 있다.

 

Chart of Account 설정 화면

CoA 4자리 이내 영문자 숫자로 코드값 정의 가능하다.

 

General specifications

사용언어 설정 계정코드(G/L Account) 자릴수를 10자리 이내에서 설정 가능하다.

해당 항목은 6자리이내로 설정이 되어있다.

 

이렇게 10자리보다 작은 코드값을 사용할 경우 앞이나 뒷부분에 빈칸이 생기게 되는데,

시스템에서 G/L Account 문자/숫자 유형에 따라 자동으로 0으로 채워준다.

 

숫자로만 이루어지면 0 앞으로 채워진다. (ex. 0000123456 )

문자가 하나라도 있으면 0 뒤로 채워진다. (ex. 12345A0000 )

 

 

Consolidation

Group Chart of Account 설정 있으며

서로 다른 CoA 사용하는 회사를 하나의 계정코드로 묶어서 있게 해주는 기능이다.

 

Status

Blocked 필드를 이용하여 CoA 사용중지 상태로 만들 있다.

 

하나의 Company Code 반드시 하나의 CoA 사용해야만 한다.

 

하지만, 여러 개의 Company Code 하나의 동일한 CoA 사용할 있다.

 

이유는 동일회사 또는 동일 그룹인 경우 하나의 CoA 사용해야만 회사 전체 재무제표 생성이 쉽기때문이다.

 

Company Code - CoA Assign 경로

위에 설정에서 CoA Company Code Assign 있다.

 

 

Group Chart of Account

 

Group Chart of Account 서로 다른 CoA 사용하는 회사에 대하여 동일한 Group Account 연결하여

그룹공통의 재무제표를 생성할 있도록 해주는 그룹 계정과목집이다.

 

주로 대외적인 목적보다는 내부관리 목적으로 사용된다.

 

Group CoA 활성화가 되면 Group Account Number 필수필드가 되어

G/L Account 생성 반드시 Group Account Number 입력 받아야 한다.

 

Group CoA 사용하지 않는다고 세팅하면

G/L Account 생성 Group Account Number 필드가 화면에 보이지 않게 된다.

 

전표 작성 Group Account Number BSEG테이블의 ALTKT 필드로 들어간다.

 

BSEG Table의 ALTKT 필드

 

Country Chart of Account

 

Country Chart of Account Country-specific CoA 혹은 Alternative CoA라고 불린다.

 

Country CoA 국가별 특별한 규제 목적의 재무제표나 세무 레포트 작성을 위해 고유의 계정코드를 사용할 필요가 있다.

 

Group CoA 내부적인 목적으로 사용이라면 Country CoA 특정 국가별 요구되는 법적인 요건을 위한 외부적인 목적이다.

 

 

Alt. CoA 설정되면 전표 생성 BSEG 테이블의 LOKKT 필드에 Country CoA 정보가 저장된다.

BSEG Table의 LOKKT 필드

 

일반적인 Operation CoA 필수로 입력되어야 하며,

Group CoA Alternative CoA 선택적으로 사용하거나 하지 않을 있다.

 

G/L Account 생성 설정해두면 자동으로 생성되기에 최근에 사용하는 기업들이 늘고 있는 추세다.

 

해당 글은 ' 알기쉽게 정리한 SAP FI' 책을 통해 스스로 공부하면서 정리한 내용이다.
반응형
반응형

먼저 ABAP Table을 만들기 위해서는 

 

T-Code : SE11로 들어간다.

 

SE11 에서 Table 만드는 방법

 

Database table에 Table이름을 입력하고 Create 버튼을 누르면 Table 생성 화면으로 넘어간다.

 

먼저 Delivery Class를 설정해야 하는데, 

Delivery Class란 테이블 데이터의 전송 제어를 위한 세팅 이다.

Delivery Class 종류

 

들어갈 수 있는 값으로는 A,C,L,G,E,S,W 이렇게 7가지가 있는데, 

설명 읽어봐도 알 수 있듯이 일반 사용자가 사용할 수 있는 케이스는 A와 C입니다.

 

A : 각 시스템에서 데이터를 직접 제어하는 경우로 일반적으로 사용되는 Customer Table.

C : 데이터를 CTS가능하게 하여 개발, QA, 운영 등 동일한 데이터를 가져야 할 때 사용하는 Customer Table.

 

일반적으로 A를 선택하고 넘어가시면 됩니다.

 

Data Browser / Table view Editing

 

테이블의 데이터를 유지보수 툴 이용 접근 허용 여부를 선택해주는 것이다.

 

Display/Maintenance Allowed with Restrictions : 제한적으로 Display와 Maintenance 를 허용하는 것

                                                                                   허용되는 T-code는 SE16과 SE54 이며 / 데이터 수정 및 SM30은 불가

 

Dsiplay/Maintenance Allowed :  모든 기능을 허용한다. 이 설정이 되어있으면 SE16N에서 데이터 수정이 가능하다.

 

Display/Maintenance Not Allowed : 모든 기능을 허용 하지 않는다.

 

Only display allowed : Display 접근만 가능.

 

보통 개발중엔 Allowed로 하고 나중에 Restiction으로 바꿔서 허용하는 경우가 많다.

 

Fileds 탭

 

Fields Tab에서는 테이블에 들어갈 필드와 타입을 설정해주는 곳이다.

이미 정의되어있는 Data element를 넣어주고 엔터를 눌러주면 데이터 타입이 들어간다.

 

또한, 키를 설정하고 싶으면 key부분에 체크박스를 하여 선택해주면 테이블의 키값이 된다.

Remark 같은 data타입 없이 직접 타입을 주고싶으면 Built-In Type 버튼을 눌르면 입력이 가능하다.

Built-In Type 버튼 눌렀을 때

 

Built-In Type 버튼을 누르면 Data Element로 설정된 부분은 수정불가로 변하고

Data Type을 입력할 수 있는 필드들은 수정이 가능하도록 바뀐 것을 볼 수 있다.

 

또한, 해당 필드에 Search Help를 연동 시키고 싶으면 아래와 같이 필드를 선택하고

Search Help 버튼을 눌러서 Search Help 이름을 반영해 주면 된다.

Search Help 버튼 클릭

 

그다음 만들 때마다 세팅을 어떻게 줘야 할지 모르는 기술적 세팅(Technical Settings) 을 해야한다.

Technical Settings 버튼

Technical Setting이란 테이블의 범주, Size 세팅,

버퍼사용여부, DB Log를 쌓을지 여부 세팅하는 곳이다.

 

Data Class는 필수 선택이다.

 

먼저 필수 항목인 Data Class를 알아보자.

Data Class 에 들어갈 수 있는 값

 

Data Class : 데이터의 건수가 변경이 얼마나 자주 일어나는지에 따라 물리적 영역 정의다.

-. APPL0 (Master Data) : 거의 변경이 되지 않는 데이터 (ex 주소 )

-. APPL1 (Transaction Data) : 변경이 자주 되는 데이터 (ex 거래 )

-. APPL2 (Organization data) : 변경이 없는 데이터        (ex 국가 )

 

해당 테이블의 성격에 따라 위 3가지 중 하나를 선택하면 된다. 

보통 개발 할때 APPL0과 APPL1을 많이 사용하게 된다.

 

다음은 Data Class 아래있는 항목인 Size Category는 말 그대로 저장가능한 데이터 건수를

지정하여 공간을 얼마나 가져갈지 계산한다.

넉넉하게 설정하되 너무 크게 잡아 데이터베이스 공간 낭비가 너무 되지 않도록 사이즈를 정한다.

 

Table 의 Data Size 설정

 

다음은 Buffering 설정을 해야한다.

다음은 Buffering 설정을 해야한다.

Buffering 선택 리스트

 

Buffering Not Allowed : 버퍼를 비활성화. ( 트랜젝션이 많이 안일어나는 테이블 일경우 선택 )

Buffering allowed but switched off : 트랜젝션 상황에 따라 버퍼를 활성화/비활성화 한다. 

Buffering Activated : 버퍼 활성화 ( 데이터에 접근이 많은 경우 선택 ) 

 

주로 CBO테이블일 경우 데이터 접근이 많지 않기에 메모리 영역을 확보하여

Performance를 고려하는 방법으로 버퍼를 허용안하고 만드는 경우가 많습니다.

 

Buffering Type 설정은 버퍼를 사용할 경우 선택하는 케이스로

Not Allowed 선택 했을 시 체크할 필요 없습니다.

 

Buffering Type 설정

 

Single records buffered 는 말그대로 1개 를 버퍼에 저장한다는 것입니다.

예를들어 select single * from ytest_t001 where belnr = '450000001' 이런 식으로 했을 때 1개의 데이터를 버퍼에 저장.

 

Generic Area Buffered는 Key값 기준 일치하는 데이터 모두 버퍼링.

Fully Buffered는 모든 레코드를 버퍼링 한다는 의미입니다.

 

DB Log 설정

 

Log data Changed 는 Delete Update의 DB Log를 쌓을지의 여부 세팅 값입니다.

 

이렇게 테이블 생성 하는 법을 알아봤는데,

개발 할 때 기술적 세팅은 Delivery Class와 Size 세팅만하고

나머지 세팅은 건드는 일이 없을 확률이 큽니다.

 

Table 세팅하는 방법에 대해서 알아봤습니다.

반응형
반응형

 

1. Company

 

Company Company Code 다른 조직구조이다.

 

Company 연결회계(consolidation) 목적으로 사용되며,

사용하려면 회사코드 생성하기 전에 먼저 생성하여야 한다.

 

오로지 Consolidation 담당자가 사용하는 조직구조로 일반 SAP사용자는 몰라도 되는 정보이다.

 

Company IMG 세팅 경로

 

Define Company 에서 Company 생성할 있으며

Company 생성 화면

 

위에 보이는 화면과 같이 회사의 주소정도 , 나라, 언어 그리고 통화 정보를 입력하여 관리한다.

 

이렇게 설정된 Company 정보는 Company Code Assign 있다.

Company code와 Company Assing 하는 IMG 경로

 

하나의 Company 여러 개의 회사코드와 연결될 있지만,

 

연결결산의 용도로 사용하기 위한 값이기에 상위조직은 아니다.

Company Code와 Company 가 Assign안된 경욷 존재

 

이렇게 미리 정의된 Company값을 가지고 계정코드 생성화면에서 각각의 계정코드 별로

Trading Partner 값을 등록하거나, 연결결산 혹은 Cross-Company code Transaction 처리시에 사용할 있다.

 

2. Profit Center

Profit Center : 손익부서코드로 매출을 취합하여 이를 원가에 반영하는 목적 (FI)

 

Cost Center : 비용을 취합하여 이를 원가에 투입하고자 하는 목적 (CO)

 

Profit Center 내부관리 목적으로 B/S(대차대조표) P/L (손익계산서) 산출목적

CO모듈 구성요소로 시작하였으나,

New G/L 사용하면서 BA기능을 대신할 있는 FI조직코드로 통합되어 사용하고 있다.

Profit Center 설정하는 IMG 경로 (FI영역에 구성되어있다.)

 

Profit Center Business Area보다 유연하게 사용이 가능하다.

 

입력하지 않더라도 전표생성 저장이 가능하고

조직구조 변경이나 Hierarchy 구성이 가능한 조직코드다

 

Profit Center Basic Data 화면
Profit Center 의 indicators 화면

 

Profit Center 생성시에 설정하는 항목들이다.

 

Profit Center Group, Segment정보 , Profit Center값이 없을 자동으로 입력하게 하는

Dummy Profit Center인지 여부, Lock, 그리고 Company Code 등의 정보를 가지고 있다.

 

SAP사용 가능한 대부분의 Object에서 Profit Center 연결하여 사용이 가능하므로

아주 강력한 조직구조의 하나이다.

 

General Account 그룹에 대하여 Profit center 설정 경로

 

들어가보면 아래 그림처럼 General Account(계정코드) 그룹에 대하여 기본 Profit Center값을 설정해 놓을 있다.

설정된 계정코드로 발생한 전표라인에 대해서 Default Profit Center 설정된 값을 자동으로 할당된다.

 

필요하면, 사용자가 직접 수정할 있다.

 

3. Segment

Segment Business Area Profit Center보다 자유로운 레포팅을 위하여 신규로 추가된 조직구주다.

전표 입력 시의 Segment 필드

 

위의 그림처럼 직접 Segment 입력할 있으며,

아래와 같이 Profit Center 정의에서 생성시 연계된 segment 값을 미리 입력하여 저장 있다.

 

Profit Center IMG 경로
Segment 연동 할 수 있다.

 

이렇게 Profit Center Segment 설정해주면 다양한 Object에서 Profit Center 값이 정해질

Segment 자동으로 반영된다.

MM/PP/SD/CO/PS 다른 모듈에서 재무전표가 발생하면 입력된 Profit Center 값이 들어올 자동으로 Segment 가져오는 구조이다.

 

Segment New G/L Document Splitting 시에 사용하여 효율적인 재무제표를 생성할 있다.

Segment 설정 하는 IMG 경로

 

Segment 위에 그림에서 설정이 가능하다.

 

 

해당 글은 ' 알기쉽게 정리한 SAP FI' 책을 통해 스스로 공부하면서 정리한 내용이다.

반응형
반응형

 

1. Client

Client 직접적인 FI 조직구조가 아니다. 하지만 SAP에서 모든 모듈의 최상위의 조직레벨로 있다.

SAP Gui 로그인 화면

 

SAP GUI 로그인 Client 지정하도록 되어있다.

, 우리가 일반적으로 SAP 로그인하여 사용할 반드시 하나의 Client 업무 처리

 

Client 내에서 독립적인 사용자관리, IMG설정, Company Code 등의 조직단위 설정

트랜젝션처리 작업 수행한다.

 

일부 IMG설정에서 전체 Client 공용되는 설정도 있을 있다.

 

 

 

2. Company Code

Company Code(회사코드) SAP 모든 조직구조 중에서 가장 기본이다.

 

Client와 CoA 그리고 Company code 구조

 

Company Code = SAP FI에서 법적인 조직구조 (Legal entity)

 

회사코드 단위로 독립적인 B/L Sheet (대차대조표) P/L Account(손인계산서) 생성 가능.

또한,  재무결산 감가상각 등의 작업을 수행 있다.

 

회사코드는 국가별로 법인 또는 지점을 가지고 있을 경우

 

사용언어 통화상의 문제로 국가별로 Company Code 구성하여 사용하기도 한다.

 

 

3. Business Area

Business Area(BA) 회사 내부적인 레포팅을 작성하기 위한 조직구조로 많이 사용된다.

 

회사코드의 종속적인 조직구조가 아니다.

 

하나의 BA 여러 개의 회사코드에 연결하여 사용할 있으나,

일반적으로 하나의 회사코드에만 연결하여 사용하는 케이스가 많다.

 

BA 단위로 B/L Sheet P/L analysis 작성할 있으나,

은행정보나 세금 정보가 직접적으로 연결이 안되어 외부보고차원의

재무제포나 레포트를 사용하기엔 어려움이 발생하고

결산 프로그램이나 감가상각작업 실행 없다.

 

그래서 최근에는 BA보다는 역할을 대신할 있는 Profit Center 사용하는 경우가 많다.

 

실제로, SAP에서 BA기능보안은 중지하고, Profit Center 많이 사용하도록 권장한다.

T-code : SPRO 에서 Business Area 설정 하는 경로

 

Define Business Area

 

하나의 BA 여러 개의 회사코드와 연결 있기에

회사코드와 별도로 연결(Assign) 설정을 하지 않는다.

 

Business Area 사용할 것인지 아닌지는 Company Code 설정화면에서 세팅한다.

 

Global Parameters 설정하는 경로

 

Enter Global Parameters 들어가면 다음과 화면이 나온다.

Business Area Fin. Statements 필드에 체크를 경우 Business Area 필수 필드로 설정된다는 것이다.

 

BA 필수 필드가 되면 CO,MM,SD 다른 모듈에서도 동일하게 필수값으로 입력 받아야 한다.

 

조직구조에서 Client와 Company Code 그리고 Business Area에 대해서 알아보았다.

 

 

해당 글은 ' 알기쉽게 정리한 SAP FI' 책을 통해 스스로 공부하면서 정리한 내용이다.

반응형
반응형

 

Class 내부에 Method를 만들어보고 Attribute와 Method의 Parameter가 어떠한 차이가 있는지 확인.

 

클래스 생성 화면

 

 클래스 생성에서 Attribute에 Method Variable인 MV_NUM를 Static Attribute / Public 을 설정해서 저장

 

Level 이란 클래스가 해당 요소를 사용하기 위한 주체가 될 수 있는지 결정

Level 설정 하는 화면

 

Level에는 Instance Atrribute와 Static Attribute그리고 Constant 값을 가질 수 있다.

 

1. Instace Atrribute : 클래스를 이용하여 인스턴스화한 객체마다 부여되는 속성으로 보면된다.

 

2. Static Attribute : 클래스 자체 속성으로 클래스를 이용하여 인스턴스화한 객체에 상속되는 속성.

                                 즉, 해당 클래스로 인스턴스화된 객체들은 Static 속성의 값이 같다.

 

3. Constant : 특정 변수를 고정시켜서 그 값을 사용할 수 있다. (Attribute 에만 존재하고 Method는 존재하지 않음)

 

Visibility 설정 하는 화면

 

Visibility는 보안 수위를 설정하는 기능으로 Public과 Protected 그리고 Private 값이 들어올 수 있다.

 

1. Public : 클래스 외부에서도 접근 가능으로 클래스를 호출해 사용하는 프로그램 등 에서 어디서든 접근 할 수 있고, 자식 클래스에 상속이 된다.

 

2. Protected : 클래스 내부에서만 접근 가능으로 클래스 관리 툴에서만 접근할 수 있고, 자식 클래스에 상속된다

 

3. Private : 클래스 내부에서만 접근 가능으로 클래스 관리 툴에서만 접근할 수 있고, 자식 클래스에 상속되지 않는다.

 

Method 입력 Tab

 

 Methods에 2개 Method를 작성합니다. 1개는 변수2개를 받아 서로 빼는 method고

다른 1개는 변수 1개를 받아 제곱하는 method를 만들어 보자.

 

위에 그림에서 method를 마우스로 클릭하고 Parameters 버튼을 클릭하면 다음과 같이 변수 입력하는 창이 나옵니다.

 

Method에 Import, Export 파라미터 설정 화면

 

 Method 2개에 importing 변수와 exporting 변수를 입력해주고  Sourcecode 버튼을 눌러 코드를 작성하면 된다.

 

GET_MINUS / GET_SQUARE Method 코드

 

 

Sourcecode를 다음과 같이 작성하고 프로그램에서 Method를 어떻게 호출하여 사용하는지와

Class의 Attribute에 작성된 MV_NUM의 값이 어떻게 되는지 추적 해본다.

 

 

같은 프로그램내에서 방금만든 클래스의 Method를 호출

디버깅 화면

 

기본적으로 Method를 호출하는 방법은

CALL METHOD class=>method명 으로 사용하면 된다.

 

 동적으로 Method를 호출하여 사용가능하며 동적 호출은

class=>method명( f ) 로 사용하면 되고 dynamic 기호인 ( )를 꼭 사용해야 된다.

 

지금 만든 GET_MINUS 나 GET_SQUARE는 Static method이기 때문에 => 이 기호를 사용하지만

Instance method는 클래스를 인스턴스화하여 사용하기 때문에 -> 이 기호를 사용해야 한다.

 

 

그러면 위에 작성한 코드에서 Method변수와 Attribute (MV_NUM)이 어떻게 되는지 디버깅타면서 알아보자.

 

GET_MINUS Method 내부

 

GET_MINUS method를 타고 Importing 값과 Exporting값이 적용되었고 MV_NUM은 91로 저장되었다.

 

GET_MINUS Method 나온 후

 

GET_SQUARE method로 들어가기 전에 exporting 값이 lv_result에 할당이 되었고,

이제 get_square method에 들어갔을 때 MV_NUM은 어떤지 보자.

 

GET_SQUARE Method 내부

 

ET_SQUARE Method에 들어갔을 때 lv_num1,lv_num2,ev_result 값은 리셋으로 시작되지만

Class Attribute의 값(MV_NUM)은 GET_MINUS에서 얻은 값인 91로 그대로 유지되고 있다.

 

다음 단계로 넘어가면 LV_NUM2 = 91 - 25 = 66으로 적용되고

그 후 다시 MV_NUM의 값을 LV_NUM2로 바꾸면 MV_NUM의 값은 66으로 고정된다.

 

 

Method의 변수로 등록하는 것은 Method가 실행될때마다 리셋되지만,

 

Class Attribute에 넣어준 속성 값들은 프로그램내에서 계속 유지되어 있어 언제든지 Method를 통해 값을 가공하여 원하는 값을 얻을 수 있다.

 

Attribute에는 변수 뿐만 아니라 인터널 테이블 MT_XXX / 스트럭쳐 MS_XXX 식으로

 

Naming Rule에 어긋나지않게 작성 후 받아서 가공할 수 있다.

반응형

'SAP > ABAP' 카테고리의 다른 글

[ABAP] Search Help 초기 필드값 세팅  (0) 2024.05.28
[ABAP] Table 생성  (0) 2024.05.25
[ABAP] Search Help Exit 함수 만들기 - 2편  (0) 2024.05.22
[ABAP] Search Help Exit 함수 만들기 - 1편  (0) 2024.05.22
[ABAP] Search Help 만들기  (0) 2024.05.21

+ Recent posts