目录1、什么是 Function ALV核心定位两大核心函数2、Function ALV 核心函数详解关键参数a. I_SAVE 参数值详解b. 必传参数底线c. 异常处理拓展3、标准报表 5 步法步骤 1定义并填充字段目录 (gt_fieldcat)方式1手动填写方式2使用宏简化字段目录步骤2设置输出布局步骤 3回调 USER_COMMAND步骤4定义回调 SET_PF_STATUS步骤5主程序调用4、Popup 弹出 ALV 窗口布局设置5、常用字段目录属性1、什么是 Function ALVFunction ALVFM ALV是 SAP ABAP经典 ALV 开发方式通过调用系统标准函数模块快速生成表格 / 列表样式的报表是 ABAP 开发中使用率最高的报表技术之一。核心定位面向快速开发无需面向对象编程基础纯函数调用即可实现面向标准需求适合简单报表、弹窗选择、数据预览等场景兼容全版本 SAPECC、S4HANA 全支持无版本兼容问题两大核心函数函数名展示形式适用场景字段目录类型REUSE_ALV_GRID_DISPLAY_LVC网格表格带边框、可编辑主流报表、数据维护、弹窗LVC_T_FCAT推荐REUSE_ALV_LIST_DISPLAY纯文本列表简单打印、纯文本展示SLIS_T_FIELDCAT_ALV2、Function ALV 核心函数详解CALL FUNCTION REUSE_ALV_GRID_DISPLAY_LVC EXPORTING i_callback_program sy-repid 当前程序名固定写法 i_callback_user_command USER_COMMAND 用户交互回调FORM i_callback_pf_status_set SET_PF_STATUS 工具栏回调FORM is_layout_lvc gs_layout ALV布局配置 it_fieldcat_lvc gt_fieldcat[] 字段目录列配置 i_save A 布局变式保存权限 TABLES t_outtab gt_out[] 输出数据内表 EXCEPTIONS program_error 1 OTHERS 2.关键参数a. I_SAVE 参数值详解A允许用户全局保存 本地保存布局最常用U仅允许用户本地保存布局X仅允许全局保存布局空不允许保存布局b. 必传参数底线最小化调用必须传I_CALLBACK_PROGRAM、IS_LAYOUT_LVC、IT_FIELDCAT_LVC、T_OUTTAB其余参数按需添加。c. 异常处理拓展IF SY-SUBRC 0. MESSAGE ALV展示失败 TYPE E. ENDIF.3、标准报表 5 步法步骤 1定义并填充字段目录 (gt_fieldcat)方式1手动填写FORM frm_set_fieldcat. DATA: ls_fcat TYPE lvc_s_fcat. CLEAR ls_fcat. ls_fcat-fieldname MATNR. 字段名 ls_fcat-coltext 物料编码. 列描述 ls_fcat-ref_table MARA. 参考表 ls_fcat-ref_field MATNR. 参考字段自动获取属性 APPEND ls_fcat TO gt_fieldcat. CLEAR ls_fcat. ls_fcat-fieldname MAKTX. ls_fcat-coltext 物料描述. APPEND ls_fcat TO gt_fieldcat. ENDFORM.方式2使用宏简化字段目录DEFINE m_fcat. CLEAR ls_fcat. ls_fcat-fieldname 1. ls_fcat-coltext 2. ls_fcat-ref_table 3. ls_fcat-ref_field 4. APPEND ls_fcat TO gt_fieldcat. END-OF-DEFINITION. FORM frm_set_fieldcat. DATA: ls_fcat TYPE lvc_s_fcat. m_fcat MATNR 物料编码 MARA MATNR. m_fcat MAKTX 物料描述 MAKT MAKTX. ENDFORM.步骤2设置输出布局DATA: gs_layout TYPE lvc_s_layo. gs_layout-zebra X. 斑马纹提升可读性 gs_layout-cwidth_opt X. 自动优化列宽必开 gs_layout-sel_mode A. 选择模式A多行选择 gs_layout-box_fname SEL. 复选框字段名 gs_layout-no_toolbar . 显示工具栏空格显示X隐藏 gs_layout-grid_title 物料报表. ALV标题 gs_layout-no_hgrln X. 隐藏合计行选择模式 SEL_MODE 参数A多行选择最常用B单行选择C单元格选择D多行列选择弹窗专用步骤 3回调 USER_COMMAND处理用户双击或点击自定义按钮。FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. CASE r_ucomm. WHEN IC1. 双击事件原代码保留 READ TABLE gt_out INTO gs_out INDEX rs_selfield-tabindex. IF sy-subrc 0. SET PARAMETER ID MAT FIELD gs_out-matnr. CALL TRANSACTION MM03 AND SKIP FIRST SCREEN. ENDIF. WHEN UPLOAD. 自定义按钮原代码保留 PERFORM frm_upload_data. 拓展刷新ALV WHEN REFRESH. PERFORM frm_get_data. 重新获取数据 rs_selfield-refresh X. 强制刷新ALV WHEN OTHERS. ENDCASE. ENDFORM.注意rs_selfield-refresh X 是 ALV 刷新的关键修改数据后必须加。步骤4定义回调 SET_PF_STATUSSET PF-STATUS 是用来设置 GUI 状态的。包括为菜单栏、应用程序工具栏、 功能键这些增加设置。一般新创建的程序是没有 GUI 状态的此时可以有两种方式快速创建①复制已有的程序中的 GUI 状态要注意 GUI 状态名称②进入 SE80 搜索函数组 SLVC_FULLSCREEN 从左侧对象清单中展开 “ GUI 状态”复制标准的 “STANDARD_FULLSCREEN”删除ALV工具栏的按钮使用 EXCLUDING 关键字FORM sub_status_set USING rt_extab TYPE slis_t_extab. DATA: ls_extab TYPE slis_extab. DATA: lv_text TYPE string. IF rb_r X. ls_extab-fcode SAVE. APPEND ls_extab TO rt_extab. ELSEIF rb_c X. lv_text 生成. ls_extab-fcode PRINT. APPEND ls_extab TO rt_extab. ELSE. lv_text 保存. ENDIF. SET PF-STATUS STATUS01 EXCLUDING rt_extab. 排除哪些按钮 SET TITLEBAR TITLE. ENDFORM. SUB_STATUS_SET步骤5主程序调用START-OF-SELECTION. PERFORM frm_get_data. 获取数据到 GT_OUT PERFORM frm_set_fieldcat. 设置字段目录 PERFORM frm_set_layout. 设置布局 CALL FUNCTION REUSE_ALV_GRID_DISPLAY_LVC EXPORTING i_callback_program sy-repid i_callback_user_command USER_COMMAND i_callback_pf_status_set SET_PF_STATUS is_layout_lvc gs_layout it_fieldcat_lvc gt_fieldcat[] i_save A TABLES t_outtab gt_out[].4、Popup 弹出 ALV 窗口要让ALV以弹窗形式显示需要在布局和GUI状态上稍作调整。布局设置设置 gs_layout-sel_mode D (允许选择多行)。设置 gs_layout-smalltitle X 使标题更紧凑。GUI状态使用SAP标准的状态 STANDARD_POPUP 或自定义一个只有“全选”、“取消全选”的简易状态。FORM set_pf_status_popup USING rt_extab TYPE slis_t_extab. SET PF-STATUS POPUP_STATUS. 自定义一个弹出窗口用的GUI状态 ENDFORM. * 调用方式和上面一致只是回调函数不同。 CALL FUNCTION REUSE_ALV_GRID_DISPLAY_LVC EXPORTING i_callback_program sy-repid i_callback_user_command USER_COMMAND_POPUP i_callback_pf_status_set SET_PF_STATUS_popup is_layout_lvc gs_layout it_fieldcat_lvc gt_fieldcat i_screen_start_column 10 弹窗起始列 i_screen_start_line 5 弹窗起始行 i_screen_end_column 100 弹窗结束列 i_screen_end_line 30 弹窗结束行 TABLES t_outtab gt_out.5、常用字段目录属性属性名用途示例fieldname内表字段名CHECKBOXcoltext列标题选择ref_table参考表用于F1帮助和自动格式LIPSref_field参考字段POSNRoutputlen输出长度10convexit转换出口如MATN1MATN1HOTSPOT超链接下钻必须XCHECKBOX复选框XEDIT可编辑XCONVEXIT转换出口物料 / 批次专用MATN1/CHARGEMPHASIZE列颜色C500红色FIX_COLUMN固定列冻结XNO_ZERO隐藏前导零XDECIMALS小数位数2本文将持续更新