챗지피티에 조회 프로그램과 모듈풀 프로그램 차이점에 대해서 물어보고 답변을 받았습니다.
그외 소스코드를 작성하면서 어려운부분도 소스코드를 수정해달라고 해서 해결하였습니다.
상세내용 링크 확인부탁드립니다.
https://chat.openai.com/share/e0ce58e3-f928-4593-8cc7-890ab1b3fa73
조회프로그램과 다르게 모듈풀 프로그램은 스크린을 만들고 TCODE를 만들어서 실행시키는 프로그램입니다. 복잡하지만 예제를 따라해보도록 하겠습니다.
SAP에서 실행시켜서 테이블에 데이터를 입력하는 프로그램은 대부분 M 모듈풀 프로그램이기때문에 이 프로그램을 이해할 필요가 있습니다.
테이블에서 조회하여 화면에 보여주는 프로그램은 조회프로그램인데 이부분은 저번시간에 학습하였습니다.
CREATE 프로그램을 만들때 그냥 ENTER를 치면 조회프로그램 생성이 됩니다.
CREATE프로그램 생성시 TYPE을 M으로 변경한뒤 생성하고 소스코드를 붙여넣기 하면됩니다.
소스코드
*&---------------------------------------------------------------------*
*& Module Pool ZGPTERS_09_02_2
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
PROGRAM ZGPTERS_09_02_2.
TABLES : ZGPTER_T.
DATA : GV_ANSWER TYPE C.
DATA : OK_CODE TYPE SY-UCOMM.
DATA : SAVE_OK TYPE SY-UCOMM.
*DATA :
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS '100_STATUS'.
SET TITLEBAR '100_STATUS'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module SCREEN_INIT OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE SCREEN_INIT OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 EQ 'DIS'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE. " SCREEN_INIT OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'UPDA'.
* UPDATE zgpter_t.
modify zgpter_t.
IF SY-SUBRC EQ 0.
MESSAGE 'UPDATE S' TYPE 'S'.
ELSE.
MESSAGE 'UPDATE E' TYPE 'E'.
ENDIF.
WHEN 'CHAG'.
UPDATE zgpter_t.
* modify zgpter_t.
IF SY-SUBRC EQ 0.
MESSAGE 'CHANGE S' TYPE 'S'.
ELSE.
MESSAGE 'UPDATE E' TYPE 'E'.
ENDIF.
WHEN 'CREA'.
INSERT zgpter_t.
IF SY-SUBRC EQ 0.
MESSAGE 'insert s' TYPE 'S'.
ELSE.
MESSAGE 'NOT CREATE' TYPE 'E'.
ENDIF.
WHEN 'DISP'.
SELECT SINGLE * FROM zgpter_t
WHERE ZNUMBER = zgpter_t-ZNUMBER.
IF SY-SUBRC EQ 0.
MESSAGE 'DISP S' TYPE 'S'.
ELSE.
MESSAGE 'NOT CREATE' TYPE 'E'.
ENDIF.
WHEN 'DELE'.
SELECT SINGLE * FROM zgpter_t
WHERE ZNUMBER = zgpter_t-ZNUMBER.
CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA'
EXPORTING
TEXTLINE1 = 'DELETE'
* TEXTLINE2 = ' '
TITEL = 'ATTENTION'
* START_COLUMN = 25
* START_ROW = 6
* DEFAULTOPTION = 'N'
IMPORTING
ANSWER = GV_ANSWER
.
CHECK GV_ANSWER NE 'N'.
DELETE zgpter_t.
CLEAR zgpter_t.
IF SY-SUBRC EQ 0.
MESSAGE 'DELE E' TYPE 'S'.
ELSE.
MESSAGE 'NOT CREATE' TYPE 'E'.
ENDIF.
WHEN 'BACK' OR 'EXIT' OR 'CANC'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
소스코드는 전체복사해서 프로그래명 밑에 복사해서 붙여넣기 하면됩니다.
다음은 스크린을 만들고
100_STATUS 만드는것이 복잡합니다.
그러면 스크린샷 순서대로 따라하시면 됩니다.
테이블 만들기 (TCODE : SE11)
SAVE를 누르면 ACTIVATE를 누르면 다음화면이 나옵니다.
M모듈풀 프로그램은 TCODE를 생성해야 실행이 되는 프로그램입니다.
CREAT하고 DELTE해보면서 실습해보십시오.
UPDATE는 안되고 INSERT는 되네요, MODIFY도 되는데 업데이트가 안되는데 이부분은 나중에 테스트하여 보완하도록 하겠습니다.
목요일에 ZOOM미팅에서 뵐께요.
#9기 SAP방