打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
用BDC的方式控制屏幕跳转

 

CALL TRANSACTION ta { [AND SKIP FIRST SCREEN] 调用事务,并且跳过第一个屏幕
| [USING bdc_tab [bdc_options]] }.用bdc的方式来控制屏幕跳转

例子:

data: bdcdata_wa  type bdcdata,

        bdcdata_tab type table of bdcdata.

 

  data opt type ctu_params.

 

  clear bdcdata_wa.

  bdcdata_wa-program  = 'SAPMP50A’.

  bdcdata_wa-dynpro   = ’1000′.

  bdcdata_wa-dynbegin = 'X’.

  append bdcdata_wa to bdcdata_tab.

 

  clear bdcdata_wa.

  bdcdata_wa-fnam = 'BDC_OKCODE’.

  bdcdata_wa-fval = '=LIST’.

  append bdcdata_wa to bdcdata_tab.

 

  clear bdcdata_wa.

  bdcdata_wa-fnam = 'RP50G-PERNR’.

  bdcdata_wa-fval = itab-pernr.

  append bdcdata_wa to bdcdata_tab.

 

  clear bdcdata_wa.

  bdcdata_wa-fnam = 'RP50G-TIMR6′.

  bdcdata_wa-fval = 'X’.

  append bdcdata_wa to bdcdata_tab.

 

  clear bdcdata_wa.

  bdcdata_wa-fnam = 'RP50G-BEGDA’.

  bdcdata_wa-fval = itab-rq.

  append bdcdata_wa to bdcdata_tab.

 

  clear bdcdata_wa.

  bdcdata_wa-fnam = 'RP50G-ENDDA’.

  bdcdata_wa-fval = itab-rq.

  append bdcdata_wa to bdcdata_tab.

 

  clear bdcdata_wa.

  bdcdata_wa-fnam = 'BDC_CURSOR’.

  bdcdata_wa-fval = 'RP50G-CHOIC’.

  append bdcdata_wa to bdcdata_tab.

 

  clear bdcdata_wa.

  bdcdata_wa-fnam = 'RP50G-CHOIC’.

  bdcdata_wa-fval = ’2011′.

  append bdcdata_wa to bdcdata_tab.

 

  clear bdcdata_wa.

  bdcdata_wa-fnam = 'RP50G-CHOIC’.

  bdcdata_wa-fval = ’2011′.

  append bdcdata_wa to bdcdata_tab.

 

  opt-dismode = 'E’.“错误才显示屏幕

  opt-defsize = 'X’.

 

  call transaction 'PA30′ using bdcdata_tab options from opt.

下面是转的.
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 语句的方式执行。也就是说,数据更新在主程序所在的进程中完成,主程序必定等到被调用事务完成才继续执行。

OPTIONS FROM opt 则用一个参考 ABAP 字典中结构类型 CTU_PARAMS 的结构数据对象来传递参数,CTU_PARAMS 结构包含了 MODE 和 UPDATE 两个参数,并且还包含其它参数,结构如下:

DISMODE:显示模式,其值对应于前面介绍的 MODE 参数;
UPDMODE:更新模式,其值对应于前面介绍的 UPDATE 参数;
CATTMODE:CATT 模式,有三个值:” “、非 CATT 模式;”N”、CATT 模式但不对每个屏幕进行控制;”A”、CATT 模式并对每个屏幕进行控制;

DEFSIZE:是否使用屏幕的定义大小,有两个值:” “、不使用屏幕定义大小,即显示给用户的屏幕跟普通运行时一样,根据用户窗口大小而自动扩展到全屏;”X”、使用屏幕定义大小,即只用源程序中固定的屏幕大小,无论用户窗口如何;

RACOMMIT:英文原文(CALL TRANSACTION USING… is not completed by COMMIT),德文原文(COMMIT WORK ist kein Ende bei CALL TRANSACTION USING…),没看明白;

NOBINPT:调用事务码时,系统字段 sy-binpt 的值,有两个值:” “、在被调用事务执行时,系统字段 sy-binpt 的值为 “X”;:”X”、在被调用事务执行时,系统字段 sy-binpt 的值为 ” “;

NOBIEND:调用事务码完成后,系统字段 sy-binpt 的值,有两个值:” “、在被调用事务执行后,系统字段 sy-binpt 的值为 “X”;:”X”、在被调用事务执行后,系统字段 sy-binpt 的值为 ” “。

最后一个 MESSAGE INTO itab 是把执行过程中的消息都输入到内表 itab 中,itab 的结构必须是 ABAP 字典中结构 BDCMSGCOLL。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
如何通过Tcode查找SAP各事务码对应的增强出口清单
如何查看某个用户指定时间段的ABAP开发记录
SAP ABAP语言编程手册
使用工厂还是分割评估?
图解经济学原理
电网101、104规约解析(Java)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服