将下面的代码敲一遍,ALV基本的使用都清晰了。
*&---------------------------------------------------------------------*
*& REPORT YZ_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT yz_test NO STANDARD PAGE HEADING
MESSAGE-ID ytest.
TYPES:BEGIN OF typ_00,
sel TYPE c,
checkbox TYPE c,
cell_color TYPE slis_t_specialcol_alv, "单元格颜色
line_color(4) TYPE c, "行列颜色
pernr TYPE pa0000-pernr,
begda TYPE pa0000-begda,
endda TYPE pa0000-endda,
massn TYPE pa0000-massn,
massg TYPE pa0000-massg,
open_folder TYPE string,
num TYPE pa0008-bet01,
END OF typ_00.
DATA lt_00 TYPE TABLE OF typ_00.
DATA ls_00 LIKE LINE OF lt_00.
TYPE-POOLS ole2 .
START-OF-SELECTION.
SELECT * FROM pa0000 INTO CORRESPONDING FIELDS OF TABLE lt_00.
LOOP AT lt_00 ASSIGNING FIELD-SYMBOL(<fs_008>).
IF sy-tabix = 1.
<fs_008>-num = 100.
ELSE.
<fs_008>-num = 200.
ENDIF.
ENDLOOP.
DATA:i_detail TYPE TABLE OF typ_00.
i_detail = lt_00.
DATA: wa_fieldcat TYPE lvc_s_fcat , " 相当于工作区
i_fieldcat_lvc TYPE lvc_t_fcat , " 存放列名的内表
i_layout_lvc TYPE lvc_s_layo . " 负责整个ALV的全局属性
DATA: v_pos TYPE i VALUE '0'.
PERFORM f_fields USING 'CHECKBOX' '选择框' 'X'.
PERFORM f_fields USING 'PERNR' '人员编号' 'X'.
PERFORM f_fields USING 'BEGDA' '开始日期' 'X'.
PERFORM f_fields USING 'ENDDA' '结束日期' 'X'.
PERFORM f_fields USING 'MASSN' '操作类型' 'X'.
PERFORM f_fields USING 'MASSG' '操作原因' 'X'.
PERFORM f_fields USING 'OPEN_FOLDER' '打开文件' 'X'.
PERFORM f_fields USING 'NUM ' '工资' 'X'.
"按照上传的模板格式导出为本地文件
"1.定义导出为EXCEL用到的数据变量
DATA: v_excel TYPE ole2_object,
v_sheet TYPE ole2_object,
v_book TYPE ole2_object,
v_rows TYPE ole2_object,
v_cell TYPE ole2_object,
v_sheet_number TYPE i.
"2.上传模板 SMW0
"3.当用户触动子FORM(F_USER_COMMAND)里的导出程序时,就会触动下列代码,现将模板现在下来,进而根据模板将数据导出到EXCEL表格中
PERFORM f_export.
FORM f_export .
DATA: l_name LIKE wwwdatatab,
l_mine LIKE w3mime OCCURS 10,
l_title TYPE string,
l_filename TYPE string,
l_path TYPE string,
l_fullpath TYPE string.
l_name-relid = 'MI'.
l_name-objid = 'ZHRR_PY005'.
l_name-text = sy-title.
CONCATENATE 'Z_ALV测试_' sy-uname '_' sy-datum '_' sy-uzeit INTO l_title .
*模板下载
CALL FUNCTION 'WWWDATA_IMPORT'
EXPORTING
key = l_name
TABLES
mime = l_mine
EXCEPTIONS
wrong_object_type = 1
import_error = 2
OTHERS = 3.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = l_title
default_extension = 'xlsx'
default_file_name = l_title
file_filter = '(电子表格EXCEL)'
CHANGING
filename = l_filename
path = l_path
fullpath = l_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
STOP.
ENDIF.
IF l_filename = ''.
MESSAGE e000 WITH '已取消导出!' .
ENDIF.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = l_fullpath
filetype = 'BIN'
TABLES
data_tab = l_mine.
*--打开excel模板
PERFORM f_open_excel USING l_fullpath.
*--向excel写数据
PERFORM f_write_excel_sheet.
*--设置excel可见,编辑完自动打开
* CALL METHOD OF v_excel 'Worksheets' = v_sheet
* EXPORTING
* #1 = 1.
* CALL METHOD OF v_sheet 'Activate'.
* SET PROPERTY OF v_excel 'Visible' = 1.
* 关闭EXCEL并保存
PERFORM f_save_excel USING l_fullpath.
ENDFORM. " f_export
*&---------------------------------------------------------------------*
*& Form f_OPEN_EXCEL
*&---------------------------------------------------------------------*
* 根据本地excel路径,打开excel应用
*----------------------------------------------------------------------*
FORM f_open_excel USING pa_path.
CREATE OBJECT v_excel 'Excel.Application'.
CALL METHOD OF v_excel 'Workbooks' = v_book.
CALL METHOD OF v_book 'Open' = v_book
EXPORTING
#1 = pa_path.
CALL METHOD OF v_book 'Sheets' = v_sheet
EXPORTING
#1 = 1.
ENDFORM. " f_OPEN_EXCEL
*&---------------------------------------------------------------------*
*& Form f_WRITE_EXCEL_SHEET1
*&---------------------------------------------------------------------*
* 向excel写入数据
*----------------------------------------------------------------------*
FORM f_write_excel_sheet.
TYPES: BEGIN OF typ_name ,
name_first(40) TYPE c,
name_last(40) TYPE c,
END OF typ_name .
DATA: i_name TYPE TABLE OF typ_name WITH HEADER LINE .
DATA: l_name(40) TYPE c .
SELECT adrp~name_first
adrp~name_last
INTO CORRESPONDING FIELDS OF TABLE i_name
FROM adrp
INNER JOIN usr21 ON adrp~persnumber = usr21~persnumber
WHERE usr21~bname = sy-uname .
LOOP AT i_name .
CONCATENATE i_name-name_last i_name-name_first INTO l_name .
ENDLOOP.
DATA: l_chars(50) TYPE c,
l_lines TYPE i,
l_num TYPE i VALUE 10. "行变化,从第几行开始导入
*写入表头
PERFORM f_write_cell USING 1 1 'Z_ALV测试'.
CONCATENATE '制表日期:' sy-datum+0(4) '年' sy-datum+4(2) '月' sy-datum+6(2) '日' INTO l_chars.
CONDENSE l_chars NO-GAPS .
PERFORM f_write_cell USING 2 1 l_chars.
CONCATENATE '制表人:' l_name INTO l_name .
CONDENSE l_name NO-GAPS .
PERFORM f_write_cell USING 2 5 l_name.
"通过行列的方式把数据写入到Excel中
LOOP AT lt_00 ASSIGNING FIELD-SYMBOL(<fs_write>) .
PERFORM f_write_cell USING l_num 1 <fs_write>-pernr.
PERFORM f_write_cell USING l_num 2 <fs_write>-begda.
PERFORM f_write_cell USING l_num 3 <fs_write>-endda.
PERFORM f_write_cell USING l_num 4 <fs_write>-massn.
PERFORM f_write_cell USING l_num 5 <fs_write>-massg.
PERFORM f_write_cell USING l_num 6 <fs_write>-num.
l_num = l_num + 1 .
ENDLOOP.
ENDFORM. " f_WRITE_EXCEL_SHEET1
*&---------------------------------------------------------------------*
*& Form f_WRITE_CELL
*&---------------------------------------------------------------------*
* 向excel指定cell写入数据
*----------------------------------------------------------------------*
FORM f_write_cell USING pa_row
pa_col
pa_val.
CALL METHOD OF v_sheet 'Cells' = v_cell
EXPORTING
#1 = pa_row
#2 = pa_col.
SET PROPERTY OF v_cell 'Value' = pa_val.
ENDFORM. " f_WRITE_CELL
*&---------------------------------------------------------------------*
*& Form f_SAVE_EXCEL
*&---------------------------------------------------------------------*
* 保存excel文档
*----------------------------------------------------------------------*
* -->P_L_FULLPATH text
*----------------------------------------------------------------------*
FORM f_save_excel USING pa_fullpath.
SET PROPERTY OF v_excel 'DisplayAlerts' = 0.
CALL METHOD OF v_book 'SAVEAS'
EXPORTING
#1 = pa_fullpath.
CALL METHOD OF v_book 'Exit' = v_book.
FREE OBJECT v_excel.
ENDFORM. " f_SAVE_EXCEL
FORM f_fields USING iv_fieldname iv_text iv_fixcol.
v_pos = v_pos + 1 . "初始值是零
wa_fieldcat-col_pos = v_pos . " 指定列数
* wa_fieldcat-datatype = 'SSTR'.
wa_fieldcat-fieldname = iv_fieldname . " 需要输出的内表的字段名
wa_fieldcat-scrtext_l = iv_text. " 字段的描述-长字段标签
wa_fieldcat-scrtext_m = iv_text. " 字段描述-中字段标签
wa_fieldcat-scrtext_s = iv_text. " 字段描述-短字段标签
* wa_fieldcat-col_opt = 'X' . " layout里没有指明全局优化列宽时,指定列单列优化列宽
IF iv_fieldname = 'NUM'.
wa_fieldcat-do_sum = 'X' . " 求和
* wa_fieldcat-edit = 'X' . " 修改
* wa_fieldcat-no_sum = 'X' . " 取消求和
* wa_fieldcat-datatype = 'CURRENY'.
wa_fieldcat-datatype = 'CURR'."对于货币字段,这样在修改数据并保存时,才能将数据保持原样,否则输入的数据会自动将小数点提前2位;
* wa_fieldcat-datatype = 'QUAN' . " 对于数量字段,也要添加一个“指定数据类型”的属性,才能保持数据的正确性
* wa_fieldcat-inttype = 'C' . " 对于数量字段,也要添加一个“指定数据类型”的属性,才能保持数据的正确性
ENDIF.
IF iv_fieldname = 'BEGDA'.
wa_fieldcat-rollname = 'BEGDA' . " 指定数据元素,就可以在ALV的显示界面将鼠标放到该字段的位置后按F1会弹出该字段的说明;
wa_fieldcat-emphasize = 'C711' . " 利用设置字段和列名子的FORM(F_FIELDS)里来设置列的颜色
ENDIF.
IF iv_fieldname = 'PERNR' .
wa_fieldcat-hotspot = 'X' . " 热点,链接用
wa_fieldcat-key = 'X' . " 关键列,会变颜色
wa_fieldcat-fix_column = iv_fixcol . " 是否是固定列 column列,不变颜色
ENDIF.
IF iv_fieldname = 'MASSN'.
wa_fieldcat-hotspot = 'X' . " 热点,链接用
ENDIF.
IF iv_fieldname = 'MASSG'.
wa_fieldcat-outputlen = '10' . " 可以明显地指明该列的输出宽度,打开自动优化列宽时失效
wa_fieldcat-ref_field = 'MASSG' . "F4帮助,和HOTSPOT冲突,有热点时不显示F4帮助
wa_fieldcat-ref_table = 'PA0000' .
ENDIF.
IF iv_fieldname = 'OPEN_FOLDER'.
wa_fieldcat-hotspot = 'X' . " 热点,链接用
wa_fieldcat-outputlen = '40' . " 可以明显地指明该列的输出宽度,打开自动优化列宽时失效
wa_fieldcat-tooltip = '请选择文件 ' . " 列抬头的工具提示
* wa_fieldcat-icon = 'X' . " 图标
ENDIF.
IF iv_fieldname = 'CHECKBOX'.
wa_fieldcat-checkbox = 'X' .
wa_fieldcat-edit = 'X' .
wa_fieldcat-fix_column = iv_fixcol . " 是否是固定列 column列,不变颜色
ENDIF.
* wa_fieldcat-just = 'L' . " 左对齐
wa_fieldcat-just = 'C' . " 居中对齐
* wa_fieldcat-just = 'R' . " 右对齐
"当然,在不指明对其方式的前提下,ABAP的各种数据类型优默认的对其方式,其中字符串是默认为左对齐,而货币、数量默认为右对齐;
APPEND wa_fieldcat TO i_fieldcat_lvc.
CLEAR wa_fieldcat.
ENDFORM.
FORM f_top_of_page USING p_cl_dd TYPE REF TO cl_dd_document.
DATA: m_p TYPE i,
m_buffer TYPE string.
m_buffer = '<HTML><CENTER><H1>标题</H1></CENTER></HTML>' .
CALL METHOD p_cl_dd->html_insert
EXPORTING
contents = m_buffer
CHANGING
position = m_p.
ENDFORM.
FORM f_set_status USING p_extab TYPE slis_t_extab .
SET PF-STATUS 'Z_ALV_STATUS' .
ENDFORM. " f_set_status
FORM f_user_command USING p_ucomm TYPE sy-ucomm
p_rs_selfield TYPE slis_selfield .
DATA:lr_grid TYPE REF TO cl_gui_alv_grid.
* 将界面中的选择数据更新到内表中
*=====GET_GLOBALS_FROM_SLVC_FULLSCR START==========
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.
*=====GET_GLOBALS_FROM_SLVC_FULLSCR END============
CASE p_ucomm.
WHEN '&IC1' .
READ TABLE lt_00 ASSIGNING FIELD-SYMBOL(<fs_00>) INDEX p_rs_selfield-tabindex .
IF sy-subrc EQ 0.
CASE p_rs_selfield-fieldname.
WHEN 'MASSN'.
IF NOT <fs_00>-pernr IS INITIAL .
PERFORM f_show_detail USING p_rs_selfield . " 显示具体细节
ENDIF.
WHEN 'PERNR'.
PERFORM f_call_tran USING p_rs_selfield . " 调用其他事务
WHEN 'OPEN_FOLDER'.
PERFORM f_open_folder USING p_rs_selfield CHANGING <fs_00>. " 打开文件
ENDCASE.
ENDIF.
WHEN '&SALL'."全选
PERFORM frm_sall_data USING 'X'.
WHEN '&DSAL'."取消全选
PERFORM frm_sall_data USING ''.
ENDCASE.
p_rs_selfield-refresh = 'X' . " 当用户在显式界面上对数据进行修改时,同时内表中的数据也随之刷新
ENDFORM.
END-OF-SELECTION.
PERFORM f_build_layout.
"注意: 颜色设置中有优先级顺序,他们是单元格-->行-->列,即若同时使用了上述3种更改颜色的方法,则列的颜色会被行的颜色覆盖掉,而行的颜色又会背单元格的颜色覆盖掉,最终只会显示出单元格的颜色.
PERFORM f_cell_color.
PERFORM f_line_color.
"排序之后,如果同一列有相同的数据,则排好序以后,在该列会自动将相同的数据合并为一行显示,不再出现多行重复的情况
"写在和alv同一个form
DATA: wa_sort_lvc TYPE lvc_s_sort,
it_sort_lvc TYPE lvc_t_sort.
wa_sort_lvc-spos = 1 . " 排序顺序
wa_sort_lvc-fieldname = 'PERNR'. " 排序字段
wa_sort_lvc-up = 'X' . " 升序
APPEND wa_sort_lvc TO it_sort_lvc .
CLEAR wa_sort_lvc .
wa_sort_lvc-spos = 2 . " 排序顺序
wa_sort_lvc-fieldname = 'MASSN'. " 排序字段
wa_sort_lvc-down = 'X' . "降序
APPEND wa_sort_lvc TO it_sort_lvc .
CLEAR wa_sort_lvc .
* " 定义隐藏标准按钮的变量
* DATA: wa_excluding TYPE slis_extab,
* it_excluding TYPE slis_t_extab.
* "设置要隐藏的按钮的“fcode”i_callback_pf_status_set中自定义的不会隐藏,不需要的在自定义直接删掉就好了
* wa_excluding-fcode = '&INFO' .
* APPEND wa_excluding TO it_excluding .
" 小标题
DATA: i_grid_title TYPE lvc_title .
i_grid_title = '小标题 '.
*
** " 回调变量
* DATA: i_grid_settings TYPE lvc_s_glay .
* i_grid_settings-edt_cll_cb = 'X' .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
i_callback_program = sy-repid
i_callback_pf_status_set = 'F_SET_STATUS' "自定义“工具栏”按钮
i_callback_user_command = 'F_USER_COMMAND '
i_callback_top_of_page = 'F_TOP_OF_PAGE2 ' "带图片抬头
* i_callback_html_top_of_page = 'F_TOP_OF_PAGE ' "抬头
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
i_grid_title = i_grid_title"小标题
* I_GRID_SETTINGS = i_grid_settings
is_layout_lvc = i_layout_lvc
it_fieldcat_lvc = i_fieldcat_lvc
* it_excluding = it_excluding "隐藏标准按钮
* IT_SPECIAL_GROUPS_LVC =
it_sort_lvc = it_sort_lvc "排序
* IT_FILTER_LVC =
* IT_HYPERLINK =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'A'
* 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 = 10 "抬头部分的高度
* 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 = lt_00
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 f_show_detail
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_RS_SELFIELD
*&---------------------------------------------------------------------*
FORM f_show_detail USING p_p_rs_selfield.
DATA: gt_fcat_9001 TYPE lvc_t_fcat,
gs_layo_9001 TYPE lvc_s_layo.
DATA: ls_fcat TYPE lvc_s_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'PERNR'.
ls_fcat-coltext = '序号'.
ls_fcat-scrtext_l = ls_fcat-scrtext_m = ls_fcat-scrtext_s = ls_fcat-coltext.
ls_fcat-datatype = 'SSTR'.
ls_fcat-hotspot = 'X' . " 热点,链接用
APPEND ls_fcat TO gt_fcat_9001.
gs_layo_9001-zebra = 'X'.
gs_layo_9001-cwidth_opt = 'X'.
gs_layo_9001-box_fname = 'SEL'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
* i_callback_pf_status_set = 'FRM_SET_STATUS_9001'
i_callback_user_command = 'FRM_USER_COMMAND_9001'
is_layout_lvc = gs_layo_9001
it_fieldcat_lvc = gt_fcat_9001
TABLES
t_outtab = i_detail
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM.
FORM frm_user_command_9001 USING p_ucomm TYPE sy-ucomm
p_rs_selfield TYPE slis_selfield .
CASE p_ucomm.
WHEN '&IC1' .
READ TABLE i_detail ASSIGNING FIELD-SYMBOL(<fs_detail>) INDEX p_rs_selfield-tabindex .
IF sy-subrc EQ 0.
CASE p_rs_selfield-fieldname.
WHEN 'PERNR'.
IF NOT <fs_detail>-pernr IS INITIAL .
PERFORM frm_json_ouput. " 显示具体细节
ENDIF.
WHEN ''.
WHEN OTHERS.
ENDCASE.
ENDIF.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_json_ouput
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_
*&---------------------------------------------------------------------*
FORM frm_json_ouput .
DATA: lv_json TYPE string.
DATA: lv_convert TYPE string,
lo_json_ser TYPE REF TO cl_trex_json_serializer,
lv_err_text TYPE string.
lv_json = '[{"department_code":"50","name":"zuzhi1","parent_code":"50"}]'.
* CLEAR lv_json.
* CALL FUNCTION 'ZFM_EHR_BASE64_DECODE'
* EXPORTING
* iv_input = json
* IMPORTING
* ev_output = lv_json.
TRY.
CALL TRANSFORMATION sjson2html SOURCE XML lv_json
RESULT XML DATA(lv_html).
CATCH cx_xslt_runtime_error INTO DATA(lo_err).
lv_err_text = lo_err->get_text( ).
WRITE: lv_err_text.
RETURN.
ENDTRY.
* 显示HTML
lv_convert = cl_abap_codepage=>convert_from( lv_html ).
cl_abap_browser=>show_html( html_string = lv_convert ).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form f_call_tran
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_RS_SELFIELD
*&---------------------------------------------------------------------*
FORM f_call_tran USING p_rs_selfield TYPE slis_selfield .
SET PARAMETER ID 'PER' FIELD p_rs_selfield-value .
CALL TRANSACTION 'PA20' ."AND SKIP FIRST SCREEN .
ENDFORM. " f_call_tran
*&---------------------------------------------------------------------*
*& Form f_open_folder
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_RS_SELFIELD
*&---------------------------------------------------------------------*
FORM f_open_folder USING p_p_rs_selfield CHANGING fs_00 STRUCTURE ls_00.
DATA: l_file_path LIKE rlgrap-filename .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
mode = 'O'
title = '选择文件'
IMPORTING
filename = l_file_path
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc = 0.
fs_00-open_folder = l_file_path . " 将得到的文件的路径赋给当前行的路径
CLEAR l_file_path .
ELSE .
MESSAGE s000 WITH '没有选择文件' .
fs_00-open_folder = icon_red_light.
ENDIF.
ENDFORM.
FORM f_build_layout.
i_layout_lvc-zebra = 'X' . " 使ALV界面呈现颜色交替
* i_layout_lvc-sel_mode = 'A' . " 选择模式,“A”在最左端有选择按钮
i_layout_lvc-box_fname = 'SEL' .
* i_layout_lvc-totals_bef = 'X' .
* i_layout_lvc-cwidth_opt = 'X' . " 自动优化列宽
i_layout_lvc-detailinit = 'X' . " 是否出现细节屏幕
i_layout_lvc-detailtitl = '详细内容' . " 细节屏幕标题
i_layout_lvc-ctab_fname = 'CELL_COLOR'. " 单元格颜色设置
i_layout_lvc-info_fname = 'LINE_COLOR'. " 行列颜色
ENDFORM.
FORM f_cell_color .
" 单元格颜色
DATA: l_cellcolor TYPE slis_specialcol_alv .
LOOP AT lt_00 ASSIGNING FIELD-SYMBOL(<fs_00>) .
IF <fs_00>-num > 100 .
l_cellcolor-fieldname = 'NUM' . " 要修改颜色的字段名
l_cellcolor-color-col = 7 . " 颜色(1-7)
l_cellcolor-color-inv = 3 . " 前景字体(inv代表背景颜色)
APPEND l_cellcolor TO <fs_00>-cell_color .
CLEAR l_cellcolor .
ENDIF.
ENDLOOP.
ENDFORM. " f_cell_color
FORM f_line_color .
" 更改行的颜色和列的颜色
DATA: l_i TYPE i .
LOOP AT lt_00 ASSIGNING FIELD-SYMBOL(<fs_00>) .
l_i = sy-tabix MOD 2 .
IF l_i = 0 .
<fs_00>-line_color = 'C311' .
ENDIF.
ENDLOOP.
ENDFORM. " f_line_color
FORM frm_sall_data USING p_flag.
LOOP AT lt_00 ASSIGNING FIELD-SYMBOL(<fs_00>) WHERE sel <> p_flag.
<fs_00>-sel = p_flag.
ENDLOOP.
ENDFORM.
" 为ALV标题添加图片,必须用I_CALLBACK_TOP_OF_PAGE
"1.上传图片
*OAER进入参数界面,在“Class name”后面输入“PICTURES”,在“Class Type”后面输入“OT”,在“Object ID”后面输入一个名字,用来标记上传的图片,点击 或按F8进入
*上传图片的主界面,点击下面的“Create”展开“Standard.Doc.Types”双击“屏幕”上传自己的图片,指定好“Description”和“KeyWord”方便以后查找,完成图片的上传
*记下“Object ID”,后面的程序中要用到
FORM f_top_of_page2 .
DATA: i_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader.
" 定义登录用户的描述
DATA: l_name TYPE string .
" 定义登录日期
DATA: l_date TYPE string .
" 得到登录用户的描述
l_name = sy-uname .
" 拼接制表日期
CONCATENATE sy-datum+0(4) '.' sy-datum+4(2) '.' sy-datum+6(2) INTO l_date .
" Image
wa_header-typ = 'H'.
wa_header-info = 'Z_ALV测试' .
APPEND wa_header TO i_header .
CLEAR wa_header .
CONCATENATE '制表人:' l_name INTO l_name .
CONCATENATE '制表日期:' l_date INTO l_date .
wa_header-typ = 'S'.
wa_header-key = l_name .
wa_header-info = l_date .
APPEND wa_header TO i_header .
CLEAR wa_header .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'J01' " OAER中的Object ID
it_list_commentary = i_header
i_alv_form = 'X'.
ENDFORM. " f_top_of_page2