SAP 调用外部程序的方法

转载 2015年07月10日 10:13:29
在 SAP 中一个程序调用外部程序有两种方式:
1. Call transaction <tcode>
常见于 BDC 程式中.
  CALL TRANSACTION tcode
        USING bdcdata
        MODE  p_mode
        UPDATE c_update
        MESSAGES INTO messtab.
mode有以下的可选值.

行模式  

作用

"A"

示所有入屏幕,如果在 bdc_tab 中包含屏幕的功能会出小窗口个功能。它也是默认值,如果指定不是下面的认为是 A

"E"

只有在出现错误时示屏幕,用可以修正数据,修正后程序可以继续处理。

"N"

示屏幕的静默模式。如果到达被用事的断点,统处止,并置一些系字段。sy-subrc 1001sy-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 句的方式行。也就是,数据更新在主程序所在的程中完成,主程序必定等到被用事完成才继续执行。

2. Submit <program> and return
调用程式:
REPORT  ZTEST_CALL_PROG.
DATA: BEGIN OF w_data,
  fid1 TYPE string,
  num1 type i,
  num2 type i,
END OF w_data.
DATA: T_OUT LIKE W_DATA OCCURS 0 WITH HEADER LINE.
Do 10 TIMES.
  if sy-index < 4.
    t_out-fid1 = 'A'.
    t_out-num1 = sy-index.
    t_out-num2 = sy-index + 1.
  elseif sy-index < 7.
    t_out-fid1 = 'B'.
    t_out-num1 = sy-index + 1.
    t_out-num2 = sy-index + 2.
  else.
    t_out-fid1 = 'C'.
    t_out-num1 = sy-index.
    t_out-num2 = sy-index - 1.
  ENDIF.
  append t_out.
  ENDDO.
  export t_out to MEMORY id 'T_OUT'. "内表t_out的内存id为'T_OUT',被调用程式从这里取得数据.
  SUBMIT zwrite_date and RETURN.     "这里也可以用 submit zwrite_data with WITH s_aufnr p_aufnr
                                     "WITH s_mode 'N 给被调用程序传值.
  write: / 'justin'.


被调用程式,从调用程序存储在ABAP内存中取得要处理的数据.
REPORT  ZWRITE_DATE.
data: BEGIN OF w_data,
  fid1 type string,
  num1 type i,
  num2 type i,
 END OF w_data.
 data: t_out LIKE w_data OCCURS 0 WITH HEADER LINE.
 import t_out from MEMORY id 'T_OUT'.
 FREE MEMORY ID 'T_OUT'.        "清除MEMORY ID 为'T_OUT'的内容.
 loop at t_out.
   write: / ' ', t_out-fid1, t_out-num1, t_out-num2.
 ENDLOOP.
 write: sy-uline.


Other example:
   EXPORT rm16_lgort  FROM l_lgort
          rm16_werks  FROM p_plwrk
          rm16_matnr  FROM p_matnr  TO  MEMORY ID 'ZPHRRM13'.
  SUBMIT zphrrm13 AND RETURN.
  IMPORT mdezx mdpsx mdkp mdsta mdstal FROM MEMORY ID 'ZPHRRM13'.

相关文章推荐

通讯录管理 v1.0 是什么

Welcome to my blog!通讯录管理 v1.0 软件大小:14383 KB软件语言:简体中文软件类别:国产软件 / 共享版 / 信息管理应用平台:Win9...

debug 技巧 包括各种场景的debug方法(非常实用)

debug是ABAP开发里面非常重要的一项技能,下面介绍一些小的技巧,可以提高debug的效率: 1、通过对SE16 debug修改某条数据(这个方法比较靠谱):       查看到对应SO单号数...

Places of Interest - Guilin and Yang Shuo

Places of Interest - Guilin and Yang Shuo Guilin Yang ...

浮水印技术,大学生毕业设计

很多学院把浮水印做为毕业设计,而很多学生由于对编程没有兴趣或则其他原因答辩成为难题本人经上海一学生委托设计了一套程序。功能为模块一密钥功能:输入一个密钥生成一个64位的序列号一加入水印功能:图片加入信...

如何去完成一个SAP notes的实现

本文主要介绍如何去看SAP notes,以及如何去实现SAP notes,有那些注意事项: 1、查看SAP notes: 2、实现SAP notes: 3、注意事项:

金额累加出现溢出,dump(CX_SY_ARITHMETIC_OVERFLOW)

待定

text的翻译传输问题

待定

function module的增强(非一般调用方式)。

待定
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)