728x90
반응형
[실행화면]
입력버튼을 눌러도 생성/변경 정보는 입력할 수 없다.
저장을 누르면 생성/변경 정보가 자동으로 입력이 되고 입력한 데이터는 DB에 반영된다.
조회버튼을 눌렀을 땐 아무것도 입력할 수 없다.
[프로그램 로직]
<TOP>
TABLES: Z11T_MARA, Z11T_MAKT.
DATA: OK_CODE TYPE SY-UCOMM,
P_INPUT(1) TYPE C,
P_LOOK(1) TYPE C.
라디오 버튼에 값이 있을때(체크 됐을때), 없을때(체크되지 않았을 때)를 넣어줄 변수를 선언한다. 레이아웃에서 그린 라디오버튼의 이름과 동일하게 선언해줬다.
<화면 100>
라디오버튼은 둘중 하나만 체크할 수 있게 해야하기 때문에 그룹을 지어준다. 그룹을 지어줄 라디오버튼들을 드래그하고 편집-라디오버튼-그룹핑 설정을 해주면 된다.
조회버튼을 눌렀을때 입력 못하게 막으려면 로직으로 한번에 처리해줄 수 있는데 그전에 레이아웃에서 입력 못하게 막으려는 필드들을 그룹 지어주어야 한다. 그 필드들을 더블클릭해 그룹에 G1
을 직접 일일히.. 입력해주었다.
생성일, 생성자, 변경일, 변경자는 사용자가 따로 입력할 수 없고 저장버튼을 눌렀을때 자동으로 뜨게하기 위해 출력필드 전용으로 해준다.
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE SELECT_0100.
MODULE SETTING_SCREEN.
PROCESS AFTER INPUT.
MODULE EXIT AT EXIT-COMMAND.
MODULE USER_COMMAND_0100.
<PBO>
MODULE status_0100 OUTPUT.
SET PF-STATUS 'S100'.
SET TITLEBAR 'S100'.
ENDMODULE.
MODULE select_0100 OUTPUT.
SELECT SINGLE * FROM Z11T_MARA AS A
INNER JOIN Z11T_MAKT AS B
ON A~MATNR = B~MATNR
INTO CORRESPONDING FIELDS OF Z11T_MARA
WHERE A~MATNR = Z11T_MARA-MATNR.
ENDMODULE.
MODULE setting_screen OUTPUT.
LOOP AT SCREEN.
CASE 'X'.
"입력 라디오버튼 체크시
WHEN P_INPUT .
IF screen-group1 = 'G1'.
screen-input = 1. "입력을 허용한다.
ENDIF.
"조회 라디오버튼 체크시
WHEN P_LOOK.
IF screen-group1 = 'G1'.
screen-input = 0. "입력을 막는다.
ENDIF.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
ENDMODULE.
프로그램이 실행되면 PBO탄뒤 PAI타고 PBO다시 탄다. (화면이 하나기 때문에) 입력->조회, 조회->입력으로 변경할 때 속성 바뀐거 적용해 뿌려주기위해 레이아웃에서 라디오코드에 F코드 입력해 변경되는 이벤트를 만들어준다.
<PAI>
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
"저장버튼 눌렀을 때 입력/변경 정보 넣어주는 로직
WHEN 'SAVE'.
IF z11t_mara-ernam IS INITIAL. "값이 없을때
z11t_mara-ersda = sy-datum. "생성날짜
z11t_mara-ernam = sy-uname. "생성자
ELSE.
z11t_mara-laeda = sy-datum. "변경날짜
z11t_mara-aenam = sy-uname. "변경자
ENDIF.
MODIFY z11t_mara.
MODIFY z11t_makt.
IF sy-subrc = 0.
MESSAGE s016(pn) WITH '저장되었습니다'.
COMMIT WORK.
ELSE.
MESSAGE s016(pn) WITH '저장 중 오류가 발생했습니다'
DISPLAY LIKE 'E'.
ROLLBACK WORK.
EXIT.
ENDIF.
ENDCASE.
ENDMODULE.
MODULE exit INPUT.
CASE ok_code.
WHEN 'EXIT' OR 'CANC'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
728x90
반응형
'ABAP' 카테고리의 다른 글
Module-pool 6 (Subscreen, table control) (0) | 2023.02.14 |
---|---|
Module-pool 5 (변경/생성) (0) | 2023.02.14 |
Module-pool 3 (Domain text) (0) | 2023.02.14 |
Module-pool 2 (조회) (0) | 2023.02.14 |
Module-pool 1 (변경) (0) | 2023.02.14 |
댓글