# ABAP 1. ALV快速模板
#1 ALV快速模板
提示:
不了解我可以点这里看看哟.
前言
大部分时候,我们的需求最常见的就是开发报表
如果只是简单的报表还好,有的报表是层层嵌套屏幕,每次重头开始略有点费劲,
所以就有了快速模板,CV大法,然后再处理业务逻辑。
一、普通ALV
业务和用户只想看看数据没什么操作,5min
REPORT YYTEST001.
DATA : gt_ekpo TYPE TABLE OF ekpo .
DATA : gr_table TYPE REF TO cl_salv_table ,
gr_sorts TYPE REF TO cl_salv_sorts , " Sorts – CL_SALV_SORTS
gr_agg TYPE REF TO cl_salv_aggregations , " Aggregations – CL_SALV_AGGREGATIONS
gr_functions TYPE REF TO cl_salv_functions , " Tool bar
gr_columns TYPE REF TO cl_salv_columns_table , " Columns – CL_SALV_COLUMNS_TABLE and CL_SALV_COLUMN_TABLE
gr_column TYPE REF TO cl_salv_column_table ,
lw_color TYPE lvc_s_colo.
START-OF-SELECTION .
" 读取后处理数据
SELECT *
INTO TABLE gt_ekpo FROM ekpo UP TO 100 rows .
cl_salv_table=>factory( IMPORTING r_salv_table = gr_table CHANGING t_table = gt_ekpo ).
" tool bar
gr_functions = gr_table->get_functions( ).
gr_functions->set_all( abap_true ).
"Columns – CL_SALV_COLUMNS_TABLE and CL_SALV_COLUMN_TABLE
* gr_columns = gr_table->get_columns( ).
* gr_column ?= gr_columns->get_column( 'ZMRQNO' ).
* gr_column->set_long_text( '测试文本' ).
* gr_column->set_medium_text( '测试文本' ).
* gr_column->set_short_text( '测试文本' ).
"整列不显示
gr_columns = gr_table->get_columns( ).
gr_column ?= gr_columns->get_column( 'MANDT' ).
CALL METHOD gr_column->set_visible
EXPORTING
value = if_salv_c_bool_sap=>false.
"排序
gr_sorts = gr_table->get_sorts( ).
gr_sorts->add_sort( columnname = 'EBELN' ).
* Aggregations – CL_SALV_AGGREGATIONS
" 汇总一列
gr_agg = gr_table->get_aggregations( ).
gr_agg->add_aggregation( 'MENGE' ).
gr_table->display( ).
另外还有种相对low一点的模板。
这种的好处就是方便业务经常变化,比如和用户沟通后需求变来变去,比如一会要加个联动,
一会要加个按钮,这个就比较方便经常的修改。
REPORT yytest002.
*&--------------------------------------*
*& 功能说明:
*& 创建人:
*& 日期
*&
*& 开发顾问 请求 业务顾问 时间 修改内容
*&
*&--------------------------------------*
INCLUDE yytest002_top .
INCLUDE yytest002_sel .
INCLUDE yytest002_main .
INCLUDE yytest002_frm .
*&---------------------------------------------------------------------*
*& 包含 YYTEST002_TOP
*&---------------------------------------------------------------------*
"""""""""""""""""""""""TABLE"""""""""""""""""""""""""""""""""""
TYPE-POOLS : slis .
TABLES : sscrfields .
"""""""""""""""""""""""Type Define"""""""""""""""""""""""""""""
TYPES : BEGIN OF ty_alv ,
sel TYPE char1 ,
END OF ty_alv .
"""""""""""""""""""""""Inner Table"""""""""""""""""""""""""""""
DATA : gt_alv TYPE TABLE OF ty_alv .
"""""""""""""""""""""""Global Value""""""""""""""""""""""""""""
DATA : gw_alv TYPE ty_alv .
""""""""""""""""""""""" ALV """""""""""""""""""""""""""""""""""
DATA : gw_fieldcat TYPE slis_fieldcat_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv,
gw_layout TYPE slis_layout_alv.
"""""""""""""""""""""""Define Macro"""""""""""""""""""""""""""""""""
DEFINE add_fieldcat_alv .
CLEAR : gw_fieldcat .
gw_fieldcat-fieldname = &1 .
gw_fieldcat-seltext_l = &2 .
gw_fieldcat-outputlen = &3 .
gw_fieldcat-hotspot = &4 .
APPEND gw_fieldcat TO gt_fieldcat .
END-OF-DEFINITION.
*&---------------------------------------------------------------------*
*& 包含 YYTEST002_SEL
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .
SELECT-OPTIONS :
PARAMETERS :
SELECTION-SCREEN END OF BLOCK b1 .
*&---------------------------------------------------------------------*
*& 包含 YYTEST002_MAIN
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Initialization
*----------------------------------------------------------------------*
INITIALIZATION.
*----------------------------------------------------------------------*
* At Selection Screen
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
AT SELECTION-SCREEN .
*----------------------------------------------------------------------*
* Start Of Selection
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM frm_get_data .
PERFORM frm_set_layout .
PERFORM frm_set_field .
PERFORM frm_alv_display .
*----------------------------------------------------------------------*
* End Of Selection
*----------------------------------------------------------------------*
END-OF-SELECTION .
*&---------------------------------------------------------------------*
*& 包含 YYTEST002_FRM
*&---------------------------------------------------------------------*
FORM frm_get_data .
ENDFORM.
FORM frm_set_layout .
gw_layout-box_fieldname = 'SEL'. " 选择模式
gw_layout-colwidth_optimize = 'X'. " 自动调整列宽
gw_layout-zebra = 'X'. " 表格斑马线
gw_layout-edit = 'X'. " 可编辑
gw_layout-info_fieldname = 'CLR'.
ENDFORM.
FORM frm_set_field .
CLEAR : gt_fieldcat .
add_fieldcat_alv '' TEXT-002 '10' 'X' .
ENDFORM.
FORM frm_alv_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = gw_layout
it_fieldcat = gt_fieldcat
i_save = 'X'
i_callback_pf_status_set = 'FRM_STATE'
i_callback_user_command = 'FRM_USER_COMMAND'
TABLES
t_outtab = gt_alv
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.
ENDFORM.
FORM frm_state USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STANDARD'.
ENDFORM.
FORM frm_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
READ TABLE gt_alv INTO gw_alv INDEX rs_selfield-tabindex.
CHECK sy-subrc = 0.
CASE r_ucomm.
WHEN '&IC1'.
WHEN 'PRT'.
ENDCASE.
ENDFORM.
二、OOALV
在有些时候,我们会遇到平台类报表需求,比如上下各一屏幕,还有联动关系,这时候我们就需要用OOALV了。模板可以用这个直接套。
原作者来自: 这里.
有空的时候我再改进一波
代码如下:
REPORT yytest003.
*&--------------------------------------*
*& 功能说明:
*& 创建人:
*& 日期
*&
*& 开发顾问 请求 业务顾问 时间 修改内容
*&
*&--------------------------------------*
INCLUDE yytest003_top .
INCLUDE yytest003_sel .
INCLUDE yytest003_main .
INCLUDE yytest003_class .
INCLUDE yytest003_pbo .
INCLUDE yytest003_pai .
INCLUDE yytest003_frm .
*&---------------------------------------------------------------------*
*& 包含 YYTEST003_TOP
*&---------------------------------------------------------------------*
"""""""""""""""""""""""TABLE"""""""""""""""""""""""""""""""""""
TYPE-POOLS : icon .
TABLES : t001 .
"""""""""""""""""""""""Type Define"""""""""""""""""""""""""""""
TYPES : BEGIN OF ty_item ,
rollname TYPE dd04t-rollname,
ddlanguage TYPE dd04t-ddlanguage,
as4local TYPE dd04t-as4local,
as4vers TYPE dd04t-as4vers,
ddtext TYPE dd04t-ddtext,
reptext TYPE dd04t-reptext,
scrtext_s TYPE dd04t-scrtext_s,
scrtext_m TYPE dd04t-scrtext_m,
scrtext_l TYPE dd04t-scrtext_l.
TYPES END OF ty_item .
"""""""""""""""""""""""Inner Table"""""""""""""""""""""""""""""
DATA gt_item TYPE TABLE OF ty_item .
"""""""""""""""""""""""Global Value""""""""""""""""""""""""""""
DATA : ok_code LIKE sy-ucomm,
stbl TYPE lvc_s_stbl, "鼠标游标位置
gv_code TYPE sy-tcode.
"""""""""""""""""""""""Class """"""""""""""""""""""""""""""""""
CLASS lcl_event_receiver DEFINITION DEFERRED.
DATA: event_receiver TYPE REF TO lcl_event_receiver.
""""""""""""""""""""""" ALV """""""""""""""""""""""""""""""""""
DATA: gt_fieldcat TYPE lvc_t_fcat,
gs_layout TYPE lvc_s_layo,
gs_variant TYPE disvariant,
gt_t_f4 TYPE lvc_t_f4,
gt_selcell TYPE lvc_t_cell,
it_toolbar_excluding TYPE ui_functions.
DATA alv_grid TYPE REF TO cl_gui_alv_grid.
DATA gs_parent TYPE REF TO cl_gui_custom_container . "定义容器
DATA gt_select TYPE lvc_t_cell . "
DATA gt_selrow TYPE lvc_t_row . "
"""""""""""""""""""""""Define Macro"""""""""""""""""""""""""""""""""
*&---------------------------------------------------------------------*
*& 包含 YYTEST003_SEL
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP 1 .
PARAMETERS : p_mail AS CHECKBOX .
SELECTION-SCREEN END OF BLOCK b1 .
*&---------------------------------------------------------------------*
*& 包含 YYTEST003_MAIN
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Initialization
*----------------------------------------------------------------------*
INITIALIZATION.
stbl-row = 'X'.
stbl-col = 'X'.
*----------------------------------------------------------------------*
* At Selection Screen
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
AT SELECTION-SCREEN .
*----------------------------------------------------------------------*
* Start Of Selection
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM frm_get_data.
IF gt_item[] IS NOT INITIAL .
CALL SCREEN 9000.
ENDIF.
*----------------------------------------------------------------------*
* End Of Selection
*----------------------------------------------------------------------*
END-OF-SELECTION .
*&---------------------------------------------------------------------*
*& 包含 YYTEST003_CLASS
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Class LCL_EVENT_RECEIVER
*&---------------------------------------------------------------------*
* Text
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS handle_double_click FOR EVENT double_click OF cl_gui_alv_grid "定义类中的方法---双击
IMPORTING e_row e_column es_row_no. "
" "
METHODS handle_onf4 FOR EVENT onf4 OF cl_gui_alv_grid "定义类中的方法---F4帮助
IMPORTING e_fieldname es_row_no er_event_data . "
"
METHODS handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid "定义类中的方法---ALV状态栏按钮
IMPORTING e_object e_interactive . "
"
METHODS handle_user_command FOR EVENT user_command OF cl_gui_alv_grid "定义类中的方法---按钮触发方法
IMPORTING e_ucomm . "
"
METHODS handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid "定义类中的方法---数据修改时的方法
IMPORTING er_data_changed e_onf4 e_onf4_before e_onf4_after e_ucomm. "
METHODS handle_data_changed_finished FOR EVENT data_changed_finished OF cl_gui_alv_grid
IMPORTING e_modified et_good_cells.
ENDCLASS. "LCL_EVENT_RECEIVER
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_double_click.
MESSAGE '双击' TYPE 'S'. " e_row e_column es_row_no
CALL METHOD alv_grid->get_selected_cells
IMPORTING
et_cell = GT_SELCELL
.
ENDMETHOD. "HANDLE_DOUBLE_CLICK双击后触发该段代码,可接T-CODE跳转等功能
METHOD handle_onf4.
DATA: ls_modi TYPE lvc_s_modi,
lt_ret_tab TYPE TABLE OF ddshretval.
IF e_fieldname = 'REPTEXT'.
READ TABLE gt_item INDEX es_row_no-row_id ASSIGNING FIELD-SYMBOL(<fs_item>).
* CHECK sy-subrc = 0.
IF sy-subrc = 0.
.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'DDTEXT'
value_org = 'S'
TABLES
value_tab = gt_item
return_tab = lt_ret_tab.
IF sy-subrc = 0.
READ TABLE lt_ret_tab INDEX 1 ASSIGNING FIELD-SYMBOL(<fs_ret>).
IF sy-subrc = 0.
<fs_item>-REPTEXT = <fs_ret>-FIELDVAL .
<fs_item>-SCRTEXT_S = <fs_ret>-FIELDVAL .
<fs_item>-SCRTEXT_M = <fs_ret>-FIELDVAL .
<fs_item>-SCRTEXT_L = <fs_ret>-FIELDVAL .
ENDIF.
ENDIF.
er_event_data->m_event_handled = 'X'.
CALL METHOD alv_grid->refresh_table_display
EXPORTING
is_stable = stbl.
ENDIF .
ENDIF .
ENDMETHOD. "需在ALV中调用触发一般与filedcat中的 f4availabl 参数同用
METHOD handle_toolbar. "在ALV状态栏增加按钮,一般是汇总按钮,新增后的按钮可触发HANDLE_USER_COMMAND方法
DATA: ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type. "分隔符
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 'ADD' TO ls_toolbar-function. "功能码
MOVE icon_insert_row TO ls_toolbar-icon. "图标
MOVE '插入行' TO ls_toolbar-quickinfo.
MOVE '插入行' TO ls_toolbar-text. "显示名称
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 'DEL' TO ls_toolbar-function. "功能码
MOVE icon_delete_row TO ls_toolbar-icon. "图标
MOVE '刪除行' TO ls_toolbar-quickinfo.
MOVE '刪除行' TO ls_toolbar-text. "显示名称
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "在ALV状态栏增加按钮,一般是汇总按钮
METHOD handle_user_command.
CASE e_ucomm.
WHEN 'ADD'.
APPEND INITIAL LINE TO gt_item .
WHEN 'DEL'.
CALL METHOD alv_grid->get_selected_rows
IMPORTING
et_index_rows = gt_selrow.
LOOP AT gt_selrow INTO DATA(gs_selrow).
DELETE gt_item[] INDEX gs_selrow-index .
ENDLOOP .
WHEN OTHERS.
ENDCASE.
CALL METHOD alv_grid->refresh_table_display
EXPORTING
is_stable = stbl.
ENDMETHOD. "一般与HANDLE_TOOLBAR同用
METHOD handle_data_changed. "er_data_changed e_onf4 e_onf4_before e_onf4_after e_ucomm.
"用途在于检查这行是否能修改,数据是否合法
LOOP AT er_data_changed->mt_good_cells ASSIGNING FIELD-SYMBOL(<ls_good>).
ENDLOOP .
ENDMETHOD. "数据修改后触发,一般用在数据联动修改如数量字段修改,同时联动修改金额字段
METHOD handle_data_changed_finished.
"用途在于修改后的数据联动,
DATA: ls_et_good_cell TYPE lvc_s_modi.
LOOP AT et_good_cells INTO ls_et_good_cell.
READ TABLE gt_item ASSIGNING FIELD-SYMBOL(<fs_item>) INDEX ls_et_good_cell-row_id.
IF sy-subrc = '0'.
IF ls_et_good_cell-fieldname = 'SCRTEXT_L'.
<fs_item>-SCRTEXT_M = <fs_item>-SCRTEXT_L .
<fs_item>-SCRTEXT_S = <fs_item>-SCRTEXT_L .
ENDIF.
ENDIF.
ENDLOOP.
CALL METHOD alv_grid->refresh_table_display
EXPORTING
is_stable = stbl.
ENDMETHOD.
ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATION
*&---------------------------------------------------------------------*
*& 包含 YYTEST003_PBO
*&---------------------------------------------------------------------*
MODULE status_9000 OUTPUT.
SET PF-STATUS 'STANDARD'.
SET TITLEBAR '9000'.
DATA(gv_frist) = 'X' . "判断是不是第一次运行,自添加按钮需要刷新才能显示
PERFORM frm_display_alv.
IF gv_frist = 'X'.
CALL METHOD alv_grid->refresh_table_display "增加按钮需要刷新才会显示出来,否则无法显示。
EXPORTING
is_stable = stbl.
gv_frist = '0' ."判断是否为第一次,为第一次则刷新
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& 包含 YYTEST003_PAI
*&---------------------------------------------------------------------*
MODULE user_command_9000 INPUT.
gv_code = ok_code .
CASE ok_code.
WHEN 'BACK'.
CLEAR: gt_item.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
CLEAR: gt_item.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& 包含 YYTEST003_FRM
*&---------------------------------------------------------------------*
FORM frm_display_alv .
CLEAR: gt_fieldcat,gs_layout,it_toolbar_excluding.
gs_variant-report = sy-repid.
gs_variant-handle = '0001'.
IF alv_grid IS INITIAL .
******实例化 容器
CREATE OBJECT gs_parent
EXPORTING
container_name = 'ALV'. " 界面中的一个CUNSTOMER CONTROL控件 用于存放类对象。
"使用这个控件把名称赋值给CONTAINER_NAME
******将alv植入到容器中
CREATE OBJECT alv_grid
EXPORTING
i_parent = gs_parent.
PERFORM prepare_field_catalog CHANGING gt_fieldcat.
PERFORM prepare_layout CHANGING gs_layout.
PERFORM toolbar_excluding_item CHANGING it_toolbar_excluding. "ALV按钮排除
CALL METHOD alv_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
i_save = 'A'
i_default = 'X'
is_variant = gs_variant
it_toolbar_excluding = it_toolbar_excluding
CHANGING
it_outtab = gt_item
it_fieldcatalog = gt_fieldcat.
CREATE OBJECT event_receiver. "创建事件
SET HANDLER event_receiver->handle_double_click FOR alv_grid. "双击事件
SET HANDLER event_receiver->handle_onf4 FOR alv_grid. "F4帮助事件
SET HANDLER event_receiver->handle_toolbar FOR alv_grid. "ALV状态栏
SET HANDLER event_receiver->handle_user_command FOR alv_grid. "按钮事件
SET HANDLER event_receiver->handle_data_changed FOR alv_grid. "修改事件
SET HANDLER event_receiver->handle_data_changed_finished FOR alv_grid. "数据修改后触发事件
gt_t_f4 = VALUE #( BASE gt_t_f4 ( fieldname = 'REPTEXT' register = 'X' getbefore = 'X' chngeafter = 'X' ) ) .
CALL METHOD alv_grid->register_f4_for_fields "注册F4帮助事件
EXPORTING
it_f4 = gt_t_f4.
CALL METHOD alv_grid->register_edit_event "注册编辑事件,否则不会触发更新事件
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD alv_grid->set_frontend_layout
EXPORTING
is_layout = gs_layout.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = alv_grid.
CALL METHOD cl_gui_cfw=>flush.
ELSE.
CALL METHOD alv_grid->set_frontend_layout
EXPORTING
is_layout = gs_layout.
CALL METHOD alv_grid->refresh_table_display
EXPORTING
is_stable = stbl.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PREPARE_FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_FIELDCAT text
*----------------------------------------------------------------------*
FORM prepare_field_catalog CHANGING p_gt_fieldcat TYPE lvc_t_fcat.
DATA ls_fcat TYPE lvc_s_fcat.
DEFINE set_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = &1. "字段
ls_fcat-coltext = &9. "描述
ls_fcat-key = &3. "主键
ls_fcat-edit = &4. "可编辑
ls_fcat-ref_table = &5. "参考表
ls_fcat-ref_field = &6. "参考字段
ls_fcat-icon = &7. "以圖標輸出
* ls_fcat-NO_ZERO = &8. "前导0
ls_fcat-outputlen = &2. "列的字符宽度
ls_fcat-f4availabl = &8.
APPEND ls_fcat TO p_gt_fieldcat.
END-OF-DEFINITION.
set_fcat 'ROLLNAME ' '' '' '' 'DD04T' 'ROLLNAME ' '' '' ''.
set_fcat 'DDLANGUAGE' '' '' '' 'DD04T' 'DDLANGUAGE' '' '' ''.
set_fcat 'AS4LOCAL ' '' '' '' 'DD04T' 'AS4LOCAL ' '' '' ''.
set_fcat 'AS4VERS ' '' '' '' 'DD04T' 'AS4VERS ' '' '' ''.
set_fcat 'DDTEXT ' '' '' '' 'DD04T' 'DDTEXT ' '' '' ''.
set_fcat 'REPTEXT ' '' '' '' 'DD04T' 'REPTEXT ' '' 'X' ''.
set_fcat 'SCRTEXT_S ' '' '' '' 'DD04T' 'SCRTEXT_S ' '' '' ''.
set_fcat 'SCRTEXT_M ' '' '' '' 'DD04T' 'SCRTEXT_M ' '' '' ''.
set_fcat 'SCRTEXT_L ' '' '' 'X' 'DD04T' 'SCRTEXT_L ' '' '' ''.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PREPARE_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prepare_layout CHANGING p_gs_layout TYPE lvc_s_layo.
p_gs_layout-zebra = 'X'. "斑馬紋顯示
p_gs_layout-sel_mode = 'A'. "選擇模式
p_gs_layout-cwidth_opt = 'X'. "最佳列寬
ENDFORM.
FORM toolbar_excluding_item CHANGING pt_exclude TYPE ui_functions.
DATA ls_exclude TYPE ui_func.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
APPEND ls_exclude TO pt_exclude.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_get_data .
SELECT * FROM dd04t INTO TABLE gt_item UP TO 30 ROWS WHERE rollname LIKE 'Z%' AND ddlanguage = '1'.
ENDFORM.
总结
每个人都有自己习惯的模板,并不是说非要用这个,正所谓”天下武功唯快不破“,有这么多有趣的东西值得我们去研究,模板不过是为了加快进度和节约无效的时间。
如果这个对你节约时间有那么一点点的帮助,那就太棒啦。
post SAP-Garson
原文链接:https://blog.csdn.net/wjc1123212438/article/details/119962441文章来自于网络,如果侵犯了您的权益,请联系站长删除!