1. /ose11 검색해서 se11 실행하기

 

  • /o : 새 창 띄우기
  • /se11 : ABAP Dictionary 화면 열기
  • ABAP Dictionary 란? SAP 시스템에서 데이터를 저장하는 데이터베이스 테이블, 뷰, 데이터 타입 등

 

2. SPFLI 테이블 검색하기 

- display 클릭

 

 

 

SPFLI 테이블의 필드 정보, 데이터 타입 등 정보들이 나온다

 

 

 

3. SPFLI 테이블의 ALV 출력해서 데이터 보기

 

상단에 Contents 버튼 클릭 > Execute 버튼 차례로 클릭

 

 

 

SPFLI 테이블의 실제 데이터들을 볼 수 있다.

> SPFLI  테이블은 항공편 정보를 담고 있어서 항공편 정보 데이터들이 조회가 됨

 

  • CONNID: 항공편 번호
  • CARRID: 항공사 코드
  • CITYFROM / CITYTO: 출발지 & 도착지
  • FLTIME: 비행 시간
  • .....

 

 


 

 

이제 내가 프로그램을 직접 생성해서 SPFLI 테이블의 데이터를 직접 코드를 만들고 ALV를 출력해보자

 

 

1. SE80 검색 후 프로그램 생성하기

 

 

 

2. 우측 코드 수정하기

 

abap alv example 구글링하기

*첫번째 링크에 들어가서 맨 아래 두번째 코드 참조했음 

https://community.sap.com/t5/application-development-discussions/sample-alv-program-using-reuse-alv-grid-display/m-p/3647449

 

Sample ALV program using REUSE_ALV_GRID_DISPLAY

Hi, I need a sample alv program using REUSE_ALV_GRID_DISPLAY. I want to know how to populate the the fieldcatalog and the layout... Thanks a lot!

community.sap.com

 

 

▼ 코드

*&---------------------------------------------------------------------*
*& Report Z2WEEK_ALV11
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z2WEEK_ALV02.


TABLES: SPFLI    .

TYPE-POOLS: slis.                                 "ALV Declarations

*Data Declaration
*----------------
TYPES: BEGIN OF t_spfli,
  mandt TYPE spfli-mandt,
  carrid TYPE spfli-carrid,
  CONNID TYPE spfli-CONNID,
  COUNTRYFR TYPE spfli-COUNTRYFR,
  CITYFROM TYPE spfli-CITYFROM,
  AIRPFROM TYPE spfli-AIRPFROM,
  COUNTRYTO TYPE spfli-COUNTRYTO,
  CITYTO TYPE spfli-CITYTO,
  AIRPTO TYPE spfli-AIRPTO,
  FLTIME TYPE spfli-FLTIME,
  DEPTIME TYPE spfli-DEPTIME,
  ARRTIME TYPE spfli-ARRTIME,
  DISTANCE TYPE spfli-DISTANCE,
  DISTID TYPE spfli-DISTID,
  FLTYPE TYPE spfli-FLTYPE,
  PERIOD TYPE spfli-PERIOD,
 END OF t_spfli.

DATA: it_spfli TYPE STANDARD TABLE OF t_spfli INITIAL SIZE 0,
      wa_spfli TYPE t_spfli.

*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 .
************************************************************************
*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   = 'MANDT'.
  fieldcatalog-seltext_m   = 'Client'.
  fieldcatalog-col_pos     = 0.
  fieldcatalog-outputlen   = 10.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CARRID'.
  fieldcatalog-seltext_m   = 'Airline Code'.
  fieldcatalog-col_pos     = 1.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CONNID'.
  fieldcatalog-seltext_m   = 'Flight Connection Number'.
  fieldcatalog-col_pos     = 2.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COUNTRYFR'.
  fieldcatalog-seltext_m   = 'Country Key'.
  fieldcatalog-col_pos     = 3.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CITYFROM'.
  fieldcatalog-seltext_m   = 'Departure city'.
  fieldcatalog-col_pos     = 4.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'AIRPFROM'.
  fieldcatalog-seltext_m   = 'Departure airport'.
  fieldcatalog-col_pos     = 5.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COUNTRYTO'.
  fieldcatalog-seltext_m   = 'Country Key'.
  fieldcatalog-col_pos     = 6.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CITYTO'.
  fieldcatalog-seltext_m   = 'Arrival city'.
  fieldcatalog-col_pos     = 7.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'AIRPTO'.
  fieldcatalog-seltext_m   = 'Destination airport'.
  fieldcatalog-col_pos     = 8.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'FLTIME'.
  fieldcatalog-seltext_m   = 'Flight time'.
  fieldcatalog-col_pos     = 9.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'DEPTIME'.
  fieldcatalog-seltext_m   = 'Departure time'.
  fieldcatalog-col_pos     = 10.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'ARRTIME'.
  fieldcatalog-seltext_m   = 'Arrival time'.
  fieldcatalog-col_pos     = 11.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'DISTANCE'.
  fieldcatalog-seltext_m   = 'Distance'.
  fieldcatalog-col_pos     = 12.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'DISTID'.
  fieldcatalog-seltext_m   = 'Mass unit of distance (kms, miles)'.
  fieldcatalog-col_pos     = 13.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'FLTYPE'.
  fieldcatalog-seltext_m   = 'Flight type'.
  fieldcatalog-col_pos     = 14.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'PERIOD'.
  fieldcatalog-seltext_m   = 'Arrival n day(s) later'.
  fieldcatalog-col_pos     = 15.
  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_spfli
    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.
  DATA: ld_color(1) TYPE c.

  SELECT mandt carrid CONNID COUNTRYFR CITYFROM AIRPFROM COUNTRYTO CITYTO AIRPTO FLTIME DEPTIME ARRTIME DISTANCE DISTID FLTYPE PERIOD
*   UP TO 10 ROWS
    FROM spfli
    INTO TABLE it_spfli.

ENDFORM.                    " DATA_RETRIEVAL

 

 

 

+ 테이블명 SPFLI로 다 수정하고 SPFLI 테이블의 필드와 설명란 그대로 복붙해서 수정하면된다.

 

 

+ 마지막엔 필드 나열하기

SELECT mandt carrid CONNID COUNTRYFR CITYFROM AIRPFROM COUNTRYTO CITYTO AIRPTO FLTIME DEPTIME ARRTIME DISTANCE DISTID FLTYPE PERIOD
*   UP TO 10 ROWS
    FROM spfli
    INTO TABLE it_spfli.

 

 

 

 

 

 

코드 수정했으면 Active > DIRECT PROCESSING 버튼 클릭

 

 

 

4. 내가 생성한 SPFLI 테이블의 데이터를 ALV 형태로 출력한 결과를 확인할 수 있다.

 

 

이것을 처음에 se11 검색했을때 SPFLI 테이블과 비교하면 다른점이 있다

 

다른부분 3가지

  • CONNID 앞에 빈 자리수 00으로 채우기
  • Flight time 정수부분으로 바꾸기
  • Distance 소수점을 없애기

 

 

 

 

fieldcatalog (필드 카탈로그) 옵션 

 

 

 

CONNID앞에 00이 나오게 하는 방법

 

1. fieldcatalog-datatype = 'CHAR'.

숫자인 CONNID 를 CHAR 문자열로 바꾸면 0 으로 채워진다

 

fieldcatalog-fieldname   = 'CONNID'.
  fieldcatalog-seltext_m   = 'Flight Connection Number'.
  fieldcatalog-datatype = 'CHAR'.
  fieldcatalog-col_pos     = 2.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

 

 

2. fieldcatalog-inttype 'c'

 

3. fieldcatalog-LZERO 'X'.

 

LZERO : 선행에 0 출력 여부 

= ' ' 만 하면 0이 출력 안되고 X를 해야 0이 출력 (alv 출력에만 영향을 준다.)

 

> NUMC 필드를 위한 옵션이라 LZERO 옵션을 가장 많이 쓴다.

 

 

 

 

=  숫자 0 으로 채워짐

 

 

 

 

정수로 변환

 

fieldcatalog-edit_mask  = '__________'.

  fieldcatalog-fieldname   = 'FLTIME'.
  fieldcatalog-seltext_m   = 'Flight time'.
  fieldcatalog-edit_mask  = '__________'.
  fieldcatalog-col_pos     = 9.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

 

'_' 언더바를 10자리로 하는 이유? 최대 10자리까지 들어갈 수 있어서 10자리 수 언더바를 쓴다

 

 

 

 

 

 

 

 

 

 

 

소수점 없애기 

 

fieldcatalog-decimals_out '0'

 

  fieldcatalog-fieldname   = 'DISTANCE'.
  fieldcatalog-seltext_m   = 'Distance'.
  fieldcatalog-decimals_out = '0'.
  fieldcatalog-col_pos     = 12.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

 

 

 

 

결과물

 

 

반응형
LIST

+ Recent posts