ABAP ALV

news2024/11/24 14:33:38

目录

一、基本概念

1、ALV概览

2、基本概念

二、属性更改

1、FIELDCAT

2、宏 

3、LAYOUT

4、升序降序SORT

5、FILTER

三、交互

1、实现自己的按钮


一、基本概念

1、ALV概览

ALV:SAP List View,是SAP提供的一个强大的数据报表显示工具

ALV实际上是一个屏幕控件对象,它通过程序传递内表的方式来显示数据

实现方式:调用标准函数、优化接口

显示方式:List--类似于write语句输出的表单形式

Grid:每个输出字段提供按钮,用户可以自行设定,操作更为灵活

2、基本概念

类型池:SLIS,特殊类型程序,包含各种TPYES语句

1)Fieldcat TYPE slis_t_fieldcat_alv

列格式设置(表单)

字段名称,列是否可修改,列宽度等

FIELDCAT规定的每一行属性代表数据库表中每一列的基本属性,FIELDCAT--内表

2)Layout TYPE slis_layout_alv

全局格式设置--结构

整表字段是否可修改,是否以斑马纹输出,是否显示选择按钮字段等,只有一个属性

3)函数:RESUE_ALV_FIELDCATALOG_MERGE

根据内表结构返回FIELDCAT字段结构信息,自动创建

4)函数:RESUE_ALV_GRID_DISPLAY/REUSE_ALV_LIST_DISPLAY

使用GRID/LIST模式输出ALV报表

5)FIELDCAT参数

6)layout

二、属性更改

1、FIELDCAT

在end-of-selection中创建build_alv,调用“RESUE_ALV_GRID_DISPLAY”函数

传入参数IT_FILTER每个字段相关的属性设置,是个表类型,先给这个参数传一个内表

TYPE-POOLS SLIS."参照类型池

DATA GT_STUDENT TYPE TABLE OF ZSTUDENT_G_01.
DATA GS_STUDENT TYPE ZSTUDENT_G_01.

*FUNCTION ALV
*对ITFIELDCAT进行传参,就参照其类型创建内表
DATA GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV."内表 列属性
DATA GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

给内表GT_FIELDCAT增加数据,那么就要先查看IT_FILTER包含哪些数据,双击SLIS_T_FIELDCAT_ALV查看,例如:

"FIELDCAT一行的属性相当于表单的一列的属性
FORM BUILD_FIELDCAT .
  CLEAR GS_FIELDCAT.
  GS_FIELDCAT-COL_POS = '1'."第几段输出
  GS_FIELDCAT-FIELDNAME = 'ZCODE'."字段名是什么
  GS_FIELDCAT-OUTPUTLEN = '10'."输出长度
  GS_FIELDCAT-SELTEXT_M = '学生编号'."描述文本
  APPEND GS_FIELDCAT TO GT_FIELDCAT.
ENDFORM.

但是,后期数据维护很可能会增加很多列,将这些数据进行封装,采取宏相关的封装

2、宏 

如果涉及的属性过多,就不适合用宏调用,可以使用PERFORM调用

*宏 一个宏最多可以定义9个参数
DEFINE %%APPEND_FIELDCAT.
  CLEAR GS_FIELDCAT.
  GS_FIELDCAT-COL_POS = &1.
  GS_FIELDCAT-FIELDNAME = &2."字段名是什么
  GS_FIELDCAT-OUTPUTLEN = &3."输出长度
  GS_FIELDCAT-SELTEXT_M = &4."描述文本
  APPEND GS_FIELDCAT TO GT_FIELDCAT.

END-OF-DEFINITION.

 传值

"FIELDCAT一行的属性相当于表单的一列的属性
FORM BUILD_FIELDCAT .
  %%APPEND_FIELDCAT: '1'   'ZCODE'   '10' '学生编号',
                   '2'  'ZNAME'   '20' '学生姓名',
                   '3'  'SEX'      '3' '性别',
                   '4'  'ZSCHOOL' '10' '学校',
                   '5'  'WEIGH'   '15' '体重',
                   '6'  'UNIT'     '3'  '单位'.
ENDFORM.

给内表添加数据,执行查看显示效果

添加属性:

3、LAYOUT

LAYOUT与FIELDCAT不同,它是一个结构。首先给引用的函数中的IS_LAYOUT传值,定义一个GS_LAYOUT

根据函数中IS_LAYOUT定义的参照类型,给GS_LAYOUT定义

使用字段对全局属性进行设置

FORM BUILD_LAYOUT .
GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'."优化列宽
GS_LAYOUT-ZEBRA = 'X'."斑马纹
ENDFORM.

4、升序降序SORT

DATA GT_SORT TYPE SLIS_T_SORTINFO_ALV."排序
DATA GS_SORT TYPE SLIS_SORTINFO_ALV.

 先按照学校的升序,在在此基础上按照性别降序

FORM BUILD_SORT .
*按照学校升序
CLEAR GS_SORT.
GS_SORT-SPOS = '1'.
GS_SORT-FIELDNAME = 'ZSCHOOL'.
APPEND GS_SORT TO GT_SORT.

*按照学校降序
CLEAR GS_SORT.
GS_SORT-SPOS = '2'.
GS_SORT-FIELDNAME = 'SEX'.
APPEND GS_SORT TO GT_SORT.

ENDFORM.

先将体重合计后,在按学校升序小计

*按照学校升序
CLEAR GS_SORT.
GS_SORT-SPOS = '1'.
GS_SORT-FIELDNAME = 'ZSCHOOL'.
GS_SORT-UP = 'X'."先将学校升序排列,在小计
GS_SORT-SUBTOT = 'X'.
APPEND GS_SORT TO GT_SORT.

5、FILTER

删选的功能,首先在函数中找到传入的相关参数,即IT_FILTER,找到对应的函数部分,对其传值,那么就需要创建一个与其结构相同的类型传值,参照IT_FILTER的参考类型(判断是结构还是内表),来创建内表与结构体,并看其(IT_FILTER的参考类型)有哪些字段,以及功能

进行FILTER时,需要选择一个字段进行筛选,那么就要定义一个字段名-->选择FILTER按钮,类型为选择界面,那么就要插入一个类似于select-option的限制(四个字段,SIGN、OPTION、LOW、HIGH)--->FILTER的参数有哪些是类似的-->创建一个BUILD_FILTER-->插入数据

FORM BUILD_FILTER .
  CLEAR GS_FILTER.
  GS_FILTER-FIELDNAME = 'SEX'.
  GS_FILTER-SIGN0 = 'I'.
  GS_FILTER-OPTIO = 'EQ'.
  GS_FILTER-VALUF = ''.

  APPEND GS_FILTER TO GT_FILTER.
ENDFORM.

 6、I_SAVE

7、I_VARIANT 格式参数

三、交互

1、实现自己的按钮

为ALV定义自己的按钮,效果如下:

首先查看函数中用于交互的参数,并根据其关联类型,查看其定义的字段有哪些

可以看到,有两个字段,那么就定义一个类似的结构体与内表,给这两个字段传值

给这两个字段赋值。因为通过函数声明的控件自定义的按钮需要与ALV相关联,就需要使用set。。语句,放在一个子程序中,将子程序又赋给GS_EVENTS-FORM 

FORM BUILD_EVENTS .
  CLEAR GS_EVENTS.
  GS_EVENTS-NAME = 'PF_STATUS_SET'.
  GS_EVENTS-FORM = 'SET_STATUS'."子程序
  APPEND GS_EVENTS TO GT_EVENTS.

ENDFORM.

*通过函数声明的控件 自定义的按钮需要与ALV相关联,就需要使用set。。语句,放在一个子程序中
*将子程序又赋给GS_EVENTS-FORM
FORM SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'STATUS' EXCLUDING RT_EXTAB. "设定自己的按钮
ENDFORM.

并在函数调用中解开IT_EVENTS的注释,同时回调自己的程序,如下图所示,即可实现最终效果

但上述的调用会覆盖掉系统默认的按钮

增加自定义的按钮而不覆盖原来的按钮,有两种方法:

1)参照标准按钮程序

程序右键创建GUI STATUS,附加-调整模板-列表查看器,引用标准按钮,即可调回标准按钮

在标准按钮的状态下,增加自定义的按钮

实现增加自己的按钮

2)参照其他的程序

先不引入自己创建的按钮,然后查看系统-状态-查看当前系统使用的按钮

复制完成后,可以看到复制过来的按钮,也可以点进去修改,新增自己定义的按钮

2、实现自定义按钮的功能

也可以不给IT_EVENTS传值,直接将子程序的名称赋值给函数中的字段

2、设置单击/双击功能

单击--前提是HOTSPOT设置,第一种在FIELDCAT设置,针对字段,将该字段的HOTSPOT给上X即可,第二种对于关键字的设置可以在LAYOUT设置KEY-HOTSPOT

双击-没有设置热点也可以触发对应的按钮功能

针对已经设置过的热点,如何完成单击的功能--USER_COMMAND

功能:当单击ZCODE,跳转到详细页面,例如查看供应商

双击时,显示学校信息:

 WHEN OTHERS."双击
*当前行的学校信息
READ TABLE GT_STUDENT INTO GS_STUDENT INDEX RS_SELFIELD-TABINDEX.
PERFORM DISPLAY_ALV_SCHOOL USING GS_STUDENT-ZSCHOOL.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2223851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端零基础入门到上班:【Day3】从零开始构建网页骨架HTML

HTML 基础入门&#xff1a;从零开始构建网页骨架 目录 1. 什么是 HTML&#xff1f;HTML 的核心作用 2. HTML 基本结构2.1 DOCTYPE 声明2.2 <html> 标签2.3 <head> 标签2.4 <body> 标签 3. HTML 常用标签详解3.1 标题标签3.2 段落和文本标签3.3 链接标签3.4 图…

CRLF、UTF-8这些编辑器右下角的选项的意思

经常使用编辑器的小伙伴应该经常能看到右下角会有这么两个选项&#xff0c;下图是VScode中的示例&#xff0c;那么这两个到底是啥作用呢&#xff1f; 目录 字符编码ASCII 字符集GBK 字符集Unicode 字符集UTF-8 编码 换行 字符编码 此部分参考博文 在计算机中&#xff0c;所有…

网络搜索引擎Shodan(1)

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址&#xff1a;shodan(1)_哔哩哔哩_bilibili 本文主要讲解网络搜索引擎Shodan的一些用法&#xff08;host和search这两个命令&#xff09;。 Shodan 是一个网络…

合合信息亮相PRCV大会,探讨生成式AI时代的内容安全与系统构建加速

一、前言 在人工智能技术的飞速发展下&#xff0c;生成式AI已经成为推动社会进步的重要力量。然而&#xff0c;随着技术的不断进步&#xff0c;内容安全问题也日益凸显。如何确保在享受AI带来的便利的同时&#xff0c;保障信息的真实性和安全性&#xff0c;已经成为整个行业待解…

高速自爆穿梭无人机技术详解

高速自爆穿梭无人机技术是一种结合了高速飞行与自爆式攻击能力的先进无人机技术。以下是对该技术的详细解析&#xff1a; 一、技术特点 1. 高速飞行&#xff1a; 高速自爆穿梭无人机通常具备极高的飞行速度&#xff0c;如部分型号的速度可达到174公里/小时&#xff0c;甚至更…

Stack和Queue(3)

Stack和Queue&#xff08;3&#xff09; priority_queue的模拟实现 priority_queue.h #include <vector>namespace soobin {template<class T, class Container vector<T>>class priority_queue{public://强制生成默认构造priority_queue() default;temp…

html+css+js实现Notification 通知

实现效果&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Notif…

深入拆解TomcatJetty——Tomcat如何实现IO多路复用

深入拆解Tomcat&Jetty 专栏地址&#xff1a; 极客时间-深入拆解Tomcat & Jetty IO 多路复用 当用户线程发起 I/O 操作后&#xff0c;网络数据读取操作会经历两个步骤&#xff1a; 用户线程等待内核将数据从网卡拷贝到内核空间。内核将数据从内核空间拷贝到用户空间…

Docker搭建DVWA靶场以及刷题记录

Docker搭建DVWA靶场以及刷题记录 Docker搭建DVWA靶场以及刷题记录靶场搭建 刷题记录SQL InjectionLowMediumHighImpossible SQL Injection(Blind)LowMediumHigh XSS (Reflected)LowMediumHigh XSS (Stored)LowMediumHigh File UploadLowMediumHigh Docker搭建DVWA靶场以及刷题记…

zabbix 6.0 监控clickhouse(单机)

zabbix 6.0 LTS已经包含了clickhouse的监控模板&#xff0c;所以我们可以直接使用自带的模板来监控clickhouse了。 0.前置条件 clickhouse 已经安装&#xff0c;我安装的是24.3.5.47zabbix-agent 已经安装并配置。系统是ubuntu 2204 server 1. 新建监控用户 使用xml的方式为…

适用于 Windows 11/10 电脑 的 13 个最佳文件恢复软件

如果您由于系统故障、硬件损坏、人为错误或病毒攻击而丢失了重要文件或文件夹。不用担心&#xff0c;因为我们随时为您提供帮助&#xff01;借助正确的文件恢复工具&#xff0c;您可以立即检索计算机上不同类型的文件。如果你有为您的文件创建备份&#xff0c;你不用担心&#…

juzigei/基于 ThinkPHP+Mysql灵活用工_灵活用工系统_灵活用工平台

基于 ThinkPHPMysql 灵活用工灵活用工平台灵活用工系统灵活用工小程序灵活用工源码灵活用工系统源码 开发语言 ThinkPHPMysql 源码合作 提供完整源代码 软件界面展示 一、企业管理后台 二、运用管理平台 三、手机端

ECharts饼图-饼图自定义样式,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个饼图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供详…

视频播放速度过快怎么办?视频速度调慢的简单方法

视频播放速度过快怎么办&#xff1f;在这个快节奏的时代&#xff0c;我们似乎习惯了迅速浏览和消化信息&#xff0c;视频内容也不例外。然而&#xff0c;有时我们会遇到视频速度过快的问题&#xff0c;这不仅让我们难以捕捉到每一个细节&#xff0c;更可能让我们错失视频所要传…

【ChatGPT插件漏洞三连发之二】零点击Github仓库接管

在我们深入研究细节之前&#xff0c;我们想先解释一下插件上的帐户接管意味着什么。 举个例子&#xff0c;当您安装与您的 GitHub 交互的插件时&#xff0c;此插件会在插件网站上为您创建一个额外的帐户&#xff0c;用于存储您的 GitHub 凭据。使用这些凭据&#xff0c;插件可…

内置数据类型、变量名、字符串、数字及其运算、数字的处理、类型转换

内置数据类型 python中的内置数据类型包括&#xff1a;整数、浮点数、布尔类型&#xff08;以大写字母开头&#xff09;、字符串 变量名 命名变量要见名知意&#xff0c;确保变量名称具有描述性和意义&#xff0c;这样可以使得代码更容易维护&#xff0c;使用_可以使得变量名…

Linux中级(DNS域名解析服务器)

一。产生原因1.IP地址&#xff1a;是互联网上计算机唯一的逻辑地址&#xff0c;通过IP地址实现不同计算机之间的相互通信&#xff0c;每台联网计算机都需要通过IP地址来互相联系和分别&#xff0c;但由于IP地址是由一串容易混淆的数字串构成&#xff0c;人们很难记忆所有计算机…

计算机毕业设计Python+大模型租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 用到的技术: 1. python…

【独家:AI编程助手Cursor如何revolutionize Java设计模式学习】

【独家:AI编程助手Cursor如何revolutionize Java设计模式学习】 导语 在Java高级编程的世界里,设计模式是每个开发者必须掌握的利器。但是,如何快速理解并灵活运用这些模式呢?让我们一起探索如何借助AI编程助手Cursor,轻松掌握设计模式,提升Java编程技能! 正文 设计模式:J…

opencv - py_ml - py_kmeans

文章目录 1.理解 K-Means 聚类目标理论T 恤尺码问题它是如何工作的&#xff1f; 其他资源 2.OpenCV 中的 K-Means 聚类目标理解参数输入参数输出参数 1.理解 K-Means 聚类 目标 在本章中&#xff0c;我们将理解 K-Means 聚类的概念、其工作原理等。 理论 我们将通过一个常用…