matinal:再次详解ABAP BDC的执行模式和更新模式

2023-10-14 14:19:48 浏览数 (2)

代码语言:javascript复制
CALL TRANSACTION 'TCODE' USING bdcdata
                         MODE   'A'
                         UPDATE 'S' MESSAGES INTO it_messtab.
CALL TRANSACTION 'TCODE' USING bdc_tab ... 


ABAP 提供的这个语法是执⾏BDC 的核⼼,其中 bdcdata 这个内表的填充⽅法很多。⽤事务码 SHDB/SM35 可以⽣成填写这个表的内容,按照 ABAP 字典结构类型 BDCDATA 的定义对应填写就可以了。


MODE 确定批输⼊的执⾏模式,有下⾯⼏个可选值:

执⾏模式,有下列可选值(执⾏模式常⽤的是 A/ N)

"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 调试器,这种⽅式主要⽤于调试过程。


更新模式,有下列可选值(更新模式常⽤的是 S)

"A" 异步更新。被调⽤程序的更新按照没有指定 COMMIT WORK 语句和 AND WAIT 附加的⽅式执⾏。也就是说,数据更新被放到更新队列⾥,由另⼀个专门的更新进程执⾏,主程序⼀旦提交数据就继续执⾏,⽽不管提交的更新是否执⾏完成。这种⽅式⽐较适合于⽤⼀个事务码⼤量更新指定数据,⽐如维护主数据等。

"S" 同步更新。被调⽤程序的更新按照指定了 COMMIT WORK 语句和 AND WAIT 附加的⽅式执⾏。也就是说,数据更新被放到更新队列⾥,由专门的更新进程执⾏,但是主程序会等到数据提交完成,返回结果信息后才继续执⾏。这种⽅式⽐较适合于数据⼀致性要求⽐较⾼,多个不同事务码的连续处理。

"L" 本地更新。被调⽤程序的更新按照执⾏ SET UPDATE TASK LOCAL 语句的⽅式执⾏。也就是说,数据更新在主程序所在的进程中完成,主程序必定等到被调⽤事务完成才继续执⾏。

0 人点赞