当前位置: 首页 > news >正文

如何增强 ABAP 系统,允许开发人员给 ABAP 对象设置标签,方便快速检索

标签(Tag)几乎是信息管理软件的一个必备功能,目的是帮助用户更迅速地检索出自己需要的数据,以及对海量数据进行更有效的管理。

如今在 ABAP Development Tool 里也支持标签功能了,可以像使用各种云笔记一样,给常用类型的ABAP对象添加自定义的标签。这个标签分配的功能并未给 ABAP 对象增添任何新的功能,而是帮助使用者能够按照自己的实际需求,迅速将需要的 ABAP 资源检索出来。

如果您熟悉 C++ 和 Java,您应该知道它们的程序存储在单独的外部文件中。 但在 ABAP 中,程序驻留在 SAP 数据库中。 它们在作为 SAP 内核一部分的运行时系统的控制下执行。 运行时系统处理所有 ABAP 语句,控制流逻辑并响应用户事件。

本文先展示给ABAP对象加标签的操作方式,再介绍如何给ABAP Development Tool添加标签功能。

SAP 系统以 3 层客户端-服务器架构描述。 三层分别是表示层、应用层和数据库层。 下图将帮助您了解 SAP 系统的简单结构。

表示层包含可用于控制 SAP 系统的任何输入设备。 简单地说,它可以是移动设备、台式计算机或网络浏览器。

应用层扮演中央处理服务器的角色。 表示层发起的所有用户操作都在此处理。 应用层不仅仅是一个系统本身,它也可以是处理系统的多个实例。 应用服务器进程通过工作进程(Work Process,简称 WP)执行。 WP 是能够执行应用程序的组件。 在 SAP 系统的整个运行时,每个 WP 都在数据库系统中注册为用户。

数据库层是存储所有数据的地方。 这里说的数据不光包含业务数据,也包括所有客户记录、程序和任何需要存储的东西,是广义上的数据概念。

简而言之,用户在表示层上执行的任何操作都将传递给应用程序层进行处理,该处理将从数据库层检索任何相关数据,应用程序层处理数据并通过表示层将其呈现给最终用户。

在数据库内部,ABAP 代码以两种形式存在。

  • 源代码 — 可以使用 ABAP 工作台工具查看和编辑。
  • 生成的代码 - 二进制表示。 (在 Java 中,这个生成的代码有点类似于 Java 字节码)

运行时系统可以被认为是一个虚拟机,就像Java虚拟机一样。

SAP 可以与各种各样的数据库一起工作,并且相同的 ABAP 程序可以在所有这些数据库上运行。

在ABAP Development Tool里添加标签的方式非常直接,右键菜单里选择 Assign Tags 即可。凡是使用过云笔记里标签添加和管理功能的朋友们,对此应该非常熟悉。

通过 Add Tag 和 Add User Tag按钮管理标签结构,每个ABAP系统都有一个全局的标签系统(Global Tag), 这些标签在同一ABAP系统里所有登录用户均可见。也可以创建只有自己可见的User Tag:

和云笔记的标签系统一样,ABAP Development Tool里的标签管理也支持树状的层级结构。

在快捷键为Ctrl+H的全局搜索页面里,增添了一项根据标签搜索ABAP对象的选项:

ABAP Development Tool的标签管理功能来自开源社区的贡献,因此需要使用者自行安装。

笔者之前的一篇博客曾经介绍了用户在ABAP Development Tool里操作时前后台交互的原理:
An example to help you understand how does ADT work

为了探究我们在 Eclipse 中进行操作时前后台究竟发生了什么,我们需要打开 ABAP 通信日志。

单击 Windows-> 显示视图。 显示 ABAP 通信日志视图。

点击 Start Logging 按钮:

创建一个新的 report:

然后就可以看到一系列 log 被记录下来了:

现在我们可以知道用户在 Eclipse 中的操作,是通过 HTTP Get 和 HTTP Post 发送到 ABAP 后端系统的,并在 ABAP 后端进行处理。 双击每一行以获得详细视图。

在报告创建场景中,发送到 ABAP 后端的请求与您在 SAP GUI 中创建一份报告的正常操作相同:

因此这个标签管理功能我们需要分别安装ABAP Development Tool前后台对应的增强。

首先是前台增强,即ABAP Development Tool里的标签添加,标签树形结构管理和根据标签进行全局搜索的UI实现。

前台增强直接通过Eclipse的Help菜单里的Install New Software选项在线安装即可,安装网址如下.


后台增强的ABAP实现源代码,位于 Github 这个仓库。

该仓库的源代码需要使用abapGit安装到ABAP后台系统上。

如果你的ABAP系统没有abapGit这个客户端,需要先进行安装,其实就是新建一个报表,再将这个 Github仓库里的abapGit源代码拷贝到报表里,激活即可。

将下图高亮的zabapgit.abap包含的源代码下载到本地,用任意一个文本编辑器打开,Ctrl C再Ctrl V到ABAP系统的报表里,激活:

激活之后运行报表,看到的首页如下。点击右上角的New Online:

将ADT标签管理的后台实现使用abapGit pull到当前的ABAP系统,点击Clone online repo:

然后在当前的abapGit客户端内,已经可以看到abap-tags-backend这个Github仓库了:

执行pull操作,在当前ABAP系统里自动生成Github仓库里包含的ABAP对象:

逐一激活自动生成的对象:

后台增强安装完毕。

总结

本文首先简要介绍了 ABAP Development Tool 工具里用户发起的操作,是如何映射到 ABAP 后台系统,接着介绍了如何通过前台更新和后台 ABAPGit 安装增强的方式,给 ABAP 系统增添标签管理的新功能。

希望本文介绍的这个技巧,能帮助大家更高效地管理自己 ABAP 系统里的开发对象,感谢阅读。

相关文章:

  • 【Python】面向对象 -没有对象?new一个吧
  • ELK集添加安全认证
  • 智能家居离线语音识别控制系统设计(SU-03T)
  • 商家如何玩好“种草神器”?小红书KOL达人种草这样做
  • 基于共词分析的中国近代史实体关系图构建(毕业设计:图数据渲染)
  • 猿创征文|阿里云MaxCompute存取性能测试报告
  • Spring Cloud Sleuth在分布式中进行日志跟踪
  • Jmeter分布式部署执行和常见报错
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • Python Web开发 之 学生管理系统(2)[实现筛选,搜索,分页]
  • 程序员转型?不可能,绝对不可能
  • 基于SSM的二手书店推荐系统(商城)
  • 【JavaSE】认识异常(下篇)
  • 手把手教你深度学习和实战-----循环神经网络
  • 猿创征文 |【C++】动态内存的分配与回收
  • @jsonView过滤属性
  • 03Go 类型总结
  • C# 免费离线人脸识别 2.0 Demo
  • golang 发送GET和POST示例
  • IOS评论框不贴底(ios12新bug)
  • isset在php5.6-和php7.0+的一些差异
  • jdbc就是这么简单
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • linux学习笔记
  • php ci框架整合银盛支付
  • tensorflow学习笔记3——MNIST应用篇
  • 猴子数据域名防封接口降低小说被封的风险
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 为什么要用IPython/Jupyter?
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • hi-nginx-1.3.4编译安装
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #大学#套接字
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (zt)最盛行的警世狂言(爆笑)
  • (独孤九剑)--文件系统
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .dwp和.webpart的区别
  • .NET Micro Framework初体验(二)
  • .NET NPOI导出Excel详解
  • .Net 路由处理厉害了
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • []指针
  • [20150629]简单的加密连接.txt
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [Android] 修改设备访问权限
  • [Angular] 笔记 7:模块
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计