ABAP로 만든 화면 메뉴에연결 , T-Code 생성(SE93)과 메뉴 등록(SE43, PFCG)하는 방법

ABAP로 프로그램을 개발하고 나면 마지막 관문이 남습니다. 현업 사용자에게 “SE38 열고 프로그램명 치세요”라고 할 수는 없으니, 트랜잭션 코드(T-Code)를 만들어 메뉴에 붙여주는 작업입니다.

개발 자체보다 훨씬 쉬운 일인데도 처음에는 SE93, SE43, PFCG 중 뭘 어디에 써야 하는지 헷갈립니다. 저도 첫 프로젝트 때 T-Code까지는 잘 만들어놓고 사용자 비교(User Comparison)를 빼먹어서, 오픈 당일 “메뉴가 안 보인다”는 전화를 받은 적이 있습니다. 이 글에서 커스텀 프로그램을 사용자 메뉴까지 연결하는 전체 과정을 단계별로 정리합니다.

전체 흐름은 이렇습니다

SE93 T-Code 생성부터 PFCG 역할 메뉴 등록, 사용자 비교까지 이어지는 전체 작업 흐름도

3줄 요약

  1. SE93 — 프로그램에 T-Code를 부여합니다.
  2. PFCG — 역할 메뉴에 T-Code를 넣고, 프로파일 생성 + 사용자 비교까지 합니다. (SE43은 전사 공통 메뉴 트리를 쓰는 경우)
  3. TR 이관 — SE93·PFCG 변경분이 모두 요청에 담겼는지 확인합니다.

1단계. 트랜잭션 코드 생성 — SE93

개발한 프로그램(예: ZFI_REPORT01)을 호출할 T-Code를 만듭니다.

  1. 트랜잭션 SE93 실행
  2. Transaction Code 입력란에 만들 코드 입력 (예: ZFI01) → 생성(Create) 클릭
    • 커스텀 코드는 반드시 Z 또는 Y로 시작해야 합니다
    • 네이밍은 팀 규칙을 따르되, 모듈 접두어를 넣는 방식(ZFI*, ZMM*)이 관리에 편합니다
  3. 짧은 설명(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)를 선택합니다.

  1. 다음 화면에서 아래 항목을 채웁니다.
    • Program: 프로그램명 (예: ZFI_REPORT01)
    • Selection screen: 보통 1000 (기본 선택화면)
    • GUI Support: SAP GUI for Windows / HTML 등 체크 (전부 체크가 일반적)
    • Authorization Object (선택): 지정하면 S_TCODE 외에 추가 권한 체크가 걸립니다
  2. 저장 → 패키지 지정 → 트랜스포트 요청(TR)에 담기

여기까지 하면 명령 필드에 /nZFI01을 입력해 프로그램이 실행됩니다.

실무에서 자주 쓰는 파라미터 트랜잭션

파라미터 트랜잭션은 활용도가 높은데, 대표 사례가 “SM30 + 특정 테이블”을 하나의 T-Code로 묶어 현업에게 테이블 관리 화면만 열어주는 방식입니다. 설정은 이렇게 합니다.

  • Transaction: SM30
  • Skip initial screen 체크
  • 기본값(Default Values):
    • VIEWNAME = 관리할 테이블/뷰명 (예: ZTB_COST_CD)
    • UPDATE = X

이렇게 만들면 현업은 SM30 권한 없이도, 지정된 테이블 하나만 유지보수할 수 있습니다. 기준정보 관리 화면을 따로 개발하지 않고 넘어갈 수 있어서 공수 절감 효과가 큽니다.

T-Code 복사·삭제·조회

  • 복사: SE93 초기화면에서 원본 T-Code 입력 → 복사 아이콘. 유사한 Z 리포트를 여러 개 만들 때 유용합니다.
  • 삭제: SE93에서 T-Code 입력 → 삭제. 이미 역할 메뉴에 들어가 있다면 PFCG 쪽에서도 함께 정리해야 합니다.
  • 조회: T-Code 목록은 테이블 TSTC, 설명 텍스트는 TSTCT 에 저장됩니다. SE16N으로 TSTC에서 Z* 조회하면 우리 시스템의 커스텀 T-Code를 한 번에 뽑을 수 있습니다. 인수인계 문서 만들 때 자주 씁니다.

2단계 · 방법 A. 영역 메뉴에 등록 — SE43

SAP Easy Access 첫 화면의 트리 메뉴가 영역 메뉴(Area Menu) 입니다. 회사 커스텀 메뉴 트리를 운영하는 곳이라면 여기에 등록합니다.

  1. 트랜잭션 SE43 (변경은 SE43N) 실행
  2. 사용 중인 커스텀 영역 메뉴(예: ZMENU) 입력 → 변경
    • 새로 만들려면 이름 입력 후 생성 → 최상위 노드부터 구성
  3. 메뉴 트리에서 T-Code를 넣을 폴더(노드) 선택 → 하위 노드 추가(Add Entry)
  4. Transaction CodeZFI01 입력 → 텍스트는 T-Code 설명이 자동으로 채워집니다
  5. 저장 → TR에 담기

참고로 SAP 표준 메뉴는 영역 메뉴 S000입니다. 커스텀 영역 메뉴를 사용자 시작 메뉴로 지정하려면 SU3(사용자 파라미터)에서 파라미터 ID START_MENU에 영역 메뉴명을 넣습니다. 다만 요즘 실무에서는 영역 메뉴보다 다음의 역할 메뉴 방식이 더 일반적입니다.

2단계 · 방법 B. 역할 메뉴에 등록 — PFCG (실무 표준)

사용자가 로그인하면 보이는 사용자 메뉴(User Menu) 는 그 사용자에게 부여된 역할(Role)의 메뉴입니다. 권한과 메뉴를 한 번에 관리할 수 있어 실무 표준은 이 방식입니다.

  1. 트랜잭션 PFCG 실행
  2. 대상 역할 입력 (예: Z_FI_USER) → 변경
    • 새 역할이라면 이름 입력 → 단일 역할 생성
  3. 메뉴(Menu) 탭 클릭
  4. 트랜잭션 추가(+Transaction)ZFI01 입력 → 적용
    • 폴더를 만들어 계층화할 수 있습니다 (예: “FI 커스텀 리포트” 폴더 아래 배치)
  5. 권한(Authorizations) 탭 → 권한 프로파일 변경/생성
    • 메뉴에 T-Code를 추가하면 S_TCODE 권한에 ZFI01이 자동 반영됩니다
    • SE93에서 권한 오브젝트를 지정했거나 프로그램 내 AUTHORITY-CHECK가 있다면 해당 오브젝트 값도 여기서 채웁니다
    • 프로파일 생성 버튼으로 활성화 — 이 단계를 빼먹는 실수가 가장 흔합니다
  6. 사용자(User) 탭 → 사용자 ID 할당 → 사용자 비교(User Comparison) 실행
  7. 저장 → TR 처리

정리하면 SE43은 “모두에게 보이는 메뉴 트리”, PFCG는 “권한 있는 사람에게만 보이는 메뉴” 라는 차이입니다. 커스텀 프로그램은 대부분 특정 부서용이므로 PFCG 방식이 자연스럽습니다.

3단계. 사용자 입장에서 확인

  1. 대상 사용자로 로그인 (또는 동일 권한의 테스트 계정)
  2. SAP Easy Access의 사용자 메뉴에서 등록한 항목 확인
  3. 더블클릭 실행 → 프로그램 정상 기동 확인
  4. 권한 오류가 나면 SU53을 바로 실행해 부족한 권한 오브젝트를 확인 → PFCG에서 보완

자주 쓰는 사용자는 즐겨찾기(Favorites)에 직접 추가할 수도 있습니다. SAP Easy Access에서 즐겨찾기 우클릭 → 트랜잭션 삽입 → ZFI01. 메뉴 배포 전 임시로 안내할 때 유용합니다.

자주 겪는 문제와 해결

1. T-Code는 만들었는데 사용자가 실행하면 권한 오류 S_TCODE 권한이 없는 경우입니다. PFCG 역할 메뉴 추가 → 프로파일 생성사용자 비교까지 모두 마쳤는지 확인하세요. 프로파일 생성 누락이 가장 흔합니다.

2. 메뉴에 추가했는데 안 보임 사용자 비교를 실행했는지, 사용자가 재로그인했는지 확인하세요. 다수 사용자를 한꺼번에 비교해야 한다면 PFUD(대량 사용자 비교)를 씁니다.

3. 개발계에서는 되는데 QAS/PRD에서 안 보임 SE93·SE43·PFCG 변경분이 모두 TR에 담겨 이관됐는지 확인합니다. 특히 역할은 이관 방식이 별도로 관리되는 조직이 많으니 권한 담당자와 사전 협의가 필요합니다.

4. 화면 없이 바로 실행되는 유틸성 프로그램 선택화면이 없는 프로그램을 report transaction으로 만들면 클릭 즉시 실행됩니다. 마감·삭제처럼 되돌리기 어려운 처리라면 확인 팝업을 넣거나 선택화면을 두는 것이 안전합니다.

5. 어떤 역할에 이 T-Code가 들어 있는지 찾고 싶을 때 SUIM → 역할 → 트랜잭션으로 검색하면 특정 T-Code를 포함한 역할 목록을 뽑을 수 있습니다. T-Code를 삭제하거나 변경하기 전에 영향 범위를 확인하는 용도로 씁니다.

6. Fiori 환경이라면 S/4HANA에서는 커스텀 T-Code를 Fiori Launchpad 타일로 노출할 수 있습니다. GUI 화면을 그대로 런치패드에서 여는 방식이라 과도기 시스템에서 많이 쓰는 구성입니다.

자주 묻는 질문 (FAQ)

Q. SE93과 SE43, PFCG는 각각 뭐가 다른가요? A. SE93은 T-Code를 만드는 곳, SE43은 전사 공통 메뉴 트리(영역 메뉴)에 배치하는 곳, PFCG는 역할별 사용자 메뉴에 배치하면서 권한까지 함께 관리하는 곳입니다. 실무에서는 SE93 + PFCG 조합이 표준입니다.

Q. 커스텀 T-Code 이름은 어떻게 지어야 하나요? A. Z 또는 Y로 시작해야 하며 최대 20자입니다. 모듈 접두어를 붙이는 방식(ZFI01, ZMM03)이 나중에 찾기 편합니다.

Q. T-Code를 만들었는데 실행이 안 됩니다. A. 대부분 권한 문제입니다. 오류 직후 SU53을 실행하면 어떤 권한 오브젝트에서 막혔는지 나옵니다. S_TCODE가 원인이면 PFCG에서 역할 메뉴 추가 후 프로파일 생성과 사용자 비교를 다시 확인하세요.

Q. 만든 T-Code 목록을 한 번에 보려면? A. SE16N으로 테이블 TSTC를 열고 Z*로 조회하면 됩니다. 설명은 TSTCT 테이블에 있습니다.

Q. SM30 없이 현업이 테이블을 관리하게 하려면? A. SE93에서 파라미터 트랜잭션을 만들어 SM30에 VIEWNAMEUPDATE = X를 기본값으로 넣고 초기화면을 건너뛰게 설정하면, 지정된 테이블 하나만 열리는 전용 T-Code가 됩니다.

마무리

개발 완료부터 사용자 실행까지의 마지막 구간을 한 줄로 정리하면 이렇습니다.

SE93으로 T-Code 부여 → PFCG 역할 메뉴 + 권한 등록 → 프로파일 생성 → 사용자 비교 → TR 이관

화면을 잘 만들어놓고 배포 단계에서 권한 오류로 첫인상을 구기는 일이 생각보다 많습니다. 오픈 전에 실제 사용자 권한을 가진 테스트 계정으로 한 번 실행해보는 것을 습관으로 만드시길 권합니다. 궁금한 점은 댓글로 남겨주세요.


함께 읽으면 좋은 글

SAP 카테고리 글 전체 보기

SAP ERP ABAP 소스코드 배포하는 방법 (CTS) — TR 이관 절차를 더 자세히 다룹니다

RAP100 실습 완주기 — CDS부터 Fiori 화면까지 — Fiori 환경으로 넘어갈 때 참고

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤