调用alv,自己定义结构去实现单元格自定义

REPORT  ztest_tanp_alv3.
*定义已有和手动添加字段的结构
TYPESBEGIN OF ty_spfli,
   international(1TYPE 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.
  wa_fieldcat_lvc-col_pos 4.
  wa_fieldcat_lvc-fieldname 'CITYFROM'.
  wa_fieldcat_lvc-reptext '起飞城市'.
  APPEND wa_fieldcat_lvc TO it_fieldcat_lvc.
  CLEAR wa_fieldcat_lvc.
  wa_fieldcat_lvc-col_pos 5.
  wa_fieldcat_lvc-fieldname 'COUNTRYTO'.
  wa_fieldcat_lvc-reptext '目的国家'.
  APPEND wa_fieldcat_lvc TO it_fieldcat_lvc.
  CLEAR wa_fieldcat_lvc.
  wa_fieldcat_lvc-col_pos 6.
  wa_fieldcat_lvc-fieldname 'CITYTO'.
  wa_fieldcat_lvc-reptext '目标城市'.
  APPEND wa_fieldcat_lvc TO it_fieldcat_lvc.
  CLEAR wa_fieldcat_lvc.
  wa_fieldcat_lvc-col_pos 7.
  wa_fieldcat_lvc-fieldname 'DISTANCE'.
  wa_fieldcat_lvc-reptext '距离'.
  wa_fieldcat_lvc-emphasize 'C300'"设置背景颜色  第一位固定为C 第二位为0-7 第三位为0-1是否加深颜色 第四位为0-1是否取反
  APPEND wa_fieldcat_lvc TO it_fieldcat_lvc.
  CLEAR wa_fieldcat_lvc.
  wa_fieldcat_lvc-col_pos 8.
  wa_fieldcat_lvc-fieldname 'DISTID'.
  wa_fieldcat_lvc-reptext '单位'.
  APPEND wa_fieldcat_lvc TO it_fieldcat_lvc.
  CLEAR wa_fieldcat_lvc.
  wa_fieldcat_lvc-col_pos 9.
  wa_fieldcat_lvc-fieldname 'INTERNATIONAL'.
  wa_fieldcat_lvc-reptext '国际航班'.
  APPEND wa_fieldcat_lvc TO it_fieldcat_lvc.
ENDFORM.                    "set_fieldcat

posted @ 2017-08-29 17:25  独吊东南枝  阅读(289)  评论(0编辑  收藏  举报