首页 > 其他分享 >在 ALV 报表中使用 CL_SALV 类时,如何处理多行?

在 ALV 报表中使用 CL_SALV 类时,如何处理多行?

时间:2024-11-12 14:17:00浏览次数:3  
标签:rows 类时 selections CL lt ALV get col row

举个例子: 我设置了显示 “全选按钮”。

需要选择几行,在这种情况下,已经选择了 2 行,并使用这 2 行执行了一个调用事务。但还有其他事情要做,因为 ALV 报告中的所有行都执行了调用事务。
我找到了以下内容:

layout-box_fname = “字段名”。
layout-sel_mode = 'A'。

但这种功能要在 CL_GUI_ALV_GRID 中使用。

CL_SALV 类中,也可以设置选择模式:

lo_selections = lo_salv->get_selections( ).

* set selection mode
lo_selections->set_selection_mode( if_salv_c_selection_mode=>row_column ). " 支持行列选择

然后在对应的行进行选中,支持获取选中的行做处理:

DATA: lt_rows TYPE salv_t_row,
          ls_rows TYPE i.
          
DATA: lo_selections TYPE REF TO cl_salv_selections       

lo_selections = lo_salv->get_selections( ).
lt_rows = lo_selections->get_selected_rows( ).


IF lt_rows IS INITIAL.
    MESSAGE '请选中行再进行保存' TYPE 'S' DISPLAY LIKE 'E'.
    RETURN.
ENDIF.


FIELD-SYMBOLS: <fs_out> TYPE LINE OF lo_report->gt_out.
LOOP AT lt_rows INTO ls_rows.
      READ TABLE lo_report->gt_out ASSIGNING <fs_out> INDEX ls_rows.
      IF sy-subrc = 0.
      " 你的选择逻辑
      ENDIF.
ENDLOOP.

也可以看官方 Demo 报表:SALV_TEST_TABLE_SELECTIONS,在 FORM form get_selections 中有类似的逻辑。

*&---------------------------------------------------------------------*
*&      Form  get_selections
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form get_selections .

  data: lr_selections type ref to cl_salv_selections.

  data: lt_rows   type salv_t_row,
        lt_cols   type salv_t_column,
        ls_cell   type salv_s_cell.

  data: l_row        type i,
        l_col        type lvc_fname,
        l_row_string type char128,
        l_col_string type char128,
        l_row_info   type char128,
        l_col_info   type char128.

  lr_selections = gr_table->get_selections( ).
  lt_rows = lr_selections->get_selected_rows( ).
  lt_cols = lr_selections->get_selected_columns( ).
  ls_cell = lr_selections->get_current_cell( ).

*... 行
  clear l_row_info.
  loop at lt_rows into l_row.
    write l_row to l_row_string left-justified.
    concatenate l_row_info l_row_string into l_row_info separated by space.
  endloop.
  if sy-subrc eq 0.
    message i000(0k) with text-i02 l_row_info.
  endif.

*... 列
  clear l_col_info.
  loop at lt_cols into l_col.
    write l_col to l_col_string left-justified.
    concatenate l_col_info l_col_string into l_col_info separated by space.
  endloop.
  if sy-subrc eq 0.
    message i000(0k) with text-i03 l_col_info.
  endif.

*... 单元格
  if ls_cell is not initial.
    message i000(0k) with text-i02 ls_cell-row text-i03 ls_cell-columnname.
  endif.

endform.                    " get_selections

标签:rows,类时,selections,CL,lt,ALV,get,col,row
From: https://blog.csdn.net/SAP_yu/article/details/143712587

相关文章

  • Oracle数据库归档模式的开启和关闭
       一、Oracle环境 Oracle服务器:oracle11goracle版本:11.2.0.1.0操作系统版本:RedHatEnterpriseLinuxServerrelease7.6(Maipo) 二、归档模式介绍    oracle是款高安全性的数据库,刚安装好的数据库一般没有开启归档模式,我们需要开启归档模式,特别是业务数......
  • 华为交换机使用高级ACL限制不同网段的用户互访案例
    1.组网需求如下图网络拓扑,某公司通过交换机LSW1实现各部门之间的互连。为方便管理网络,管理员为公司的研发部和市场部规划了两个网段的IP地址。同时为了隔离广播域,又将两个部门划分在不同VLAN之中。现要求LSW1既能够限制两个网段之间互访,又不影响两个部门访问外网。2.配置思......
  • 模态内重叠优化,简单有效的CLIP微调方法 | BMVC'24 Oral
    来源:晓飞的算法工程笔记公众号,转载请注明出处论文:CLIPAdaptationbyIntra-modalOverlapReduction论文地址:https://arxiv.org/abs/2409.11338创新点提出一种基于轻量级适配的新方法,直接在图像空间中减少CLIP中的模态内重叠(IMO)。新特征与任何利用缓存模型的无训练......
  • IDEA -- 新建的文件没办法import class
    背景: 代码要添加新模块,复制了别的模块代码来做demo改成自己名字的时候发现,明明创建好的类却没办法improtclass,一直报错,手动添加类的路径也报错,并且伴随着类似 Cannotaccesscom.xxx 的报错原因:  可能是再复制别的类的代码的时候,频繁修改别的类名成自己需......
  • .NET 公共语言运行时(Common Language Runtime,CLR)
    .NET的公共语言运行时(CommonLanguageRuntime,CLR)是.NETFramework和.NETCore的核心组件,负责运行和管理.NET程序。CLR提供了一个高效、安全和稳定的执行环境,支持多种编程语言并处理各种系统级的任务。下面是对.NETCLR的详细介绍,包括其功能、架构、以及如何与.NET应......
  • 导图-Oracle基础之网络监听器
    关于Jady:★工作经验:近20年IT技术服务经验,熟悉业务又深耕技术,为业务加持左能进行IT技术规划,右能处理综合性故障与疑难杂症;★成长历程:网络运维、主机/存储运维、程序/数据库开发、大数据运维、数据库运维、数据管理;★擅长技术:Oracle/MySQL/PGSQL/SQLServer/ClickHouse/Elastic......
  • PCL 点云分割 分割多个平面
    目录一、概述1.1原理1.2实现步骤1.3应用场景二、代码实现2.1关键函数2.1.1RANSAC平面分割2.1.2剔除已分割的平面2.1.3可视化点云2.2完整代码三、实现效果PCL点云算法汇总及实战案例汇总的目录地址链接:PCL点云算法与项目实战案例汇总(长期更新)一、概述  ......
  • PCL 点云分割 Ransac分割3D球体
    目录一、概述1.1原理1.2实现步骤1.3应用场景二、代码实现2.1关键函数2.1.1球体拟合2.1.2可视化2.2完整代码三、实现效果PCL点云算法汇总及实战案例汇总的目录地址链接:PCL点云算法与项目实战案例汇总(长期更新)一、概述        在点云数据处理中,RANSAC(随......
  • 8.100ASK_T113-PRO 应用程序驱动LED灯 (/sys/class/gpio)
    前言1.利用LINUX内核的GPIO子统驱动LED灯.2. 编写应用程序控制LED灯的亮灭.3.不用写驱动程序,只写应用程序.1.原理图使用的是PE12这个IO口,计算一个IO编号: PE=4*32, IO编号=4*32+12=140.注解一下:PAX= 0*32+XPBX= 1*32+XPCX= 2*32+XPD......
  • 使用ob_tools包收集分析oceanbase数据库oracle租户缓慢sql语句
    概述1、手册目的:本手册旨在提供一种系统化的方法论,以便发现和分析慢SQL语句。通过使用ob_tools包,收集和分析在交付期间,应用程序在不同场景下进行压测时所产生的慢SQL语句,从而实现性能调优和优化建议。2、文档内容:本手册包含以下几个主要部分:1.ob_tools包内存储过程和函数介......