用于创建本地结构类型和表类型的语法

2020-09-28 11:58发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在尝试学习ABAP,在发布此问题之前,我花了很多时间在网上搜索我的说明,并且除了从SAP和其他出版物中购买的学习指南之外,还浏览了SAP文档和博客, 但我仍然对此表示怀疑。

首先,在创建内部表时,我遇到了各种可以用来创建它们的方法以及相关的语法。 现在它们有时在关键字或其他方面有所不同。

所以我在这里发表我的疑问,希望这里的一些朋友可以指导我-

1)首先,TYPES语句和TYPE语句之间存在混淆。

以下语法声明了什么-

(a)语法1:

TYPES:ZABC的开头,

F1 Type C,

F2 I型

......

.......等。

ZABC结束。

(b)语法2:

TYPES TYPE/LIKE OF [WITH ]

现在我的第一个问题是上述两种语法之间的区别是什么?它们分别创建什么? 他们创建表类型还是本地结构类型?两者之间有什么区别,即"表类型"和"本地结构类型"?

2)我的第二个问题是-有时我们使用以下语法创建内部表:-

DATA:

的类型表

何时使用以上语法? 这些语法与早期语法有什么区别?

3)我的第三个疑问是我可以在ABAP编辑器中还是在DDIC中创建"表类型"吗?

"内部表对象"和"内部表类型"之间有什么区别

最后,如何在ABAP课本中找到的以下语法中,将预定义的系统定义的数据类型" I"用作行或行类型? -

类型I的VectorTab类型I(具有唯一键表行)。

这本书说VectorTab是一种表格类型,但是如何将'I'作为行/行类型呢? 另外,据我所知,可以在DDIC中创建"表类型",那么在DDIC中创建的"表类型"与在SE38(ABAP编辑器)中创建的"表类型"之间有什么区别?

希望这个社区的某人一定可以帮助我。

感谢与问候

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在尝试学习ABAP,在发布此问题之前,我花了很多时间在网上搜索我的说明,并且除了从SAP和其他出版物中购买的学习指南之外,还浏览了SAP文档和博客, 但我仍然对此表示怀疑。

首先,在创建内部表时,我遇到了各种可以用来创建它们的方法以及相关的语法。 现在它们有时在关键字或其他方面有所不同。

所以我在这里发表我的疑问,希望这里的一些朋友可以指导我-

1)首先,TYPES语句和TYPE语句之间存在混淆。

以下语法声明了什么-

(a)语法1:

TYPES:ZABC的开头,

F1 Type C,

F2 I型

......

.......等。

ZABC结束。

(b)语法2:

TYPES TYPE/LIKE OF [WITH ]

现在我的第一个问题是上述两种语法之间的区别是什么?它们分别创建什么? 他们创建表类型还是本地结构类型?两者之间有什么区别,即"表类型"和"本地结构类型"?

2)我的第二个问题是-有时我们使用以下语法创建内部表:-

DATA:

的类型表

何时使用以上语法? 这些语法与早期语法有什么区别?

3)我的第三个疑问是我可以在ABAP编辑器中还是在DDIC中创建"表类型"吗?

"内部表对象"和"内部表类型"之间有什么区别

最后,如何在ABAP课本中找到的以下语法中,将预定义的系统定义的数据类型" I"用作行或行类型? -

类型I的VectorTab类型I(具有唯一键表行)。

这本书说VectorTab是一种表格类型,但是如何将'I'作为行/行类型呢? 另外,据我所知,可以在DDIC中创建"表类型",那么在DDIC中创建的"表类型"与在SE38(ABAP编辑器)中创建的"表类型"之间有什么区别?

希望这个社区的某人一定可以帮助我。

感谢与问候

付费偷看设置
发送
7条回答
宇峰Kouji
1楼 · 2020-09-28 12:29.采纳回答

问题1)a):

语法声明了结构化类型ZABC

问题1)b)

语法声明了表类型

问题2)

DATA声明数据对象。 TYPES声明数据类型

问题3)

是的。

问题:"内部表对象"和"内部表类型"之间有什么区别

一个是数据对象, 另一个是数据类型

问题:如何将" I"作为行/行类型

内部表可以具有任何线型

问题:在DDIC中创建的"表类型"与在SE38中创建的"表类型"之间有什么区别

可见性

单击链接以了解更多信息。

何必丶何苦呢
2楼-- · 2020-09-28 12:43

表类型是表类型。 可以在ABAP程序的上下文中,在类中或在ABAP词典中创建它。

您可以使用TYPES创建

  • 程序中的本地表类型(程序全局或过程本地)
  • 将全局表类型作为全局类和接口的公共属性
  • 类型池中的全局表类型(已过时)

请勿将语句TYPES与使用它的上下文混合在一起。 实际上,TYPES可用于所有类型的表类型,但基于表单的工具SE11定义的除外。

xfwsx85
3楼-- · 2020-09-28 12:21

您必须了解数据类型和数据对象之间的基本区别。 数据类型用TYPES声明,数据对象(字段)用DATA声明。 数据类型由TYPE加法引用。 数据对象由LIKE加法引用。 然后从中了解不同的数据类型,这些数据类型可以是基本,结构化,表格形式的引用。 表类型(内部表的数据类型)是复杂的类型,可以具有任何行类型:基本,结构化,表格,引用类型。 最后但并非最不重要的一点是,了解可以在何处声明类型和数据:在程序中本地或在ABAP词典中全局或在全局类中声明。

也在此处查看

Aaron 3364
4楼-- · 2020-09-28 12:46

嗨,霍斯特。 主席先生,谢谢您和贝特朗的良好解释。 但是您也跳过了我的一些问题-

2)我在第一个问题中提到的语法1和语法2有什么区别?

3)我对以下语法的第三个疑问-

数据:

的类型表

何时使用以上语法? 这些语法与早期2种语法有什么区别? 这个" any_name"对象可以是以下任意一个吗?

a)结构/(b)数据库表/透明表/(c)本地结构/d)预定义的类型,例如I,C,N,P(Int,Char,数字或压缩)??

4)我的另一个主要困惑是-

"本地结构类型"和"本地表类型"是一回事吗?因为据我所知,我可以在DDIC(使用Tcode SE11)以及ABAP编辑器(SE38)中使用 我的原始帖子中语法2中提到的语法类型。 在这种情况下,这是否意味着语法2正在创建表类型或本地结构类型?

谨此问候

5楼-- · 2020-09-28 12:42

你好,

在apap中,可以在多个语句之后加上":",以使您只能编写一次该语句,然后再编写几行(以澄清代码,因为您可以在同一行中全部编写)。 所以:

 TYPES:MyType的开头,
 field1,
 MyType的末尾。
 * 要么
 TYPES:MyType的开头,field1,MyType的结尾。
 *等同于:
 TYPES以MyType开头。
 类型字段1。
 TYPES结束于MyType。

也就是说,TYPES语句是创建本地类型(数据元素/结构/表/...)。 TYPE语句不是..语句,只是您必须详细说明参数类型时使用的关键字。 我们在很多不同的语句中到处都使用TYPE关键字([...]参数TYPE类型[...])。

如果DDIC中不存在类型(请参见事务SE11),则可以使用TYPES语句在代码中本地创建它。 通常,当您只需要标准表中的几个字段时:您不需要全部,因此可以优化代码来创建包含该字段的本地类型(使用TYPES)(并使用类型创建DATA)。

开始时,请考虑来自DDIC的TYPES或本地定义的TYPES之间没有区别。 只是DDIC集中了定义,因此,如果您的类型必须由多个程序,FM,类等使用,则必须在DDIC中创建它(使用SE11)。 这样,如果您必须更改它(数据元素/结构/表/...),则使用它的每个程序都会更新。 请记住,应该仅通过SE11创建有用的类型(数据元素/域/结构/表)(如果出于相同的目的,则绝不能重复使用)。 否则您将很快无法确定要选择哪一个。

您可以在本地创建结构化数据(单行或表),而无需使用TYPES。 您不应该自己做,因为它已经过时了。 但是您可以在某些程序中找到它。 语法是一样的:

 DATA:MyDataTypedLine的开头,
 field1,
 MyDataTypedLine的末尾。

 DATA:MyDataTypedTable的开头出现0,
 field1,
 MyDataTypedTable的末尾。

请注意,使用DATA + OCCURS创建带有标题行的表。 这是坏的和过时的。 不要这样做。

从来没有听说过"向量表",但是我想它是指仅包含1个字段的表。 在这种情况下,您不必命名字段,每行都被键入为初始字段,但没有名称。 这也太过时了,您不应该再使用它。

看来您的书现在太旧了,您应该购买一本比较新的书。 不要对旧的东西尽全力;)

最好的问候

贝特朗

SAP小黑
6楼-- · 2020-09-28 12:26

你好,

我不知道什么是"内部表对象"。 如果您的意思是"内部表数据",那么...没有冒犯之处,但是如果您不知道数据和类型之间的区别,那么您可能还没有准备好创建ABAP报告。 由于ABAP不仅是一种语言,它还是一种古老的语言,具有很多过时的语句(仍然有效),并且它是在非常复杂的环境中演化的。 如果您独自一人读书,请不要使用ABAP开始编程。 为了您的理智,请不要。

您无法仅从书籍/网站/视频中学习编程。 如果要学习ABAP,则必须创建ABAP程序。 而且,如果您有权访问ABAP开发人员环境,则只需在ABAP编辑器中按任意关键字上的" F1"键即可了解开始所需的全部信息。

如果我的回答对您来说还不够,请确保没有人会比我详细介绍您。 您目前不在初学者课程的合适位置。

最好的问候

伯特兰

悻福寶寶
7楼-- · 2020-09-28 12:28

先生,

首先,非常感谢您的回答。

现在,您在回答的最后一个地方提到了"向量表",但我从未提到过"向量表"。在示例中,我对第三个疑问说的是" VectorTab"-

类型I的VectorTab类型I(具有唯一键表行)。

我已经从本书的作者那里清楚地提到了" VectorTab",从这里我读到的例子只是一个创建了该名称的"表类型"(它可以是VectorTab以外的任何名称,例如iTab,inttab等)。 因此,请忽略该名称)。 因此,我觉得您没有完全理解我的问题。 您也跳过了我的许多问题,例如-

1)"内部表对象"和"内部表类型"之间有什么区别?

2)我在第一个问题中提到的语法1和语法2有什么区别?

3)我对以下语法的第三个疑问-

数据:

的类型表

何时使用以上语法? 这些语法与早期2种语法有什么区别? 这个" any_name"对象可以是以下任意一个吗?

a)结构/(b)数据库表/透明表/(c)本地结构/d)预定义的类型,例如I,C,N,P(Int,Char,数字或压缩)??

4)我的另一个主要困惑是-

"本地结构类型"和"本地表类型"是一回事吗?因为据我所知,我可以在DDIC(使用Tcode SE11)以及ABAP编辑器(SE38)中使用 我的原始帖子中语法2中提到的语法类型。 在这种情况下,这是否意味着语法2正在创建表类型或本地结构类型?

主席先生,很抱歉,您的回答还不能被标记为"答案",除非您回答我的所有问题,否则我将获得所有问题的满意答复。

感谢与问候

一周热门 更多>