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.