************************************************************************
* SELECT-OPTIONS / PARAMETERS *
************************************************************************
* 구분
SELECTION-SCREEN BEGIN OF BLOCK comm WITH FRAME TITLE text-000.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 7(10) TEXT-P01 FOR FIELD P_APP1,
POSITION 3.
PARAMETERS: P_APP1 RADIOBUTTON GROUP AB1 DEFAULT 'X'."생성
SELECTION-SCREEN: COMMENT 23(10) TEXT-P02 FOR FIELD P_APP2,
POSITION 18.
PARAMETERS: P_APP2 RADIOBUTTON GROUP AB1. "조회
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK comm.
* 검색조건
SELECTION-SCREEN BEGIN OF BLOCK comm1 WITH FRAME TITLE text-001.
PARAMETERS: p_WERKS like ZMM0610T-WERKS. "OBLIGATORY, ">플랜트
if P_APP1 = 'X'.
PARAMETERS: p_MATNR like mara-MATNR MODIF ID MD2.
"OBLIGATORY. ">자재번호
elseif P_APP2 = 'X'.
SELECT-OPTIONS: s_MATNR for mara-MATNR MODIF ID MD1. ">자재번호
endif.
SELECT-OPTIONS: S_CRNAM FOR ZMM0610T-CRNAM MODIF ID MD1, ">요청자
S_CRDAT FOR ZMM0610T-CRDAT MODIF ID MD1, ">요청일
S_REQNO FOR ZMM0610T-REQNO MODIF ID MD1. ">요청번호
SELECTION-SCREEN END OF BLOCK comm1.
************************************************************************
* AT SELECTION-SCREEN Events *
************************************************************************
AT SELECTION-SCREEN OUTPUT.
if P_APP2 = 'X'.
loop at screen.
if screen-group1 = 'MD1'.
* SCREEN-INVISIBLE = 0.
screen-active = 1.
modify screen.
endif.
endloop.
else.
loop at screen.
if screen-group1 = 'MD1'.
* SCREEN-INVISIBLE = 0.
screen-active = 0.
modify screen.
endif.
endloop.
endif.
if P_APP1 = 'X'.
loop at screen.
if screen-group1 = 'MD2'.
* SCREEN-INVISIBLE = 0.
screen-active = 1.
modify screen.
endif.
endloop.
else.
loop at screen.
if screen-group1 = 'MD2'.
* SCREEN-INVISIBLE = 0.
screen-active = 0.
modify screen.
endif.
endloop.
endif.
P_APP1 생성시에는 플랜트 자재번호만
P_APP2 조회시에는 다 보여주려고 합니다
보통
라디오 버튼 클릭시 AT SELECTION-SCREEN OUTPUT 이 구문을 타는데
현재는 엔터나 실행을 눌렀을때
이 구문을 탑니다..
왜 그런건지 알려주시면 감사하겠습니다 ~
user-command 가 필요했던거군요~ 세분의 답변으로 힌트 얻었습니다 감사합니다 ^-------^ 축구는 너무너무 아쉽네요 ㅋ
댓글 3
-
두잉
2010.06.18 02:31
-
맑은하늘
2010.06.18 02:40
module-pool 과 비교해 보시면 아실텐데요. at selection-screen output 은 module-pool 의 process 중에서
PBO 와 같은 역할을 합니다. 즉 화면에 대한 설정을 담당하고 있는데요. 기본적으로 screen-event 가 발생할 때
(enter, button 실행 등과 같은) 예를 들면 화면에 있는 버튼을 눌렀다고 가정하면
button-click -> PAI 실행(화면에 변경사항등을 프로그램과 동기화시킴. 즉, 화면과 동일한 오브젝트들에
대하여 프로그램의 오브젝트(변수등)을 화면필드값과 같게 해줌) -> PBO 실행(프로그램의 오브젝트값(필드값, 속성등)
을 화면필드에 일치시켜줌 -> 화면 display 의 과정을 거치는데 at selection-screen output 은 이중에서 PBO 와
동일한 기능을 수행한다고 보시면 됩니다. 따라서 현재 엔터나 실행버튼을 누루게 되면 화면 이벤트가 발생하게 되어
해당 기능을 수행하는 것입니다. 화면 필드와 프로그램의 필드는 이름이 같지만 다르다는 사실은 아시죠?
같은이름에 대한 값을 동일하게 유지하기 위해서 PBO 를 통해서 internal 필드의 값을 화면필드값으로 PAI 를 통해서
화면 필드값을 internal 필드값으로 동일하게 유지시켜주는 것입니다. selection-screen 도 일반적인 화면과 크게 다르지
않으니 제어하는 방법도 거의 동일하다고 보시면 됩니다. 도움이 되셨길 바랍니다. ^^ 축구 재밌게 보세요. 대한민국 화이팅..!!
-
맑은하늘
2010.06.18 02:46
loop at screen.
case 'X'.
when p_app1.
if screen-group1 = 'MD2'.
screen-active = '1'.
else.
screen-active = '0'.
endif.
when p_app2.
if screen-group1 = 'MD1'.
screen-active = '1'.
else.
screen-active = '0'.
endif.
endcase.
modify screen.
endloop.
그냥 적어봤는데요. 도움되시길...
아래 비슷한 내용이 있네요..참고하시면 될 것 같습니다.
http://www.e-abap.net/zb/bbs/zboard.php?id=ABAPQnA&no=5605