阿宝
找工作中,求帮助,谢谢!!! QQ:810487238

CALL TRANSACTION

 CALL TRANSACTION 'tcode' USING bdc_tab ... 是 ABAP 里提供的一个方便的执行批量输入的语句,使用它可以通过程序代码完成多个事务码的连续执行。

bdc_tab 这个批输入任务表的填写方式,网上有很多例子了,大家用到的时候可以搜索。用事务码 SHDB 可以生成填写这个表的内容,按照 ABAP 字典结构类型 BDCDATA 的定义对应填写就可以了。

下面详细介绍一下这种调用方式中的执行参数:

... { {[MODE mode] [UPDATE upd]} 
    | [OPTIONS FROM opt] } 
    [MESSAGES INTO itab] ... .

 

MODE 确定批输入的执行模式,有下面几个可选值:

 

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

 

UPDATE 确定批输入的更新模式,有下面几个可选值:

 

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

 

posted on 2012-05-03 13:48  阿宝兴荣  阅读(4577)  评论(0编辑  收藏  举报