ABAP로 프로그램을 개발하고 나면 마지막 관문이 남습니다. 사용자가 SE38에서 프로그램명을 쳐서 실행하게 할 수는 없으니, 트랜잭션 코드(T-Code)를 만들어 메뉴에 붙여주는 작업입니다. 개발 자체보다 쉬운 일인데도 처음에는 SE93, SE43, PFCG 중 뭘 어디에 써야 하는지 헷갈립니다. 이 글에서 커스텀 프로그램을 사용자 메뉴까지 연결하는 전체 과정을 단계별로 정리합니다.
전체 흐름은 이렇습니다: ① 프로그램에 T-Code 부여(SE93) → ② 메뉴에 등록(SE43 영역 메뉴 또는 PFCG 역할 메뉴) → ③ 권한과 함께 사용자에게 배포. 하나씩 봅니다.
1단계. 트랜잭션 코드 생성 — SE93
먼저 개발한 프로그램(예: ZFI_REPORT01)을 호출할 T-Code를 만듭니다.
- 트랜잭션 SE93 실행
- Transaction Code 입력란에 만들 코드 입력 (예:
ZFI01) → 생성(Create) 클릭- 커스텀 코드는 반드시 Z 또는 Y로 시작해야 합니다
- 네이밍은 팀 규칙을 따르되, 모듈 접두어를 넣는 방식(ZFI*, ZMM*)이 관리에 편합니다
- 짧은 설명(Short Text) 입력 후, 트랜잭션 유형 선택 팝업이 나옵니다. 여기가 핵심 분기점입니다:
| 유형 | 언제 쓰나 |
|---|---|
| Program and selection screen (report transaction) | 실행형 리포트 프로그램 (선택화면이 있는 일반적인 Z리포트) — 가장 많이 씀 |
| Program and screen (dialog transaction) | 모듈풀(Dynpro) 프로그램. 시작 화면 번호를 지정 |
| Transaction with parameters (parameter transaction) | 기존 트랜잭션(SM30 등)에 파라미터를 미리 채워 호출할 때 |
| Transaction with variant | 표준 트랜잭션을 트랜잭션 배리언트와 함께 호출 |
일반적인 조회/실행 리포트라면 첫 번째(report transaction)를 선택합니다.
- 다음 화면에서:
- Program: 프로그램명 입력 (예: ZFI_REPORT01)
- Selection screen: 보통 1000 (기본 선택화면)
- 하단 GUI Support: SAP GUI for Windows/HTML 등 체크 (전부 체크가 일반적)
- 필요 시 Authorization Object: 이 T-Code 실행에 요구할 권한 오브젝트를 지정할 수 있습니다 (지정하면 S_TCODE 외 추가 권한 체크가 걸립니다)
- 저장 → 패키지 지정 → 트랜스포트 요청(TR)에 담기
여기까지 하면 명령 필드에 /nZFI01을 쳐서 프로그램이 실행됩니다. 참고로 파라미터 트랜잭션은 실무 활용도가 높은데, 대표 사례가 “SM30 + 특정 테이블”을 하나의 T-Code로 만들어 현업에게 테이블 관리 화면만 열어주는 방식입니다.
2단계(방법 A). 영역 메뉴에 등록 — SE43
SAP Easy Access 첫 화면에 보이는 트리 메뉴가 영역 메뉴(Area Menu) 입니다. 회사 커스텀 메뉴 트리를 만들어 운영하는 곳이라면 여기에 등록합니다.
- 트랜잭션 SE43 (변경은 SE43N) 실행
- 회사에서 사용 중인 커스텀 영역 메뉴(예: ZMENU)를 입력 → 변경
- 새로 만들려면 이름 입력 후 생성 → 최상위 노드부터 구성
- 메뉴 트리에서 T-Code를 넣을 폴더(노드)를 선택 → 하위 노드 추가(Add Entry)
- 추가 화면에서 Transaction Code에
ZFI01입력 → 텍스트는 T-Code 설명이 자동으로 들어옵니다 - 저장 → TR에 담기
등록한 영역 메뉴는 사용자 파라미터나 시스템 설정에 따라 SAP Easy Access의 SAP 메뉴 영역에 표시됩니다. 다만 요즘 실무에서는 영역 메뉴보다 다음의 역할 메뉴 방식이 더 일반적입니다.
2단계(방법 B). 역할 메뉴에 등록 — PFCG (실무 표준)
사용자가 로그인하면 보이는 사용자 메뉴(User Menu) 는 그 사용자에게 부여된 역할(Role)의 메뉴입니다. 권한과 메뉴를 한 번에 관리할 수 있어 실무에서는 이 방식이 표준입니다.
- 트랜잭션 PFCG 실행
- 대상 역할 입력 (예: 현업 FI 사용자 역할 Z_FI_USER) → 변경
- 새 역할이라면 이름 입력 → 단일 역할 생성
- 메뉴(Menu) 탭 클릭
- 트랜잭션 추가(+Transaction) 버튼 클릭 →
ZFI01입력 → 적용- 폴더를 만들어 메뉴를 계층화할 수도 있습니다 (예: “FI 커스텀 리포트” 폴더 아래 배치)
- 권한(Authorizations) 탭 클릭 → 권한 프로파일 변경/생성
- 메뉴에 T-Code를 추가하면 S_TCODE 권한에 ZFI01이 자동 반영됩니다. SE93에서 권한 오브젝트를 지정했거나 프로그램 내 AUTHORITY-CHECK가 있다면 해당 오브젝트 값도 여기서 채웁니다
- 생성(프로파일 생성) 버튼으로 프로파일 활성화
- 사용자(User) 탭 → 이 역할을 쓸 사용자 ID 할당 → 사용자 비교(User Comparison) 실행
- 저장 → TR 처리
이제 해당 사용자가 로그인하면 사용자 메뉴에 ZFI01이 보이고, 클릭으로 실행할 수 있습니다. 정리하면 SE43은 “모두에게 보이는 메뉴 트리”, PFCG는 “권한 있는 사람에게만 보이는 메뉴” 라는 차이입니다. 커스텀 프로그램은 대부분 특정 부서용이므로 PFCG 방식이 자연스럽습니다.
3단계. 사용자 입장에서 확인
- 대상 사용자로 로그인 (또는 테스트 계정)
- SAP Easy Access의 사용자 메뉴에서 등록한 항목 확인
- 더블클릭 실행 → 프로그램 정상 기동 확인
- 권한 오류가 나면: 사용자에게 SU53을 바로 실행하게 해서 부족한 권한 오브젝트를 확인 → PFCG에서 보완
추가로, 자주 쓰는 사용자는 즐겨찾기(Favorites)에 직접 추가할 수도 있습니다: SAP Easy Access에서 즐겨찾기 우클릭 → 트랜잭션 삽입 → ZFI01. 메뉴 배포 전 임시로 안내할 때 유용합니다.
자주 겪는 문제와 팁
- T-Code는 만들었는데 사용자가 실행하면 권한 오류: S_TCODE 권한이 없는 경우입니다. PFCG 역할 메뉴에 추가 + 프로파일 생성 + 사용자 비교까지 마쳤는지 확인하세요. 프로파일 생성을 빼먹는 실수가 가장 흔합니다.
- 메뉴에 추가했는데 안 보임: 사용자 비교(User Comparison)를 실행했는지, 사용자가 재로그인했는지 확인하세요.
- 다른 시스템(QAS/PRD)에서 안 보임: SE93/SE43/PFCG 변경분이 모두 TR에 담겨 이관됐는지 확인합니다. 특히 역할은 이관 방식(역할 이관)이 별도로 관리되는 조직이 많으니 권한 담당자와 협의가 필요합니다.
- 화면 없이 바로 실행되는 유틸성 프로그램: 선택화면이 없는 프로그램은 report transaction으로 만들면 실행 즉시 수행되니, 실수 방지가 필요한 처리(마감, 삭제 등)라면 확인 팝업을 프로그램에 넣거나 선택화면을 두는 것이 안전합니다.
- Fiori 환경이라면: S/4HANA에서 커스텀 T-Code를 Fiori Launchpad 타일로 노출할 수도 있습니다(앱 매니저에서 GUI 트랜잭션 타일 생성). GUI 화면을 그대로 런치패드에서 여는 방식이라 과도기 시스템에서 많이 쓰는 구성입니다. 이 부분은 지난 Fiori 글과 이어집니다.
개발 완료부터 사용자 실행까지의 마지막 구간을 정리하면: SE93으로 T-Code 부여 → PFCG 역할 메뉴 + 권한 등록 → 사용자 비교 → TR 이관 입니다. 화면을 잘 만들어놓고 배포 단계에서 권한 오류로 첫인상을 구기는 일이 생각보다 많으니, 오픈 전에 실제 사용자 권한의 테스트 계정으로 한 번 실행해보는 것을 습관으로 만드시길 권합니다. 궁금한 점은 댓글로 남겨주세요