CS Student’s SAP&Tech Journey✨
[SAP] ABAP Subscreen (3) Subscreen 재사용 (Function Group 방식) 본문
[SAP] ABAP Subscreen (3) Subscreen 재사용 (Function Group 방식)
인포마틱 2025. 3. 21. 18:13앞선 포스팅에서는 Subscreen의 기본 구조와 고정된 화면을 호출하는 정적 방식, 그리고 조건에 따라 화면을 동적으로 전환하는 조건 분기 방식을 소개했습니다.
이번 글에서는 Subscreen 재사용 방법을 포스팅합니다. 하나의 Subscreen 화면을 여러 메인 화면에서 재사용하거나, 외부 프로그램(Function Group)을 통해 호출할 수 있도록 구성하는 방식입니다.
Subscreen은 구조상 재사용성이 매우 높은 UI 컴포넌트이기 때문에, 잘만 설계하면 유지보수와 확장성 모두에 강력한 이점을 가질 수 있습니다. 특히 SAP에서는 여러 트랜잭션이나 프로그램에서 같은 형태의 데이터를 표시하거나 입력할 일이 많기 때문에, Subscreen을 Function Group으로 모듈화해두는 것이 매우 유용합니다.
📌 이번 포스팅의 예제는 아래 포스팅과 이어집니다. ⬇️
1️⃣ Subscreen (1) 구조와 기본 개념 / 정적 Subscreen 호출 방식 (고정된 서브스크린) 구현하기
2️⃣ Subscreen (2) 동적 Subscreen 호출 방식 – 조건에 따라 서브스크린 전환하기
🎯 Subscreen 재사용
1. 🔁 Subscreen 내부에서 재사용하는 방식
화면 100, 200 양쪽 모두에서 Subscreen 202를 사용하고 싶다면 아래처럼 구성합니다.
▶ 데이터 조회 모듈 (Screen 100)
✅ Subscreen Area 명칭은 반드시 대문자로 작성! 소문자 사용 시 오류 발생 가능하므로, ENTER 눌러주는 습관도 추천합니다.
XXXXXO01 (PBO)
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE set_cursor.
CALL SUBSCREEN SUB1 INCLUDING SY-CPROG '202'. " 202 화면 설정
✅ 화면 100번에서 202번 Subscreen을 재활용하여 사용함을 확인할 수 있습니다.
2. 🌐 Subscreen 외부 재사용 - Function Group 방식
✅ 사용 이유
- 여러 프로그램에서 같은 Subscreen을 사용해야 할 때
- 독립적인 데이터 관리가 필요할 때
- 모듈화 및 유지보수 용이성 확보
1️⃣ Function Group 구성
▶ Function Group 생성
✔️ Function Group - Master Program - SAPLSUB_07 (SAPL은 Function Group을 의미)
▶ GLOBAL 변수 선언
LSXXXXTOP
FUNCTION-POOL ZSUB1_07. "MESSAGE-ID ..
" 서브스크린에서 사용할 변수
TABLES SCARR.
▶ Function Group에 Subscreen 생성하기
✔️ Screen 101 화면 생성
▶ 화면 101 Layout 설정하기
2️⃣ Function Group Subscreen 호출
📌 외부 프로그램에서 FG의 서브스크린을 호출할 땐 프로그램명 반드시 명시해야 합니다.
데이터 표시 모듈 (Screen 200)
" 명확하게 Program Name 설정
CALL SUBSCREEN SUB INCLUDING 'SAPMZCARRIER1_07' '0201'.
3️⃣Function Module 만들기 – Subscreen에 데이터 전달하기
Subscreen이 Function Group 안에 위치한 경우, 메인 프로그램에서 사용하는 SCARR 데이터를 직접 접근할 수 없습니다.이럴 때는 Function Module을 사용하여 데이터를 전달해줘야 합니다.
즉, 외부 프로그램에서 Function Group의 데이터 영역으로 값을 전달하기 위해 Function Module을 사용합니다.
- Function Group에는 메인 프로그램의 SCARR 데이터가 없음
- 조건값(CARRID)을 메인 프로그램에서 Function Module로 전달
- Function Module 내부에서 SCARR 데이터를 조회하고 Function Group 내부 변수에 저장
- Subscreen에서는 저장된 값을 표시
📌 데이터 흐름
- 메인 프로그램: CARRID 값을 Funtion Module에 넘김 (EXPORTING)
- Function Module 내부: SCARR 조회 결과를 Function Group의 TABLES SCARR에 저장
- 서브스크린: Function Group에 저장된 SCARR 값을 화면에 표시
▶ Function Module 생성하기
▶ CARRID 값을 Funtion Module에서 받을 수 있는 파라미터 설정하기
FUNCTION ZSET_SCARR_07.
SELECT SINGLE *
FROM SCARR
INTO SCARR
WHERE CARRID = IV_SCARRID.
ENDFUNCTION.
▶ 메인 프로그램에서 Function Moule 호출하기
데이터 표시 모듈 (Screen 200)
PROCESS BEFORE OUTPUT.
MODULE FG_EXPORTING. " Function Group에 데이터 넣어주는 역할
XXXXXO01 (PBO)
MODULE fg_exporting OUTPUT.
CALL FUNCTION 'ZSET_SCARR1_07'
EXPORTING
iv_scarrid = SDYN_CONN-CARRID
.
ENDMODULE.
4️⃣ 최종 확인 – Subscreen에 데이터 표시
4️⃣ ⚠️ 입력값 반영되지 않는 문제 해결
화면에 값은 표시되지만, 입력한 값을 바꿔도 적용되지 않는 경우는 보통 PAI 설정 누락이 원인입니다.
▶ 서브스크린 0101의 PBO / PAI 설정
Function Grop - 0101 화면
PROCESS BEFORE OUTPUT.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0101.
PBO에서는 STATUS 모듈이 없어도 되지만, PAI에는 반드시 INPUT 모듈이 필요합니다.
▶입력 반영을 위한 MODULE 코드
MODULE user_command_0101 INPUT.
MESSAGE i004(ZTRAIN_07) WITH SCARR-CURRCODE.
ENDMODULE.
이 메시지를 통해 PAI가 정상적으로 동작하고 있는지 확인할 수 있습니다.
'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 (2) 동적 Subscreen 호출 방식 – 조건에 따라 서브스크린 전환하기 (0) | 2025.03.21 |
[SAP] ABAP Subscreen (1) 구조와 기본 개념 / 정적 Subscreen 호출 방식 (고정된 서브스크린) 구현하기 (0) | 2025.03.21 |