SAP Memory 메모리 공유 활용 예시

SAP가 동작하는 Memory 방식 중 SAP Memory에 대한 사용 예를 정리해보도록 하겠습니다.

SAP Memory란 로그인한 사용자가 여러 세션에서 공유하여 사용할 수 있는 메모리 영역을 이야기합니다.

SAP Memory 사용 예시를 다음의 3가지, SU01(User Maintenance)의 Parameter 탭, 스크린에서의 Parameter ID 값 처리, 마지막으로 ABAP 소스 코드 상에서 GET/SET PARAMTER 키워드를 통해서 알아보았습니다.

참고로, SAP에서 관리하는 Session의 종류와 SAP/ABAP Memory의 차이는 아래의 글에서 자세히 확인할 수 있습니다.

SAP Session 종류 3가지(User, External, Internal)
SAP Memory 와 ABAP Memory 차이/사용법 정리

SU01 사용자 유지보수 Parameter 탭

SU01 은 사용자 로그인에 대한 ID, Password, 로그인 가능 여부, 초기 기본값 등 User 에 대한 다양한 정보를 유지 보수하는 티코드입니다.

이처럼 특정 엘리먼트는 이와 같이 Parameter ID가 사전에 지정이 되어 있는 경우가 있다. 대표적으로 회사 코드, 전표 번호, 관리 회계 영역, 영업 조직, 자재 코드 등등…

이처럼 사전에 정의된 SAP Parameter는 다음의 테이블에서 지정되어 있습니다.

테이블 : TPARA -  Directory of Memory IDs
텍스트 테이블 : TPARAT - Memory ID Short Texts

SAP TPARAT 테이블 - SAP MEMORY 파라메터

SAP는 각 User 별로 Default로 세팅할 수 있는 기능을 제공합니다.

예를 들어 BUK 회사 코드를 1000으로 세팅해 두면, 메모리 ID가 ‘BUK’ 로 적용된 PARAMETER에 자동으로 적용되도록 처리가 된다.

SU01 – Paramters에 Parameter ID 세팅

예컨대, 해외 법인 서버처럼, 한 클라이언트에 여러 국가 사용을 할 때, 각각의 사용자마다 회사코드 BUK, 관리회계영역 CAC, 영업조직 VKO 등의 조직 레벨의 코드를 SU01 User Maintenance 에서 정의해 줄 수 있습니다.

각 법인 조직 별로 기본값을 일괄로 지정해 줄 수 있고 사용자도 자동으로 기본값이 리포트 등에 반영되게 됩니다.

su01 User maintenance 에서 paramter 세팅

SAP 티코드 SCREEN의 PARAMTER ID

관리 회계 KOKRS를 SAP Memory를 사용하여 여러 세션 간 공유하는 예시를 들어보도록 하겠습니다.

관리회계영역 SAP Memory Parameter ID – CAC

로그인 후 가장 처음 CO(관리 회계) 영역에 있는 메뉴에 접근하게 되면 Controlling Area를 지정하라는 메시지가 뜨게 됩니다. 현재 SAP Memory 상에 관리 회계 영역이 지정되지 않았기 때문입니다.

이렇게 한번 지정해 준 관리 회계 영역은 로그인이 유지되는 한 계속 저장되어 CO 영역에서 활용되며 SAP Memory에 저장이 되게 됩니다.

관리 회계 영역 PARAMETER ID - CAC 에 설정

예를 들어 KS03 코스트센터 조회 프로그램의 경우에는 상단 메뉴를 통해 Controlling Area를 지정 할 수 있으며, T-CODE : OKKS 로 지정을 해도 됩니다.

T-CODE : OKKS

지정 후 ok 버튼을 눌러주면 그 뒤 모든 세션에서 재활용(GET PARAMETER) 이 가능하게 되어 더 이상 관리회계 영역을 묻는 화면은 뜨지 않게 됩니다.

ABAP 프로그램 내에서의 SAP Memory 처리 – BDC 등

따라서, 아밥을 활용해서 자동화하는 프로그램 예컨대, 코스트 센터 생성이나 원가 요소 생성/수정 등의 CO 관리 회계 영역의 BDC 프로그램을 개발할 때에는 항상 이 팝업 창을 고려해 주어야 합니다.

즉, 팝업창이 나타날 때와 안 나타날 때 두 케이스를 모두 고려해야 합니다.

관리회계 영역(KOKRS – CAC)을 예를 들어 설명해 보겠습니다.

SU01 User Parameter에 CAC를 등록해 주는 방법

첫번 째로 처음 기술한 바 있는 SU01 User Parameter에 CAC를 등록해 주는 방법이 있습니다.

su01 parameter 에 관리회계영역 CAC 설정

위에서 이야기한 바와 같이 해당 유저 아이디에 한해서는 관리 회계 영역 CAC 값이 공유되어, CAC 관리 회계 영역 코드값은 자동으로 갖고 오게 됩니다

ABAP Source 코드 내에 SET/GET PARAMETER 기술

두번째 방법은 BDC 실행 전 아밥 코드에서 항상 다음의 SET PARAMETER 코드를 넣어주면 됩니다.

SET PARAMETER ID 'CAC' FIELD '1000'.
...
SET PARAMETER ID 'CAC' FIELD P_KOKRS.

첫번째 방법과 마찬가지로 모두 SAP Memory 영역에 CAC 관리회계영역 코드가 저장이 되며, 서로 세션은 다르지만 같은 코드값을 공유하게 됩니다.


이상으로 SAP Memory 활용 예제를 정리해 보았습니다.

User Session 에 관한 좀 더 자세한 SAP의 공식 문서는 아래의 링크에서 확인할 수 있습니다.

User Sessions

함께 보면 좋은 글

SAP RFC External 디버깅 방법

SAP ABAP Dynamic Break Point 종류 3가지

SAP EU_SCRP_WN32 : CPIC-CALL, ThSAPCMRCV Screen Painter 오류 해결책