我正在开发一个功能模块,以帮助处理嵌入逻辑的包含文本。在查看SAP处理SAPScript文件和分析逻辑的方式时,我发现了一个声明如下的结构:
DATA BEGIN OF events OCCURS 100.
INCLUDE STRUCTURE ITCCA.
DATA: command LIKE BOOLEAN,
template LIKE BOOLEAN,
mask LIKE BOOLEAN,
END OF events.这显然是可行的,因为我可以在它运行打印程序时跟踪它。因此,我想在我自己的代码中尝试一个类似的结构,但是即使像上面一样,当我复制代码1到1时,在激活过程中也会出现错误。错误是
"BOOLEAN" must be a flat structure. Internal tables, references,
strings and structures are forbidden as components.有人能解释一下为什么这个结构在一个程序中是有效的而不是我的吗?
发布于 2017-01-10 10:59:07
为了解释实际效果:LIKE通常是指右边的数据对象(一个实际变量),不是数据类型。正如您正确地发现的那样,一旦您提供了一个名为数据对象(名为BOOLEAN ),该对象将用于构造该类型。如果不存在同名的数据对象,并且您不在类或接口中,则会触发一个 statement,它也会考虑数据类型,但只允许右侧的某些元素--即只有平面结构化对象或它们的组件。LIKE DATATYPE-BOOLEAN应该能工作的。与往常一样,错误消息对您的帮助有点小。
发布于 2017-01-10 10:46:00
在我最初的调查中,我似乎错过了BOOLEAN类型的声明。在STXC函数组中,SAP决定在不同的包含文件中声明自己的布尔变量,如下所示:
data: boolean(1) type c.我最初假设他们是用字典定义的类型来完成这个任务的,该类型具有类似的名称,是一个1字符长的字符串。我还发现,如果我像这样修改我的结构声明:
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关键字来使用字典定义。
https://stackoverflow.com/questions/41566304
复制相似问题