在开发alv的程序中,我们往往引入style,ie. INCLUDE <cl_alv_control>
在<cl_alv_control>中定义了许多的常量,用来设置alv单元格的格式,field catelog有4个field, tyle, tyle1, tyle2, tyle3, tyle4
以下是<cl_alv_control>的所有常量,不难看出field catelog中的那4个field的用处
***INCLUDE <CL_ALV_CONTROL> .
constants:
* Style 1
alv_style_color_background(4) type x value '00000001',
alv_style_color_heading(4) type x value '00000002',
alv_style_color_normal(4) type x value '00000003',
alv_style_color_total(4) type x value '00000004',
alv_style_color_key(4) type x value '00000005',
alv_style_color_positive(4) type x value '00000006',
alv_style_color_negative(4) type x value '00000007',
alv_style_color_group(4) type x value '00000008',
alv_style_color_int_background(4) type x value '00000009',
alv_style_color_int_heading(4) type x value '0000000A',
alv_style_color_int_normal(4) type x value '0000000B',
alv_style_color_int_total(4) type x value '0000000C',
alv_style_color_int_key(4) type x value '0000000D',
alv_style_color_int_positive(4) type x value '0000000E',
alv_style_color_int_negative(4) type x value '0000000F',
alv_style_color_int_group(4) type x value '00000010',
alv_style_color_inv_background(4) type x value '00000011',
alv_style_color_inv_heading(4) type x value '00000012',
alv_style_color_inv_normal(4) type x value '00000013',
alv_style_color_inv_total(4) type x value '00000014',
alv_style_color_inv_key(4) type x value '00000015',
alv_style_color_inv_positive(4) type x value '00000016',
alv_style_color_inv_negative(4) type x value '00000017',
alv_style_color_inv_group(4) type x value '00000018',
alv_style_font_bold(4) type x value '00000020',
alv_style_font_bold_no(4) type x value '00000040',
alv_style_font_italic(4) type x value '00000080',
alv_style_font_italic_no(4) type x value '00000100',
alv_style_font_underlined(4) type x value '00000200',
alv_style_font_underlined_no(4) type x value '00000400',
alv_style_align_left_top(4) type x value '00000800',
alv_style_align_center_top(4) type x value '00001000',
alv_style_align_right_top(4) type x value '00001800',
alv_style_align_left_center(4) type x value '00002000',
alv_style_align_center_center(4) type x value '00002800',
alv_style_align_right_center(4) type x value '00003000',
alv_style_align_left_bottom(4) type x value '00003800',
alv_style_align_center_bottom(4) type x value '00004000',
alv_style_align_right_bottom(4) type x value '00004800',
alv_style_font_symbol(4) type x value '00008000',
alv_style_font_symbol_no(4) type x value '00010000',
alv_style_checkbox_not_checked(4) type x value '00020000',
alv_style_checkbox_checked(4) type x value '00040000',
alv_style_checkbox_no(4) type x value '00060000',
alv_style_enabled(4) type x value '00080000',
alv_style_disabled(4) type x value '00100000',
alv_style_single_clk_event(4) type x value '00200000',
alv_style_single_clk_event_no(4) type x value '00400000',
alv_style_radio_not_checked(4) type x value '00800000',
alv_style_radio_checked(4) type x value '01000000',
alv_style_radio_no(4) type x value '01800000',
alv_style_f4(4) type x value '02000000',
alv_style_f4_no(4) type x value '04000000',
alv_style_image(4) type x value '08000000',
alv_style_no_delete_row(4) type x value '10000000',
alv_style_button(4) type x value '20000000',
alv_style_button_no(4) type x value '40000000',
* Style 2
alv_style2_no_border_left(4) type x value '00010000',
alv_style2_no_border_right(4) type x value '00020000',
alv_style2_no_border_top(4) type x value '00040000',
alv_style2_no_border_bottom(4) type x value '00080000',
* Style 3 ( WEBSTYLES ).
* Style 4
alv_style4_zebra_row(4) type x value '00000001',
alv_style4_stop_merge(4) type x value '00000002',
alv_style4_link(4) type x value '00000004',
alv_style4_link_no(4) type x value '00000008',
* Column Styles
alv_col_style_sort_up(4) type x value '00000001',
alv_col_style_sort_down(4) type x value '00000002',
alv_col_style_filter(4) type x value '00000004',
alv_col_style_total(4) type x value '00000008',
alv_col_style_subtotal(4) type x value '00000010',
alv_col_style_characteristic(4) type x value '00000020',
alv_col_style_keyfigure(4) type x value '00000040',
alv_col_style_key(4) type x value '00000080',
alv_col_style_exception(4) type x value '00000100',
alv_col_style_signed_keyfigure(4) type x value '00000200',
alv_col_style_merge(4) type x value '00000400',
alv_col_style_fixed(4) type x value '00000800',
alv_col_style_auto_value(4) type x value '00001000',
alv_col_style_no_disp(4) type x value '00002000',
alv_col_style_hasref(4) type x value '00004000',
alv_col_style_average(4) type x value '00008000',
alv_col_style_min(4) type x value '00010000',
alv_col_style_max(4) type x value '00020000'.
以下程序演示了在alv中如何显示粗体字
主程序:
include <cl_alv_control>.
TABLES sflight.
DATA: ok_code TYPE sy-ucomm.
DATA: go_container TYPE REF TO cl_gui_custom_container.
DATA: gs_sflight TYPE sflight.
DATA: gt_sflight TYPE STANDARD TABLE OF sflight.
DATA: gs_field_cat TYPE lvc_s_fcat.
DATA: gt_field_cat TYPE lvc_t_fcat.
DATA: gs_sort TYPE lvc_s_sort.
DATA: gt_sort TYPE lvc_t_sort.
DATA: go_alv_control TYPE REF TO cl_gui_alv_grid.
START-OF-SELECTION.
PERFORM sub_retrieve_data.
PERFORM sub_build_itabs.
CALL SCREEN 9100.
*&---------------------------------------------------------------------*
*& Module STATUS_9100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_9100 OUTPUT.
SET PF-STATUS 'STATUS9100'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_9100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9100 INPUT.
CASE ok_code.
WHEN 'BACK' OR 'EXIT' OR 'CANC'.
CALL METHOD go_alv_control->free.
CALL METHOD go_container->free.
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " USER_COMMAND_9100 INPUT
*&---------------------------------------------------------------------*
*& Module SHOW_ALV_TREE OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE show_alv OUTPUT.
IF go_container IS INITIAL.
CREATE OBJECT go_container
EXPORTING
container_name = 'GO_CONTAINER'.
CREATE OBJECT go_alv_control
EXPORTING
i_parent = go_container.
CALL METHOD go_alv_control->set_table_for_first_display
CHANGING
it_outtab = gt_sflight
it_fieldcatalog = gt_field_cat
it_sort = gt_sort.
ENDIF.
ENDMODULE. " SHOW_ALV_TREE OUTPUT
*&---------------------------------------------------------------------*
*& Form SUB_RETRIEVE_DATA
*&---------------------------------------------------------------------*
* Retrieve data from database
*----------------------------------------------------------------------*
FORM sub_retrieve_data .
SELECT *
INTO TABLE gt_sflight
FROM sflight.
ENDFORM. " SUB_RETRIEVE_DATA
*&---------------------------------------------------------------------*
*& Form SUB_BUILD_ITABS
*&---------------------------------------------------------------------*
* Build field catelogs and sorted table
*----------------------------------------------------------------------*
FORM sub_build_itabs .
* Build fieldcat
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
ct_fieldcat = gt_field_cat.
CLEAR gs_field_cat.
gs_field_cat-do_sum = 'X'.
gs_field_cat-style = alv_style_font_bold.
gs_field_cat-style4 = alv_style4_zebra_row.
MODIFY gt_field_cat FROM gs_field_cat
TRANSPORTING do_sum style style2 style3 style4
WHERE fieldname = 'PRICE'
OR fieldname = 'PAYMENTSUM'.
gs_sort-spos = 1.
gs_sort-fieldname = 'CARRID'.
gs_sort-up = 'X'.
APPEND gs_sort TO gt_sort.
gs_sort-spos = 2.
gs_sort-fieldname = 'CONNID'.
gs_sort-up = 'X'.
APPEND gs_sort TO gt_sort.
ENDFORM. " SUB_BUILD_ITABS
屏幕9100代码:
PROCESS BEFORE OUTPUT.
MODULE status_9100.
MODULE show_alv.
PROCESS AFTER INPUT.
MODULE user_command_9100.