[8주차] SAP ERP : COLLECT

j_wisdom_h·2025년 2월 26일
0

SAP

목록 보기
3/8

[8주차] SAP ERP : COLLECT 결과화면

코드

*&---------------------------------------------------------------------*
*& Report Z5WEEK_HW
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z5WEEK_HW.

TABLES:    sflight.

TYPE-POOLS: slis.                                 "ALV Declarations

*Data Declaration
*----------------
TYPES: BEGIN OF t_join,
  carrid   TYPE sflight-carrid,
  connid  TYPE sflight-connid,
  price TYPE sflight-price,
  currency TYPE sflight-currency,
  seatsmax TYPE sflight-seatsmax,
 END OF t_join.

* 행과 테이블 *
DATA: it_sflight TYPE STANDARD TABLE OF t_join,
      wa_sflight TYPE t_join.
DATA: it_collect TYPE STANDARD TABLE OF t_join,
      wa_collect TYPE t_join.


*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      gd_tab_group TYPE slis_t_sp_group_alv,
      gd_layout    TYPE slis_layout_alv,
      gd_repid     LIKE sy-repid.


DATA : t TYPE slis_t_sp_group_alv .

SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_carrid FOR sflight-carrid.
SELECTION-SCREEN END OF BLOCK part1.


************************************************************************
*Start-of-selection.
START-OF-SELECTION.

  PERFORM data_retrieval.
  PERFORM build_fieldcatalog.
  PERFORM build_layout.
  PERFORM display_alv_report.


*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*       Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog.

  fieldcatalog-fieldname   = 'CARRID'.
  fieldcatalog-seltext_m   = 'CARRID'.
  fieldcatalog-col_pos     = 0.
  fieldcatalog-outputlen   = 10.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CONNID'.
  fieldcatalog-seltext_m   = 'CONNID'.
  fieldcatalog-col_pos     = 1.
  fieldcatalog-lzero       = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'PRICE'.
  fieldcatalog-seltext_m   = 'PRICE'.
  fieldcatalog-col_pos     = 2.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CURRENCY'.
  fieldcatalog-seltext_m   = 'CURRENCY'.
  fieldcatalog-col_pos     = 3.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'SEATSMAX'.
  fieldcatalog-seltext_m   = 'SEATSMAX'.
  fieldcatalog-col_pos     = 4.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

ENDFORM.                    " BUILD_FIELDCATALOG


*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout.

  gd_layout-no_input          = 'X'.
  gd_layout-colwidth_optimize = 'X'.
  gd_layout-zebra = 'X'.
*  gd_layout-info_fieldname =      'LINE_COLOR'.
*  gd_layout-def_status = 'A'.

ENDFORM.                    " BUILD_LAYOUT


*&---------------------------------------------------------------------*
*&      Form  DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*       Display report using ALV grid
*----------------------------------------------------------------------*
FORM display_alv_report.
  gd_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = gd_repid
      is_layout          = gd_layout
      it_fieldcat        = fieldcatalog[]
      i_save             = 'X'
    TABLES
      t_outtab           = it_collect
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.



ENDFORM.                    " DISPLAY_ALV_REPORT


*&---------------------------------------------------------------------*
*&      Form  DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*       Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM data_retrieval.
  SELECT carrid connid price currency seatsmax
  FROM sflight
  INTO TABLE it_sflight
  WHERE carrid IN s_carrid.


*   LOOP AT it_sfligt INTO wa_sflight.
**      기존 데이터 있는지 확인
*     READ TABLE it_collect
*     WITH KEY
*      carrid = wa_sflight-carrid
*      connid = wa_sflight-connid
*     INTO wa_collect.
*   ENDLOOP.
  LOOP AT it_sflight INTO wa_sflight.
    COLLECT wa_sflight INTO it_collect.
  ENDLOOP.
ENDFORM.                    " DATA_RETRIEVAL

COLLECT

COLLECT는 집계 함수로, 주어진 테이블에서 특정 필드를 기준으로 집계하는 기능

COLLECT는 테이블의 각 레코드를 검사하여 중복되는 필드 값을 찾는다.

if 이미 존재하는 항목, 해당 항목에 대해 집계된 값을 갱신한다.
else 새로운 항목으로 추가된다.

profile
뚜잇뚜잇

0개의 댓글