300x250
728x90

# Subtotal에 대해서


2024.02.21 - [.SAP/..ABAP] - SAP ALV SubTotal(소계) 정리

 

SAP ALV SubTotal(소계) 정리

시작하기 전.. #언젠간 한 번은 해보지만 안 해보면 까먹는 소계... # Layout을 통해서 소계를 지정할 수도 있고, 로직을 통해서 소계를 지정할 수도 있다. # 방법은 여러 가지이기 때문에 참고 바란

potato98.tistory.com

 

 

* 기본적인 Subtotal 설정은 넘어가고 텍스트 넣는 방법으로 바로 넘어가자.

 

# Subtotal 기본 설정


기본적인 Subtotal은 다음과 같이 설정했다. 

# SORT 기준( CARRID ) #

 

# SUM 기준( PAYMENTSUM ) #

 

# 실행화면 #

 

 

# 01. Subtotal Text(텍스트) Method 로직 설정


# 텍스트 설정 하려면  기준이 필요하다. 

* 텍스트설정하고 싶은 필드 

 

# 여기서 텍스트설정하고 싶은 것은 " Carrname " 이기 때문에 CARRNAME기준으로 잡아보자.

 

#01. 우선 Method Definition 설정해 보자.

# ( 기본적인 Class Definition, Implementation 은 넘어가겠다 )

  METHODS subtotal_text01
    FOR EVENT subtotal_text OF CL_GUI_ALV_GRID
    IMPORTING
       es_subtottxt_info
       ep_subtot_line
       e_event_data.

 

#02. 다음인 Method Implementation설정해 보자.

  METHOD subtotal_text01.

    PERFORM ALV_CL_subtotal_text01
       USING es_subtottxt_info
                    ep_subtot_line
                    e_event_data.
                    
  ENDMETHOD.                    "subtotal_text01

 

# 03. PERFORM 설정하자.

FORM ALV_CL_SUBTOTAL_TEXT01
  USING
    PS_SUBTOTTXT_INFO TYPE LVC_S_STXT
    PP_SUBTOT_LINE         TYPE REF TO DATA
    PE_EVENT_DATA           TYPE REF TO CL_ALV_EVENT_DATA .



ENDFORM.

 

 

# 04. " Carrname " 에 대한 Text(텍스트)를 가져오기 위해서는 필드 심볼을 통해서 가져와야 한다. 

다음과 같이 로직을 통해서 Text를 가져올 수 있기 때문에 참고 바란다.

필요에 따라, 상황에 따라 로직을 변경하면 된다.

(로직 설명 생략)

FORM ALV_CL_SUBTOTAL_TEXT01
  USING
    PS_SUBTOTTXT_INFO TYPE LVC_S_STXT
    PP_SUBTOT_LINE         TYPE REF TO DATA
    PE_EVENT_DATA           TYPE REF TO CL_ALV_EVENT_DATA .


  DATA:
    LS_SFLIGHT LIKE SFLIGHT,
    LV_NAME    LIKE SCARR-CARRNAME.


  FIELD-SYMBOLS:
    <FS1> STRUCTURE SFLIGHT DEFAULT LS_SFLIGHT,
    <FS2>.

  IF PS_SUBTOTTXT_INFO-CRITERIA = 'CARRNAME'.

    FIELD-SYMBOLS: <FS> TYPE ANY.

   " Subtotal 이름 넣기 위한 로직 "
    ASSIGN PE_EVENT_DATA->M_DATA->* TO <FS>.

    " Carrname에 대한 이름 가져오기 "
    ASSIGN PP_SUBTOT_LINE->* TO <FS2>.
    ASSIGN COMPONENT 'CARRNAME' OF STRUCTURE <FS2> TO FIELD-SYMBOL(<FV_NAME>).

    " Subtotal에 이름 넣기 "
    <FS> = <FV_NAME>.

  ENDIF.


ENDFORM.

 

필드심볼에 대해서 알고 싶으면?

2023.09.20 - [.SAP/..ABAP] - SAP FIELD SYMBOL( 필드심볼 ) 정리, 예제

 

SAP FIELD SYMBOL( 필드심볼 ) 정리, 예제

# FIELD SYMBOL( 필드심볼 )에 대해서 - ABAP 프로그램 내에서 동적으로 Data를 선언할 수 있다.- 필드심볼은 메모리를 점유하는 것이 아닌 주소만 가지고 있다.- 필드 심볼은 모든 Data Object 선언이 가능

potato98.tistory.com

 

 

# 02. SET HANDLER 설정 ( PBO )


#01. Method설정이 완료되면 Handler을 통해서 Event등록해 보자. 

 

# 03. TEXT 설정 마지막..


#01. 우리가 텍스트로 넣고 싶었던 " CARRNAME "도 SORT 설정 SUBTOT 설정을 해보자. 

  DATA:
        LS_SORT TYPE LVC_S_SORT.

    LS_SORT-FIELDNAME = 'CARRID'.
    LS_SORT-UP = 'X'.
    LS_SORT-SUBTOT = 'X'.
    APPEND LS_SORT TO GT_SORT01.
    CLEAR LS_SORT.

    LS_SORT-FIELDNAME = 'CARRNAME'.
    LS_SORT-UP = 'X'.
    LS_SORT-SUBTOT = 'X'.
    APPEND LS_SORT TO GT_SORT01.
    CLEAR LS_SORT.

 

 

#02. 마지막으로 텍스트표현하고 싶은 필드( Carrname )는 " 숨김 표시 "를 해주어야 한다. 

 

# 03. 실행을 시켜보면? 다음과 같이 나오게 된다. 

 

#04. 여기서 두 개 말고 하나로만 나오게 하고 싶으면 " CARRID " 빼게 되면 다음과 같이 나오게 된다. 

 

 

 

끝..! 

 

도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!

728x90