abap submit用法(一)調用外部程序(abap內存獲取數據) 收藏

abap submit用法(一)調用外部程序(abap內存獲取數據) 收藏
在sap中一個程序如何調用外部程序,主要有如下有兩種方式:(調用的原理與過程 )
1、call transaction <tcode>
2、submit <program> and returnide

下面主要寫一下如何經過submit在一個程序調用外部程序的,這裏面涉及到兩個程序,其中一個是調用程序,主要處理數據,整合數據供被調用數據獲取並打印;另外一個是被調用程序,從調用程序存儲在ABAP內存的數據取到並打印輸出。
一、調用程序
*&---------------------------------------------------------------------*
*& Report  ZTEST_CALL_PROG
*&
*&---------------------------------------------------------------------*
*& Create  by    : 馮飛劍
*& Create  date  : 2010-1-2
*& Descriptions  : 測試調用外部程序(調用程序)
*&---------------------------------------------------------------------*測試

REPORT   ZTEST_CALL_PROG.
*----------------------------------------------------------------------*
*  define internal tables
*  定義內表
*
*----------------------------------------------------------------------*
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 ..net


*----------------------------------------------------------------------*
*  assign value to internal tables
*  給內表賦值
*
*----------------------------------------------------------------------*
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 .code

APPEND  T_OUT.
ENDDO .blog

*-----------------------------------------------------------------------*
*  call extenral program
*  調用外部程序
*
*-----------------------------------------------------------------------*
***  使用ABAP內存進行數據傳遞
EXPORT  T_OUT TO  MEMORY  ID  'T_OUT' .ip

*** 如下兩種狀況是調用程序被結束,被調用程序開始執行
* SUBMIT ZWRITE_DATA.內存

***  若是使用這種狀況程序之間的數據訪問就不能ABAP內存訪問了
* LEAVE TO TRANSACTION 'ZGET_DATA'.get

*** 如下兩種狀況是調用程序被打斷,當被調用程序執行完畢以後,調用程序繼續執行
*   插入一個新的INTERNAL SESSION,被調用程序運行完刪除SESSION,繼續執行調用程序
SUBMIT  Zwrite_data AND  RETURN .博客

***  調用事物代碼(和SUBMIT <PROGRAM> AND RETURN的效果同樣)
* CALL TRANSACTION 'ZGET_DATA'.string

二、被調用程序
*&---------------------------------------------------------------------*
*& Report  ZWRITE_DATA
*&
*&---------------------------------------------------------------------*
*& Create  by  :  馮飛劍
*& Create  date:  2010-1-2
*& Descriptions:  測試調用外部程序(被調用程序)
*&---------------------------------------------------------------------*

REPORT   ZWRITE_DATA.

*----------------------------------------------------------------------*
*  define internal tables
*  定義內表
*
*----------------------------------------------------------------------*
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 .

*----------------------------------------------------------------------*
*  get data from sap memory and write out
*  從SAP內存讀取數據而後打印輸出
*
*----------------------------------------------------------------------*

import  t_out from  memory  id  'T_OUT' .

FREE  MEMORY  ID  'T_OUT' .

write : sy-uline .

WRITE : '從調用程序取到的數據以下:' .
LOOP  AT  T_OUT.
write : / ' ' ,t_out-fid1, t_out-num1, t_out-num2.
ENDLOOP .
write : sy-uline .

*** 退出程序
* leave program.

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/F122300349/archive/2010/04/22/5516205.aspx

相關文章
相關標籤/搜索