반응형
1. Module Pool (Dialog Programming)
특징:
- 대화형 프로그램: Module Pool은 사용자가 데이터를 입력하거나 상호작용할 수 있는 화면(UI)을 제공하는 프로그램입니다.
- 트랜잭션 코드로 실행: Module Pool 프로그램은 특정 트랜잭션 코드로 실행됩니다.
- 스크린(Screen): 화면(Screen)과 화면 흐름(Flow Logic)을 정의하여 사용자가 데이터를 입력하고 처리할 수 있는 인터페이스를 제공합니다.
- Event-driven 방식: 사용자가 특정 동작(버튼 클릭, 필드 입력 등)을 하면, 해당 이벤트를 처리하는 코드가 실행됩니다.
주요 구성 요소:
- Screens: SAP GUI에 표시되는 화면으로, 여러 화면 번호를 가질 수 있습니다.
- PBO (Process Before Output): 화면이 표시되기 전에 실행되는 코드.
- PAI (Process After Input): 사용자가 입력하거나 액션을 취한 후 실행되는 코드.
- GUI STATUS: MENU BAR, STANDARD TOOLBAR, APPLICATION TOOLBAR를 포함한다.
- Modules: PBO 및 PAI 내에서 호출되는 서브루틴처럼 동작하는 모듈.
예제:
1. 데이터베이스 테이블 생성
먼저, 데이터 저장을 위한 테이블을 생성합니다. 예를 들어, ZSTUDENT라는 테이블을 생성합니다.
ZSTUDENT 테이블 필드:
- STUDENT_ID (CHAR 10)
- STUDENT_NAME (CHAR 50)
- AGE (NUM 3)
2. Module Pool 프로그램 생성
Step 1: 프로그램 생성
- SE80 → 새로운 프로그램을 생성합니다.
- 프로그램 유형을 Module Pool로 설정합니다.
- 프로그램 이름: ZMP_STUDENT.
Step 2: 스크린(Screen) 생성
- 화면(Screen) 번호: 100.
- 화면 제목: Student Data Entry.
3. 코드 예제
** 프로그램 선언 **
PROGRAM ZMP_STUDENT.
TABLES: ZSTUDENT.
DATA: gv_student_id TYPE zstudent-student_id,
gv_student_name TYPE zstudent-student_name,
gv_age TYPE zstudent-age.
* Screen Flow Logic에 필요한 Modules 선언
MODULE STATUS_100 OUTPUT.
MODULE USER_COMMAND_100 INPUT.
** 스크린 100 Flow Logic (PBO & PAI) **
PROCESS BEFORE OUTPUT.
MODULE STATUS_100.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_100.
* PBO: 화면 초기 상태 설정
MODULE STATUS_100 OUTPUT.
SET PF-STATUS 'SCREEN100'. " GUI 상태 (필요 시 정의)
ENDMODULE.
* PAI: 버튼 클릭 등 이벤트 처리
MODULE USER_COMMAND_100 INPUT.
CASE SY-UCOMM.
WHEN 'SAVE'.
" 입력 데이터 저장
INSERT INTO ZSTUDENT VALUES (gv_student_id, gv_student_name, gv_age).
MESSAGE 'Student data saved successfully' TYPE 'S'.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
4. 스크린 디자인
- Screen Painter를 사용하여 100번 스크린을 설계합니다.
- 필드 추가:
- gv_student_id (Student ID)
- gv_student_name (Student Name)
- gv_age (Age)
- 버튼 추가:
- 저장(Save): Function Code = SAVE.
- 종료(Exit): Function Code = EXIT.
5. 실행 방법
- 트랜잭션 코드 생성 (SE93) → 프로그램 ZMP_STUDENT 연결.
- 트랜잭션 코드 실행 후, 학생 데이터를 입력하고 저장 버튼을 눌러 확인.
2. Report 프로그램
특징:
- 출력 중심 프로그램: Report 프로그램은 데이터베이스에서 데이터를 검색(Query)하고 결과를 출력(리스트 형태)하는 데 사용됩니다.
- 단순 실행: 트랜잭션 코드 없이 SE38 또는 SA38에서 실행 가능합니다.
- 리스트 출력: 기본적으로 표 형식의 출력 결과를 생성합니다.
- Event-driven 아님: 단순히 데이터를 검색하고 결과를 표시하며, 화면 상호작용은 제한적입니다.
- Screen : 1000 번 스크린 자동생성
주요 구성 요소:
- SELECT 문: 데이터베이스에서 데이터를 검색하기 위해 사용.
- ALV (ABAP List Viewer): 데이터를 보기 좋은 표 형식으로 출력하기 위해 사용.
- START-OF-SELECTION: 프로그램이 실행될 때 기본적으로 실행되는 이벤트 블록.
예제:
REPORT ZREP_STUDENT.
* ALV를 위한 데이터 선언
TABLES: ZSTUDENT.
DATA: gt_students TYPE TABLE OF zstudent, " 학생 데이터를 담을 내부 테이블
gs_student TYPE zstudent. " 작업용 구조
* ALV 사용을 위한 추가 데이터 선언
DATA: gt_fieldcat TYPE lvc_t_fcat, " ALV 필드 카탈로그
gs_fieldcat TYPE lvc_s_fcat,
alv_layout TYPE lvc_s_layo. " ALV 레이아웃 옵션
* 선택 화면에서 조건 입력
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_id TYPE zstudent-student_id OBLIGATORY, " 학생 ID 조건
p_name TYPE zstudent-student_name. " 학생 이름 조건
SELECTION-SCREEN END OF BLOCK b1.
* 텍스트 요소
INITIALIZATION.
text-001 = '학생 검색 조건'. " 선택 화면 제목
* START-OF-SELECTION: 데이터베이스에서 데이터 읽기
START-OF-SELECTION.
SELECT * FROM zstudent
INTO TABLE gt_students
WHERE student_id = p_id
AND ( student_name LIKE p_name OR p_name IS INITIAL ).
IF sy-subrc <> 0.
MESSAGE '조건에 맞는 데이터가 없습니다.' TYPE 'I'.
EXIT.
ENDIF.
* END-OF-SELECTION: ALV 출력
END-OF-SELECTION.
PERFORM build_fieldcat. " 필드 카탈로그 생성
alv_layout-zebra = 'X'. " ALV 줄무늬 표시
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_structure_name = 'ZSTUDENT'
is_layout = alv_layout
TABLES
t_outtab = gt_students
t_fieldcat = gt_fieldcat
EXCEPTIONS
program_error = 1
others = 2.
IF sy-subrc <> 0.
MESSAGE 'ALV 출력 중 오류 발생' TYPE 'E'.
ENDIF.
* FORM: 필드 카탈로그 생성
FORM build_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'STUDENT_ID'.
gs_fieldcat-seltext_m = '학생 ID'.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'STUDENT_NAME'.
gs_fieldcat-seltext_m = '학생 이름'.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'AGE'.
gs_fieldcat-seltext_m = '나이'.
APPEND gs_fieldcat TO gt_fieldcat.
ENDFORM.
주요 차이점
항목Module PoolReport 프로그램
목적 | 사용자 인터페이스 제공 및 데이터 입력 처리 | 데이터 검색 및 결과 출력 |
실행 방식 | 트랜잭션 코드 필요 | SE38/SA38에서 실행 가능 |
UI 구성 | 복잡한 화면 및 이벤트 처리 가능 | 단순 출력 화면 (리스트) |
사용자 상호작용 | 강력한 사용자 상호작용 지원 | 제한적 (출력 중심) |
복잡성 | 더 복잡하고 구조화된 방식 | 단순하고 빠르게 개발 가능 |
어떤 경우에 사용?
- Module Pool: 복잡한 사용자 인터페이스, 데이터 입력 및 검증이 필요한 경우.
- Report 프로그램: 단순히 데이터를 검색하고 분석 결과를 출력해야 하는 경우.
반응형
'IT > SAP' 카테고리의 다른 글
SAP-관리회계 영역(Controlling area) 생성 시 "data in company code xxxx is not maintained" error (1) | 2025.01.14 |
---|---|
MM-Step by Step Flow with T-Codes (2) | 2025.01.08 |
FI-조정계정 XXX 또는 단축키 00을(를) 허용하지 않습니다 (1) | 2024.10.16 |
FI-Company and Company Code (3) | 2024.09.20 |
DECIMAL PLACES ARE NOT PERMITTED(mm01,mm02) (0) | 2024.05.15 |