원래 1000번화면에는 select-option 2가지가 있습니다.
처음 프로그램 실행시
첫번째 select-option만 화면상에 보이고,
조건문을 입력해서 들어가면,
100번 alv스크린을 불러옵니다.
100번 alv스크린에서 어떤 버튼을 누르면
다시 1000번화면으로 가는데
이번에는 두번째 select-option만 화면상에 보이고,
조건문 입력해서 들어가면,
200번 alv스크린을 불러옵니다.
이런식으로 1000번화면을 두가지로 나타나게 하고싶은데........
가능한건가요?
1000번화면상에서 function key만들어서 버튼눌렀을때 사라지게 하고, 나타나고 이건 할줄 아는데
back을 하거나 화면을 이동할때 1000번을 콜함과 동시에 이루어지게 하려니
안될것 같다는 생각이 들어서요.
그냥 1000번화면에 function 버튼만들어서 화면제어 가능하게 하구선,
1번 select-option만 표시되 있거나, 1번에 값을 입력했거나 하면...........100번 콜하게 하고
2번 select-option만 화면에 보이거나 2번 select-option에 입력하면.........200번 콜하게 하고
이런 방법으로 해야 할까요?
조언부탁드립니다.
댓글 3
-
초보아밥퍼
2008.04.08 17:13
-
초보아밥퍼
2008.04.08 20:47
잘 하고 계실줄로 압니다 그냥 그간 남아서 올려봅니다.
펑션키는 CALL 로 지정하였습니다.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : P_MATNR FOR MARA-MATNR MODIF ID GR1,
P_MTART FOR MARA-MTART MODIF ID GR1,
P_MEINS FOR MARA-MEINS MODIF ID GR1.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_MATNR FOR MARA-MATNR MODIF ID GR2,
S_MTART FOR MARA-MTART MODIF ID GR2.
SELECTION-SCREEN END OF BLOCK B2.
AT SELECTION-SCREEN OUTPUT.
IF OK_CODE = ''.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'GR1'.
SCREEN-ACTIVE = 1.
ENDIF.
IF SCREEN-GROUP1 = 'GR2'.
SCREEN-ACTIVE = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF OK_CODE = 'CALL'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'GR2'.
SCREEN-ACTIVE = 1.
ENDIF.
IF SCREEN-GROUP1 = 'GR1'.
SCREEN-ACTIVE = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
MODULE USER_COMMAND_0100 INPUT.
CASE OK_CODE.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'CALL'.
CALL SELECTION-SCREEN '1000' USING SELECTION-SET OK_CODE.
SET SCREEN 0.
PERFORM SELECT_DATA.
CALL SCREEN 200.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
FORM SELECT_DATA .
CLEAR : IT_MAIN, IT_MAIN[].
IF OK_CODE = ''.
SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_MAIN FROM MARA
WHERE MATNR IN P_MATNR.
ELSEIF OK_CODE = 'CALL'.
SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_MAIN FROM MARA
WHERE MATNR IN S_MATNR.
ENDIF.
ENDFORM. " SELECT_DATA
그냥 참고 하세요 ^^
-
다급
2008.04.11 00:30
감사합니다..^^
at selection-screen output 쪽에
WEB IN ABAP 님의 말씀대로
200번 화면을 콜하는 FLAG일 경우
셀렉트 옵션을 그룹으로 묶으셔서
PARAMETER : AAA LIKE MARA-MATNR MODIFY ID GR1. <--100번
PARAMETER : AAA LIKE MARA-MATNR MODIFY ID GR2. <--200번
IF 200 을 콜하는 루틴일때.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'GR1'.
SCREEN-ACTIVE = 0.
ENDIF.
IF SCREEN-GROUP1 = 'GR2'.
SCREEN-ACTIVE = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
이런식으로 하면 될꺼 같은데요.