SAP ABAP ALV报表展示

*&---------------------------------------------------------------------*
*& Report YTEST_LJM_01
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT YTEST_LJM_01.

*&---------------------------------------------------------------------*
*& DEFINE INCLUDE
*&---------------------------------------------------------------------*
INCLUDE ytest_ljm_01_top."Top
INCLUDE ytest_ljm_01_f01."Form

*&---------------------------------------------------------------------*
* AT SELECTION-SCREEN
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
*  得到文件路径
  PERFORM FRM_GET_FILE_PATH USING P_FILE.

START-OF-SCREEN.
*  数据处理
  PERFORM FRM_RETRIEVE_DATA.

*&---------------------------------------------------------------------*
* START-OF-SELECTION
*&---------------------------------------------------------------------*
END-OF-SELECTION.
*  使用ALV显示数据
  PERFORM FRM_DISPLAY_DATA.

 

*&---------------------------------------------------------------------*
*& 包含               YTEST_LJM_01_TOP
*&---------------------------------------------------------------------*
TABLES:sflight.

*结构
TYPES:BEGIN OF ty_sflight,
        carrid TYPE sflight-carrid,
        connid TYPE sflight-connid,
        carrname TYPE scar-carrname,
        cityfrom TYPE spfli-cityfrom,
        cityto TYPE spfli-cityto,
        price TYPE sflight-price,
      END OF ty_sflight.

* 内表及工作区间
DATA:gt_sflight TYPE STANDARD TABLE OF ty_sflight.

* ALV布局结构
DATA:gs_layout TYPE lvc_s_layo,
      gt_fieldcat TYPE lvc_t_fcat,
      gs_fieldcat LIKE LINE OF gt_fieldcat,
      gv_repid TYPE syrepid.

*&---------------------------------------------------------------------*
*& Form FRM_RETRIEVE_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_retrieve_data .
*  SQL获取数据,并存入内表
  SELECT T~CARRID,T~CONNID,R~CARRNAME,I~CITYFROM,I~CITYTO,T~PRICE
    FROM SFLIGHT AS T
    INNER JOIN SCARR AS R
    ON R~CARRID = T~CARRID
    INNER JOIN SPFLI AS I
    ON I~CARRID = T~CARRID
    AND I~CONNID = T~CONNID
    INTO TABLE @GT_SFLIGHT.

ENDFORM.

 

*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_display_data .
  DATA:lt_event TYPE slis_t_event,
       ls_event LIKE LINE OF lt_event.
  DATA(lt_fieldcat) = VALUE lvc_t_fcat( ).

* 载入ALV需要显示的列
  PERFORM frm_append_col CHANGING lt_fieldcat.
* 给layout赋值
  gs_layout-cwidth_opt = abap_true.
  gs_layout-zebra      = abap_true.
  gs_layout-no_rowmark = abap_true.
  gv_repid = sy-repid.
* 调用function module显示ALV
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
*      i_callback_pf_status_set = 'FRM_PF_STATUS_PRT'
      i_callback_program       = sy-repid
      is_layout_lvc            = gs_layout
      it_fieldcat_lvc          = lt_fieldcat
      i_save                   = 'A'
    TABLES
      t_outtab                 = gt_sflight
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
    MESSAGE ID sy-msgid
          TYPE sy-msgty
        NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.

 

*&---------------------------------------------------------------------*
*& Form FRM_APPEND_COL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_append_col CHANGING c_fieldcat TYPE lvc_t_fcat.
  DEFINE mcr_def_field.
    APPEND VALUE lvc_s_fcat( fieldname = &1
                               reptext = &2
                               edit    = &3
                               do_sum  = &4
                               no_zero = &5
                               col_opt = 'X'
                             ) TO c_fieldcat.
  END-OF-DEFINITION.
  mcr_def_field:
                'CARRID' '航线ID' '' '' '',
                'CONNID' '航班ID' '' '' '',
                'CARRNAME' '航线' '' '' '',
                'CITYFROM' '起飞城市' '' '' '',
                'CITYTO' '到达城市' '' '' '',
                'PRICE' '航空运费' '' '' ''.
ENDFORM.

posted @ 2022-04-22 17:33  LikZ-WM  阅读(291)  评论(0编辑  收藏  举报