CS Student’s SAP&Tech Journey✨
[SAP] ABAP Subscreen (2) 동적 Subscreen 호출 방식 – 조건에 따라 서브스크린 전환하기 본문
[SAP] ABAP Subscreen (2) 동적 Subscreen 호출 방식 – 조건에 따라 서브스크린 전환하기
인포마틱 2025. 3. 21. 18:00앞서 살펴본 정적 Subscreen 방식은 항상 고정된 Subscreen을 보여주는 방식이라면, 이번 CASE 2는 특정 조건에 따라 다른 Subscreen을 동적으로 호출하는 방식입니다.
예를 들어, 사용자가 선택한 항공사 코드(CARRID)에 따라 각각 다른 입력 화면을 보여주고 싶을 때 사용됩니다. 이처럼 화면을 동적으로 바꿔야 하는 경우, Subscreen 번호를 변수로 제어하는 방식이 필요하며, 이를 위해 글로벌 변수를 사용하게 됩니다.
이번 포스팅의 예제는 아래 포스팅과 이어집니다.
정적 Subscreen 방식과 관련한 포스팅 보러가기 ⬇️
[SAP] ABAP Subscreen (1) 구조와 기본 개념 / 정적 Subscreen 호출 방식 (고정된 서브스크린) 구현하기
SAP GUI에서 데이터를 효과적으로 표시하고 사용자 입력을 처리하기 위해 다양한 UI 기술이 활용됩니다. 그중 Subscreen은 메인 화면 내에 작은 화면을 삽입하여 데이터를 표시하거나 입력받을 수
informatik.tistory.com
❓ Subscreen이란?
Subscreen(서브스크린)은 SAP ABAP 다이얼로그 프로그래밍에서 메인 화면(Screen 100) 내에서 특정 데이터를 독립적으로 표시할 수 있도록 설계된 작은 화면입니다. 서브스크린은 단독으로 실행되지 않고 반드시 메인 스크린 내에서 호출되어야 하며, 별도의 PBO/PAI(Process Before Output / Process After Input) 로직을 가질 수 있습니다.
✅ Subscreen의 특징
- 메인 스크린 내에서 별도로 동작하지만, 부모 스크린에 종속됨.
- 독립적인 PBO(Process Before Output) / PAI(Process After Input) 로직을 가짐.
- 데이터를 다양한 형태로 표시할 수 있음 (예: 사용자 입력, 조회 결과 표시 등).
- 메인 프로그램과 데이터를 공유하며, 특정 조건에 따라 다른 Subscreen을 동적으로 호출 가능.
- OK_CODE 및 Application Toolbar는 부모 스크린에서 제어됨 (✔️서브스크린에서 직접 설정 불가).
🛠️ Subscreen이 사용되는 대표적인 예시
- SAP 표준 트랜잭션에서 하단에 위치한 탭(Tab) 영역 → 예: ME21N의 항목 입력 영역
- 조건에 따라 다르게 표시되는 입력 필드 그룹 → 예: 고객 정보 입력 시 ‘기업 고객’과 ‘개인 고객’에 따라 다른 입력 필드 제공
- 동적 UI 구성 → 예: 특정 버튼을 클릭하면 추가 정보 영역이 나타나는 경우
🎯 동적 Subscreen 호출 방식 – 조건에 따라 서브스크린 전환하기
Subscreen은 하나의 영역에 다양한 화면을 삽입할 수 있도록 도와주는 UI 구성 요소입니다.
동적 Subscreen은 사용자 입력이나 내부 값에 따라 서브스크린을 동적으로 전환합니다.
✅ Subscreen 조건 전환 방식의 특징
- 동일한 Subscreen Area에 여러 개의 Subscreen 화면을 삽입할 수 있음
- 조건에 따라 GV_DYNNR 값을 바꾸어 다른 화면번호를 보여줌
- 탭 컨트롤 없이도 분기 처리 기반으로 화면 구성 가능
- 서브스크린 번호는 글로벌 변수로 제어해야 함
조건 전환 방식은 아래와 같은 케이스에 자주 사용됩니다:
- 항공사 코드에 따라 입력 화면 다르게 구성
- 고객 유형(기업/개인)에 따라 입력 필드 분기
- 메뉴 선택값에 따라 화면 내용 동적으로 변경
1. Subscreen 조건 분기 설계하기
- SCREEN 100: 사용자가 CARRID를 입력
- SCREEN 200: CARRID에 따라 0201 또는 0202를 SUBSCREEN으로 표시
- SUBSCREEN 0201, SUBSCREEN 0202: 각각 다른 입력 레이아웃 구성
📌 Subscreen을 설계할 때 반드시 Screen Type : Subscreen으로 설정해야 합니다.
잘못 설정하면 덤프가 발생하지만, 원인이 메시지에 명확히 나타나지 않으니 주의해야 합니다!
2. Subscreen 구현하기
기존 예제를 기반으로 동적 Subscreen 호출 방식을 구성할 것입니다. 따라서 Screen 100, 200, 201은 존재한다고 가정한 후 진행합니다.
▶ Screen 202 생성하기
📌 글로벌 변수 준비
조건에 따른 화면 전환 Subscreen은 Subscreen Area 선언을 글로벌 변수를 사용하는 방법으로 사용합니다.
XXXXXTOP
" SUBSCREEN 호출 목적으로 사용하는 변수
DATA GV_DYNNR TYPE SY-DYNNR VALUE '0201'.
▶ 데이터 표시 모듈 (Screen 200)
MODULE SET_SUBSCREEN_NO.
CALL SUBSCREEN SUB INCLUDING SY-CPROG GV_DYNNR.
(CALL SUBSCREEN SUB INCLUDING 'SAPMZCARRIER1_07' '201'. 이 방식을 위의 방식으로 변경 한 것)
XXXXXO01 (PBO)
CARRID가 'LH' 항공이거나 'JL' 항공이면 202 화면을 나머지면 201 화면을 설정하도록 조건을 설정합니다.
MODULE set_subscreen_no OUTPUT.
CASE SCARR-CARRID.
WHEN 'LH' or 'JL'.
GV_DYNNR = '0202'.
WHEN OTHERS.
GV_DYNNR = '0201'.
ENDCASE.
ENDMODULE.
✅ 보통 SY-DYNNR 타입을 따르며, PBO에서 값이 동적으로 설정되므로 VALUE는 생략합니다.
" SUBSCREEN 호출 목적으로 사용하는 변수
DATA GV_DYNNR TYPE SY-DYNNR.
3. Subscreen 연결하기
부모 화면(SCREEN 200)에서 CALL SUBSCREEN으로 동적으로 화면을 연결합니다.
PROCESS BEFORE OUTPUT.
MODULE SET_SUBSCREEN_NO.
CALL SUBSCREEN SUB INCLUDING SY-CPROG GV_DYNNR.
PROCESS AFTER INPUT.
CALL SUBSCREEN SUB.
MODULE USER_COMMAND_0200.
✔️ PBO와 PAI 모두에서 CALL SUBSCREEN 구문이 필요한 이유는 사용자 입력을 반영하려면 PAI에서 명시적으로 호출해줘야 하기 때문입니다.
📌 PBO & PAI 실행 흐름 정리
- SCREEN 100 → PBO 실행
- CALL SUBSCREEN (예: '0202')의 PBO 실행
- 다시 SCREEN 100 PBO
- SCREEN 100 PAI
- CALL SUBSCREEN PAI
- 메인 화면의 USER_COMMAND 모듈 실행
5. 동적으로 전환된 화면 확인하기
LH 항공사나 JL 항공사를 선택하면 SUBSCREEN 0202가 출력되고 그 외 항공사는 SUBSCREEN 0201이 출력됩니다.
'SAP > 서브스크린 Subscreen' 카테고리의 다른 글
[SAP] ABAP Subscreen (5) Tabstrip Control로 화면 전환 구현하기 (0) | 2025.03.21 |
---|---|
[SAP] ABAP Subscreen (4) 정적 Subscreen 2개 나란히 배치하기 (0) | 2025.03.21 |
[SAP] ABAP Subscreen (3) Subscreen 재사용 (Function Group 방식) (0) | 2025.03.21 |
[SAP] ABAP Subscreen (1) 구조와 기본 개념 / 정적 Subscreen 호출 방식 (고정된 서브스크린) 구현하기 (0) | 2025.03.21 |