为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

ABAP教程(十分少见的教程)第三部分第十一章 调用外部程 序组件

2018-09-05 8页 doc 118KB 51阅读

用户头像

is_978776

暂无简介

举报
ABAP教程(十分少见的教程)第三部分第十一章 调用外部程 序组件PAGE 1 SAP AG 第十一章:第十一章 调用外部程 序组件 第十一章 1 set Z_000page 1 调用外部程 序组件 概览 在 ABAP/4 中,有多种 使事务模块 化的选项可 供选择。这 些选项包括 所有可以调 用程序外部 代码组件的 方法。这些 外部组件可 以是功能模 块、其它事 务、对话模 块或报表。 内容 1 嵌入程序调 用 外部程序和 滚动区 1 外部程序和 LUW 处理 1 调用功能模 块 2 访问功能库 2 进行调用 2 使用功能模 块接口 2 处理例...
ABAP教程(十分少见的教程)第三部分第十一章  调用外部程 序组件
PAGE 1 SAP AG 第十一章:第十一章 调用外部程 序组件 第十一章 1 set Z_000page 1 调用外部程 序组件 概览 在 ABAP/4 中,有多种 使事务模块 化的选项可 供选择。这 些选项包括 所有可以调 用程序外部 代码组件的 方法。这些 外部组件可 以是功能模 块、其它事 务、对话模 块或报表。 内容 1 嵌入程序调 用 外部程序和 滚动区 1 外部程序和 LUW 处理 1 调用功能模 块 2 访问功能库 2 进行调用 2 使用功能模 块接口 2 处理例外情 况 3 调用其它事 务 4 转到事务 4 调用事务 4 调用与调用 程序共享 SAP LUW 的事务 4 调用对话模 块 4 运行时执行 对话模块 4 用事务作为 对话模块 4 提交报表 5 向报表传送 数据 6 保存或打印 报表 7 在程序间传 送数据 7 用 SPA/GPA 参数传送数 据 7 详细信息, 参见: 嵌入程序调 用 (页 1) 调用功能模 块 (页 2) 调用其它事 务 (页 4) 调用对话模 块 (页 4) 提交报表 (页 5) 在程序间传 送数据 (页 7) 1 set Z_011page 1 嵌入程序调 用 xe "CALL, 嵌入程序调用" xe "COMMIT WORK" xe "LUW, SAP LUW 和报表" xe "LUW, SAP LUW 和对话模块" xe "LUW, SAP LUW 和功能模块" xe "LUW, SAP LUW 和事务" xe "SAP LUW" xe "报表, SAP LUW" xe "报表, 滚动区域" xe "对话模块, SAP LUW" xe "对话模块, 回卷区域" xe "更新事务 (SAP LUW)" xe "功能模块, SAP LUW" xe "功能模块, 滚动区域" xe "滚动区域, 及外部程序" xe "嵌入程序调用" xe "事务, SAP LUW" xe "事务, 调用外部程序" xe "事务, 滚动区域" xe "外部程序, 并更新事务(SAP LUW)" xe "外部程序, 和滚动区域"外部程序组 件由系统进 行维护,对 所有程序都 可用。可在 事务中按任 意组合调用 这些组件。 外部程序和 滚动区 滚动区包含 程序的运行 时间上下文 。除运行时 间堆栈和其 它结构外, 所有局部变 量和程序可 以识别的任 何数据都存 储在这里。 系统是如何 处理外部程 序组件的滚 动区的呢? 事务在各 自的滚动区 中运行 报表在各 自的滚动区 中运行 对话模块 在各自的滚 动区中运行 功能模块 在其调用程 序的滚动区 中运行 调用运行自 己的滚动区 的外部程序 时,可以最 多嵌入 9 层调用。所 调用的功能 模块不单独 增加一层。 外部程序和 LUW 处理 运行时,事 务必须以“ 全都或全都 不”方式对 数据库进行 更新。或者 全部执行, 或者全部丢 弃。“LUW” (逻辑工作 单元)是某 一时间段, 在此期间所 需的任何更 新都属于“ 全都或全都 不”单元。 “SAP LUW”是 指 ABAP/4 事务进行单 式组更新的 时间段。( SAP-LUW, 也称为更新事务 (页 Error! Not a valid link.) ,与 数据库 LUW 不同)。 在调用外部 程序时,了 解相关的被 调程序或调 用程序如何 进行更新非 常重要。外 部程序与调 用程序在同 一 SAP LUW 中运行,还 是在单独的 SAP LUW 运行? 事务用单 独的 SAP LUW 运行 报表用单 独的 SAP LUW 运行 对话模块 与调用程序 在同一 SAP LUW 中运行 功能模块 与调用程序 在同一 SAP LUW 中运行 上述规则的 唯一例外是 用 IN UPDATE TASK (只是 V2 功能) 或 IN BACKGROUND TASK (ALE 应用程序) 调用的功能 模块。它们 总是在自己 的(单独的 )更新事务 中运行。 如果程序调 用更新任务 功能或使用 COMMIT WORK, 则外部程序 与其调用程 序共享(或 不共享) SAP LUW 这一事实会 产生特殊效 果。详细信 息,参见编程数据库 更新 (页 Error! Not a valid link.) 。 2 set Z_002page 2 调用功能模 块 xe "CALL FUNCTION" xe "对话编程, 调用功能模块" xe "功能模块, 已定义" xe "功能模块, 在事务中使用" xe "功能组, 已定义" xe "函数库, 访问" xe "事务, 调用功能模块"功能模块是 通用库例程 ,在整个系 统内都能使 用。有多种 用途,如操 作串、进行 特殊计算、 调用远程系 统上的程序 或发行 的屏幕序列 。 每个功能模 块都属于某 个“功能组 ”。功能组 是逻辑相关 的模块集合 ,相互共享 全局数据。 组内的所有 模块都包括 在同一主程 序中。当 ABAP/4 程序包含 CALL FUNCTION 语句时,系 统会在运行 时与程序代 码一起将整 个功能组装 载进去。 访问功能库 系统在功能 库中管理功 能模块。从 中可查阅现 有功能、其 调用接口和 文档,以及 创建新功能 等。要访问 功能库,请 按工作台中 的“功能库 ”。 在 ABAP/4 编辑器中, 可以双击代 码中的功能 模块名,或 使用“编辑 -> 插入语句” 功能。“插 入语句”会 查找功能模 块接口并在 程序中插入 功能调用模 板。所插入 的调用包含 预先格式化 的参数。 进行调用 用 CALL FUNCTION 语句调用功 能模块。例 如,假定要 在用户未保 存就退出事 务时给出要 求进行的提 示。有一个 功能模块可 以完成这一 提示任务: CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA' EXPORTING TEXTLINE1 = 'Do you want to save?' TEXTLINE2 = '????' TITEL = 'REMINDER' IMPORTING ANSWER = REPLY. POPUP_TO_CONFIRM_LOSS_OF_DATA 使用 TEXTLINE 参数产生一 个弹出窗口 : 从调用返回 后,变量 REPLY 包含用户的 回答:是( ‘J’)或 否(‘N’ )。 本节讲述如 何调用和编 写功能模块 。关于使用 功能库工具 的信息,参 见 ABAP/4 工作台工具 (页 Error! Not a valid link.) 。 使用功能模 块接口 程序只能使 用在功能模 块接口中说 明的参数向 功能模块传 送数据。在 CALL FUNCTION 语句中,参 数赋值的形 式通常为: <形参> = <实参> 。其中,形 参是接口中 指定的名字 。<实参> 可以是变量 或常数。 在对 POPUP_TO_CONFIRM_LOSS_OF_DATA 的调用中, 调用程序使 用形参 TEXTLINE1、 TEXTLINE2 和 TITEL 将文本串‘ 想保存吗? ’、‘????’ 和‘REMINDER’ 发送给功能 。用户的回 答放在变量 REPLY 中。 功能模块通 常可以包含 四种类型的 参数: EXPORTING: 用于向被调 功能传送数 据。相应的 <形参> 在功能模块 接口中被指 定为输入参 数。如果 EXPORTING 参数在功能 模块接口屏 幕中标记为 “可选”, 则可将其忽 略。 IMPORTING: 用于接受从 功能模块返 回的数据。 <形参>在 功能模块接 口中被指定 为输出参数 。如果不需 要,可忽略 任何 IMPORTING 参数:这些 都是可选的 。 TABLES: 只用于通过 引用(即通 过地址)传 送内部表。 TABLES 参数在功能 模块接口屏 幕中未标记 为“可选” ,则不能将 其忽略。 CHANGING: 用于与功能 相互传送参 数(可能更 改为调用程 序版本)。 如果 CHANGING 参数在功能 模块接口屏 幕中标记为 “可选”, 则可将其忽 略。 也可以使用 “编辑 -> 插入语句” 功能(位于 ABAP/4 编辑器中) 指明哪些参 数可选。在 功能插入 CALL FUNCTION 语句之后, 就将可选参 数标注出来 。 关于处理功 能模块中例 外情况的详 细信息,参 见: 3 set Z_003page 3 处理例外情 况 xe "CALL FUNCTION" xe "对话编程, 调用功能模块" xe "功能模块, 处理例外" xe "例外处理和功能模块" xe "事务, 调用功能模块"功能模块允 许程序员决 定出现例外 之后是由调 用程序进行 处理还是由 系统进行处 理。要告知 系统由调用 程序处理例 外,则应在 CALL FUNCTION 语句中指定 EXCEPTIONS: CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' EXPORTING DATE = TRANS_DATE FOREIGN_CURRENCY = FCURRKEY LOCAL_AMOUNT = AMOUNT LOCAL_CURRENCY = LCURRKEY IMPORTING EXCHANGE_RATE = RATE_USED FOREIGN_AMOUNT = CONVD_AMT FOREIGN_FACTOR = FCURR_FACTOR EXCEPTIONS NO_RATE_FOUND = 1 OVERFLOW = 2. 例外类型在 功能模块接 口中进行定 义。对于 CALL FUNCTION 中提到的各 种例外类型 ,系统都假 定调用程序 自己处理该 错误类型。 在上述语句 中,程序员 指明程序处 理两种错误 类型(NO_RATE_FOUND 和 OVERFLOW) ,其他则由 系统进行处 理。 要处理所有 的例外类型 ,请使用: CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' EXPORTING ... IMPORTING ... EXCEPTIONS NO_RATE_FOUND = 1 OVERFLOW = 2 NO_FACTORS_FOUND = 3 OTHERS = 4. OTHERS 关键字包含 CALL FUNCTION 语句中未列 出的所有例 外。使用 OTHERS 可包含打算 用同一方法 处理的所有 例外类型。 例如,如果 编写以下代 码: CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' EXPORTING ... IMPORTING ... EXCEPTIONS OTHERS = 4. 则程序仍将 得到所有相 同的例外通 知,但这次 都使用单独 例外代码。 调用程序处 理例外时 如果出现了 程序应处理 的例外,功 能模块就将 SY-SUBRC 设置为相应 的数字,并 将控制直接 返回给程序 。只有引用 所调用的参 数才包含返 回值。如果 例外是由 MESSAGE ..... RAISING 产生的,则 系统用以下 系统字段中 将消息传回 去: SY-MSGID (消息标识 符) SY-MSGTY (消息类型 ) SY-MSGNO (消息号) SY-MSGV1 到 SY-MSGV4( 消息中包括 字段 的 内容)。 这些字段有 助于使用具 有特殊参数 的 MESSAGE 语句: MESSAGE SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 如果字段 SY-MSGV1 到 SY-MSGV4 中有任何一 个为空,系 统就将其全 部忽略。关 于发布消息 的详细信息 ,参见发布消息 (页 Error! Not a valid link.) 。 系统处理例 外时 如果让系统 处理例外, 对于用户则 会发生以下 两种情况之 一: 程序终止 系统显示 消息并根据 消息类型继 续进行处理 。 如果既要编 写功能模块 又要编写调 用程序,参 见 编程功能模块 (页 Error! Not a valid link.) 以获取有关 例外处理的 详细信息。 4 set Z_004page 4 调用其它事 务 xe "CALL TRANSACTION" xe "LEAVE TO TRANSACTION" xe "对话编程, 调用其它事务" xe "事务, 调用其它事务"可以从事务 内部转到或 调用其它事 务。“转到 ”新事务将 完全终止原 事务:用户 无法返回。 “调用”新 的事务则可 在被调事务 结束后返回 原事务。返 回后,将恢 复执行紧跟 在调用后面 的指令。 转到事务 要转到另一 事务并结束 当前事务, 请使用 LEAVE TO TRANSACTION 语句: LEAVE TO TRANSACTION ''. 系统将显示 要转到的事 务初始屏幕 。开始新事 务之后,用 户就无法通 过按“退出 ”图标返回 上一事务的 上下文。在 上一事务中 用户没有保 存的所有数 据都将丢失 。 调用事务 如果希望用 户在处理完 中间事务后 能够返回初 始事务,请 使用 ABAP/4 语句: CALL TRANSACTION ''. 与 LEAVE TO TRANSACTION 语句不同, CALL TRANSACTION 语句使系统 开始新的 SAP LUW(或更新事务 (页 Error! Not a valid link.) )。第二个 SAP LUW 与调用事务 的 SAP LUW 并行运行。 通过在被调 事务中使用 关键字 LEAVE, 可以让用户 返回调用程 序的程序上 下文。 在调用事务 时,可以告 知系统取消 事务的初始 屏幕而直接 到序列中的 下一个屏幕 : CALL TRANSACTION '' AND SKIP FIRST SCREEN. 对初始屏幕 进行处理但 不显示。只 有当初始屏 幕中所有必 需字段都已 赋值时取消 初始屏幕才 有意义。否 则,调用事 务时程序必 须传送数据 值。有关参 数传送技术 的信息,参 见 在程序间传 送数据 (页 7) 。 调用与调用 程序共享 SAP LUW 的事务 有时需要调 用独立的事 务,但又希 望其与调用 程序在同一 SAP LUW 中运行。其 技巧在于将 现有事务转 换成对话模 块。为此, 只需创建一 个新的对话 模块,使其 主程序和初 始屏幕与现 有事务相同 。然后用 CALL DIALOG 调用新的对 话模块。 必须按照一 定规则对同 时用作事务 和对话模块 的事务进行 编程。详细 信息,参见 用事务作为 对话模块 (页 4) 。 4 set Z_005page 4 调用对话模 块 xe "CALL DIALOG" xe "SAP LUW, 和对话模块" xe "对话编程, 调用对话模块" xe "对话模块, 从事务中调用" xe "对话模块, 为 (SAP LUW)更新事务" xe "对话模块, 与功能模块比较" xe "功能模块, 与对话模块比较" xe "事务, 调用对话模块"对话模块是 不属于特定 事务的可调 用屏幕序列 。对话模块 有自己的模 块池,可由 任何事务调 用。对话模 块与调用事 务在同一 SAP LUW (或更新事务 (页 Error! Not a valid link.) )中运 行。因此, 系统忽略对 话模块发送 给更新任务 的任何更新 例程。这就 使得在编写 使用异步更 新的应用程 序时对话模 块特别有用 。因为对话 模块在自己 的滚动区中 运行(功能 模块共享调 用程序的滚 动区),所 以对话模块 比功能模块 运行速度慢 的多。 系统采用类 似于功能库 的工具管理 对话模块。 可以使用该 工具查阅现 有对话、其 调用接口和 文档,以及 创建新对话 等。 要在 Workbench 中使用对话 模块工具, 请使用菜单 选项“开发 -> 编程环境 -> 对话模块” 。在“对象 浏览器” 中,使用“ 环境 -> 程序开发 -> 对话模块” 。 运行时执行 对话模块 使用 CALL DIALOG 语句调用对 话模块。例 如: CALL DIALOG 'SWO_OBJTYPE_GENERATE' EXPORTING DIALOG_MODE FROM MODE DIALOG_OBJTYPE FROM OBJTYPE IMPORTING DIALOG_RETURN TO RESULT. 4 set Z_012page 4 用事务作为 对话模块 xe "CALL, 嵌入程序调用" xe "COMMIT WORK , 在对话模块" xe "LUW, SAP LUW 和对话模块" xe "SAP LUW 和对话模块" xe "SY-CALLD" xe "调用模式" xe "对话模块, SAP LUW" xe "对话模块, 使用 COMMIT WORK" xe "对话模块, 使用 LEAVE 语句" xe "对话模块, 转换事务到" xe "两次使用事务" xe "事务, 用作对话模块" xe "退出, 在对话模块中" xe "退出模式"必须将用作 对话模块的 事务编程为 要作为事务 和对话模块 运行。以下 各节讲述事 务代码必须 适合两种用 途的两个区 域。 编写两用 SAP LUW 事务必须既 能够在自己 的 SAP LUW (或更新事务 (页 Error! Not a valid link.) )中运 行,也能够 在调用程序 的 SAP LUW 中运行。 对话模块运 行时,(在 其调用程序 的 SAP LUW 中),要有 特殊的条件 : 继承调用 程序用 ENQUEUE 创建的锁 事务作为对 话模块运行 时,可以假 定给定对象 的锁已存在 。事务作为 事务运行时 ,则必须排 列自己的锁 。可以使用 系统变量 SY-CALLD 来确定在运 行时程序是 否在调用模 式下运行。 关于锁的详 细信息,参 见 SAP 系统中的锁 (页 Error! Not a valid link.) 。 继承调用 程序的更新 任务关键字 关于更新任 务处理的信 息,参见 更新任务中的绑定更新 (页 Error! Not a valid link.) 。 忽略 COMMIT WORK 语句 可以在两用 事务中包含 COMMIT WORK, 但在程序作 为对话模块 运行时则被 将忽略。对 话模块中所 要求的全部 更新将在调 用程序的下 一 COMMIT WORK 中进行处理 。详细信息 ,参见 COMMIT WORK 处理 (页 Error! Not a valid link.) 。 调用 IN UPDATE TASK 的功能模块 不在对话模 块中触发。 必须确保用 ON UPDATE TASK 调用的任何 功能模块都 可以延迟到 调用程序中 的下一 COMMIT WORK 之后。 PERFORM ON COMMIT 例程不在对 话模块中执 行。 必须确保用 PERFORM ON COMMIT 调用的任何 FORM 例程都可以 延迟到调用 程序中的下 一 COMMIT WORK 之后。特殊 情况下,在 控制返回调 用程序时, 对话模块滚 动区中的局 部数据会消 失。用这种 方式调用的 FORM 例程不应依 赖该局部数 据。详细信 息,参见调用更新任 务功能的对 话模块 (页 Error! Not a valid link.) 。 在编写“保 存”功能( F12)或 在其它允许 用户确认其 操作的地方 ,通常需要 上述特征。 通常情况下 ,在编写两 用事务的代 码时,必须 使所有托付 处理所需的 更新既可以 在被调程序 中发生也可 以在调用程 序中发生, 而不失去其 正确性。 编写两用退 出 从两用事务 中退出必须 符合两种情 况:即从调 用模式返回 和从离开模 式返回。如 果程序由 CALL TRANSACTION、 CALL DIALOG 或 SUBMIT REPORT( 及其它)等 激活,则以 调用模式执 行。在这种 情况下,系 统变量 SY_CALLD 设置为‘X’ 。如果当前 没有活动的 嵌入调用, 则以离开模 式执行。 LEAVE 语句用于以 下情况: LEAVE 语句导致从 调用模式返 回。 LEAVE TO SCREEN NNN 导致从离开 模式返回。 由于两用事 务既能在调 用模式下, 又能在离开 模式下,因 此,应该同 时使用两个 语句,其顺 序如下: AT USER-COMMAND. .... LEAVE. LEAVE TO SCREEN NNN. 如果当前是 作为事务运 行的,则忽 略第一个 LEAVE, 而执行 LEAVE TO SCREEN NNN。如 果是作为对 话模块运行 的,则执行 第一个 LEAVE ,而始终不 会执行第二 个 LEAVE。 5 set Z_006page 5 提交报表 xe "SUBMIT" xe "报表, 从事务中提交" xe "对话编程, 从事务提交报表" xe "事务, 提交事务报表"有两种从事 务生成报表 的选项:LEAVE TO LIST-PROCESSING 语句或 SUBMIT 语句。 在模块池中 使用 LEAVE TO LIST-PROCESSING 来编写列表 处理权。当 事务收集到 大量报表数 据时,用 LEAVE TO LIST-PROCESSING 生成报表是 最好的方法 。详细信息 ,参见 转到列表过 程 (页 Error! Not a valid link.) 。 使用 SUBMIT 语句开始独 立于事务的 报表。该报 表在自己的 滚动区中运 行,不与调 用程序共享 公共数据区 。因此,当 事务和报表 很少使用共 同数据时, SUBMIT 比较合适。 使用 SUBMIT 的语法为: SUBMIT RSBBB013. 要执行该语 句,系统将 离开当前程 序并启动报 表。 返回调用程 序: 要允许用户 返回调用事 务,请使用 关键字 AND RETURN。 SUBMIT RSFLFIND AND RETURN. 在这种情况 下,系统将 为报表打开 内部会话。 当用户从列 表显示返回 时,系统将 返回启动报 表的事务屏 幕。(直接 从紧跟 SUBMIT 后的指令继 续执行。) 显示选择屏 幕: 缺省情况下 ,在使用简 单 SUBMIT 语句时,不 会出现报表 的选择屏幕 。要显示报 表的选择屏 幕,请使用 VIA SELECTION-SCREEN 关键字: SUBMIT RSFLFIND VIA SELECTION-SCREEN. 系统显示选 择屏幕,用 户可指定自 己的选择条 件。在从列 表显示返回 后,再次出 现选择屏幕 (以便用户 请求另一列 表)。关于 使用 SUBMIT 的详细信息 ,参见: 6 set Z_007page 6 向报表传送 数据 xe "SUBMIT" xe "报表, 传递数据到" xe "对话编程, 从事务提交报表" xe "事务, 提交事务报表"有三种向报 表传送选择 和参数数据 的选项。分 别是: 使用 SUBMIT...WITH 使用报表 变量 使用 RANGE 表 下面将讲述 这些选项。 使用 WITH 关键字 可以使用 WITH 关键字指定 参数或选择 项所需的全 部值: SUBMIT RSBBB013 WITH CARRID = SPFLI-CARRID. 在上述语句 中,“航空 公司”是报 表 RSBBB013 的选择项( 航空公司) 。报表只显 示与要求的 航空公司相 关的记录。 可以通过以 下方法找到 相应选择屏 幕字段的名 字: 使用“编 辑 -> 插入语句 ”功能(位 于 ABAP/4 编辑器中) 将 SUBMIT 语句添加到 代码中 用 F1 键请求字段 帮助(在选 择屏幕中) 使用“实 用程序 -> 有关帮助” 请求逻辑数 据库信息 指定值的范 围 可以用 WITH 指定值的范 围。例如: SUBMIT RSFLFIND WITH DATE BETWEEN '19950301' AND '19951003'. 其中,date 是 RSFLFIND 的选择项, 要求程序带 指定边界值 之间的日期 显示所有记 录。WITH 规范有多种 合法的格式 : WITH

SIGN WITH

BETWEEN AND SIGN WITH

NOT BETWEEN AND SIGN WITH

IN WITH SELECTION-TABLE WITH FREE SELECTIONS 可以是 EQ、NE、 CP、NP、 GE、LT、 LE、GT 中的任何一 个。符号可 选。如果使 用,则 必须是‘I’ (包含)或 ‘E’(排 斥)。所有 操作符 都将按内部 (非显示) 格式传送给 程序。 当

是选择项时 ,系统将在 相关选择项 表中创建条 目,按照指 定情况对 LOW、HIGH、 OPTION 和 SIGN 字段进行。 如果

是参数,则 将 的所有值都 解释为 EQ。 关于使用 WITH 的详细信息 ,参见 SUBMIT 的关键字文 档。 关于使用 RANGES 表的信息, 参见 RANGES 语句 (页 Error! Not a valid link.) 。 关于选择项 表的详细信 息,参见 选择表 (页 Error! Not a valid link.) 。 在报表中使 用变量 可以使用报 表变量来指 定参数和选 择项值。为 此,请使用 USING SELECTION-SET 关键字: SUBMIT RSFLFIND USING SELECTION-SET VARIANT1. 关于报表变 量的详细信 息,参见 使用变式预定义选择 (页 Error! Not a valid link.) 。 使用 RANGES 指定选择项 可以通过填 写 RANGES 表指定选择 项值。例如 : TABLES SPFLI. RANGES S_CARRID FOR SPFLI-CARRID. S_CARRID-SIGN = 'I'. S_CARRID-OPTION = 'EQ'. S_CARRID-LOW = 'LH'. APPEND S_CARRID. SUBMIT RSFLFIND WITH CARRID IN S_CARRID. 在此例中, S_CARRID 是结构与选 择表相同的 内部表。通 过引用列 CARRID (数据库表 SPFLI) ,字段 S_CARRID-LOW 和 S_CARRID-HIGH 获得与 CARRID 相同的数据 类型。内部 表 S_CARRID 的表头行将 被填写并被 附加到表中 。该表功能 中定义的选 择条件类似 于逻辑表达 式 SPFLI-CARRID EQ 'LH'。 关于使用 RANGES 表的详细信 息,参见 RANGES 语句 (页 Error! Not a valid link.) 。 7 set Z_008page 7 保存或打印 报表 xe "SUBMIT" xe "报表, 使用 SUBMIT 打印" xe "对话编程, 从事务提交报表" xe "事务, 提交事务报表"不必为用户 显示列表。 可以将其打 印出来,或 保存到其它 存储设备中 。 将报表发送 给打印机 可以将报表 发送给打印 机而不显示 在屏幕上。 为此,请使 用关键字 TO SAP-SPOOL: SUBMIT RSFLFIND ... TO SAP-SPOOL DESTINATION 'LT50'. 在使用该特 征时,有多 种选项可指 定打印所需 的参数。详 细信息,请 参见 SUBMIT 联机文档( ABAP/4 编辑器中的 “工具 -> 有关帮助...” )。 将报表保存 在内存中 可以使用 SUBMIT 生成报表并 将其保存在 ABAP/4 内存中,而 不显示在屏 幕上。为此 ,请使用关 键字 EXPORTING LIST TO MEMORY: SUBMIT RSFLFIND ... AND RETURN EXPORTING LIST TO MEMORY. 该特征将生 成的报表放 在 ABAP/4 内存中,从 SUBMIT 调用返回之 时,调用程 序可从中进 行访问。功 能组 SLST 提供访问已 保存的报表 的功能模块 ,其中包括 : LIST_FROM_MEMORY WRITE_LIST DISPLAY_LIST 请注意,AND RETURN 关键字是该 特征所必需 的,但不允 许使用 TO SAP-SPOOL 关键字。详 细信息,参 见 SUBMIT 联机文档( ABAP/4 编辑器中的 “工具 -> 有关帮助...” )。 7 set Z_009page 7 在程序间传 送数据 xe "GET PARAMETER" xe "SAP/GPA 参数, 用于事务" xe "SET PARAMETER" xe "对话编程, 在组件间数据传输"事务、对话 模块和报表 都在自己的 滚动区中运 行。在从事 务中调用其 中任何一个 时,都必须 给它们传送 运行所需的 数据。向外 部程序传送 数据的选项 有: 使用 SPA/GPA 参数(SAP 内存) 这是在外部 程序之间传 送数据的最 常用方法。 详细信息, 参见:用 SPA/GPA 参数传送数 据 (页 7) 。 使用 EXPORT/IMPORT 数据(ABAP/4 内存) 任何程序都 可以使用 EXPORT 语句在 ABAP/4 内存中存储 数据字段簇 。因此,该 数据就全局 有效(使用 IMPORT) ,在程序本 身中以及任 何被调事务 、报表或其 它模块中都 有效。使用 EXPORT: EXPORT ... TO MEMORY ID . 然后调用程 序就会检索 数据: IMPORT ... FROM MEMORY ID . ID 参数标识唯 一的数据簇 。如果将同 一对象多次 输出到同一 ID,则会 改写内存中 该簇的第一 个版本。如 果第二次输 出对象的子 集,则仍会 改写该组的 第一个版本 中的“所有 ”对象(不 仅是子集) 。 只有调用程 序和被调用 程序经常一 起使用时, 才用 EXPORT/IMPORT 实现参数传 送。对于外 部应用程序 可用的调用 程序不推荐 EXPORT/IMPORT, 因为这些应 用程序将根 本无法找到 调用所需的 接口。 关于输出和 输入数据簇 的详细信息 ,参见 ABAP/4 内存中的数 据簇 (页 Error! Not a valid link.) 。 7 set Z_010page 7 用 SPA/GPA 参数传送数 据 xe "GET PARAMETER" xe "SAP/GPA 参数, 用于事务" xe "SET PARAMETER" xe "对话编程, 在组件间数据传输" xe "屏幕, Set/Get 参数属性"可使用 SPA/GPA 参数向被调 用的程序传 送数据。SPA/GPA 参数是全局 保存在内存 中的字段值 。每个参数 都用三个字 符代码标识 :通过选择 在第一个屏 幕上的“其 他对象”可 以在对象浏 览器中定义 这些参数。 SPA/GPA 存储器是用 户指定的并 在用户整个 会话期中都 有效。 有两种使用 SPA/GPA 参数的方法 : 通过在“ 屏幕制作器 ” 中设置字段 属性 “SET 参数”、“ GET 参数”和“ 参数 ID”属性 告知系统是 向“参数 ID”存储 值还是从中 检索值。系 统使用这些 值自动初始 化屏幕字段 值。 对调用屏幕 中给定字段 的“SET 参数”属性 以及被调用 屏幕中相应 字段的“GET 参数”属性 进行标记。 系统会自动 将字段内容 从调用事务 传送给它所 触发的事务 中。 通过使用 SET PARAMETER 或 GET PARAMETER 语句 用这些语句 可以存储和 检索来自 ABAP/4 程序的 SPA/GPA 值。如果两 个事务的选 择屏幕没有 共享同一必 需的字段, 则请使用这 些语句按名 称显式存储 屏幕字段。 在从 PAI 模块调用新 事务之前, 用一个名称 之下存储调 用程序事务 的字段: SET PARAMETER ID 'RID' FIELD . 系统将值存 储在 SPA 参数‘RID’ 中的<字段 1>中。三 个字符的标 识符‘RID’ 必须在 SAP 表 TPARA 中定义。如 果 SPA 参数‘RID’ 已经包含值 ,则 SET PARAMETER 语句会将其 改写掉(用 的 内容)。 在被调事务 的 PBO 模块中,在 其他名称下 检索字段: GET PARAMTER ID 'RID' FIELD . 系统读取‘ RID’的 内容并将其 传送给。 例如,假定 要将屏幕字 段和其它数 据从调用事 务传送给被 调用事务。 调用事务可 以将某些值 存储在 SPA 参数中: SET PARAMETER ID 'RID' FIELD REPORTID. CALL TRANSACTION 'SE38'. 然后,被调 事务即可在 PBO 获取信息, 以便将其显 示到屏幕上 。此处将出 现事务 SE38 的初始屏幕 ,其报表 ID 已填好。这 在使用 CALL TRANSACTION AND SKIP FIRST SCREEN 时非常有用 。除非所需 的字段值由 内存提供, 否则不能取 消第一个屏 幕。 1

/
本文档为【ABAP教程(十分少见的教程)第三部分第十一章 调用外部程 序组件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索