📌 목표 요약
사용자가 선택화면에서 값을 입력하기 전에,
프로그램이 마지막 사번(Employee Number) 을 조회해서 기본값이나 참고 정보를 제공하고 싶을 때
사용하는 블록이 바로 INITIALIZATION!
📚 개념 정리
✅ 1. INITIALIZATION 이벤트란?
- Selection Screen이 보여지기 전에 한 번 실행되는 이벤트 블록.
- 기본값 설정, 초기 세팅 작업, 선택화면에 표시할 데이터 준비 등에 자주 쓰임.
- 프로그램이 실행되면 제일 먼저 실행됨.
- ENDINITIALIZATION 같은 종료 구문은 없음 — 다음 블록이 나오면 끝남.
✅ 2. 예제 흐름 설명
REPORT z_screen_1.
TABLES: zemployees. " 테이블 연결
DATA: wa_employee LIKE zemployees-employee. " 마지막 사번 담을 변수
INITIALIZATION.
SELECT * FROM zemployees. " 테이블 전체에서 루프 돌면서
wa_employee = zemployees-employee. " 마지막 사번 계속 갱신
ENDSELECT.
WRITE: wa_employee. " 마지막에 선택된 값(즉, 마지막 사번)
🧠 이 코드는 뭐하냐면?
- zemployees 테이블에서 모든 레코드를 루프로 읽음.
- 매번 wa_employee 에 현재 사번(employee number) 을 저장함.
- 루프가 끝나면 가장 마지막에 읽힌 사번 = 테이블의 마지막 사번 이 됨.
- 그 값을 사용해서 사용자에게 참고값으로 보여줄 수 있음.
🎯 이 코드의 핵심 포인트
요소 | 설명 |
INITIALIZATION | 선택화면이 뜨기 전에 한 번 실행되는 블록 |
TABLES: zemployees. | 테이블을 선언해서 SELECT 문 등에서 사용 가능하게 함 |
DATA: wa_employee LIKE zemployees-employee. | 사번을 담을 변수 선언 |
SELECT * FROM zemployees. | 테이블 전체 순회 (마지막 사번을 찾기 위해) |
wa_employee = zemployees-employee. | 루프 도는 동안 계속 값 갱신 (최종적으로 마지막 값이 저장됨) |
WRITE: wa_employee. | 테스트용 출력 (나중엔 선택화면에 활용) |
✨ 추가 팁
- 실제로는 이 마지막 사번(wa_employee)을 이용해서:
- PARAMETERS p_empno DEFAULT wa_employee.
처럼 선택화면에 기본값으로 세팅할 수 있음
- PARAMETERS p_empno DEFAULT wa_employee.
- 이렇게 하면 사용자는 이미 존재하는 가장 마지막 사번을 보고, 다음 사번을 유추하거나 참고할 수 있음
필요하면 이 사번을 기준으로:
- 신규 사번 생성할 수도 있고
- 유효성 검사할 수도 있고
- 기본값으로 띄울 수도 있다!
📚 요약: AT SELECTION-SCREEN 이벤트
항목 | 설명 |
역할 | 사용자가 선택화면에서 "실행(Execute)" 버튼을 눌렀을 때, 입력값을 검증하는 이벤트 |
위치 | INITIALIZATION 블록 다음, 본문 코드 이전 |
활용 | 사용자가 잘못된 값을 입력했을 경우 에러 메시지 출력하고, 선택화면을 다시 보여줌 |
형식 | AT SELECTION-SCREEN ON <parameter>. 특정 파라미터에 대해 검사 |
🔎 실습 흐름 요약
- INITIALIZATION에서 마지막 사번(employee number) 을 DB에서 읽어서 wa_employee에 저장
- PARAMETERS 문으로 입력 필드 생성 (my_ee)
- AT SELECTION-SCREEN ON my_ee. 안에서
- 사용자가 입력한 my_ee 값이 wa_employee보다 큰지 검사
- 크면 메시지 출력 후, 다시 선택화면으로
REPORT z_screens_1.
TABLES: zemployees.
DATA: wa_empl LIKE zemployees-employee.
PARAMETERS: my_ee LIKE zemployees-employee.
INITIALIZATION.
SELECT * FROM zemployees.
wa_empl = zemployees-employee.
ENDSELECT.
AT SELECTION-SCREEN ON my_ee.
IF my_ee > wa_empl.
MESSAGE '입력한 사번이 마지막 사번보다 큽니다!' TYPE 'E'.
ENDIF.
START-OF-SELECTION.
WRITE: / '입력한 사번: ', my_ee,
/ '마지막 사번: ', wa_empl.
💡 왜 START-OF-SELECTION을 써야 할까?
- ABAP은 이벤트 기반 구조라서
- PARAMETERS → INITIALIZATION → AT SELECTION-SCREEN 까지가 화면 입력 처리용
- 실제 결과 출력은 START-OF-SELECTION 이후에 수행
📌 실행 흐름
- 프로그램 시작
- INITIALIZATION → 테이블에서 마지막 사번을 읽음
- 사용자가 my_ee에 값을 입력
- AT SELECTION-SCREEN → 값 검사
- START-OF-SELECTION → 입력 값 출력 ✅
항목 | 설명 |
PARAMETERS: | 선택화면에 입력 필드를 만듬 |
my_ee | 사용자로부터 입력받을 변수 이름 (내부적으로 사용됨) |
LIKE zemployees-employee | 이 변수의 데이터 타입을 zemployees 테이블의 employee 필드와 같게 지정 |
" 사용자 입력 파라미터 | 그냥 주석 (이 필드가 뭔지 설명) |
'SAP' 카테고리의 다른 글
SAP ABAP Programming for Beginners - 55 CheckBox체크박스 (0) | 2025.04.13 |
---|---|
SAP ABAP Programming for Beginners - 54 Parameters (0) | 2025.04.13 |
SAP ABAP Programming for Beginners - 52 Selection Screen (0) | 2025.04.12 |
SAP ABAP Programming for Beginners - 51 Events (0) | 2025.04.12 |
SAP ABAP Programming for Beginners - 50 ABAP Report Program Flow (0) | 2025.04.12 |