SAP 脚本教程:SE71、SE78、SCC1、VF03、SO10

⚡ 智能摘要

SAP 脚本构成了文本处理系统。 SAP 该系统可将预格式化文本打印到预格式化的表单中。本页介绍了五个组成部分:布局集、控制命令、打印程序、输出类型以及事务代码 SE71、SE78、SO10 和 SCC1。

  • 📝 核心定义: SAP脚本是内置的文本处理系统 SAP用于将预格式化文本打印到预格式化表格(例如发票)中。
  • 🧱 五个组成部分: 编辑器、样式和布局集、编辑器、编程界面以及存储文本和表单的数据库表。
  • 📄 布局集: 布局集不包含任何数据。它描述页面、窗口和文本元素,打印程序会从数据库中选择数据并将其提供给它。
  • ⌨️ 控制命令: 在段落格式中,使用 /: 输入 NEW-PAGE、PROTECT、INCLUDE 和 PERFORM 等命令可以控制输出格式。
  • 🖨️ 打印程序: OPEN_FORM、WRITE_FORM 和 CLOSE_FORM 是必需的,而 START_FORM 和 END_FORM 是可选的。
  • 📬 输出类型: 存储在表 NAST 中并由程序 RSNAST00 执行的输出类型决定文档是打印、传真还是邮寄。
  • 🔁 客户端依赖项: A SAP脚本格式取决于客户端,因此可以使用 SCC1 或 SE71 的“从客户端复制”实用程序在客户端之间复制脚本。

SAP 脚本

什么是 SAP 脚本?

SAP 脚本是 SAP 系统自己的文本处理系统。它的外观和感觉与其他领先的文本处理系统非常相似。

它用于以预格式化的形式打印预格式化的文本。

典型的文档是用 SAP脚本包括发票、采购订单、送货单和客户信函。表单在事务 SE71 中设计一次,然后由 ABAP 打印程序在运行时提供数据。

组件 SAP脚本

SAP 脚本由五个主要部分组成:

组件 SAP脚本

  1. 用于输入和编辑文本行的编辑器
  2. 打印布局的样式和布局集。这些是使用相应的维护事务独立于各个文本创建的,稍后分配给文本
  3. 作曲家是一个中央输出模块。 SAP 剧本作者对外界来说是看不见的
  4. 编程接口允许您包含 SAP 脚本组件到您自己的应用程序中,并从程序内部控制布局集的输出
  5. 用于存储文本、样式和布局集的多个数据库表

上图展示了这些组件是如何组装在一起的。接下来将介绍位于中心位置的布局组件。

布局集

为了使用编程接口输出文档,R/3 应用程序需要所谓的布局集(一种表格)。 SAP 脚本布局集描述了各个打印页面的布局,并使用文本元素来提供可定义的输出块,打印程序可以调用这些输出块。布局集可以定义为文档的页面设计

版面集本身不包含任何数据。文档的数据选择是通过打印程序完成的。打印程序从数据库表中选择数据并将其提供给版面集。打印程序执行后,文档会打印到屏幕上或打印机上。

通常是 SAP脚本布局由以下组件组成

  1. 标题数据:报头数据用于信息和控制 SAP 打印。标题数据由 2 部分组成 - 设备无关 - 存储诸如起始页、默认段落、语言属性等信息。设备相关存储诸如页面格式、方向、每英寸行数等信息
  2. 段落和字符格式: 段落使用各种属性进行格式化。例如,标准段落属性指定左边距或右边距、对齐方式、行距等。字体属性指定字体系列、字体大小等。字符格式允许格式化段落内的整个文本块
  3. Windows 和文本元素: Windows 是页面中的单独文本区域(页眉地址、日期、页脚)。它有助于将文档中包含的信息组合成某些组,并使每个组出现在打印页面上的单独区域中。您可以为每个窗口定义文本元素(窗口文本)。打印程序按名称访问文本元素,对其进行格式化并在相应的窗口中打印它们。必须在表单中定义使用的段落和字符格式。
  4. 页数: 它们是文档的独立页面,必须具有唯一的名称。您经常会发现各个页面的布局不同:发票的第一页与后续页面不同,您无需在后续页面上重复一般信息,例如地址或客户数据。
  5. 页 Windows: 在定义窗口和页面时,您尚未确定要输出的文本的位置和间距。页面窗口通过指定输出区域的左上边缘及其宽度和高度来定义输出介质中的矩形输出区域

控制命令

“控制命令”的目的是允许控制输出格式。这些命令不由 SAP 脚本编辑器,但传递到 SAP 脚本编辑器进行处理。例如,这包括行和页面格式化、根据指定的段落和字符格式格式化文本。

句法

Enter /: in the paragraph format

例子

  • NEW-PAGE – 明确分页符
  • 保护………结束保护 – 在一页上打印整个段落。
  • INCLUDE – 将另一段文本的内容包含到当前文本中
  • 执行——调用任何 ABAP 程序的子程序

打印程序

脚本的执行是通过 ABAP 程序,即打印程序。每个打印程序应该有一个ENTRY表单,它将从定制中调用。

对于标准配置,我们可以在 TNAPR 表中看到表单名称(脚本名称)、打印程序名称和输出类型。打印程序使用表单控制函数来调用脚本。

打印程序调用全部或部分表单控制函数来执行脚本

  • OPEN_FORM(强制)打开布局集输出
  • CLOSE_FORM(强制)结束布局集输出
  • START_FORM(可选)启动新的布局集
  • WRITE_FORM(强制)调用布局集元素
  • END_FORM(可选)结束当前布局集

如何创建一个 SAPSE71 中的脚本表单

一个工作 SAP脚本输出需要一个表单、一个打印程序和一个自定义设置。以下步骤将指导您如何从空白表单开始构建脚本输出。

  1. 创建表单: 在 SE71 中输入表单名称和语言,然后选择“创建”。填写页眉数据,包括起始页码、默认段落和页面格式。
  2. 定义段落和字符格式: 至少创建一个段落格式,例如 AS 表示标准行,因为每个文本元素都引用一个段落格式。
  3. 创建页面: 定义首页,例如 FIRST,并将其下一页设置为 NEXT,以便较长的文档在第二个布局上继续。
  4. 创建窗口和页面窗口: 定义诸如页眉、主窗口和页脚之类的窗口,然后将它们分别放置在页面上,并输入左上边缘、宽度和高度。
  5. 写出文本元素: 打开一个文本编辑器窗口,并在每个文本块前加上 /E 和元素名称。打印程序会根据这个名称调用元素。
  6. 激活表单并编写打印程序: 激活表单,然后从 ABAP 程序调用表单控制函数,如下所示。
  7. 指定输出类型: 通过应用程序的输出自定义设置,例如 NACE,在表 TNAPR 中输入表单名称、打印程序和 ENTRY 例程。
CALL FUNCTION 'OPEN_FORM'
  EXPORTING
    form     = 'Z_INVOICE'
    language = sy-langu
    device   = 'PRINTER'.

* Print the element ITEM_LINE in the window MAIN
LOOP AT lt_items INTO ls_item.
  CALL FUNCTION 'WRITE_FORM'
    EXPORTING
      element  = 'ITEM_LINE'
      window   = 'MAIN'
      function = 'SET'
      type     = 'BODY'.
ENDLOOP.

CALL FUNCTION 'CLOSE_FORM'.

⚠️警告: WRITE_FORM 函数只会打印调用时已填写的字段。请在调用前填写工作区,因为该函数读取的是打印程序的全局字段,而不是函数模块的参数。

输出类型

输出类型可以指定您需要内部使用的打印表格或您想要发送给客户或供应商的表格。输出类型也可以是您想要发送给其他部门员工的内部电子邮件消息。

例如,“打印输出”可以归类为发票凭证的一种输出类型,即执行此输出类型时,将打印发票凭证。同样,“传真”也可以是一种输出类型,即执行此输出类型时,将发送发票凭证的传真

任何文档(例如,发票文档)的所有输出类型都将存储在表 NAST 中。输出类型通过程序 RSNAST00 执行。

示例:发票文件中的输出类型-

  1. 前往 VF03
  2. 输入账单单据号码并再次按回车键
  3. 在菜单 Goto -> Header 下选择 Output
  4. 这里 Z101 是打印输出的输出类型

输出类型

屏幕截图显示了事务 VF03 的输出屏幕,其中输出类型 Z101 附加到开票凭证。

标准文本和图形

可以使用事务创建报告的标准文本 SO10

图形和打印机宏通过以下方式上传: 报告 RSTXLDMC 转换为单独的标准文本文档或通过事务 SE78。 图形以“Baseline TIFF 6.0”格式(PC上的.tif文件)上传。

SAP 可以使用 RSTXSCRP 程序在两个系统之间导出或导入脚本和标准文本元素

跨客户端复制脚本:

SAP 脚本是客户端依赖的对象。与程序不同,对脚本所做的更改 SAP 一个客户端中的脚本不会反映在其他客户端中。要将脚本从一个客户端复制到另一个客户端,请转到 SE71 并使用实用程序菜单下的“从客户端复制”选项,或使用事务从原始客户端导入保存了脚本的传输请求 SCC1。

注意事项

  1. SAP 脚本不维护任何版本。因此,在修改 SAP 脚本,确保更改在脚本中得到充分记录。这也适用于标准文本。
  2. 表单的输出在屏幕上和在打印机上显示时会有所不同。因此,请务必在打印机上测试脚本的输出。

SAP脚本与智能表单

SAP脚本是两种表单技术中较早的一种。 SAP而每一种新形式通常都是用……构建的。 智能表格下表说明了原因。

标准 SAP脚本 智能表格
交易 SE71 智能表格
客户端依赖 客户端相关,使用 SCC1 复制 客户独立
主窗口 只需要一个主窗口 并非强制性要求,允许设置多个主窗口。
程序逻辑 用单独的打印程序编写 部分功能已内置于表单中,该表单会生成自己的功能模块。
输出格式 打印、传真和邮件 打印、传真、邮件以及 XML 或 HTML 输出
版本管理 没有,因此变更必须手动记录。 可通过工作台获取

SAP脚本仍然被广泛使用,因为许多标准 SAP 表格及其打印程序仍然依赖于它,因为客户相关的表格可以根据每个客户进行调整。

常见问题

表 TNAPR 存储每种输出类型的表单名称、打印程序和 ENTRY 例程。可以使用 SE16 读取该表,或者在事务 NACE 中打开应用程序的输出自定义设置。

图形必须以 Baseline TIFF 6.0 格式通过 SE78 或报告 RSTXLDMC 上传,并且表单必须引用生成的标准文本。作曲家不接受彩色或 PNG 文件。

在 SE71 中,通过菜单路径“实用程序”>“激活调试器”启用表单调试器。然后,系统会在打印程序运行时在每个文本元素处停止,可以检查字段值。

SMARTFORMS 事务中的迁移报告会执行转换。之后,AI 助手会提供帮助,例如解释转换后的节点、重写打印程序调用以及列出需要手动修改的文本元素。

SAP脚本不保留版本历史记录,因此很难进行更改。 trace. AI 工具比较 RSTXSCRP 生成的两个导出文件,总结每个文本元素的变化,并生成表单本身未存储的文档。

总结一下这篇文章: