zoukankan      html  css  js  c++  java
  • SAP and ABAP Memory总结 沧海

    1、读取哈使用方法不同
    SAP内存使用SET/GET parameters方法;
    ABAP内存使用 EXPORT 和 IMPORT  方法;

    2、共享范围不同
    SAP内存可以被所有的主session访问,内存数据可以同一个session中不同程序之间,或者不同session之间;
    ABAP只能在同个session的不同程序之间共享数据;

    3、作用范围不同
    SAP内存在整个终端session时间内都有效;
    ABAP内存只能在一个session时间内有效;

    4、使用一般原则
    SAP内存用于屏幕默认值输入;
    abap内存用于模块之间传替数据

    Difference Between SAP and ABAP Memory 

    Can any one tell me what is the difference between ABAP Memory and SAP Memory?

    Answers 1:-

    Within a main session, when ever you start an application program, it opens up an internal sessions with in the main session. The internal session has a memory area that contains the ABAP program and its associated data.  So when ever you want to  pass data between two internal sessions, then you can use ABAP Memory (i.e import, export).

    When comes to SAP memory (also known as global memory), if the data has to be passed b/w two main sessions, we can use SAP Memory(SPA/GPA Parameters).  SAP Memory can also be used to pass data b/w internal sessions.

    Neelima

    Answers 2:-

    SAP Memory
    SAP memory is a memory area to which all main sessions within a SAPgui have access. You can use SAP memory either to pass data from one program to another within a session, or to pass data from one session to another.  Application programs that use SAP memory must do so using SPA/GPA parameters (also known as SET/GET parameters). These parameters can be set either for a particular user or for a particular program using the SET PARAMETER statement. Other ABAP programs can then retrieve the set parameters using the GET PARAMETER statement. The most frequent use of SPA/GPA parameters is to fill input fields on screens

    ABAP/4 Memory
    ABAP memory is a memory area that all ABAP programs within the same internal session can access using the EXPORT and IMPORT statements. Data within this area remains intact during a whole sequence of program calls. To pass data
    to a program which you are calling, the data needs to be placed in ABAP memory before the call is made. The internal session of the called program then replaces that of the calling program. The program called can then read from the ABAP memory. If control is then returned to the program which made the initial call, the same process operates in reverse.

    SAP memory 
    The SAP memory, otherwise known as the global memory, is available to a user during the entire duration of a terminal session. Its contents are retained across transaction boundaries as well as external and internal sessions. The SET PARAMETER and GET PARAMETER statements allow you to write to, or read from, the SAP memory. 

    ABAP/4 memory 
    The contents of the ABAP/4 memory are retained only during the lifetime of an external session (see also Organization of Modularization Units). You can retain or pass data across internal sessions. The EXPORT TO MEMORY and IMPORT FROM MEMORY statements allow you to write data to, or read data from, the ABAP memory. 

    (二)          Passing data from one ABAP program to another
    1. You have to define an internal table ITAB in program AAA. 
    2. In the program AAA you export your ITAB to the memory. 
        EXPORT ITAB TO MEMORY ID 'TD' (ID is the name of memory, you don't need to create it ). 
    3. In program BBB you have to declare The same table (same table's name and same fields). 
    4. In BBB you can import ITAB : 
        IMPORT ITAB FROM MEMORY ID 'TD' 
    5. Now you can export it to AAA after modifications. 
        EXPORT ITAB TO MEMORY ID 'TD'
    6. In AAA : 
        IMPORT ITAB FROM MEMORY ID 'TD'
    This solution is independant to SUBMIT. 
    (三)          Example:    
    两个程序010和011,选择屏幕是一样的. 010是ALV行显示的,011是WRITE显示的.需要达到的效果是: 点击:MATNR字段则将010的选择屏幕传到011的选择屏幕中去;点击VBELN,则将当前行的VBELN传到011的选择屏幕中去.
    Program:010
    1.定义010的选择屏幕:
    selection-screen begin of block b1 with frame title bt1.
      
    parameters  PL_BUKRS like VBRK-BUKRS memory id P_BUKRS default '1000'.
      
    select-options PI_KUNRG for VBRK-KUNRG.
      
    select-options PI_FKDAT for VBRK-FKDAT.
      
    select-options PI_VBELN for VBRK-VBELN.
      
    select-options PI_VGBEL for VBRP-VGBEL.
    selection-
    screen end of block b1.
    2.010中定义USERCOMMAND事件:
    form user_command using i_ucomm like sy-ucomm is_selfield type slis_selfield.
     case i_ucomm.
        when '&IC1'.
          CASE is_selfield-fieldname.
            WHEN 'VBELN'.
                read table itab index is_selfield-tabindex.      "change
                EXPORT ITAB-VBELN TO MEMORY ID 'PT_VBELN'.
                EXPORT is_selfield-fieldname TO MEMORY ID 'PP_FIELD'.
                CALL TRANSACTION 'ZF011' AND SKIP FIRST SCREEN.
            WHEN 'MATNR'.
                EXPORT is_selfield-fieldname TO MEMORY ID 'PP_FIELD'.
                EXPORT PI_KUNRG to memory id 'PP_KUNRG'.   "add
                EXPORT PI_VGBEL TO MEMORY ID 'PP_VGBEL'.   "add
                EXPORT PI_VBELN to memory id 'PP_VBELN'.   "add
                EXPORT PI_FKDAT TO MEMORY ID 'PP_PKDAT'.   "add
                CALL TRANSACTION 'ZF011' AND SKIP FIRST SCREEN.
          ENDCASE.
     endcase.
    endform. "user_command
     
    3.011中定义选择屏幕(这里就不需要定义MEMORY ID):
    selection-screen begin of block b1 with frame title bt1.
    parameters PL_BUKRS like VBRK-BUKRS memory id PP_BUKRS default '1000'.
    select-options PI_KUNRG for VBRK-KUNRG .
    select-options PI_FKDAT for VBRK-FKDAT.
    select-options PI_VBELN for VBRK-VBELN .
    select-options PI_VGBEL for VBRP-VGBEL .
    selection-screen end of block b1.
     
    4.011中接收010中传过来的值
    DATA : ME_VBELN LIKE VBRK-VBELN .
    DATA : ME_FIELD(30) TYPE C . 定义ME_FIELD是为了接收is_selfield-fieldnameMEMORY ID 'PP_FIELD',因为MEMORY不是一个字段,也不是一个内表,只能用这种方式来传输
    CLEAR :ME_VBELN ,ME_FIELD.
     IMPORT is_selfield-fieldname = ME_FIELD FROM MEMORY ID 'PP_FIELD'.
     IF ME_FIELD = 'VBELN'.
        IMPORT ITAB-VBELN = ME_VBELN FROM MEMORY ID 'PT_VBELN'.
     ELSE .
        IMPORT PI_VBELN = PI_VBELN from MEMORY ID 'PP_VBELN'.
     ENDIF .
     
     IMPORT PI_FKDAT = PI_FKDAT FROM MEMORY ID 'PP_PKDAT'.
     IF NOT ME_VBELN IS INITIAL .  “表示选择了VBELN
        PI_VBELN-SIGN = 'I'.
        PI_VBELN-OPTION = 'EQ'.
        PI_VBELN-LOW = ME_VBELN .  “只选择单值,所以传LOW就可以拉
        APPEND PI_VBELN .
     ENDIF .:




    What is the code to send internal table to abap memory?

    This code is from which program you want to export to the ABAP memory:          

       export ist_resb to memory id 'ZPPC0122_FD'.

                 where ist_resb is the internal table name &
                       ZPPC0122_FD is the include name of my program ZPPC0122.

    This code is from which program you want to import from the ABAP memory

            import *ist_resb *= ist_resb from memory id 'ZPPC0122_FD'.

                  where  *ist_resb This internal table is the importing program internal table.*
                        ist_resb This internal table is the exporting program internal table.

    But remember in both the program you have defined the same internal table with same structure

    Nowadays Export & Import statement is OBSOLETE it gives SLIN CHECK ERROR in SAP 6.0 Version.

    专注于企业信息化,最近对股票数据分析较为感兴趣,可免费分享股票个股主力资金实时变化趋势分析工具,股票交流QQ群:457394862
  • 相关阅读:
    Ruby 2
    Ruby 1
    莱布尼兹:与牛顿争吵了一生的斗士 微积分的奠基人之一―莱布尼茨
    如何实现html页面自动刷新
    css z-index的层级关系
    让网页变灰的实现_网站蒙灰CSS样式总汇
    利用CSS变量实现炫酷的悬浮效果
    离线电商数仓(十四)之系统业务数据仓库数据采集(一)电商业务简介
    离线电商数仓(十三)之用户行为数据采集(十三)采集通道启动/停止脚本
    离线电商数仓(十)之用户行为数据采集(十)组件安装(六)采集日志Flume(二)消费Kafka数据Flume
  • 原文地址:https://www.cnblogs.com/omygod/p/1003794.html
Copyright © 2011-2022 走看看