第 3 单元:基本语言元素练习(10 道题)

第 3 单元:基本语言元素练习(10 道题)

#practice #abap #abap-syntax

相关概念

📌关键模式(点击展开)
关键词 答案
数值类型? I, F, P, DECFLOAT16, DECFLOAT34
N 类型是数值类型吗? 不是 — 仅包含数字的字符串
循环计数器? sy-index
MOVE-CORRESPONDING? 复制同名字段

第 1 题 - 数值类型 [recall]

ABAP 标准类型中哪些是数值类型?类型 N 是数值类型吗?

📌显示答案
数值类型:I, F, P, DECFLOAT16, DECFLOAT34。类型 N 不是数值类型 — 它是一种字符串类型,只允许包含数字字符,但不能用于算术运算。

第 2 题 - 类型定义 [recall]

使用哪个 ABAP 关键字来定义局部类型?

📌显示答案
TYPES 语句。示例:TYPES: gty_price TYPE p LENGTH 8 DECIMALS 2.

第 3 题 - 循环计数器 [recall]

DO 和 WHILE 循环的循环计数器在哪个系统字段中?

📌显示答案
DO 和 WHILE 循环都使用 sy-index

第 4 题 - 完整类型与不完整类型 [recall]

哪些 ABAP 标准类型是”完整的”(固定长度),哪些是”不完整的”(需要指定长度)?

📌显示答案
完整类型(固定长度):D, T, I, F, STRING, XSTRING, DECFLOAT16, DECFLOAT34。不完整类型(需指定长度):C, N, X, P

第 5 题 - 常量 [recall]

如何在 ABAP 中定义常量?

📌显示答案
使用 CONSTANTS 语句并配合 VALUE 附加项:CONSTANTS gc_pi TYPE p LENGTH 8 DECIMALS 5 VALUE '3.14159'.

第 6 题 - MOVE-CORRESPONDING [application]

你有两个结构:gs_carrier(字段:carrid, carrname, currcode, url)和 gs_flight(字段:carrid, connid, fldate)。执行 MOVE-CORRESPONDING gs_carrier TO gs_flight 后,哪些字段被复制了?

📌显示答案
只有 carrid 被复制 — 它是两个结构中唯一名称相同的字段。MOVE-CORRESPONDING 只复制源结构和目标结构中名称完全相同的字段。

第 7 题 - 链式语句 [application]

将以下语句转换为链式语句:WRITE 'Hello'. WRITE gv_name. WRITE '!'.

📌显示答案
WRITE: 'Hello', gv_name, '!'.

第 8 题 - 类型转换 [application]

将 C 类型值 ‘42’ 赋值给 I 类型变量时会发生什么?

📌显示答案
ABAP 执行自动类型转换:字符串 ‘42’ 被转换为整数 42。如果 C 类型中包含非数字字符,则会发生运行时错误。

第 9 题 - CASE 与 IF [analysis]

在什么情况下你会使用 CASE 而不是 IF?它们在结构上有什么区别?

📌显示答案
当需要检查单个变量的多个离散值时使用 CASE。CASE 使用 WHEN 子句来匹配每个值。IF/ELSEIF 更适合复杂条件(范围判断、多变量、AND/OR 逻辑)。对于基于值的分支,CASE 更简洁、更易读。

第 10 题 - 调试 [application]

你想调试一个程序但不能修改源代码。如何启动调试器?

📌显示答案
在启动程序之前,在 SAP GUI 命令字段中输入 /h。这会在不做任何代码修改的情况下激活调试模式。另外,如果你有显示权限,可以在编辑器中设置会话断点。

📌模式总结(点击展开)
关键词 答案
数值类型 I, F, P, DECFLOAT16, DECFLOAT34
N 类型 不是数值类型,是包含数字的字符串
局部类型关键字 TYPES
循环计数器 sy-index
MOVE-CORRESPONDING 仅复制同名字段
链式语句 冒号 + 逗号语法
无需代码启动调试 在命令字段中输入 /h