" Tooltip " 이란, 해당 요소에 마우스를 올리면 추가 정보가 나타내는 효과를 의미한다.
https://www.tcpschool.com/css/css_advanced_tooltip
위 화면이 ALV에서 Tooltip을 보여주는 예시 화면이다.
ALV에서 Fieldcatalog 의 Tooltip 속성에 값을 주게 되면 위와 같이 헤더 컬럼에 마우스 커서를 갔다 놓으면 Tooltip이 보이게 된다.
필드 카탈로그의 Tooltip 필드에 정의 된 값이 나오는 것을 볼 수 있다.
디버깅 없이 ALV의 오류, 필드카탈로그 등을 확인하려면 아래 링크 참조
돌아와서, 오늘 주제인 ALV 상의 ICON에 Tooltip을 넣는 방법을 알아보자.
예시 )
" LV_DAYS " 변수의 값이 1 미만이면 초록 아이콘, 아니면 빨간 아이콘으로 출력해 보자.
* 상태 ICON
GS_LIST01-STATU = COND #( WHEN LV_DAYS =< 10 THEN ICON_LED_GREEN
ELSE ICON_LED_RED ).
위 예시 로직에서 LV_DAYS는 " 지연 일수 "로 지연 일수가 10일 이하면 초록색, 10일 이상이면 빨강색 아이콘으로 나타낸다.
프로그램을 개발한 개발자라면 초록색이 지연일수 10일 이하 , 빨간색이 10일 초과 인 것을 알겠지만,
사용자 입장에서는 한눈에 파악하기 어려울 수 있다.
그래서 사용자 편의를 위해 아이콘에 마우스 커서를 가져가면 아래와 같이 Tooltip을 보여주는 로직을 추가하려고 한다.
- Step 01 : 데이터의 Tooltip을 저장할 변수 선언
* Tooltip 변수 선언
DATA: GT_TOOLTIP TYPE ALV_T_QINF.
ALV_S_QINF 타입의 Internal Table 변수를 선언한다.
- Step 02 : 프로그램에서 Tooltip을 저장할 Internal Table에 값을 넣는다.
* 상태 ICON : TOOPTIP 적용
DATA(LS_TOOLTIP) = VALUE ALV_S_QINF( TYPE = CL_SALV_TOOLTIP=>C_TYPE_ICON
FIELDNAME = 'STATU'
VALUE = GS_LIST01-STATU
TEXT = SWITCH #( GS_LIST01-STATU
WHEN ICON_LED_GREEN THEN '지연일수 10일 이하'
WHEN ICON_LED_RED THEN '지연일수 10일 초과' )
).
COLLECT LS_TOOLTIP INTO GT_TOOLTIP.
간단히 보면
Fieldname | Tooltip을 적용할 필드 명 |
VALUE | Tooltip의 대상이 되는 필드의 값 |
TEXT | Tooltip 텍스트 |
해당 값을 넣고 " GT_TOOLTIP " Internal Table에 저장한다.
코드를 풀어보면, STATU 필드의 아이콘에 Tooltip을 적용할 것이고 Tooltip의 값은 GS_LIST01-STATU로 한다.
GS_LIST01-STATU에 따른 Tooltip 텍스트는 ICON_LED_GREEN : 지연일수 10일 이하,
ICON_LED_RED : 지연일수 10일 초과 이다.
- Step 03 : SET_TABLE_FOR_FIRST_DISPLAY 메서드 호출 시 IT_EXCEPT_QINFO 파라미터에 Internal Table 값을 넘겨준다.
저장 후 ALV를 출력하기 위한 메서드 " SET_TABLE_FOR_FIRST_DISPLAY "의 IT_EXCEPT_QINFO에 Tooltip을 담은 Internal Table을 넣어준다.
이때 주의할 점은 Tooltip을 넣는 ICON 필드는 Fieldcatalog 속성의 " ICON " 필드에 X 값이 들어있어야 한다.
WHEN 'STATU'. PS_FCAT-COLTEXT = 'ICON'. PS_FCAT-ICON = 'X'. " LVC_S_FCAT ( 필드 카탈로그 )의 iCON 속성에 X 값이 들어있어야 함
- 전체 소스코드
* Tooltip 변수 선언
DATA: GT_TOOLTIP TYPE ALV_T_QINF.
* 상태 ICON : TOOPTIP 적용
DATA(LS_TOOLTIP) = VALUE ALV_S_QINF( TYPE = CL_SALV_TOOLTIP=>C_TYPE_ICON
FIELDNAME = 'STATU'
VALUE = GS_LIST01-STATU
TEXT = SWITCH #( GS_LIST01-STATU
WHEN ICON_LED_GREEN THEN '지연일수 10일 이하'
WHEN ICON_LED_RED THEN '지연일수 10일 초과' )
).
COLLECT LS_TOOLTIP INTO GT_TOOLTIP.
* 필드 카탈로그 속성 설정
CASE PS_FCAT-FIELDNAME.
WHEN 'STATU'.
PS_FCAT-COLTEXT = 'ICON'.
PS_FCAT-ICON = 'X'.
PS_FCAT-JUST = 'C'.
ENDCASE.
* ALV Display
CALL METHOD G_ALV_GRID01->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_BUFFER_ACTIVE = 'X'
IS_LAYOUT = GS_LAYOUT01
IT_TOOLBAR_EXCLUDING = GT_EXFCD01
IT_EXCEPT_QINFO = GT_TOOLTIP
CHANGING
IT_OUTTAB = GT_LIST01
IT_SORT = GT_SORT01
IT_FIELDCATALOG = GT_FDCAT01
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
'SAP > ABAP' 카테고리의 다른 글
ABAP SUBMIT & Dynamic Select-Option #1 (0) | 2023.09.18 |
---|---|
ABAP SUBMIT & Dynamic Select-Option #2 (0) | 2023.09.12 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!