ALV常用设置(更新中一)

发布于:2025-07-03 ⋅ 阅读:(14) ⋅ 点赞:(0)

之前设置了checkbox,但是触发不了单击事件,且alv自带的复选,鼠标移动单击别处就会自动取消。

  1. **增加多选框到fieldcat,**这一点很重要,然后设置
IF gs_fcat-fieldname = 'sel'.
      gs_fcat-checkbox = 'X'.  
      gs_fcat-edit = 'X'.
*      gs_fcat-key = 'X'.
    gs_fcat-hotspot = 'X'.  "单击就会触发'&IC1' ,不设置双击才会触发
    ENDIF.

单选一个订单相同的订单号都勾选,取消相同的订单都取消

 WHEN '&IC1'.
      IF ps_selfield-fieldname = 'aufnr'.
        SET PARAMETER ID 'ANR' FIELD ps_selfield-value.
        CALL TRANSACTION 'CO03' AND SKIP FIRST SCREEN.
      ELSEIF ps_selfield-fieldname = 'sel' AND  ps_selfield-value = 0.
        CLEAR gs_alv.
        READ TABLE gt_alv INTO gs_alv INDEX ps_selfield-tabindex.
        LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<fs_select>) WHERE aufnr = gs_alv-aufnr .
          <fs_select>-sel = 'X'.
          <fs_select>-selxxx = 'X'.
        ENDLOOP.
      ELSEIF ps_selfield-fieldname = 'sel' AND  ps_selfield-value = 1.
        CLEAR gs_alv.
        READ TABLE gt_alv INTO gs_alv INDEX ps_selfield-tabindex.
        LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<fs_cancel>) WHERE aufnr = gs_alv-aufnr .
          <fs_cancel>-sel = ' '.
          <fs_cancel>-selxxx = ' '.
        ENDLOOP.
      ENDIF.

颜色代码

2ALV单行高亮
*   set the column with the information about colors of rows and fields
  lo_columns = lo_table->get_columns( ).    
 lo_columns->set_color_column( 'SCOL' ).
  lo_table->display( ).

3、按行读取EXECL文件
TYPE-POOLS truxs.
DATA:it_raw TYPE truxs_t_text_data.
*定义一个内表来存储数据,内表的列数和要传得数据的列数要相同,其按照列来匹配传值
DATA: BEGIN OF gt_data OCCURS 0,
     col1 TYPE char10,
     col2 TYPE char10,
     col3 TYPE char10,
     col4 TYPE char10,
     col5 TYPE char10,
     col6 TYPE char10,
     col7 TYPE char10,
END OF gt_data.
*生成一个parameters元素,给其加上on value-request事件(在parameters上点击F4时触发)
PARAMETERS:p_file TYPE rlgrap-filename.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CLEAR p_file.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
      file_name = p_file."返回文件名
*Excel传值
START-OF-SELECTION.
PERFORM exceltotab.
"PERFORM display_data.
*&---------------------------------------------------------------------*
*&      Form  exceltotab
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM exceltotab .
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
*  i_line_header = 'X'
  i_tab_raw_data = it_raw " WORK TABLE
  i_filename = p_file
TABLES
  i_tab_converted_data = gt_data[] "ACTUAL DATA
EXCEPTIONS
  conversion_failed = 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.
ENDFORM.       

ALV里添加超链接和字段设置为下拉列表

5、实现画图功能

CALL FUNCTION 'STAT_GRAPH_REF'
EXPORTING
dmode = '1'
gridtype = '2'
mail_allow = 'X'
title = text-073
ttext = text-073
tunit = '6'
"utext = graf_par-utext
"valt = graf_par-valt
"winpos = graf_par-winpos
winszx = 40
winszy = 50
TABLES
data = grafdata
opts = grafopts
vals = graftime.

How to get ALV filter work for lower case characters

*define the column
DATA lo_column TYPE REF TO cl_salv_column_table.
DATA lo_columns TYPE REF TO cl_salv_columns_table.
DATA lt_column_ref TYPE salv_t_column_ref.
DATA ls_column_ref TYPE salv_s_column_ref.
DATA go_salv_table TYPE REF TO cl_salv_table .
DATA lt_column_ref TYPE salv_t_column_ref.
DATA ls_column_ref TYPE salv_s_column_ref.
*get your ALV instance
cl_salv_table=>factory( IMPORTING r_salv_table = go_salv_table
CHANGING t_table = "your table here
).
*get the column
lo_columns = go_salv_table->get_columns( ).
lt_column_ref = lo_columns->get( ).
* set lowwer case
LOOP AT lt_column_ref INTO ls_column_ref.
lo_column ?= ls_column_ref-r_column.
CASE ls_column_ref-columnname.
WHEN 'XXXX'.
lo_column->set_lowercase( value = if_salv_c_bool_sap=>true ).
ENDCASE.
endloop.