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 구글링하기
*첫번째 링크에 들어가서 맨 아래 두번째 코드 참조했음
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.


결과물

'SAP ERP 개발' 카테고리의 다른 글
[SAP] fieldcatalog | 필드 카탈로그 옵션 보는 방법 (0) | 2025.03.13 |
---|---|
[SAP] 서버 라이센스, DB 라이센스 갱신하는 방법 | sap Logon 비밀번호 잠금해제 (0) | 2025.02.28 |
[SAP] ERP ABAP 서버 환경 만들기 (1) | 2024.11.06 |