二维码

[BDC] BDC中CALL TRANSACTION用法

Twilight发表于 2015-05-05 19:36Twilight 最后回复于 2015-05-05 19:36 [复制链接] 6002 0

CALL TRANSACTION 'tcode' USING bdc_tab ... 是 ABAP 里提供的一个方便的执行批量输入的语句,使用它可以通过程序代码完成多个事务码的连续执行。
下面详细介绍一下这种调用方式中的执行参数:
  1. ... { {[MODE mode] [UPDATE upd]}
  2.     | [OPTIONS FROM opt] }
  3.     [MESSAGES INTO itab] ... .
复制代码

MODE 确定批输入的执行模式,有下面几个可选值:
执行模式作用
A show all dynpros 显示所有输入屏幕,如果在 bdc_tab 中包含该屏幕的功能码,则会出现小窗口显示这个功能码。它也是默认值,如果指定不是下面的值,则都认为是 A
E show dynpro on error only 只有在出现错误时才显示屏幕,用户可以修正数据,修正后程序可以继续处理。
N do not display dynpro 不显示屏幕的静默模式。如果到达被调用事务的断点,则系统处理终止,并设置一些系统字段。sy-subrc 为 1001,sy-msgty 为 "S"、sy-msgid 为 "00"、sy-msgno 为 "344"、sy-msgv1 为 "SAPMSSY3"、sy-msgv2 为 "0131"。
P 不显示屏幕的调试模式。如果到达被调用事务的断点,则系统自动转到 ABAP 调试器,这种方式主要用于调试过程。

UPDATE 确定批输入的更新模式,有下面几个可选值:
更新模式
作用
A asynchronously异步更新。被调用程序的更新按照没有指定 COMMIT WORK 语句和 AND WAIT 附加的方式执行。也就是说,数据更新被放到更新队列里,由另一个专门的更新进程执行,主程序一旦提交数据就继续执行,而不管提交的更新是否执行完成。这种方式比较适合于用一个事务码大量更新指定数据,比如维护主数据等。
S synchronously同步更新。被调用程序的更新按照指定了 COMMIT WORK 语句和 AND WAIT 附加的方式执行。也就是说,数据更新被放到更新队列里,由专门的更新进程执行,但是主程序会等到数据提交完成,返回结果信息后才继续执行。这种方式比较适合于数据一致性要求比较高,多个不同事务码的连续处理。
L local本地更新。被调用程序的更新按照执行 SET UPDATE TASK LOCAL 语句的方式执行。也就是说,数据更新在主程序所在的进程中完成,主程序必定等到被调用事务完成才继续执行。

注意:RFC中是不能用Mode=A调试BDC的,只能将数据记录下来,在Function接口中单步调试
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表