[SAP] ABAP Subscreen (2) ๋์ Subscreen ํธ์ถ ๋ฐฉ์ – ์กฐ๊ฑด์ ๋ฐ๋ผ ์๋ธ์คํฌ๋ฆฐ ์ ํํ๊ธฐ
์์ ์ดํด๋ณธ ์ ์ 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์ด ์ถ๋ ฅ๋ฉ๋๋ค.