首页 > 编程问答 >如何读取 ALV 列表中保存的布局元数据?

如何读取 ALV 列表中保存的布局元数据?

时间:2024-06-24 18:28:01浏览次数:1  
标签:layout abap alv

我有一个 ALV 列表作为程序的输出,并且需要能够动态获取/提取列及其位置。

用户还可以将列/位置保存为布局以供将来使用,我希望获取已保存布局的相关信息。

我希望以内部表格的形式获取 ALV 列表的列及其位置,以便进一步使用,例如,生成 .xls 文件。


获取和保存 ALV 列表列信息

以下是获取、保存和使用 ALV 列表列信息的方法:

1. 获取 ALV 列表的列信息:

可以使用 GET_COLUMNS 方法从 ALV 网格实例中检索列信息。这将返回一个表,其中包含有关 ALV 网格中所有列的信息,例如:

  • COLUMNNAME :列名
  • TABNAME :列所属的内部表名称
  • FIELDNAME :列对应的字段名称
  • COL_POS :列的位置
  • VISIBLE :列是否可见
DATA: lo_alv_grid TYPE REF TO cl_gui_alv_grid,
      lt_columns TYPE lvc_t_scol.

" 假设 lo_alv_grid 是的 ALV 网格实例

" 获取所有列信息
CALL METHOD lo_alv_grid->get_columns
  RECEIVING
    et_columns = lt_columns.

2. 保存列信息为布局:

可以使用 SAVE_VARIANT 方法将当前 ALV 网格布局(包括列信息)保存为变式。

DATA: ls_variant TYPE disvariant.

" 设置变式属性
ls_variant-report  = sy-repid.
ls_variant-username = sy-uname.
ls_variant-variant  = 'MY_VARIANT'. " 使用自定义名称

" 保存变式
CALL METHOD lo_alv_grid->save_variant
  EXPORTING
    is_variant = ls_variant
  EXCEPTIONS
    OTHERS      = 1.

3. 加载已保存的布局:

可以使用 SET_VARIANT 方法加载以前保存的布局,这将恢复 ALV 网格的列信息和其他设置。

DATA: ls_variant TYPE disvariant.

" 设置变式属性
ls_variant-report  = sy-repid.
ls_variant-username = sy-uname.
ls_variant-variant  = 'MY_VARIANT'. " 使用保存的变式名称

" 加载变式
CALL METHOD lo_alv_grid->set_variant
  EXPORTING
    is_variant = ls_variant
  EXCEPTIONS
    OTHERS      = 1.

4. 将列信息用于其他用途:

获取 lt_columns 表后,可以使用它来执行其他操作,例如生成 .xls 文件:

" 使用 lt_columns 表中的信息生成 .xls 文件
LOOP AT lt_columns ASSIGNING FIELD-SYMBOL(<ls_column>).
  " 使用 <ls_column>-columnname、<ls_column>-col_pos 等信息
  " 将数据写入 .xls 文件
ENDLOOP.

其他注意事项:

  • 可以使用 lt_columns 表中的 tech_name 字段(而不是 columnname )来获取列的技术名称,这在处理动态列时可能很有用。
  • 可以使用 VARIANT 参数在 REFRESH_TABLE_DISPLAY 方法中指定要加载的布局。

通过遵循这些步骤,可以轻松地获取、保存和使用 ALV 列表列信息,从而实现更灵活和用户友好的报表。

标签:layout,abap,alv
From: 76286375

相关文章

  • 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【13】压力压测JMeter-性能监控jv
    持续学习&持续更新中…守破离【雷丰阳-谷粒商城】【分布式高级篇-微服务架构篇】【13】压力压测JMeter-性能监控jvisualvm压力测试概述性能指标JMeter基本使用添加线程组添加HTTP请求添加监听器启动压测&查看分析结果JMeterAddressAlreadyinuse错误解决性......
  • 快速学习SAP开发资料,SAP视频快速学习资料,ABAP零基础快速学习 为何选择学习SAP ABAP?选
    在瞬息万变的数字时代,想要在IT行业脱颖而出,掌握一项有优势技术是通往高薪的关键。SAP,作为全球企业管理和解决方案的领导者,其核心编程语言ABAP正引领着企业信息化的最前沿。现在,我们为你呈上一套精心策划的SAPABAP二次开发资料视频——你的收入改善与职业飞跃的加速器!一、为何选......
  • 【鸿蒙 HarmonyOS】尺寸设置:size/layoutWeight/constraintSize
    一、背景常见尺寸:width(宽度)、height(高度)、padding(内边距)、margin(外边距)主要整理下size(设置高宽尺寸)、layoutWeight(对子组件进行重新布局)、constraintSize(设置约束尺寸,组件布局时,进行尺寸范围限制)二、size:设置高宽尺寸可以通过size来设置宽高尺寸,当然也可以直接给组件设置宽......
  • qt开发-08_layout 布局
    Qt提供了非常丰富的布局类,基本布局管理类包括:QBoxLayout、QGridLayout、QFormLayout和QStackedLayout。这些类都从QLayout继承而来,它们都来源于QObject(而不是QWidget)。创建更加复杂的布局,可以让它们彼此嵌套完成。其中QBoxLayout提供了水平和垂直的布局管理;QFormLa......
  • RapidLayout:中英文版面分析推理库
    引言继上一篇文章之后,我这里想着将360发布的版面分析模型整合到现有的rapid_layout仓库中,便于大家快速使用。不曾想到,我这整理工作越做越多了,好在整体都是往更好方向走。起初,rapid_layout项目是在RapidStructure仓库下的。RapidStructure仓库包含三大块:文档方向分类、版面分析......
  • SAP ABAP 字符串内数字去前导零的两种方法(正则/拼接)
    碰到一个小需求,需要把字符串里数字的前导0给去掉。ABAP内,想对字符串做处理,把字符串内的数字进行去前导0,通常有两种思路,拆分处理再拼接或者直接用正则表达替换。最初的想法是直接通过符号拆分,去前导0后拼回去,但是了解到实际分割的符号并不唯一。所以直接用正则表达式来做替换会......
  • ABAP简单代码实现上载Excel多Sheet页
    1classZCL_EXCEL_TOOLSdefinition2public3final4createpublic.56publicsection.78methodsUPLOAD9importing10!FILEtypeSTRING11returning12value(DATA)typereftoDATA.13methodsT......
  • SAP: SALV Grid 单元格颜色
    1、SAP:SALVGrid单元格颜色2、详细程序代码*&---------------------------------------------------------------------**&ReportZ17_43*&*&---------------------------------------------------------------------**&SALV单元格颜色*&*&---------......
  • SAP ABAP开发过程中如何高效率从内表中获取不重复记录?
    在SAPERP系统开发过程中,经常会遇到需要将大量数据从数据库表中提取,储存在内表中,供进一步处理之用。而在这个内表中,有时候存在大量重复的记录,若要从中得到唯一记录,有以下三种方法:方法一:内部表循环赋值,使用COLLECT语句追加记录方法二:内部表循环赋值,使用ATNEW和APPEND语......
  • ABAP小白开发操作手册+前导文
    准备做一个关于小白学习SAP开发的栏目,内容写得差不多了,可以更新了。本栏目内容介绍了ABAP开发的一些基础的开发类型和开发步骤,是针对完全没有接触过ABAP开发的超级超级小白初学者使用的,从如何查看开发申请到做出完整功能,希望具有一定的参考意义,能够帮助初学者稍微入门,大家可以......