728x90
반응형
[실행화면]
처음엔 검색조건
버튼이 나오지 않는다.
검색
을 누르면 테이블 컨트롤에 해당 데이터가 나온다.
왼쪽버튼을 누르면 조회조건 탭이 나오지 않는다
[프로그램 로직]
<TOP>
PROGRAM sapmz11_13 MESSAGE-ID ZM11.
DATA: ok_code TYPE sy-ucomm.
DATA: gt_ekko TYPE TABLE OF ekko,
gs_ekko TYPE ekko,
gt_ekpo TYPE TABLE OF ekpo,
gs_ekpo TYPE ekpo,
number(4), "서브스크린 번호 저장용 변수
g_but(4), "버튼 클릭 구분을 위한 변수
g_ebeln type ekko-ebeln, "구매문서 번호(입력받은 값 저장)
g_ebelp type ekpo-ebelp, "구매문서 품목
g_txz01 type ekpo-txz01. "내역
CONTROLS ts1 TYPE TABSTRIP.
CONTROLS cont1 TYPE TABLEVIEW USING SCREEN 0100.
이제 메세지도 만들어진거 말고 내꺼 만들어서 해주자..
<화면 100>
왼쪽버튼은 OFF
오른쪽버튼은 ON
으로 이름을 지정해주었다. ON
버튼은 비가시로 첫화면에 안보이게 해주고 왼쪽버튼을 눌렀을때 보이게 로직처리를 해줄거다. 데이터선언문과 동일하게 테이블컨트롤 이름은 CONT1로 지정해주고 탭스트립은 TS1으로 지정해줬다.
[흐름로직]
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE setting_screen.
CALL SUBSCREEN sub1 INCLUDING sy-repid number.
CALL SUBSCREEN sub2 INCLUDING sy-repid number.
LOOP AT gt_ekpo INTO gs_ekpo WITH CONTROL cont1.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE exit AT EXIT-COMMAND.
CALL SUBSCREEN sub1. "SUBSCREEN 버튼 제어
CALL SUBSCREEN sub2.
MODULE user_command_0100.
LOOP AT gt_ekpo.
ENDLOOP.
<서브화면 101>
선언해준 변수로 그려준다.
<서브화면 102>
<PBO>
MODULE status_0100 OUTPUT.
SET PF-STATUS 'S200'.
SET TITLEBAR 'S200'.
"SUBSCREEN TAB 설정
CASE ts1-activetab. "현재 활성화된 탭이 어떤거냐
WHEN 'TAB1'.
number = '0101'. "관련 화면 번호
WHEN 'TAB2'.
number = '0102'.
WHEN OTHERS. "그외 지정안했을때, 처음엔 tab1..
ts1-activetab = 'TAB1'.
number = '0101'.
ENDCASE.
ENDMODULE.
"버튼 클릭시
MODULE setting_screen OUTPUT.
LOOP AT SCREEN.
IF g_but = 'ON'.
IF screen-group1 = 'G1'.
screen-invisible = 0.
ENDIF.
IF screen-group1 = 'G2'.
screen-invisible = 1.
ENDIF.
ELSEIF g_but = 'OFF'.
IF screen-group1 = 'G1'.
screen-invisible = 1.
ENDIF.
IF screen-group1 = 'G2'.
screen-invisible = 0.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDMODULE.
<PAI>
MODULE exit INPUT.
CASE ok_code.
WHEN 'EXIT' OR 'CANC'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
MODULE user_command_0100 INPUT.
DATA: l_txz01(42).
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
"탭
WHEN 'TAB1'.
ts1-activetab = 'TAB1'.
number = '0101'.
WHEN 'TAB2'.
ts1-activetab = 'TAB2'.
number = '0102'.
"버튼
WHEN 'ON'.
g_but = 'ON'.
WHEN 'OFF'.
g_but = 'OFF'.
"서브스크린101의 검색버튼 눌렀을 때
WHEN 'DIS'.
SELECT * FROM ekko AS a INNER JOIN ekpo AS b
ON a~ebeln = b~ebeln
INTO CORRESPONDING FIELDS OF TABLE gt_ekpo
WHERE a~ebeln = g_ebeln
AND b~ebelp = g_ebelp.
"서브스크린102의 검색버튼 눌렀을 때
WHEN 'DIS2'.
CONCATENATE '%' g_txz01 '%' INTO l_txz01.
SELECT * FROM ekko AS a INNER JOIN ekpo AS b
ON a~ebeln = b~ebeln
INTO CORRESPONDING FIELDS OF TABLE gt_ekpo
WHERE b~txz01 LIKE l_txz01.
ENDCASE.
if sy-subrc = 0.
message s000 with '성공하였습니다.'.
else.
message s000 with '실패하였습니다.'.
endif.
ENDMODULE.
728x90
반응형
'ABAP' 카테고리의 다른 글
Tabstrip (0) | 2023.02.14 |
---|---|
Table control (0) | 2023.02.14 |
Module-pool 5 (변경/생성) (0) | 2023.02.14 |
Module-pool 4 (Radio button) (0) | 2023.02.14 |
Module-pool 3 (Domain text) (0) | 2023.02.14 |
댓글