SAP 유지보수뷰 수정 버튼 없애기 2가지 방법

오늘은 SAP 유지보수뷰에서 수정 버튼을 없애거나 숨기는 방법 2가지에 대해서 정리해 보았습니다.

Maintenance View는 일반적으로 SM30 Parameter Transaction으로 만든 후, Transaction에 권한을 부여하여 사용 여부를 결정합니다.

SAP ABAP 유지보수뷰 티코드 연결 방법

즉, 사용 권한은 위에서 기술된 바와 같이 Transaction 권한 부여를 통해 처리할 수 있습니다.

하지만, Maintenance View를 사용함에 있어 수정 없이 조회의 용도로만 사용하고자 한다면, 수정 버튼을 별도로 Hide 처리해주어야 합니다.

SAP 유지보수뷰에서 수정 버튼을 없애기 위해서는 아래의 2가지 방법을 활용할 수 있습니다.

1. Modification 19 번 Event 처리로 수정 버튼 없애기

수정 버튼의 SY-UCOMM 값의 확인

먼저 버튼 ucomm 값을 알아보도록 하겠습니다.

티코드 창에 /h 엔터 후, 수정버튼을 눌러 디버그 모드로 진입합니다. Debugging Control Session으로 진입하면, 수정 버튼에 대한 SY-UCOMM 값을 확인합니다.

유지보수 뷰 디버그 모드 - SY-UCOMM 값 체크

GUI STATUS를 런타임시에 제어하는 Event 19

SE11 해당 뷰로 조회하여 Table Maintenance Generator를 실행합니다.

Menu > Table Maintenance Generator  

유지보수뷰 생성기 화면 상단 메뉴에서 Environment-Modification-Events를 선택합니다.

유지보수 뷰 상단 event 메뉴

메뉴 > Environment > Modification > Events

New Entry를 선택하여 19. After initializing global variables, field symbols, etc.를 선택합니다.

  • Maintenance View 가 호출되는 바로 그 시점의 Event 입니다.
  • 전역 변수 및 내부 인터널 테이블이 초기화 됩니다.
  • 특히, GUI Interface를 EXCL_CUA_FUNCT 인터널 테이블을 통해 Deactivate 시킬 수 있는 시점입니다.

SAP에서 정의한 EVENT 19 선택

EXCL_CUA_FUNCT 테이블은 GUI Function을 런타임시에 동적으로 제어할 수 있는 변수입니다. 즉, EXCL_CUA_FUNCT 테이블에 SY-UCOMM 값을 넣어 던져주면, 해당 버튼은 Disable 처리됩니다.

EXCL_CUA_FUNCT의 구조

아래는 EXCL_CUA_FUNCT의 구조입니다.

DATA : BEGIN OF ~.
  INCLUDE STRUCTURE VIMEXCLFUN.
END OF ~.

VIMEXCLFUN 구조체는 다음과 같습니다.

VIMEXCLFUN 구조

Hide Button의 구현

그러므로 VIMEXCLFUN 타입의 structure 변수를 생성하여 해당 변수에 없애고자 하는 버튼 UCOMM 값을 넣어줍니다.

그 후 EXCL_CUA_FUNCT 테이블에 APPEND 하면 해당 버튼은 안보이게 됩니다.

FORM HIDE_BUTTON.
  DATA : LS_EXCL TYPE VIMEXCLFUN.

  LS_EXCL-FUNCTION = 'AEND'.
  APPEND LS_EXCL TO EXCL_CUA_FUNCT.
  CLEAR : LS_EXCL.
ENDFORM.

수정버튼이 없어졌으므로, 조회만 가능합니다.

수정 버튼 HIDE 처리

비슷한 방법으로 버튼 Visibility 를 조정할 수 있는 SY-UCOMM 값은 다음과 같습니다.

  • Select All : MKAL
  • Select Block : MKBL
  • Deselect All : MKLO

2. Maintenance View의 Screen PBO 변경으로 수정 버튼 없애기

해당 Maintenance View의 Status 메뉴에서 Screen number 를 더블 클릭하여 아밥 프로그램으로 들어갑니다.

유지보수뷰 메뉴 > System > Status > sap data 탭에 Screen Number 더블클릭

ABAP 프로그램에서 SCREEN으로 들어감
3번 스크린 PBO에 다음과 같이 기술합니다.

PBO에 버튼 숨김 MODULE 문 작성

해당 MODULE 구문에 다음과 같은 로직을 작성합니다.

FORM HIDE_MODIFY_BUTTON.
  DATA : LS_EXCL TYPE VIMEXCLFUN.

  LS_EXCL-FUNCTION = 'AEND'.
  APPEND LS_EXCL TO EXCL_CUA_FUNCT.
  CLEAR : LS_EXCL.
ENDFORM.

이제 View를 다시 시작하면 수정 버튼이 보이지 않습니다.

그러나 이 2번째 방법은 Maintenance View Regeneration 하게 되면 PBO 역시 초기화되어 사라지게 되므로 주의해야 합니다.


유지보수뷰의 이벤트에 대한 더 다양한 사항은 아래의 문서를 참고하시면 됩니다.

SAP Help : Extended Table Maintenance Events

이상으로 유지보수 뷰에서 수정 버튼 없애는 방법 2가지에 대해서 알아보았습니다. 유지보수 뷰에 조회 권한만 주고자 할 때 유용하게 활용해 보시기 바랍니다.

SAP의 유지보수 뷰에 대한 좀 더 다양한 내용은 아래의 글에 자세하게 기술하였습니다.

함께 보면 좋은 글

SAP 유지보수 뷰 엑셀로 다운로드 받는 방법

SAP 유지보수뷰 텍스트 필드 추가(+예제 설명)

SAP ABAP 유지보수뷰 티코드 연결 방법