FUNCTION 'REUSE_ALV_GRID_DISPLAY'常用参数的详细描述

本文介绍如何使用 ABAP 语言定制 ALV (Application List Viewer) 报表,涵盖参数设置、字段定义及布局配置等核心内容,并提供实用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 IMPORT参数设置包括如下:

     1.Parameter Name:参数名称,接口调用时对其赋值,作为一个数据对象在程序中使用。

     2.Type Spe:类型选项,与数据定义时的LIKE、TYPE作用一致。

     3.Reference Type:参数参考类型,可为数据字典对象。

     4.Default Value:缺省值,若输入字符串时需要加下引号。

     5.Optional:可选的,该选项定义是否可以修改参数值,若未选中,相当于定义该参数为一个常量;若选中,该参数可以在程序中重新赋值。

     6.Pass Value:定义该参数是否为必须项,若未选中,调用该FUNCTION时此参数为必须输入荐

     7.Short Text:该参数的短文本描述。

     8.Long Text:单击对应按钮可以设置参数详细描述


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
    i_interface_check           = ''                "接口一致性检查
    i_callback_program          = sy-repid          "当前程序名
    is_layout                   = layout            "输出样式
    it_fieldcat                 = fieldcat[]        "字段定义描述表
    i_callback_pf_status_set    = 'PF_STATUS_SET'   "触发事件调用子程序
    i_callback_user_command     = 'USER_COMMAND'    "鼠标事件操作子程序
    it_events                   = i_events[]        "出口程序触发事件
    i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE' "ALV输出表头设置
    i_grid_settings             = wl_lvc_s_glay     "打印表头设置
    it_sort                     = sortable[]        "排序设置
TABLES
    t_outtab                    = ig_out
EXCEPTIONS
    program_error               = 1

    others                      = 2.

常用属性:(赋值''中内容必须为大写)

1. Fieldcat

data: fieldcat type slis_t_fieldcat_alv with header line.

it_fieldcat = fieldcat[]

属性 (用来定义表单中的各个列的相关信息)

Fieldcat-col_pos = n. 输出列
Fieldcat-tabname = 'FIELDNAME'. 对应的内表字段名
Fieldcat-seltext_s/m/l = '列名'. 输出列文本 (_s:短文本 _l:长文本)
Fieldcat-emphasize = 'CX10'. 带有颜色的高亮列 (其中X=(1-7) 颜色同format)
Fieldcat-hotspot = 'X'. 作为热点显示 可触发鼠标触发事件
Fieldcat-currency = 'CURRKEY'. 表 TCURX 中的货币名称
Fieldcat-quantity(3) 计量单位
Fieldcat-qfieldname 参考计量单位的字段名称
Fieldcat-round = n. 四舍五入至小数位数下 n 位
Fieldcat-exponent = n. 浮点数的幂指数为n
Fieldcat-key = 'X'. 关键字段
Fieldcat-icon = 'X'. 作为图标输出
Fieldcat-symbol = 'X'. 输出作为符号
Fieldcat-checkbox = 'X'. 作为复选框输出
Fieldcat-just = SPACE, 'R', 'L', 'C'. 对齐方式
Fieldcat-lzero = 'X'. 输出前导零
Fieldcat-no_sign = 'X'. 输出抑制符号
Fieldcat-no_zero = 'X'. 为输出隐藏零
Fieldcat-edit_mask = SPACE, mask.. 输出为mask的模式
Fieldcat-fix_column = 'X'. 固定列
Fieldcat-do_sum = 'X'. 总计列值总和
Fieldcat-no_out = 'X'. 列不输出
Fieldcat-tech = 'X'. 该字段为技术字段
Fieldcat-outputlen = n 列的字符宽度为n
Fieldcat-decimals_out = n 能控制小数点的位数为n
Fieldcat-datatype = C,I,N… 定义数据类型

2. Layout

data: layout type slis_layout_alv .

is_layout = layout

属性 (用于定义ALV表单的相关格式、属性)

info_fieldname = 'LINE_COLOR'. 设置特殊行颜色
(将LINE_COLOR增加到内表字段,写'CX10'到特殊行的LINE_COLOR, X为颜色值)
colwidth_optimize = 'X'. 优化列宽设置
no_colhead = 'X'. 不显示列名
no_vline = 'X'. 不显示列间竖线
zebra
f2code = '&ETA'. 设置触发弹出详细信息窗口的功能码,这里是双击
no_vline 这个用来设置列间隔线
detail_initial_lines
detail_popup 是否弹出详细信息窗口
detail_titlebar 设置弹出窗口的标题栏
totals_text
totals_only
group_change_edit
header_text

 

上面的有点复杂,举个例子:

这就是hotspot,只需要设置一下就可以了:

CLEAR LC_FCAT.
  LC_FCAT-FIELDNAME CNS_VBELN.              "VBELN
  LC_FCAT-SELTEXT_L TEXT-H01.               "发票号
  LC_FCAT-HOTSPOT CNS_X.                    “默认'X'
  LC_FCAT-DATATYPE  CNS_CHAR.
  APPEND LC_FCAT TO IT_FCAT. 

调用函数:

 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        I_CALLBACK_PROGRAM       'ZFICOXX'
        IS_LAYOUT                G_LAYOUT
        IT_FIELDCAT              G_ALV_FIELDCAT[]
        I_SAVE                   G_SAVE
        IS_VARIANT               GS_VERIANT
        I_CALLBACK_PF_STATUS_SET CNS_PF_STATUS ”这就是TOOLBAR,可以SE41复制一个标准的然后去修改SET PF-STATUS 'ZORB001'.
        I_CALLBACK_USER_COMMAND  CNS_COMMAND “此form设置了点击凭证号就跳到FB03的界面,参考下面的form
      TABLES
        T_OUTTAB                 IT_DATA_TAB3.

 

FORM USER_COMMAND USING L_UCOMM LIKE SY-UCOMM
                        L_SELFIELD TYPE SLIS_SELFIELD.
DATA LV_GJAHR TYPE BSEG-GJAHR.
    LV_GJAHR SY-DATUM+0(4).
  CASE L_UCOMM.
    WHEN '&IC1'.
      CASE L_SELFIELD-FIELDNAME.
        WHEN 'BELNR'.
          SET PARAMETER ID 'BLN' FIELD L_SELFIELD-VALUE.
          SET PARAMETER ID 'BUK' FIELD P_BUKRS.
          SET PARAMETER ID 'GJR' FIELD LV_GJAHR.
          CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
      ENDCASE.
  ENDCASE.

ENDFORM.          

 

 

 

 



<think>嗯,用户需要了解在SAP ABAP中使用REUSE_ALV_GRID_DISPLAY函数模块时设置整行颜色的方法。这是一个比较专业的ABAP ALV开发问题。 用户可能正在开发一个需要视觉区分的报表,比如状态差异显示或重要数据突出。用户身份应该是ABAP开发人员,可能遇到业务部门对报表可读性的要求。 从技术角度看,REUSE_ALV_GRID_DISPLAY确实支持行颜色设置,但需要理解其字段目录和行颜色参数的特殊处理方式。关键点在于: 1. 需要在字段目录维护颜色字段 2. 使用LVC_S_COLOR结构填充颜色值 3. 通过内表行属性传递颜色代码 用户可能没意识到颜色字段需要特殊命名"COLOR",且必须包含在字段目录中。另外容易忽略的是颜色结构中的"INT"字段必须设为'1'才能生效。 考虑到用户后续可能遇到的问题,应该补充说明: - 颜色优先级规则(单元格颜色会覆盖行颜色) - 动态改变颜色的方法 - 常见错误排查点 准备在回答中提供完整代码示例,特别是颜色结构填充和字段目录配置部分。对于常见问题,比如颜色不生效的情况,也要给出检查建议。 相关问题设计要覆盖用户可能延伸的需求,比如单元格着色、条件格式等进阶用法,这样能帮助用户系统掌握ALV格式控制技术。</think>在 SAP ABAP 中使用 `REUSE_ALV_GRID_DISPLAY` 设置整行颜色,需通过 **字段目录** 和 **行颜色属性** 实现。以下是详细步骤: --- ### 关键步骤 1. **定义颜色字段** 在输出内表中添加一个字段,类型为 `LVC_S_COLOR`(或 `SLIS_T_SPECIALCOL_ALV` 兼容旧版本),用于存储颜色信息。 ```abap TYPES: BEGIN OF ty_data, matnr TYPE matnr, " 物料号 maktx TYPE maktx, " 物料描述 color TYPE lvc_s_color, " 颜色字段 END OF ty_data. DATA: gt_data TYPE TABLE OF ty_data. ``` 2. **填充颜色值** 在准备数据时,为需要着色的行填充颜色属性: - `COL`:颜色代码(如 `'C510'` 表示红色) - `INT`:必须设为 `'1'`(启用颜色) - `INV`:反转颜色(通常为 `0`) ```abap LOOP AT gt_data ASSIGNING FIELD-SYMBOL(<fs_data>). IF <fs_data>-matnr = '高危物料'. <fs_data>-color = VALUE #( col = 'C510' int = '1' inv = 0 ). " 红色 ENDIF. ENDLOOP. ``` 3. **配置字段目录** 在 `REUSE_ALV_GRID_DISPLAY` 的字段目录中,将颜色字段标记为 `ROW_COLOR`: ```abap DATA: gt_fieldcat TYPE slis_t_fieldcat_alv. PERFORM build_fieldcatalog CHANGING gt_fieldcat. FORM build_fieldcatalog CHANGING ct_fieldcat TYPE slis_t_fieldcat_alv. APPEND VALUE #( fieldname = 'COLOR' ref_field = 'COLOR' ref_table = 'LVC_S_COLOR' coltext = '行颜色' tech = 'X' " 技术字段,不显示 rowcolor = 'X' " 关键:标记为行颜色字段 ) TO ct_fieldcat. ENDFORM. ``` 4. **调用 ALV 函数** 传递字段目录和颜色字段: ```abap CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING it_fieldcat = gt_fieldcat TABLES t_outtab = gt_data. ``` --- ### 注意事项 - **颜色代码**:SAP 预定义颜色代码(如 `C510`=红, `C530`=绿, `C520`=黄),完整列表见事务码 `SE38` 执行程序 `SAPCOLOR`[^1]。 - **优先级规则**:若同时设置了单元格颜色,优先级高于行颜色。 - **旧版本兼容**:如系统不支持 `LVC_S_COLOR`,可用 `SLIS_SPECIALCOL_ALV` 结构: ```abap color TYPE slis_specialcol_alv. <fs_data>-color-color = 'C510'. <fs_data>-color-nokeycol = 'X'. " 关键属性 ``` --- ### 常见问题排查 1. **颜色未生效** - 检查字段目录中 `rowcolor = 'X'` 是否设置。 - 确认 `INT = '1'` 且颜色代码正确。 2. **字段未隐藏** 确保字段目录中 `tech = 'X'` 隐藏技术字段。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值