调用alv,自己定义结构去实现单元格自定义
REPORT ztest_tanp_alv3.
*定义已有和手动添加字段的结构
TYPES: BEGIN OF ty_spfli,
international(1) TYPE c.
INCLUDE TYPE spfli.
TYPES END OF ty_spfli.
DATA it_spfli TYPE TABLE OF ty_spfli.
*声明字段名称内表和结构
DATA it_fieldcat_lvc TYPE lvc_t_fcat.
DATA wa_fieldcat_lvc TYPE LINE OF lvc_t_fcat.
DATA IS_LAYOUT_LVC TYPE LVC_S_LAYO.
PERFORM get_data.
PERFORM set_fieldcat.
PERFORM set_layout.
*&---------------------------------------------------------------------*
*& Form set_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
"set_fieldcat
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
* I_CALLBACK_PROGRAM = ' '
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* i_structure_name = 'SPFLI'
* I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'MY SPFLI' "标题
* I_GRID_SETTINGS =
IS_LAYOUT_LVC = is_layout_lvc "输出格式内表
it_fieldcat_lvc = it_fieldcat_lvc "字段名称内表名
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS_LVC =
* IT_SORT_LVC =
* IT_FILTER_LVC =
* IT_HYPERLINK =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT_LVC =
* IS_REPREP_ID_LVC =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO_LVC =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
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.
*&---------------------------------------------------------------------*
*& Form set_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*获取数据并填充到内表中
FORM get_data.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE it_spfli.
DATA: wa_spfli TYPE ty_spfli.
LOOP AT it_spfli INTO wa_spfli.
IF wa_spfli-countryfr eq wa_spfli-countryto.
wa_spfli-international = ''.
ELSE.
wa_spfli-international = 'X'.
ENDIF.
MODIFY it_spfli FROM wa_spfli.
ENDLOOP.
ENDFORM.
*设置输出格式
FORM set_layout.
CLEAR is_layout_lvc.
is_layout_lvc-zebra = 'X'."设置颜色
is_layout_lvc-cwidth_opt = 'X'."自动列宽
ENDFORM. "set_layout
*字段名称赋值给字段名称内表
FORM set_fieldcat.
CLEAR wa_fieldcat_lvc.
wa_fieldcat_lvc-col_pos = 1.
wa_fieldcat_lvc-fieldname = 'CARRID'.
wa_fieldcat_lvc-reptext = '航线承运人'.
wa_fieldcat_lvc-key = 'X'. "设置主键并固定在屏幕左边
APPEND wa_fieldcat_lvc TO it_fieldcat_lvc.
CLEAR wa_fieldcat_lvc.
wa_fieldcat_lvc-col_pos = 2.
wa_fieldcat_lvc-fieldname = 'CONNID'.
wa_fieldcat_lvc-reptext = '航班连接'.
wa_fieldcat_lvc-key = 'X'."设置主键并固定在屏幕左边
APPEND wa_fieldcat_lvc TO it_fieldcat_lvc.
CLEAR wa_fieldcat_lvc.
wa_fieldcat_lvc-col_pos = 3.
wa_fieldcat_lvc-fieldname = 'COUNTRYFR'.
wa_fieldcat_lvc-reptext = '起飞国家'.
APPEND wa_fieldcat_lvc TO it_fieldcat_lvc.
CLEAR wa_fieldcat_lvc