博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SAP and ABAP Memory总结
阅读量:2034 次
发布时间:2019-04-28

本文共 5902 字,大约阅读时间需要 19 分钟。

(一)          Difference Between SAP and ABAP Memory  
(1)
、读取和使用方法不同
SAP
内存使用
SET/GET parameters
方法;
SET PARAMETER ID 'MAT' field p_matnr.
GET PARAMETER ID 'MAT' field p_matnr.
ABAP
内存使用
 EXPORT 
 IMPORT  
方法;
export p_matnr = p_matnr to memory id 'ZTESTMAT'.
import p_matnr = p_matnr from memory id 'ZTESTMAT'
(2)
、共享范围不同
SAP
内存可以被所有的主
session
访问,内存数据可以在同一个
session
中不同程序之间,或者不同
session
之间共享数据;
ABAP
内存只能在同个
session
的不同程序之间共享数据;
(3)
、作用范围不同
SAP
内存在整个终端
session
时间内都有效;
ABAP
内存只能在一个
session
时间内有效;
(4)
、使用一般原则
SAP
内存用于屏幕默认值输入;
ABAP
内存用于模块之间传替数据
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-fieldname
MEMORY 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 .

转载地址:http://wmqaf.baihongyu.com/

你可能感兴趣的文章
eclipse Maven配置以及使用方法
查看>>
JS中数组的操作
查看>>
LINUX经常使用命令详解
查看>>
对 Linux 新手非常有用的 20 个命令
查看>>
年薪12W升至25W美元的非科班程序员之路
查看>>
初级程序员到首席架构师的经历
查看>>
中级程序员还应该如何提高自己
查看>>
技术大牛养成指南
查看>>
我(作为一名开发者)所犯过的错误
查看>>
2017 年你不能错过的 Java 类库
查看>>
Java 异常处理的误区和经验总结
查看>>
浅析bootstrap原理及优缺点
查看>>
MVVM模式中ViewModel和View、Model有什么区别
查看>>
面向切面编程的两种实现
查看>>
Java笔记——面向切面编程(AOP模式)
查看>>
算法----五大算法之分支限界法
查看>>
数据结构----线性表的应用
查看>>
设计模式----代理模式(Proxy)
查看>>
设计模式-----观察者模式(Obsever)
查看>>
设计模式深入浅出-----策略模式(Strategy Pattern)
查看>>