zoukankan      html  css  js  c++  java
  • ABAP memory中的Export和Import

    REPORT z_barry_export_import .DATA: BEGIN OF itab1 OCCURS 0 ,
          ff(10) ,
          END OF itab1.
    DATA: itab2 LIKE itab1 OCCURS 0 WITH HEADER LINE .
    DATA: str1 TYPE string ,
          str2 TYPE string . APPEND '111111111' TO itab1.
    APPEND '222222222' TO itab1.
    str1 = 'sssssssssss'. ***如果是同名的对象,可以这么写:
    EXPORT itab1 TO MEMORY ID 'M1'.
    FREE itab1.
    IMPORT itab1 FROM MEMORY ID 'M1'.LOOP AT itab1.
      WRITE / itab1-ff.
    ENDLOOP. ***如果不是同名的对象,需要加上一个对象名
    EXPORT a = itab1 b = str1 TO MEMORY ID 'M2'.
    IMPORT a = itab2 b = str2 FROM MEMORY ID 'M2'.LOOP AT itab2.
      WRITE / itab2-ff.
    ENDLOOP.

    WRITE / str2.

    abap submit用法(一)调用外部程序(abap内存获取数据)

    在sap中一个程序如何调用外部程序,主要有以下有两种方式:(调用的原理与过程 )
    一、call transaction <tcode>
    二、submit <program> and return

    下面主要写一下如何通过submit在一个程序调用外部程序的,这里面涉及到两个程序,其中一个是调用程序,主要处理数据,整合数据供被调用数据获取并打印;另一个是被调用程序,从调用程序存储在ABAP内存的数据取到并打印输出。
    1、调用程序 
    *&---------------------------------------------------------------------* 
    *& 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 .


    *----------------------------------------------------------------------* 
    *  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 .

    APPEND  T_OUT.
    ENDDO .

    *-----------------------------------------------------------------------* 
    *  call extenral program 
    *  调用外部程序 

    *-----------------------------------------------------------------------* 
    ***  使用ABAP内存进行数据传递 
    EXPORT  T_OUT TO  MEMORY  ID  'T_OUT' .

    *** 以下两种情况是调用程序被结束,被调用程序开始执行 
    * SUBMIT ZWRITE_DATA. 

    ***  如果使用这种情况程序之间的数据访问就不能ABAP内存访问了 
    * LEAVE TO TRANSACTION 'ZGET_DATA'. 

    *** 以下两种情况是调用程序被打断,当被调用程序执行完毕之后,调用程序继续执行 
    *   插入一个新的INTERNAL SESSION,被调用程序运行完删除SESSION,继续执行调用程序 
    SUBMIT  Zwrite_data AND  RETURN .

    ***  调用事物代码(和SUBMIT <PROGRAM> AND RETURN的效果一样) 
    * CALL TRANSACTION 'ZGET_DATA'. 

    2、被调用程序
    *&---------------------------------------------------------------------* 
    *& 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.

  • 相关阅读:
    cvCreateStructuringElementEx理解
    GNU_GSL相关
    粒子滤波(转)
    C++指针拷贝
    c++中的复制构造函数
    通过几道题目找自信
    C++网络编程基础
    linux system : install flash player
    ContentType一览
    O_RDWR O_CREAT等open函数标志位在哪里定义?(格式还要编译,答案在最后一段)
  • 原文地址:https://www.cnblogs.com/cnlmjer/p/4099833.html
Copyright © 2011-2022 走看看