SAP 버퍼 초기화__SAP Buffer Reset

감귤은탱귤·2024년 1월 25일
0

BC TroubleShooting

목록 보기
13/16
post-thumbnail

SAP 를 운영하다 보면 가끔 버퍼로 인해 문제가 되는 경우가 있다.

대표적으로 분명 설정이 바꾸었는데, 버퍼에 있는 값 때문에 변경이 안된것처럼 보이는 현상이다.
(설정 외에도 권한값, 오브젝트, 필드값 등등이 있다.)

매뉴얼에 따라서 정상적으로 변경을 했고, 시스템에 문제가 없이 반영되었는데도 실제 사용자가 확인을 해보면 예전값(버퍼값)으로 출력되니 매우 난감한 상황에 봉착하게 된다.
이럴 경우, 경험적인 직감이 아니면 문제점을 찾기가 어렵다.

관련하여, SAP 버퍼 초기화 방법에 대해서 서술한다.



1. SAP Buffer 간략 설명

1-1. Nametab Buffer

SAP 시스템에서 활성화된 테이블 및 필드 정의
SAP 는 NTAB 버퍼를 읽어 테이블이 버퍼링되어 있는지에 대한 여부 를 확인한다.
Table : DDNTT, DDNTF

SAP Kernel 781 부터 NTAB 버퍼중 Field definition 과 Short NTAB 은 사용되지 않는다.
또한 SAP Kernel 785 부터 Nametab 버퍼 현대화가 완료되어 여러 NTAB 버퍼는 Catalog 이름으로 변경된다.

  • SAP Notes 3085975 - Catalog profile parameters as of SAP Kernel Release 781

1-2. Program Buffer

ABAP 프로그램의 컴파일된 실행 가능 버전을 저장
Table : D010L, D010T, D010Y

1-3. CUA Buffer (SAPgui Buffer -> Menu buffer)

SAPgui 의 메뉴, 푸쉬버튼 정의 등등의 GUI 인터페이스 런타임 객체를 저장
Table : D345T, D346T, D342L

1-4. Screen Buffer (SAPgui Buffer -> Presentation Buffer)

생성된 SAP 화면을 저장
Table : DYNPRO

1-5. Calendar Buffer

정의된 공장 달력(Factory Calendar), 공휴일 달력(Public Holiday) 을 저장
Table : TFACS, THOCS

1-6. OTR Buffer (Online Text Repository Buffer)

BSP, HTTP 등 에서 사용되는 텍스트가 저장된다.

1-7. Tables Buffer

부분 테이블 버퍼의 경우, 필드 값이 있는 하나의 레코드를 저장
일반 테이블 버퍼의 경우, 필드 값이 포함된 레코드 범위를 저장 (설정에 따라 모든 항목을 저장할 수도 있으며, 이를 전체 버퍼링이라고 한다.)

1-8. Export/import Buffer

Export/Import 버퍼는 여러 작업 프로세스에서 사용할 수 있어야 하는 데이터를 저장
ABAP 명령어 EXPORT TO/IMPORT FROM SHARED BUFFER 를 사용하여 Export/Import 버퍼에 데이터를 저장하고 읽을 수 있다.

1-9. Exp./ Imp. SHM Buffer (ESM)

ABAP 명령어 EXPORT TO/IMPORT FROM SHARED MEMORY 를 사용하여 공유 메모리 버퍼에 데이터를 저장하고 읽을 수 있다.
Export/import Buffer 와의 차이점은 데이터 클러스터가 저장되고 나면, 자동 강제 제거가 되지않는다.
따라서 버퍼가 가득차면 새 데이터를 로드할때 런타임 에러가 발생한다.



2. SAP Buffer 초기화

❗❗ 버퍼 초기화 시, 다시 버퍼를 채우기 위해 SAP 시스템에 부하가 발생할 수 있다.

2-1. Tcode Command 사용

TcodeBufferDesc
/$SYNCALLResets the buffers of the application server
/$NAMNametabResets the nametab buffer of the application server
/$PXAProgramResets the Program (PXA) Buffer of the application server
/$CUACUAResets the CUA buffer of the application server
/$DYNScreenResets the screen buffer of the application server
/$TABTablesResets the TABLE buffers of the application server
/$ESMExp./Imp. SHMResets the Exp./ Imp. Shared Memory Buffer of the application server
/$OBJResets the Shared Buffer of the application server

위 명령어를 사용한 버퍼 초기화는 해당 Instance 에만 적용이 된다.

2-2. Tcode AL12

  • Tcode : AL12
    -> 상단 매뉴탭 Edit
    -> Reset Buffer


3. User Buffer 초기화

여기서 말하는 User Buffer 은 사용자 권한값 버퍼를 뜻한다.

3-1. 개별 사용자 버퍼 초기화

  • Tcode : SU53
    -> 상단 매뉴탭 Authorization Values
    -> Other User
    -> <버퍼를 초기화할 User 입력>
    -> 상단 매뉴탭 Authorization Values
    -> Reset User Buffer

3-2. 모든 사용자 버퍼 초기화

3-2-1. RSUSR405 프로그램

  • Tcode : SE38

  • Program : RSUSR405

    • 옵션 Only current Client :
      현재 클라이언트 내 모든 유저에 대한 버퍼 초기화 (Table USRBF2, USRBF3)

    • 옵션 Build user buffer completely :
      클라이언트 카피 후 비어있는 사용자 버퍼 테이블(USRBF2, USRBF3) 구축

      Build user buffer completely 옵션에 대해서,
      클라이언트 카피 후에는 사용자 버퍼 테이블이 비어있고, 사용자 버퍼는 사용자가 로그인할때 새로 생성된다.
      이때 성능상의 이유로 미리 사용자 버퍼를 채우기 위해 해당 옵션을 사용할 수 있다.
      자세한 내용은 아래 Notes 를 참고하기 바란다.

      • SAP Notes 2414634 - User buffer empty after client copy

SAP_BASIS 버전에 따라 옵션 없이 바로 실행될 수도 있다.

3-2-2. Tcode SU56

  • Tcode : SU56
    -> 상단 매뉴탭 Authorization Values
    • Reset User Buffer :
      2-1. 과 동일
    • Reset User Buffer (Client) :
      2-2-1. Only current Client 와 동일
    • User Buffer Completely New (Client) :
      2-2-1. Build user buffer completely 와 동일
profile
SAP BC (2019 ~ )

0개의 댓글