조회화면은 데이터 선언부이고 전역변수이다.

 

조회화면 만들기

*&---------------------------------------------------------------------*
*& Report ZR4WEEK_1
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*조회화면
REPORT ZR4WEEK_1.

*각 block은 이름이 달라야 함(희미한 네모박스)
SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE text-001. "frame title: 박스 제목
PARAMETERS field(10) TYPE c OBLIGATORY. "obligatory: 필수값
SELECTION-SCREEN END OF BLOCK part1.

SELECTION-SCREEN BEGIN OF BLOCK part2 WITH FRAME TITLE text-002.
PARAMETERS: p1(10) TYPE c VISIBLE LENGTH 1, "visible length: 보여지는 길이
            p2(10) TYPE c VISIBLE LENGTH 5,
            p3(10) TYPE c VISIBLE LENGTH 10.
SELECTION-SCREEN END OF BLOCK part2.

*checkbox - 중복가능
SELECTION-SCREEN BEGIN OF BLOCK part3 WITH FRAME TITLE text-003.
PARAMETERS: a AS CHECKBOX USER-COMMAND flag,
            b AS CHECKBOX DEFAULT 'X'. "default: 디폴트값
SELECTION-SCREEN END OF BLOCK part3.

*radio button group - 각 그룹에서 중복 불가
SELECTION-SCREEN BEGIN OF BLOCK part4 WITH FRAME TITLE text-004.
PARAMETERS: r1 RADIOBUTTON GROUP rad1,
            r2 RADIOBUTTON GROUP rad1 DEFAULT 'X',
            r3 RADIOBUTTON GROUP rad1,

            s1 RADIOBUTTON GROUP rad2,
            s2 RADIOBUTTON GROUP rad2,
            s3 RADIOBUTTON GROUP rad2 DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK part4.

SELECTION-SCREEN BEGIN OF BLOCK part5 WITH FRAME TITLE text-005.
PARAMETERS p_carrid TYPE spfli-carrid
                    AS LISTBOX VISIBLE LENGTH 20 "listbox
                    DEFAULT 'LH'.
SELECTION-SCREEN END OF BLOCK part5.

SELECTION-SCREEN BEGIN OF BLOCK part6 WITH FRAME TITLE text-006.
PARAMETERS p_carr1 TYPE spfli-carrid AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr2 TYPE spfli-connid AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr3 TYPE ZSPFLI10-countryfr AS LISTBOX VISIBLE LENGTH 20. "listbox는 필드가 2개일 때만 가능
PARAMETERS p_carr4 TYPE spfli-cityfrom AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr5 TYPE spfli-airpfrom AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr6 TYPE spfli-countryto AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr7 TYPE spfli-cityto AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr8 TYPE spfli-airpto AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr9 TYPE spfli-fltime AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr10 TYPE spfli-deptime AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr11 TYPE spfli-arrtime AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr12 TYPE spfli-distance AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr13 TYPE spfli-distid AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr14 TYPE spfli-fltype AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS p_carr15 TYPE spfli-period AS LISTBOX VISIBLE LENGTH 20.
SELECTION-SCREEN END OF BLOCK part6.

SELECTION-SCREEN BEGIN OF BLOCK part7 WITH FRAME TITLE text-007.
PARAMETERS p_sth1 TYPE zscarr10-carrid.
PARAMETERS p_sth2 TYPE zscarr10-carrname.
PARAMETERS p_sth3 TYPE zscarr10-currcode.
PARAMETERS p_sth4 TYPE zscarr10-url.
SELECTION-SCREEN END OF BLOCK part7.

*한줄에 두칸 만들기

TABLES SPFLI. "테이블 선언을 해주어야 함.

SELECTION-SCREEN BEGIN OF BLOCK part8 WITH FRAME TITLE text-008.
SELECT-OPTIONS s_carrid FOR spfli-carrid.
SELECTION-SCREEN END OF BLOCK part8.

 

*&---------------------------------------------------------------------*
*& Report ZR2WEEK_1
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zr4week_2.

TABLES:     scarr.


TYPE-POOLS: slis.                                 "ALV Declarations

*Data Declaration
*----------------
TYPES: BEGIN OF t_scarr,
         mandt         TYPE scarr-mandt,
         carrid        TYPE scarr-carrid,
         carrname      TYPE scarr-carrname,
         currcode      TYPE scarr-currcode,
         url           TYPE scarr-url,
         line_color(4) TYPE c,     "Used to store row color attributes
       END OF t_scarr.

DATA: it_scarr TYPE STANDARD TABLE OF t_scarr,
      wa_scarr TYPE t_scarr.

*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 위)
SELECTION-SCREEN BEGIN OF BLOCK part8 WITH FRAME TITLE text-008.
SELECT-OPTIONS s_carrid FOR scarr-carrid.
SELECT-OPTIONS s_cname FOR scarr-carrname.
SELECT-OPTIONS s_ccode FOR scarr-currcode.
SELECT-OPTIONS s_url FOR scarr-url.
*PARAMETERS p_carrid TYPE scarr-carrid OBLIGATORY DEFAULT 'AA'. "파라미터에 obligatory, default
SELECTION-SCREEN END OF BLOCK part8.

************************************************************************
*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   = 'CARRNAME'.
  fieldcatalog-seltext_m   = 'Airline name'.
  fieldcatalog-col_pos     = 2.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CURRCODE'.
  fieldcatalog-seltext_m   = 'Local currency of airline'.
  fieldcatalog-col_pos     = 3.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'URL'.
  fieldcatalog-seltext_m   = 'Airline URL'.
  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_scarr
    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 carrname currcode url
    FROM scarr
    INTO TABLE it_scarr
    WHERE carrid IN s_carrid  "carrid의 범위를 지정
      AND carrname IN s_cname
      AND currcode IN s_ccode
      AND url      IN s_url.
*    WHERE carrid = p_carrid. "파라미터 조건
ENDFORM.                    " DATA_RETRIEVAL

'review > abap_itrich' 카테고리의 다른 글

week3_review : 디버깅  (1) 2024.10.24
week2_review : 기본구조  (7) 2024.10.22

조회화면에서 박스의 제목과 필드명을 설정하기 위해 text elements를 수정할 수 있다.

 

 

WITH FRAME TITLE text-001 부분이 이와 관련된 부분이다.

먼저 저 text-001을 더블클릭하여 text elements 수정화면으로 들어갈 수 있다.

 

이 화면이 뜰텐데 Yes하고 생성해주면 된다.

 

또 다른 방법은 상단바 제일 오른쪽의 Text Elements를 클릭해서 들어갈 수 있다.

 

그러면 이런 화면이 뜰 텐데 Text Symbols에서는 text-"번호"에 따른 값을 넣을 수 있다. 이는 각 block의 제목이 될 것이다.

 

Selection Texts에서는 필드명을 변경할 수 있다.

 

중요한 것은 이를 적용하기 위해서 꼭 Text Elements 화면에서 Activate을 시켜줘야 한다.

 

그러면 이런식으로 원하는 내용을 출력할 수 있다.

1. 색 삽입

  fieldcatalog-emphasize    = 'C510'. "색 삽입

 

2. 정렬

  fieldcatalog-just        = 'R'. "오른쪽 정렬

 

3. 합계

  fieldcatalog-do_sum      = 'X'. "price 필드 합계

 

4. 링크

  fieldcatalog-hotspot     = 'X'. "링크생성
*&---------------------------------------------------------------------*
*& Report ZR2WEEK_2
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zr2week_2.


TABLES:     spfli.


TYPE-POOLS: slis.

*Data Declaration
*----------------
TYPES: BEGIN OF t_spfli, "행
         carrid   TYPE spfli-carrid,
         connid   TYPE spfli-connid,
         fltime   TYPE spfli-fltime,
         deptime  TYPE spfli-deptime,
         arrtime  TYPE spfli-arrtime,
         distance TYPE spfli-distance,
         distid   TYPE spfli-distid,
       END OF t_spfli.

DATA: it_spfli TYPE STANDARD TABLE OF t_spfli,
      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   = 'CARRID'.
  fieldcatalog-seltext_m   = 'Airline Code'.
  fieldcatalog-col_pos     = 0.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CONNID'.
  fieldcatalog-seltext_l   = 'Flight Connection Number'.
  fieldcatalog-col_pos     = 1.
  fieldcatalog-lzero       = 'X'. "앞에 0이 붙도록
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'FLTIME'.
  fieldcatalog-seltext_m   = 'Flight time'.
  fieldcatalog-col_pos     = 2.
  fieldcatalog-edit_mask = '__________'. "시간을 정수로 변환
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

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

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

  fieldcatalog-fieldname   = 'DISTANCE'.
  fieldcatalog-seltext_m   = 'Distance'.
  fieldcatalog-col_pos     = 4.
*  fieldcatalog-decimals_out = '0'. "정수로 나타냄
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'DISTID'.
  fieldcatalog-seltext_m   = 'Mass unit of distance (kms, miles)'.
  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_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 carrid connid fltime deptime arrtime distance distid
    FROM spfli
    INTO TABLE it_spfli.

ENDFORM.                    " DATA_RETRIEVAL

'review > abap_itrich' 카테고리의 다른 글

week4_review : 조회화면  (1) 2024.10.26
week2_review : 기본구조  (7) 2024.10.22

+ Recent posts