SAP/ABAP

ALV ICON에 Tooltip 넣기

로뚱 2023. 9. 8. 01:53

 


" Tooltip " 이란, 해당 요소에 마우스를 올리면 추가 정보가 나타내는 효과를 의미한다.
https://www.tcpschool.com/css/css_advanced_tooltip

 

 

 

위 화면이 ALV에서 Tooltip을 보여주는 예시 화면이다.

 

ALV에서 Fieldcatalog 의 Tooltip 속성에 값을 주게 되면 위와 같이 헤더 컬럼에 마우스 커서를 갔다 놓으면 Tooltip이 보이게 된다.

 

필드 카탈로그의 Tooltip 필드에 정의 된 값이 나오는 것을 볼 수 있다.

 


디버깅 없이 ALV의 오류, 필드카탈로그 등을 확인하려면 아래 링크 참조


 

ALV 오류 확인 & 일관성 점검

ALV를 신규 개발하거나 혹은 유지 보수 할 때 어딘가 분명히 오류가 있는데 찾기 어려운 경우가 있다. 이때, " ALV Grid의 빈 화면에 Shift + 마우스 우클릭 두 번 " 하면 일관성 점검 및 오류를 확인할

ro-ttung.tistory.com




 

 

 

돌아와서, 오늘 주제인 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일 초과

 

프로그램을 개발한 개발자라면 초록색이 지연일수 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.