SAP 시스템에는 수 많은 트랜잭션코드가 존재합니다.
SAP 시스템의 모든 업무 처리는 이 트랜잭션코드를 실행해서 작업하게 됩니다.
트랜잭션코드는 SAP 시스템의 프로그램을 실행하는 명령어 입니다.
SAP 사용자는 자신의 업무에 맞게 트랜잭션코드에 대한 권한을 부여 받아 사용하게 됩니다.
영업(SD), 생산(PP), 구매(MM), 회계(FI,CO) 등 담당 업무에 따라 관련 된 트랜잭션코드에 대한 권한을 부여 받고, 반대로 업무와 연관성이 없는 트랜잭션코드는 권한을 주지 않음으로써 불필요한 사용자가 잘못 된 트랜잭션을 처리하는 오류를 예방할 수 있게 됩니다.
간혹 업무를 하다 보면 권한이 없는 트랜잭션을 실행해야 할 경우가 생깁니다.
이럴 경우 권한 관리 담당자에게 요청해서 권한을 부여 받아야 하는데, 회사 정책 상 권한 요청 및 부여를 까다롭게 관리하는 곳이 많습니다.
이럴 경우 약간의 우회 방법으로 권한이 없는 트랜잭션코드를 실행하는 방법이 있습니다.
SAP 사용할 수 있는 권한이 없는 트랜잭션(T-code) 실행 방법 2가지에 대해 알아보겠습니다.
두 가지 방법 모두 Function 모듈을 사용하는 방법입니다. 따라서 최소한 SE37(Function Builder) 권한은 가지고 있어야 사용 가능한 방법입니다.
▼ 아래 화면은 권한이 없는 트랜잭션을 실행했을 때 나타나는 오류 메시지 입니다.
- You are not authorized to use transaction xxxx
- 트랜잭션 xxxx을(를) 사용할 수 있는 권한이 없습니다.
SAP 권한이 없는 트랜잭션 실행 방법 1 – RS_HDSYS_CALL_TC_VARIANT
▶ SAP에서 권한이 없는 트랜잭션코드(T-code)를 실행하는 방법 중에 Function 모듈 ‘RS_HDSYS_CALL_TC_VARIANT‘를 사용하여 트랜잭션코드를 실행하는 방법입니다.
1. Function 모듈을 사용하기 위해 먼저 트랜잭션코드 SE37(Function Builder) 화면을 엽니다.
2. Function Module에 ‘RS_HDSYS_CALL_TC_VARIANT‘ 입력하고 실행 버튼을 클릭해서 Function 모듈을 실행합니다.
3. 권한이 없는 트랜잭션코드를 매개변수 TCODE의 값에 입력합니다. 여기서는 테스트로 ‘RZ11’ 트랜잭션코드를 입력하였습니다.
4. 매개변수 AUTHORITY_CHECK의 값에 ‘X’를 지우고 공백으로 만듭니다.
‘X’ 값을 지움으로 해서 권한 체크를 하지 않고 TCODE가 실행됩니다.
5. 이 상태에서 실행 버튼을 클릭합니다. 이게 끝입니다.
6. RZ11에 대한 권한이 없음에도 불구하고 트랜잭션이 잘 실행되는 것을 확인할 수 있습니다.
SAP 권한이 없는 트랜잭션 실행 방법 1 – C14Z_TRANSACTION_CALL
▶ SAP에서 권한이 없는 트랜잭션코드(T-code)를 실행하는 방법 중에 Function 모듈 ‘C14Z_TRANSACTION_CALL‘를 사용하여 트랜잭션코드를 실행하는 방법입니다.
1. Function 모듈을 사용하기 위해 먼저 트랜잭션코드 SE37(Function Builder) 화면을 엽니다.
2. Function Module에 ‘C14Z_TRANSACTION_CALL‘ 입력하고 ‘Display‘ 버튼을 클릭해서 Function 모듈의 소스를 조회 모드로 진입합니다.
3. 아래 보이는 화면과 같이 44번 라인에 세션 중단점(Breakpoint)을 설정합니다.
- ①번 화살표 부분을 클릭하면 중단점이 설정되고, 다시 클릭하면 중단점이 삭제됩니다.
- 중단점(Breakpoint)은 프로그램이 실행되는 과정에 해당 중단점 위치에 도달하면 Debugger 세션으로 열리게 됩니다.
- 중단점에 대한 설명은 ABAP 프로그램에서 조건부 중단점(Break points)을 설정하는 방법 4가지 글을 참고하시기 바랍니다.
4. 중단점을 설정했다면 ②번 실행(F8) 버튼을 클릭합니다. 그럼 Function 모듈이 실행됩니다.
5. ①번의 매개변수 I_TCODE 값에 권한이 없는 트랜잭션코드를 입력합니다. 여기서는 테스트로 ‘RZ11’ 트랜잭션코드를 입력하였습니다.
6. ②번의 실행 버튼을 클릭합니다.
7. Function 모듈이 실행되다가 앞에서 설정한 중단점에서 실행이 멈추고 Debugger Session이 열리게 됩니다.
8. 44번 라인의 SY-SUBRC를 두 번 클릭해 줍니다. 그럼 아래 Variable의 Val.에 2가 표시되는 것을 볼 수 있습니다.
- ‘AUTHORITY_CHECK_TCODE‘는 매개변수로 입력 받은 트랜잭션에 대한 권한이 있는지 체크하는 Function 입니다.
- 권한이 있는 경우 SY-SUBRC에 1 값이 들어오고, 권한이 없는 경우 SY-SUBRC에 2 값이 들어옵니다.
9. Val. 값을 변경하기 위해 ②번으로 표시된 Change 버튼을 클릭합니다.
10. Val. 값을 1로 입력하고 엔터(Enter)를 눌러 SY-SUBRC 값을 1로 변경합니다.
11. SY-SUBRC 값을 1로 변경했다면 이제 Function 모듈을 계속 실행하면 됩니다. F8를 눌러 계속 실행하면 됩니다.
12. 그럼 권한이 없는 트랜잭션이 실행되는 것을 확인할 수 있습니다.
마무리
사실 권한이 없는 트랜잭션은 이용하지 않는 것이 제일 좋습니다.
굳이 방법을 우회하면서까지 트랜잭션을 실행하는 것은 결코 좋은 방법이 아닙니다.
꼭 필요한 트랜잭션은 정상적인 절차를 통해 권한을 요청하고 부여 받아 사용하는 것을 권해드립니다.
여기서 설명한 두 가지 방법 모두 ‘SE37‘이라는 Function Builder에 대한 권한이 있어야 가능한 작업입니다.
SE37은 주로 ABAP 개발자에게만 권한이 부여되는 트랜잭션코드이기에 일반 사용자에는 권한이 없을 가능성이 높습니다.
하지만 이런 방법으로 권한이 없는 트랜잭션을 실행할 수 있다는 것을 알고 있는 것도 나중에 도움이 되리라 생각됩니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
♥ 이 글이 도움이 되었기를 바랍니다. ^-^
댓글로 흔적을 남겨 주세요.