ALV 생성 순서 [Report Program]

onlog·2024년 10월 18일
post-thumbnail

ALV 생성 순서

  1. 필요한 ITAB 및 Structure 및 ALV 관련 Class Instance 등을 선언
  2. Selection Screen 작성
  3. START-OF-SELECTION 이벤트 작성
    -> Open SQL 작성 및 Loop 문 Read Table 구문 사용해서 ALV 출력할 ITAB 레코드 생성
  4. CALL SCREEN을 통해 ALV를 화면으dmfh cnffur
    4-1. PF-STATUS를 통해서 버튼을 정의하고 SET TITLES를 통해서 100번 Screen의 타이틀 정의
    4-2. ALV의 출력 형태를 정할 Layout을 정의
    4-3. ALV에 Display할 필드 정보를 새엇ㅇ <- Field Catalog 생성
    4-4. ALV를 출력할 Container와 ALV Grid 등 Instance Object 생성
    4-5. ALC에 Data를 출력할 Method 호출
  5. (PAI) AT EXIT-COMMAND Module 작성

1. TOP INCLUDE

  • Container , ALV Grid Class Instance 선언
  • Field Caltog W/A & Internal Table, ALV Layout W/A 선언
*&---------------------------------------------------------------------*
*& Include ZC3R13_036TOP                            - Report ZC3R13_036
*&---------------------------------------------------------------------*
REPORT zc3r13_036 MESSAGE-ID k5.
**********************************************************************
* TABELS
**********************************************************************
TABLES : zc3t26002.
**********************************************************************
* Class Instance
**********************************************************************
**DATA : go_container TYPE REF TO cl_gui_docking_container,
       go_alv_grid  TYPE REF TO cl_gui_alv_grid.**
**********************************************************************
* Internal Table and Work Area
**********************************************************************

DATA : BEGIN OF gs_docu,
         icon  TYPE icon-id.
         INCLUDE STRUCTURE zc3t26002.
DATA :   txt50 TYPE skat-txt50,
       END OF gs_docu.
DATA : gt_docu LIKE TABLE OF gs_docu.

**DATA : gs_layout TYPE lvc_s_layo,
       gs_fcat   TYPE lvc_s_fcat,
       gt_fcat   TYPE lvc_t_fcat.**

**********************************************************************
* Common Variables
**********************************************************************
DATA : gv_okcdoe TYPE sy-ucomm.

2. Selection Screen 작성

*&---------------------------------------------------------------------*
*& Include          ZC3R13_036S01
*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK pa1 WITH FRAME TITLE TEXT-t01.
  PARAMETERS : pa_com TYPE zc3t26002-bukrs MODIF ID mdf,
               pa_fy  TYPE zc3t26002-gjahr MODIF ID mdf.
SELECTION-SCREEN END OF BLOCK pa1.

3. START-OF-SELECTION 이벤트 작성

START-OF-SELECTION.
  **PERFORM get_base_data.**
  **PERFORM make_result_data.**

  CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Form get_base_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM get_base_data .
  DATA : lv_cnt TYPE i.

  **SELECT bukrs gjahr belnr saknr bktxt wrbtr waers
    FROM zc3t26002
    INTO CORRESPONDING FIELDS OF TABLE gt_docu
    WHERE bukrs EQ pa_com
    AND gjahr EQ pa_fy.

  IF gt_docu IS INITIAL.
    MESSAGE s037 DISPLAY LIKE 'E'.
    STOP.
  ENDIF**.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form make_result_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM make_result_data .

  DATA : lt_skat  TYPE TABLE OF skat,
         ls_skat  TYPE skat,

         lv_tabix TYPE sy-tabix,
         lv_cnt   TYPE i.

**" 텍스트 테이블 데이터 SELECT**
  **SELECT saknr txt50
    FROM skat
    INTO CORRESPONDING FIELDS OF TABLE lt_skat
    WHERE spras EQ sy-langu
    AND ktopl EQ 'BKMG'
    ORDER BY saknr.**

  LOOP AT gt_docu INTO gs_docu.
    lv_tabix = sy-tabix.

    CLEAR ls_skat.
**" 텍스트테이블 데이터 추가**
    READ TABLE lt_skat INTO ls_skat WITH KEY saknr = gs_docu-saknr BINARY SEARCH.
    IF sy-subrc EQ 0.
      gs_docu-txt50 = ls_skat-txt50.
    ENDIF.
    
**" ICON 추가**
    CASE gs_docu-waers.
      WHEN 'KRW'.
        gs_docu-icon = icon_sum.
    ENDCASE.

    MODIFY gt_docu FROM gs_docu INDEX lv_tabix
               TRANSPORTING icon txt50.
    CLEAR gs_docu.

  ENDLOOP.

  IF gt_docu IS NOT INITIAL.
    lv_cnt = lines( gt_docu ).
    MESSAGE s001 WITH lv_cnt TEXT-i01.
  ENDIF.

ENDFORM.

3. CALL SCREEN을 통해 ALV 화면 출력

START-OF-SELECTION.
  PERFORM get_base_data.
  PERFORM make_result_data.

  **CALL SCREEN 100.**
  • Short Description 추가

  • okcode 저장할 변수 지정

  • Flow Logic

    PROCESS BEFORE OUTPUT.
      **MODULE status_0100.**
      **MODULE init_process_control.**
    
    PROCESS AFTER INPUT.
      **MODULE exit AT EXIT-COMMAND.**
    • PBO

      • MODULE status_0100

        *&---------------------------------------------------------------------*
        *& Include          ZC3R13_036O01
        *&---------------------------------------------------------------------*
        *&---------------------------------------------------------------------*
        *& Module STATUS_0100 OUTPUT
        *&---------------------------------------------------------------------*
        *&
        *&---------------------------------------------------------------------*
        MODULE status_0100 OUTPUT.
          SET PF-STATUS 'MENU100'.
          SET TITLEBAR 'TITLE100'.
        ENDMODULE.
        
        • MENU100

        • TITLE100

      • MODULE init_process_control

        *&---------------------------------------------------------------------*
        *& Module INIT_PROCESS_CONTROL OUTPUT
        *&---------------------------------------------------------------------*
        *&
        *&---------------------------------------------------------------------*
        MODULE init_process_control OUTPUT.
          **PERFORM display_screen.**
        ENDMODULE.
        *&---------------------------------------------------------------------*
        *& Form display_screen
        *&---------------------------------------------------------------------*
        *& text
        *&---------------------------------------------------------------------*
        *& -->  p1        text
        *& <--  p2        text
        *&---------------------------------------------------------------------*
        FORM **display_screen** .
        
          IF go_container IS NOT BOUND.   "  Key   Field Name    Table    Just Emphasis
            PERFORM **set_field_catalog** USING : 'X'     'ICON'      ''        'C'     '',
                                              'X'     'BUKRS'  'ZC3T26002' 'C'     '',
           	                                  'X'     'GJAHR'  'ZC3T26002' 'C'     '',
                                              'X'     'BELNR'  'ZC3T26002' 'C'     '',
                                              ''      'SAKNR'  'ZC3T26002' 'C'     '',
                                              ''      'TXT50'  'SKAT'       ''     'X',
                                              ''      'BKTXT'  'ZC3T26002' 'C'     '',
                                              ''      'WRBTR'  'ZC3T26002'  ''     '',
                                              ''      'WAERS'  'ZC3T26002'  ''     ''.
            PERFORM **create_object.**
            CALL METHOD go_alv_grid->set_table_for_first_display
              EXPORTING
                i_save          = 'A'
                i_default       = 'X'
                is_layout       = gs_layout
              CHANGING
                it_outtab       = gt_docu
                it_fieldcatalog = gt_fcat.
        
          ELSE.
            CALL METHOD go_alv_grid->refresh_table_display.
          ENDIF.
        
        ENDFORM.
        • set_field_catalog

          *&---------------------------------------------------------------------*
          *& Form set_field_catalog
          *&---------------------------------------------------------------------*
          *& text
          *&---------------------------------------------------------------------*
          *&      --> P_
          *&      --> P_
          *&      --> P_
          *&      --> P_
          *&      --> P_
          *&---------------------------------------------------------------------*
          FORM **set_field_catalog**  USING pv_key pv_field pv_table pv_just pv_emph.
          
            gs_fcat-key  = pv_key.
            gs_fcat-fieldname = pv_field.
            gs_fcat-ref_table = pv_table.
            gs_fcat-just = pv_just.
            gs_fcat-emphasize = pv_emph.
          
            CASE pv_field.
              WHEN 'WRBTR'.
                gs_fcat-cfieldname = 'WAERS'.
              WHEN 'ICON'.
                gs_fcat-coltext = 'Status'.
            ENDCASE.
          
            APPEND gs_fcat TO gt_fcat.
            CLEAR gs_fcat.
          
            CLEAR gs_layout.
            gs_layout-cwidth_opt = 'A'.
            gs_layout-sel_mode = 'D'.
          
          ENDFORM.
        • create_object

          *&---------------------------------------------------------------------*
          *& Form create_object
          *&---------------------------------------------------------------------*
          *& text
          *&---------------------------------------------------------------------*
          *& -->  p1        text
          *& <--  p2        text
          *&---------------------------------------------------------------------*
          FORM **create_object** .
            CREATE OBJECT go_container
              EXPORTING
                side      = go_container->dock_at_left
                extension = 5000.
            CREATE OBJECT go_alv_grid
              EXPORTING
                i_parent = go_container.
          
          ENDFORM.
    • PAI

      • exit

        MODULE exit INPUT.
        
          CALL METHOD : go_alv_grid->free,
                        go_container->free.
        
          FREE: go_alv_grid, go_container.
        
          LEAVE TO SCREEN 0.
        
        ENDMODULE.
  • 결과값

profile
짱이 되겠어

0개의 댓글