小技巧:如何让 ABAP OPEN SQL 代码具有自解释性(Self-Explained)

举报
Jerry Wang 发表于 2024/03/01 19:27:53 2024/03/01
【摘要】 自解释性代码,是指代码本身具有足够的清晰度和表达力,能够自行传达其意图和功能,而无需过多的注释或外部文档。自解释性代码是编写高质量、可读性强的代码的一项重要原则。由于历史原因,SAP ABAP 系统里,某些数据库表的字段名称,让不少开发人员觉得阅读起来比较烧脑。比如下图图1 的例子,spld, spdb 和 spda 三个字段,如果没有注释的话,光靠阅读这段代码,无法理解其意图。虽然作为数据...

自解释性代码,是指代码本身具有足够的清晰度和表达力,能够自行传达其意图和功能,而无需过多的注释或外部文档。

自解释性代码是编写高质量、可读性强的代码的一项重要原则。

由于历史原因,SAP ABAP 系统里,某些数据库表的字段名称,让不少开发人员觉得阅读起来比较烧脑。

比如下图图1 的例子,spld, spdb 和 spda 三个字段,如果没有注释的话,光靠阅读这段代码,无法理解其意图。

虽然作为数据库的消费者,我们不可能修改标准数据库表的字段名称。然而我们可以把从数据库表里取出来的数据,使用 SQL 语句的 AS 关键字定义别名。

比如图2 的例子,将 spld, spdb, spda 分别定义成可读性更好的 printer_code, delete_from_spool 和 output_immediately. 这样代码读起来一目了然,也不需要手动添加额外的注释了。

在ABAP中,AS(Alias Statement)关键字用于给SELECT语句中的字段创建别名。在你提供的代码中,AS关键字用于为SELECT SINGLE语句中的三个字段(spld,spda,spdb)创建别名,分别是printer_code,delete_from_spool,output_immediately。这样,通过INTO子句将查询结果映射到指定的内部表(@DATA(user_print_settings)),字段名就会使用这些别名。

现在,让我们逐一解释每个字段的含义:

  1. spld AS printer_code:这里spld是usr01表中的字段,代表用户的打印机代码。通过AS关键字,它被映射为user_print_settings内部表中的printer_code字段。

  2. spda AS delete_from_spool:spda字段代表是否从打印池中删除。AS关键字将其映射为user_print_settings内部表中的delete_from_spool字段。

  3. spdb AS output_immediately:spdb字段表示是否立即输出。AS关键字将其映射为user_print_settings内部表中的output_immediately字段。

接下来,让我们通过一个简单的例子来说明这段代码的实际用途。假设usr01表中存在如下数据:

bname      | spld  | spda | spdb
-----------|-------|------|------
user1      | P001  | X    | X

运行上述ABAP代码后,user_print_settings内部表将包含以下数据:

DATA(user_print_settings) = VALUE #( printer_code = 'P001' delete_from_spool = 'X' output_immediately = 'X' ).

这样,你就能够通过user_print_settings内部表方便地访问和处理从usr01表中检索到的用户打印设置数据。 AS关键字在这里主要用于提高代码的可读性和维护性,通过使用更有意义的字段名,使代码更易理解。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。