728x90
반응형
실행가능 프로그램과 모듈풀의 차이
- TYPE 1 실행가능프로그램 : tcode없이도 실행가능, 스크린없이 실행, REPORT로 시작
- M 모듈풀 : tcode가 있어야함, 프로그램과 스크린이 같이 움직임, PROGRAM으로 시작
모듈풀 만드는법
1) MZ로 시작하는 프로그램을 만든다.
2) OUTPUT, INPUT, FORM 주석을 풀고 INCLUDE를 생성한다.
3) 화면을 생성한다.
4) 화면을 볼 수 있는 트랜잭션을 생성한다.
[실행 화면]
화면100에서 1번테이블의 키값인 '순번'을 가져온다.
화면200은 100에서 가져온 순번대로 다른 개인정보들을 입력하고(2번테이블 필드) 변경 시 입력한 값을 DB에 반영한다.
이미 있는 값은 가져온다.1번 테이블
2번 테이블
[프로그램 로직]
<TOP>
TABLES: ZS1D11T_01, ZS1D11T_02.
DATA: OK_CODE TYPE SY-UCOMM,
GS_TAB TYPE ZS1D11T_01,
GS_TAB2 TYPE ZS1D11T_02,
GT_TAB TYPE TABLE OF ZS1D11T_01,
GT_TAB2 TYPE TABLE OF ZS1D11T_02.
TABLES로 선언하면 테이블이름과 같은 WA가 만들어진다.
<화면 100>
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
MODULE EXIT AT EXIT-COMMAND.
MODULE USER_COMMAND_0100.
<화면 200>
PROCESS BEFORE OUTPUT.
MODULE STATUS_0200.
MODULE SELECT_0200.
PROCESS AFTER INPUT.
MODULE EXIT AT EXIT-COMMAND.
MODULE USER_COMMAND_0200.
<PBO>
MODULE status_0100 OUTPUT.
SET PF-STATUS 'S100'.
SET TITLEBAR 'S100'.
ENDMODULE.
MODULE status_0200 OUTPUT.
SET PF-STATUS 'S200'.
SET TITLEBAR 'S200'.
SELECT * FROM zs1d11t_02
INTO CORRESPONDING FIELDS OF TABLE gt_tab.
ENDMODULE.
MODULE select_0200 OUTPUT.
CLEAR: zs1d11t_02.
SELECT SINGLE * FROM zs1d11t_02
WHERE seqnr = zs1d11t_01-seqnr.
zs1d11t_02-seqnr = zs1d11t_01-seqnr.
ENDMODULE.
화면100의 '순번'필드에 입력된 값은 화면200의 '순번'필드에 입력된 값과 같다. 100에서 입력한 값이 200에서도 출력된다.
<PAI>
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0. "SET SCREEN 0. 프로세스를 종료하느냐 이동하느냐 차이
WHEN 'OK'.
CALL SCREEN 200.
ENDCASE.
ENDMODULE.
MODULE exit INPUT.
CASE ok_code.
WHEN 'EXIT' OR 'CANC'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
MODULE user_command_0200 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'MODI'.
IF zs1d11t_02-ernam IS INITIAL. "값이 없을때
zs1d11t_02-erdat = sy-datum. "생성날짜
zs1d11t_02-erzet = sy-uzeit. "생성시간
zs1d11t_02-ernam = sy-uname. "생성자
ENDIF.
zs1d11t_02-aedat = sy-datum. "변경날짜
zs1d11t_02-aezet = sy-uzeit. "변경시간
zs1d11t_02-aenam = sy-uname. "변경자
MODIFY zs1d11t_02.
IF sy-subrc = 0.
MESSAGE s016(pn) WITH '변경되었습니다'.
COMMIT WORK.
ELSE.
MESSAGE s016(pn) WITH '변경 중 오류가 발생했습니다'
DISPLAY LIKE 'E'.
ROLLBACK WORK.
EXIT.
ENDIF.
ENDCASE.
ENDMODULE.
728x90
반응형
'ABAP' 카테고리의 다른 글
Module-pool 3 (Domain text) (0) | 2023.02.14 |
---|---|
Module-pool 2 (조회) (0) | 2023.02.14 |
달의 마지막날 가져오는 function (RP_LAST_DAY_OF_MONTHS) (0) | 2023.02.14 |
조회조건 날짜 계산하여 기본값 넣기 (RP_CALC_DATE_IN_INTERVAL) (0) | 2023.01.24 |
Subscreen (2) | 2023.01.24 |
댓글