Functional ALV系列 (01) - ALV开发入门

news/2025/2/15 18:17:21/

SAP 的 ALV 全称是 SAP List Viewer,是 SAP 用于显示行列表格化数据的主要方式,从 SAP 推出的技术来看,大体有如下几种

  • 函数生成 ALV,调用 REUSE_ALV*相关的函数
  • ALV Grid 控件框架:SAP 提供 cl_gui_alv_grid 类,以面向对象的方式实现
  • SALV: SAP 另外一种面向对象的实现,与 ALV Grid 比较起来,简化了开发的复杂程度。但不支持 ALV 编辑

Function Module based ALV 是较早出现的开发技术。使用 ALV 显示数据,首先需要知道输出什么数据(内表类型的数据结构),还需要知道输出数据的数据结构(比如第一列显示什么,第二列显示什么,如何对齐,表头是什么,宽度多少,等等)。SAP 将这个数据结构称为 Field catalog。我们用一个简单的例子来讲解 ALV 的基本用法,假设要选取 spfli 表的部分字段在 ALV 中输出。

首先,定义要输出的字段:

然后,从数据库表中获取数据:

根据 gt_spfli 的结构,定义 field catalog,并且调用 REUSE_ALV_GRID_DISPLAY 显示数据:

程序运行界面:


ALV 显示具有行列格式的数据,大致如此。我们发现,程序中相当多的代码都是用于处理 field catalog (属于 slis_t_fieldcat_alv 类型),我们在调用 reuse_alv_grid_display 之前的代码打一个断点,观察 field catalog 的结构:


刚才的程序,很多代码都是用于加工 field catalog,如果是从数据库表中显示数据,能不能自动创建 field catalog 呢? 答案是可以的,我提供一种通用的方法。首先编写代码实现从 DDIC 或者内表中获取所有字段:


根据获取的字段填充 field catalog:

然后在程序中就可以调用 frm_build_fieldcat 来填充 field catalog:

代码量大大降低,该代码具备通用性。

源码

FALV/01-Hello World


http://www.ppmy.cn/news/741289.html

相关文章

06-ALV

开发ALV的基本流程 开发ALV的基本流程 第1步:声明变量 定义ALV所要用到的类型池:TYPE-POOLS: SLIS 针对ALV的控制信息数据(Layout & Fieldcat) 第2步:定义内表 存放自定义数据文件的数据,以及在A…

Web——Vaadin

Vaadin 依赖说明:一个 Web 框架,允许你用纯Java 编写 UI,而不会陷入JS、HTML 和 CSS 的泥潭。 Vaadin的工作方式依赖于服务器端渲染,因此可以自然地集成到诸如Spring之类的框架中。 当您是后端开发人员时,您会听到人们…

什么是 WAL

什么是 WAL WAL(Write Ahead Log)预写日志,是数据库系统中常见的一种手段,用于保证数据操作的原子性和持久性。 在计算机科学中,「预写式日志」(Write-ahead logging,缩写 WAL)是关系数据库系统中用于提供…

verilog理论刷题篇1 Alwaysblock1 2

总结: using an assign statement,连续赋值给wire类型赋值assigna combinational always block,组合逻辑 always 块给wire类型赋值always (*)and a clocked always block.时序逻辑always 块给reg类型赋值always (posedge clk) 组合逻辑:使用assign always (&#x…

sqlserver2016无域alwayson搭建

前期准备: windows系统:window server 2016 数据库:sqlserver 2016 两台电脑 两个虚拟IP 1.安装windows 故障转移功能; 2.两节点添加相同名称的后缀DNS 3.访问 C:\Windows\System32\drivers\etc ,修改host文件&#xff08…

ALE简介

ALE的全称:Application Level Events ALE的位置: ALE的优势:屏蔽了“获取EPC数据组件”、“过滤组件”、“应用程序”之间的联系,使得其中任意组件的改变都不会影响到其他组件。 ALE接口: 1. Reading API 2. Writing A…

AVL-Review

二叉树的删除 最值节点一定是叶节点,没有子树,所以在移动最值节点后删除的时候不用考虑最值节点下的节点移动问题。 完全二叉树和完美二叉树的区别: 完美二叉树:一个深度为k(>-1)且有2^(k1) - 1个结点的二叉树 ​ 深度&am…

alv

*&---------------------------------------------------------------------* *& REPORT ZMMR238 *& *&---------------------------------------------------------------------* *& 需求描述:設備進機明細系統化 *& 需求單號&#xff1a…