ASAP

[ABAP] POPUP ALV 팝업스크린 코드 (ROW COLOR, 통화키 추가) 본문

SAP(ABAP)/문법

[ABAP] POPUP ALV 팝업스크린 코드 (ROW COLOR, 통화키 추가)

에이SAP 2025. 1. 14. 14:40
728x90

안녕하세요.

오늘은 ALV화면에서 이벤트 발생 후 특정 인터널테이블을 ALV팝업창으로 띄어보겠습니다.

코드는 아래 블로그 글을 참고했는데, 저는 row 색상 추가가 필요해서 아래 코드에서 조금 변형하였습니다.

해당 코드는 CL_SALV_TABLE을 활용한 코드로,

CL_SALV_TABLE은 SAP ABAP의 클래스로 ALV그리드를 생성하고 조회하는 데 사용합니다.

https://velog.io/@96hyunjun/ABAP-인터널테이블-ALV-POPUP-띄우기 참고

 

REPORT  z_alv_popup.

DATA : lo_display_settings TYPE REF TO cl_salv_display_settings,
      i_contname TYPE lvc_title,    "팝업 제목
      columns TYPE REF TO cl_salv_columns_table,
      column  TYPE REF TO cl_salv_column.

DATA : lo_table           TYPE REF TO cl_salv_table,
       lo_columns         TYPE REF TO cl_salv_columns.
**********************************************************************
*Internal 테이블
TYPES : BEGIN OF t_popup,
           col1 TYPE char10,
           col2 TYPE char10,
           CURRENCY  TYPE char10,
           COLOR TYPE LVC_T_SCOL,
      END OF t_popup.
DATA : gs_popup TYPE t_popup.
DATA : gt_popup TYPE TABLE OF t_popup.

gt_popup = value #( 
              ( col1 = '100' col2 = '200' CURRENCY = 'KRW' )
              ( col1 = '1' col2 = '2' CURRENCY = 'KRW' )
              ( col1 = '3' col2 = '5' CURRENCY = 'KRW' )
                ).
"Row 색상 지정                
DATA LS_COLOR TYPE LVC_S_SCOL.
LOOP AT GT_POPUP ASSIGNING FIELD-SYMBOL(<FS_POPUP>).
 CLEAR ls_color.
 ls_color-color-col = 5.
 ls_color-color-int = ls_color-color-inv = 0.
 
 if <fs_popup>-col1 > 10. "row에 색상이 들어가는 조건 
	 APPEND ls_color to <fs_popup>-color.
 endif.

ENDLOOP.                                

**********************************************************************
"기초 ALV팝업 세팅
i_contname = '팝업테이블 제목'.
TRY.
    CALL METHOD cl_salv_table=>factory(
    IMPORTING
    r_salv_table = lo_table
    CHANGING
    t_table       = gt_popup ).
  CATCH cx_salv_msg.
ENDTRY.

**********************************************************************
*컬럼설정
columns = lo_table->get_columns( ).
DEFINE set_column_name.
  column = columns->get_column( &1 ).
  column->set_short_text( &2 ).
  column->set_medium_text( &2 ).
  column->set_long_text( &2 ).
END-OF-DEFINITION.

DEFINE set_currency.
  column = columns->get_column( &1 ).
  column->set_currency_column( &2 ).
END-OF-DEFINITION.

set_column_name : 'COL1'  '컬럼1',
                  'COL2'  '컬럼2',
                  'CURRENCY'  '통화키'.
                  
set_currency : 'COL1' 'CURRENCY',
               'COL2' 'CURRENCY'.
**********************************************************************
"팝업 제목 설정
lo_display_settings = lo_table->get_display_settings( ).
lo_display_settings->set_list_header( i_contname ).

"컬럼 데이터 가져오기
lo_columns = lo_table->get_columns( ).
lo_columns->set_optimize( abap_true ).

"팝업 창 크기 설정
lo_table->set_screen_popup(
     start_column = 16
     end_column   = 60
     start_line   = 5
     end_line     = 15 ).

lo_table->get_columns( )->set_color_column('COLOR').
lo_table->display( ).
728x90