关于 ABAP 报告编程的一切

SAP-ABAP 支持两种程序类型——报表程序和对话程序。当需要显示大量数据时,使用报表程序。

报表程序的用途

  • 当需要从多个表中选择和处理数据,然后进行展示时使用。
  • 当报表要求特殊格式时使用。
  • 当报表需要从 SAP 下载到 Excel 表格以便分发时使用。
  • 当报表需要发送给特定人员时使用。

关于报表程序的重要注意事项

  • 报表程序始终是可执行程序。程序类型始终为 1。
  • 每个报表程序都对应一个特定的应用类型,即销售与分发、FI – CO 等。它也可以是跨应用的,即类型为“*”。
  • 报表编程是一种事件驱动的编程。
  • 报表程序的第一行始终是 Report <report-name>。
  • 要抑制列表标题或程序名称,使用附加项 No Standard Page Heading
  • 特定报表的行大小可以通过使用附加项 line-size <size> 来设置。
  • 特定页面的行数可以通过使用附加项 line-count n(n1) 来设置。N 是页面的行数,N1 是为页面页脚保留的行数。
  • 要显示任何信息或错误消息,我们使用附加项将消息类添加到程序中:Message-id <message class name>。 消息类在 SE91 中维护。

因此,理想的报表程序应以

Report <report name> no standard page heading

line-size <size>

line-count <n(n1)>

message-id <message class>.

选择屏幕

“选择屏幕”是程序运行时指定输入值的屏幕。

选择屏幕通常由以下内容生成

  1. 参数
  2. 选择选项

语法

Selection-screen begin of screen <screen #>
selection-screen begin of block <#>  with frame title <text>
.........
.........
selection-screen end of block <#>
selection-screen end of screen <screen #>

参数

参数有助于进行动态选择。它们在一个程序执行周期内只能容纳一个值。

语法

将参数定义为数据类型

Parameters p_id(30) type c.

像表字段一样定义参数。

Parameter p_id like <table name>-<field name>.

参数可以是复选框和单选按钮。

Parameters p_id as checkbox.Parameters p_id1 radiobutton group <group name>.
Parameters p_id2  radiobutton group <group name>.

参数可以是列表框。

Parameter p_id like <table name>-<field name> as listbox

选择选项

选择选项用于向程序输入一系列值或一组值

语法

select-options s_vbeln for vbak-vbeln.

Selection Screen

您也可以像变量一样定义选择选项

select-options s_vbeln for vbak-vbeln no intervals no-extension

ABAP 报表程序中的事件

ABAP 报表程序是事件驱动程序。报表程序中的不同事件是

Load-of-program

  • 在加载类型为 1、M、F 或 S 的程序后,在内部会话中触发相关事件。
  • 还针对每个程序和内部会话运行一次且仅运行一次相关的处理块。
  • LOAD-OF-PROGRAM 处理块对于类型为 1、M、F 或 S 的 ABAP 程序,其功能大致与 ABAP 对象中类的构造函数相同。

初始化。

  • 此事件在显示选择屏幕之前执行。
  • 所有值的初始化。
  • 您可以分配与选择屏幕上默认值不同的值。
  • 您可以在运行时用一些值填充选择屏幕。

在选择屏幕上。

  • 当选择屏幕处理完毕后(在 PAI 结束时)处理该事件。
  • 输入值的验证和检查发生在此处

选择开始。

  • 此处程序开始从表中选择值。

选择结束。

  • 所有数据选择完毕后,此事件将数据写入屏幕。

交互事件

  • 用于交互式报表。它用于从基本列表创建详细列表。

报表格式化

ABAP 允许用户根据需要格式化报表。例如,“交替行”必须以不同的颜色显示,“总计”行应显示为黄色。

语法

Format Color n

Format Color n Intensified On

n 可能对应不同的数字

请注意,除了格式之外还有其他附加项

FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF

交互式报表编程

  • 使用交互式编程,用户可以主动控制数据检索和数据显示
  • 用于从非常基本的列表中创建详细列表
  • 详细数据写入辅助列表。
  • 辅助列表可以完全覆盖第一个屏幕,也可以在新屏幕中显示
  • 辅助列表本身也可以是交互式的。
  • 第一个列表也可以调用事务。
  • 交互式编程关联有不同的事件。

用于交互式编程的一些命令

热点

如果将鼠标拖到报表中显示的数据上方,光标会变为伸出食指的手形。可以通过 FORMAT 语句实现热点。

Syntax:      Format Hotspot On (Off).

隐藏

此命令可帮助您存储字段名称,以便进一步处理以获取详细列表。它直接写在字段的 WRITE 语句之后。当选择一行时,值会自动填充到变量中以供将来使用。

Syntax:     Hide <field-name>.

逻辑数据库

  • 您可以使用逻辑数据库而不是“Select”查询来检索程序数据。
  • 逻辑数据库由事务 SE36 创建
  • 逻辑数据库的名称最长可达 20 个字符。它可以以命名空间前缀开头。
  • 数据由另一个程序选择,可以使用 GET <table-name> 命令访问数据,该命令将数据放入工作区 <table-name> 中。

逻辑数据库相对于普通 Select 查询的优势。

  1. 它提供检查条件,以查看输入是否正确、完整和合理
  2. 它包含数据库访问的中央授权检查
  3. 性能改进等增强功能立即适用于所有使用逻辑数据库的报表。

注意:由于涉及的复杂性,逻辑数据库在大多数情况下不使用