我将尝试提供一些以前的回复没有提供的东西,同时跳过他们提到的内容:
它(总是)编译吗?
好吧,程序员的界面说“激活”,而不是编译,但那是因为有内置的版本管理。当您激活某些东西时,它会对其进行编译,并使源代码和二进制版本成为“活动”版本。如果有人试图运行未编译的源代码,它将在他们运行时自动编译。
Typestem:它是强类型的吗?
基本上,是的。ABAP 就像是 Pascal 和 COBOL 之间的奇怪交叉。有“字段符号”,就像指针一样。现在也有泛型类型。(和通用字段指针)。最酷的事情之一是ABAP 类型和数据库类型之间没有区别。您创建的任何表格都将自动成为结构类型。也就是说,ABAP 与数据库的集成方式几乎是其他语言所没有的。您还可以编写 SQL,它实际上是 ABAP 的一部分,而不是像其他语言那样只是一个字符串。
继承:单/多,类似接口的结构?
有接口结构,我一般不用。但是,如果您制作了很多可重用的类,那将是一个好主意。
集合:除了数组之外还有集合吗?它有通用集合吗?它使用列表理解吗?
更好的是,它有“内部表”,基本上是一种动态数组。它们几乎可以从任何类型声明,包括数据字典中的类型。它们可以循环、排序等。有几种类型,包括散列和排序变体。
任何异常处理?
OOP 和非 OOP 类型。
与其他知名语言相比,有什么特别之处吗?
正如另一张海报所说,很多。它非常擅长与数据库操作有关的任何事情,以及重用复杂的结构和数据类型。它自然是跨数据库和跨平台(操作系统和处理器)。它有一个非常好的版本管理和传输系统。整个SAP系统有很好的多语言支持。您可以自动获得带有适当标题和选择框的简单屏幕,这意味着您可以做更少的编程和更多的工作。您不必在数据库类型和语言类型等之间进行映射。
它不太擅长的事情:
1. 数字通常存储为 ASCII,这使得它在许多应用程序中的数学运算速度不够快。
2. 大部分数据结构都非常标准化,这意味着您的数据有时可能分布在 50 个表中。“星号”查询很常见。在这些情况下,用于检索数据的内置函数(fe 逻辑数据库)是您的朋友。
3. SAP 试图成为每个人的一切,所以有很多配置选项等,有时一个功能不会按照你过去的行为来做你所期望的。
4. ABAP 有时非常冗长。尝试在 GUI_DOWNLOAD 等简单的东西上使用“模式”按钮。
5.SAP 非常雄心勃勃,因此在早期就遇到了硬件、操作系统和 RDBM 系统的限制。因此,他们有遗留问题来处理它并不漂亮。(池表、集群表等)
6、当你激活一个程序时,它并没有对所使用的功能模块进行全面的兼容性检查。在某些情况下,某些东西会毫无问题地激活,但随后会在运行时崩溃,即使它可能在编译时被捕获。