질문1)
화면 0100 ALV LIST가 있을때
T-CODE 입력란 옆의 SAVE 버튼을
T-CODE에 따라 visible, invisible하고 싶은데요..
0100에
process before output.
module modify_screen_0100.
Z~O01에
module modify_screen_0100 output.
clear : ok_code.
case w_mode. ==> 1)
when 'SAVE'.
if sy-tcode = 'Z~D'.
loop at screen.
screen-invisible = 1.
* screen-input = 0.
modify screen.
endloop.
endif.
endcase.
endmodule.
인것 같아 처리했는데 1)부분을 SY-UCOMM, OK_CODE로 해도 NULL이 나오는데요..
고수님들의 의견 부탁 드립니다..
질문2)
selection-screen begin of block b1 with frame title text-001.
select-options : s_vkbur for vbak-vkbur,
s_vkgrp for vbak-vkgrp,
s_kunnr for vbpa-kunnr,
s_bstnk for vbak-bstnk,
s_remseq for z~5-remseq,
s_ersda for z~5-ersda.
selection-screen end of block b1.
selection-screen begin of block b2 with frame title text-002.
selection-screen skip 2.
selection-screen comment 01(20) text-003.
selection-screen pushbutton 33(20) save2 user-command push2. <==1)
selection-screen end of block b2.
at selection-screen.
perform selection_screen_con.
form selection_screen_con .
check sy-tcode eq 'Z~N' or sy-tcode eq 'Z~NH'. <==2)
loop at screen.
if screen-name cs 'S_REMSEQ' or screen-name cs 'S_ERSDA'.
screen-invisible = 1.
screen-input = 0.
endif.
modify screen.
endloop.
if sy-ucomm = 'PUSH2'. <==1)'
perform push2_init.
call screen '0220' starting at 4 10
ending at 87 27 . "60 20.
endif.
endform.
1)과 1)'를 넣기 전에는 selection layout에서 tcode에 따른 2)의 내용이 잘
적용되었습니다..
그런데 1), 1)'의 push2를 넣은뒤로 2)의 screen-invisible = 1.이 적용이 안되
는데요.. 잘못된 부분을 찾기 힘드네요..
댓글 6
-
아밥맨
2008.06.12 01:29
-
풍뎅이
2008.06.12 22:26
먼저 답변 감사드립니다
아밥맨님 말씀대로 하니깐 비활성화가 되는데 save와 함께 save 옆의 앞화면, 종료, 취소까지
비활성화가 됩니다..
디버깅걸어보면 LT_FCODE엔 Standard Table라고 되어 있습니다.
save만 비활성화할 순 없을까요.. -
아밥맨
2008.06.13 00:06
set pf_status '0100' excluding lt_fcode. 를 하였다 해서
BACK, EXIT, CANC버튼이 비활성화 될 순 없거든요..
set pf_status '0100' excluding lt_fcode.
이것은,
PF-STATUS '0100'에 등록된 스탠다드툴바 버튼 중 LT_FCODE에 들어있는 펑션코드를
제거(비활성화)하겠다는 의미입니다.
일단 PF-STATUS 이름이 '0100'이 맞는지 체크하시구요
PF-STATUS에 BACK, EXIT, CANC버튼이 존재하는지 체크함 해보세요..
-
풍뎅이
2008.06.13 01:30
MODULE status_0100 OUTPUT.
CLEAR : ok_code.
SET PF-STATUS 'PF_STATUS'.
로 쓰면 pf-status가 이름 '0100'을 쓰겠다는것 아닌가요?
그리고 PF-STATUS에 BACK, EXIT, CANC버튼은 존재합니다.. -
아밥맨
2008.06.13 01:54
SET PF-STATUS '여기다쓴게 pf-status이름'
풍뎅이님 경우 SET PF-STATUS 'PF_STATUS'.
이렇게 썻기때문에 pf-status이름은 '0100'이 아니라 'PF_STATUS'가 되겠죠.
그러므로,
SET PF-STATUS 'PF_STATUS' EXCLUDING LT_FCODE.
이렇게 써주시면 되겠네요.
-
풍뎅이
2008.06.13 02:38
아밥맨님 감사합니다..
질문1만 답변드릴게요.
아래처럼 코딩하시면 될 듯 합니다.
MODULE STATUS_0100 OUTPUT.
DATA : LT_FCODE TYPE TABLE OF SY-UCOMM.
IF SY-TCODE EQ 'TCODE1'. " SAVE버튼 숨겨야하는 티코드
APPEND 'SAVE' TO LT_FCODE. " SAVE버튼의 펑션코드는 'SAVE'로 가정
ELSEIF SY-TCODE EQ 'TCODE2'. " SAVE버튼 보여야하는 티코드
REFRESH LT_FCODE.
ENDIF.
SET PF-STATUS '0100' EXCLUDING LT_FCODE.
ENDMODULE. " STATUS_0100 OUTPUT