MODULE SCREEN_3300 OUTPUT.
IF Zxxxxx-BS EQ C_BS.
LOOP AT SCREEN.
IF SCREEN-NAME CS 'IT_04-EBELP'.
SCREEN-INPUT = 0.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
스크린에서 해당 필드를 비활성화가 아닌 보이지 않게 하려고 합니다.
SCREEN-INPUT = 0.
SCREEN-INVISIBLE = 1.
또는
SCREEN-ACTIVE = 0.
로 해도 비활성화상태만 됩니다.. 숨기는 기능은 없는지요..
경험있는분들 답변 부탁드립니다.
댓글 6
-
맨날초보
2010.12.03 18:51
-
페리
2010.12.03 18:52
스크린페인터에서 테이블 컨트롤 이름으로 주신 걸로 돌리셔야해요.
LOOP AT TC-COLS INTO CTRL_HEADER.
IF CTRL_HEADER-SCREEN-NAME = 'GS_ITEM-XREF1'.
CTRL_HEADER-INVISIBLE = '1'.
MODIFY TC-COLS FROM CTRL_HEADER.
ELSE.
CTRL_HEADER-INVISIBLE = '0'.
MODIFY TC-COLS FROM CTRL_HEADER.
ENDIF.
ENDLOOP. -
prt
2010.12.03 19:06
감사합니다..
테이블 컨트롤에서 필드별 비활성화가 아닌 행별 비활성화를 하고 싶은데요..
MODULE SCREEN_3300 OUTPUT.
IF Zxxxxx-BS EQ C_BS.
IF IT_04[] IS NOT INITIAL.
LOOP AT IT_04 WHERE SUM = 'X'.
LOOP AT SCREEN.
READ TABLE IT_04 INDEX TC_3300-CURRENT_LINE
SCREEN-INPUT = 0.
SCREEN-INVISIBLE = 1.
ENDLOOP.
ENDLOOP.
ENDIF.
it_04에서 sum이 'x'인 것만 비활성화하기위해
pai에서 주는 READ TABLE IT_04 INDEX TC_3300-CURRENT_LINE를 써봤는데
안되는데.. 행별 비활성는 안되는지요.. -
페리
2010.12.03 19:21
테이블 컨트롤에서는 열로는 되지만 행별은 안되는걸로 알고 있어요~
저도 행 해볼려고 해봤지만... 안되네요 ㅎㅎ;
-
맑은하늘
2010.12.03 20:10
테이블 컨트롤은 현재 설정된 table control line수만큼 loop가 돌게 되어 있어요
[pbo]
loop at tc~
endloop.
따라서 조건만 주시고 위와 같이 하시면 됩니다.
전체 코딩은 이런식이 될 겁니다.
loop at tc~
module set_screen.
endloop.
module set_screen output.
if 조건.
loop at screen.
screen-invisible = '1'.
modify screen.
endloop.
endif.
endmodule.
위 코드처럼 하시면 조건에 맞는 레코드, 즉 tc-current_line 의 데이터가
조건에 맞을 경우 invisible 상태로 변경이 되겠죠. ^^
-
페리
2010.12.03 20:53
아.. 맑은 하늘님 감사합니다. 이렇게 하면 되는군요 ㅎㅎ;;
제가 오히려 도움을 받았네요 ~
IF p_ipknzp = 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'RAD'.
SCREEN-ACTIVE = '0'. "1:ACTIVE, O:INACTIVE <==이부분이에요.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
아님..
SELECT-OPTIONS : s_alart FOR t811c-alart NO-DISPLAY. <==이런 식으로 선언하면 안나타나죠. ^^