首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在内置的函数模块中允许这种结构声明,而不允许在新的模块中声明?

为什么在内置的函数模块中允许这种结构声明,而不允许在新的模块中声明?
EN

Stack Overflow用户
提问于 2017-01-10 10:11:54
回答 2查看 1.4K关注 0票数 3

我正在开发一个功能模块,以帮助处理嵌入逻辑的包含文本。在查看SAP处理SAPScript文件和分析逻辑的方式时,我发现了一个声明如下的结构:

代码语言:javascript
复制
DATA BEGIN OF events OCCURS 100.
      INCLUDE STRUCTURE ITCCA.
DATA: command LIKE BOOLEAN,
      template LIKE BOOLEAN,
      mask LIKE BOOLEAN,
     END OF events.

这显然是可行的,因为我可以在它运行打印程序时跟踪它。因此,我想在我自己的代码中尝试一个类似的结构,但是即使像上面一样,当我复制代码1到1时,在激活过程中也会出现错误。错误是

代码语言:javascript
复制
"BOOLEAN" must be a flat structure. Internal tables, references, 
strings and structures are forbidden as components.

有人能解释一下为什么这个结构在一个程序中是有效的而不是我的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-10 10:59:07

为了解释实际效果:LIKE通常是指右边的数据对象(一个实际变量),不是数据类型。正如您正确地发现的那样,一旦您提供了一个名为数据对象(名为BOOLEAN ),该对象将用于构造该类型。如果不存在同名的数据对象,并且您不在类或接口中,则会触发一个 statement,它也会考虑数据类型,但只允许右侧的某些元素--即只有平面结构化对象或它们的组件。LIKE DATATYPE-BOOLEAN应该能工作的。与往常一样,错误消息对您的帮助有点小。

票数 3
EN

Stack Overflow用户

发布于 2017-01-10 10:46:00

在我最初的调查中,我似乎错过了BOOLEAN类型的声明。在STXC函数组中,SAP决定在不同的包含文件中声明自己的布尔变量,如下所示:

代码语言:javascript
复制
data: boolean(1) type c.

我最初假设他们是用字典定义的类型来完成这个任务的,该类型具有类似的名称,是一个1字符长的字符串。我还发现,如果我像这样修改我的结构声明:

代码语言:javascript
复制
DATA BEGIN OF events OCCURS 100.
  INCLUDE STRUCTURE ITCCA.
DATA: command TYPE BOOLEAN,
  template TYPE BOOLEAN,
  mask TYPE BOOLEAN,
 END OF events.

我的代码将是有效的,因为它将使用字典定义的值。因此,要么我必须为我自己的boolean定义添加一个声明,以便我可以使用LIKE关键字,要么我必须使用TYPE关键字来使用字典定义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41566304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档