ALV 注意事项

时间: 2023-07-09 admin 互联网

ALV 注意事项

ALV 注意事项

  1. 复制模板的时候,include也要复制,要重新起名字,起完名字之后必须要点选左面的小方块,否则复制失败
  2. 复制完的模板中的各个文件需要改一些注释信息为自己的程序名
  3. 各个文件需要格式化代码
  4. 在top中include自己在数据字典中定义的结构体
INCLUDE STRUCTURE zscurry_alv_training_2.
  1. 数据库数据查询逻辑在FORM get_data中编写,gt_data就是最后得到的数据
  2. 列属性(颜色,字段名,是否可以编辑等等属性)在form中的CREAT FIELDCATALOG和CHANGE FIELDCATALOG中定义,根据CREAT FIELDCATALOG生成的数据可以在CHANGE FIELDCATALOG中修改
  3. 排序在form中的create_default_sort中设置
  4. 过滤在form中的create_default_filter中设置
  5. 功能按钮在form中的exclude_toolbar_functions中设置
  6. 清理无用的代码
  7. 一个类想调用必须实例化
  8. 根据ALV列的值自动调节长度在adjust_alv_layout中设置
gs_layout_alv-cwidth_opt = 'X'.  "to optimize the width of the columns in the grid
  1. 单选或者多选行在form中的adjust_alv_layout中设置
gs_layout_alv-sel_mode = 'A'.    "selection mode of the ROWS
*                A = Multiple columns, multiple rows with selection buttons.
*                B = Simple selection, listbox, Single row/column
*                C = Multiple rows without buttons
*                D = Multiple rows with buttons and select all ICON
  1. grid title 在form中的adjust_alv_layout中设置
gs_layout_alv-grid_title = 'My OO ALV Grid Title'(019). "the grid title
  1. 红绿灯在form中的adjust_alv_layout中显示或者删除
gs_layout_alv-excp_fname = 'MY_EXCEPTION'(011)."红绿灯
  1. 行内颜色在form中的adjust_alv_layout中显示
gs_layout_alv-info_fname = 'MY_LINE_COLOR'(020).
  1. 列颜色form中的adjust_alv_layout中设置
gs_layout_alv-ctab_fname = 'MY_CELL_COLOR'(021).
  1. 变式在PBO中设置
* calling the used variant from the selection screenCLEAR gs_variant.IF NOT pa_vari IS INITIAL.MOVE pa_vari  TO gs_variant-variant.ENDIF.MOVE gv_repid TO gs_variant-report.
  1. navigation在PBO中设置
* Calling the navigation profile - only when the program is running in foregroundIF  cl_gui_alv_grid=>offline( ) IS INITIAL.CLEAR gs_variant_prof.MOVE-CORRESPONDING gs_profile_key TO gs_variant_prof.gs_variant_prof-report  =  gv_repid.gs_variant_prof-variant =  pa_prof.go_navigation_profile = cl_navp_factory=>factory(io_alv                        = my_gridis_profile_key                = gs_variant_profiv_default                    = ' '  "when iv_default is blank, you can select whatever navigation profile ;  when ‘X’ it always selects the default profileiv_save_mode                  = gv_save_layoutit_table                      = gt_data[]iv_disable_call_transaction   = ' 'iv_disable_call_okcode        = ' 'iv_disable_call_class         = ' ' ).ENDIF.
  1. 如果PBO中没有ALL METHOD my_grid->set_table_for_first_display,则ALV不显示
* Calling the ALVCALL METHOD my_grid->set_table_for_first_displayEXPORTINGis_variant           = gs_varianti_save               = gv_save_layouti_default            = 'X'is_layout            = gs_layout_alvit_toolbar_excluding = gt_excl_functions[]CHANGINGit_outtab            = gt_data[]it_fieldcatalog      = gt_fieldcat[]it_sort              = gt_sort[]it_filter            = gt_filter[].
  1. 自定义按钮是否显示和定义逻辑在event中
* Handle toolbarMETHOD handle_toolbar.DATA: ls_toolbar  TYPE stb_button.
* Append a separator (vertical line - used for grouping actions on the toolbar)CLEAR ls_toolbar.MOVE 3 TO ls_toolbar-butn_type.APPEND ls_toolbar TO e_object->mt_toolbar.
* Append a button with an iconCLEAR ls_toolbar.MOVE 'ACTION'(003)      TO ls_toolbar-function.  "define the UCOMM value ; to be used in Handle User CommandMOVE icon_employee TO ls_toolbar-icon.       "add an icon - see also TYPE-POOL ICONMOVE 'Do Action'(004)   TO ls_toolbar-quickinfo.MOVE 'Do Action'(004)   TO ls_toolbar-text.MOVE ' '           TO ls_toolbar-disabled.             "to disable a button (grayed out)APPEND ls_toolbar  TO e_object->mt_toolbar.* Append a REFRESH buttonCLEAR ls_toolbar.MOVE 'REFRESH'(005)     TO ls_toolbar-function.MOVE icon_refresh  TO ls_toolbar-icon.MOVE 'Refresh'(006)     TO ls_toolbar-quickinfo.MOVE 'Refresh'(006)   TO ls_toolbar-text.MOVE ' '           TO ls_toolbar-disabled.             "to disable a button (grayed out)APPEND ls_toolbar  TO e_object->mt_toolbar.ENDMETHOD.                    "handle_toolbar
* Handle User commandMETHOD handle_user_command.DATA: lt_rows TYPE lvc_t_row.DATA: ls_rows TYPE lvc_s_row.CASE e_ucomm.WHEN 'ACTION'(003).  "here comes the UCOMM value (toolbar function) you added to the buttonCALL METHOD my_grid->get_selected_rowsIMPORTINGet_index_rows = lt_rows.CHECK NOT lt_rows IS INITIAL.READ TABLE lt_rows INDEX 1 INTO ls_rows.READ TABLE gt_data INDEX ls_rows-index INTO gs_data.
*       After this you can define what you want to do when the user presses this buttonWHEN 'REFRESH'(005).CALL METHOD my_grid->refresh_table_display.WHEN OTHERS.ENDCASE.ENDMETHOD.