云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

香港服务器_百度云群链接分享_免费领

小七 141 0

这个博客是为那些在最初的培训中可能没有接触到隐式工作区概念的新开发人员而设计的。这些隐式工作区构造中的大多数对于一般编程用途来说是过时的,并且通常是ABAP对象类中禁止使用的语法。所有这些信息都包含在联机帮助中,但是ABAP语言从1983年就出现了,它的一个有趣的特点是"回到过去"编写的代码现在仍然可以执行。这种向后兼容性意味着我们得到了更新,更强大的语法元素,返利app是真的吗,因为我们不必每次出现新语法时都重写应用程序。但这也意味着有一些非常旧的,奇怪的代码仍然存在。我们开发人员在调试时会遇到一些这样的构造。我的目的是让大家了解这些构造是什么以及它们做什么。

-–

早在20世纪80年代和90年代初,物联网公司,内部表是用OCCURS子句声明的。一个典型的内部表定义如下此:

OCCURS子句用于将此结构声明为一个内部表。没有OCCURS子句的相同定义定义了一个结构。OCCURS后面的数字用于声明内部表的初始内存大小。在实践中,默认值为零,ABAP开发人员几乎普遍使用

OCCURS子句还为内部表创建了一个"标题行",这是一个隐式的工作区。这个工作区在内存中创建了一个与ITAB定义具有相同名称、行类型和技术特征的结构。因此,访问ITAB时没有引用目标结构:

这里,循环AT依次引用每个ITAB行,并将单行放入隐式工作区。由于OCCURS创建了与ITAB同名的工作区,因此WRITE语句引用的是工作区字段,而不是内部表字段。不需要这就是说,当我们今天看到这个结构时,这可能会导致混乱!

稍后,ABAP进行了更改,允许我们在定义ITAB时引用结构:

此构造构建了一个ITAB,并且"WITH HEADER LINE"扩展创建了一个隐式工作区。

-–

我们发现隐式工作区的另一个地方是SELECT-OPTIONS和RANGE表。

SELECT-OPTIONS关键字仍然是ABAP的重要部分,它管理它为我们创建了一个熟悉的用户界面,允许在SELECT语句和其他条件中使用单个或多个选择、范围和通配符搜索(SELECT FROMWHEREin)。

它还在内存中创建了一个ITAB。这个ITAB包含四个名为SIGN的字段,OPTION,LOW和HIGH:

此外,SELECT-OPTIONS关键字还为ITAB构建了一个隐式工作区:

SELECT语句不仅访问这个ITAB,我们作为开发人员也可以出于自己的目的访问这个ITAB。为此,我们需要区分ITAB的主体和隐式工作区。

在图2中,请注意调试器显示表名,因此\u CARR的后缀是括号,阿里大数据分析,而不是图3。括号表示我们正在查看内部表的主体;没有括号,我们正在查看隐式工作区。

这不是SELECT-OPTIONS独有的;上面任何带有隐式工作区的内部表都使用括号来引用ITAB的主体,没有括号来引用结构。例如:

这将检查主体ITAB是空的还是包含值。在这个特定的示例中,我们正在查看用户界面,所以,并且我们可以确定用户是否在SELECT选项中为此字段输入了任何值。如果我们需要在执行SQL SELECT语句之前编辑这些值(例如,为了限制性能原因的搜索),这将很有帮助。

obsolete RANGES关键字的操作方式相同,但不会创建用户因为没有用户界面,我们需要以编程方式添加条目。

请注意,云100,我们正在将隐式工作区(无括号)附加到ITAB主体(带括号)。

我们也可以想象这样做:

这将在两个命令中生成完整的行条目。

两个附加的结果将是:

现在我们可以在条件或条件中使用此ITABSQL语句

-–

最后一个隐式工作区是TABLES语句。TABLES语句有三种风格,但只有第一种仍然是合法的语法

第一种风格仅用于模块池编程,是新代码中表的唯一合法使用。这里,TABLES语句用作传递的通信路径从ABAP变量到屏幕字段的数据(这是过度简化;有关详细信息,请参阅联机帮助)。

第二种风格使用TABLES语句作为SQL SELECT的目标工作区:

此语法将数据库表SFLIGHT的每一行复制到程序内存中的隐式工作区SFLIGHT中,然后从隐式工作区中编写三个字段。今天,我们将在SQL SELECT语句中显式地编写一个目标代码。

第三种风格是:

这允许开发人员为同一个表有两个工作区。这在更新程序中经常被用来保存被更改记录的原始值。另一种用法是"假设"处理,其中一个记录的两个不同版本可以用来比较前后值。今天,我们将创建两个名称不同的相同结构。

-–

我希望这能说明一个模糊(但很重要)的问题,并且下次调试一些古老的代码时,虚拟主机,您会发现它很有用!