设为首页 收藏本站
查看: 1177|回复: 0

[经验分享] SAP开发经验之内存共享

[复制链接]

尚未签到

发表于 2015-9-18 08:56:18 | 显示全部楼层 |阅读模式
内存传值
1用户内存共享
  1.1   Sap内存:
  1.1.1 共享范围:被所有的主session访问,内存数据可以在同一个session中不同程序之间,或者不同session之间共享。
  1.1.2 作用范围:整个中端session时间内有效。
  1.1.3 用法:
  SET PARAMETER ID ‘MAT’ FIELD P_MATNR.
  GET PARAMETER ID ‘MAT’ FIELD P_MATNR.
  1.2   ABAP内存:
  1.2.1  共享范围:在一个session不同程序之间共享数据。
  1.2.2  作用范围:一个session时间内有效。
  1.2.3  用法:
  EXPORT P_MATNR = P_MATNR TO  MEMORY ID ‘ZTESTMAT’.
  INPORT P_MATNR = P_MATNR FROM  MEMORY ID ‘ZTESTMAT’.
  1.3   External mode与Internal mode
  用户登陆后最多可以打开6个窗口,这个Sap中称之为External Mode。而在一个窗口中,运行某程序后,可以通过CALL TRANSACTION/SUBMIT或者其他代码跳转到其他程序,这个称之为Internal Mode。Internal Mode的调用栈做多为9层。
  ABAP 内存属于Internal Mode间可以共享的数据,而External Mode间无法共享。
  1.4   实例:
  1.4.1  ABAP内存共享实例
  REPORT  Z2014HZJ_TEST_MEMORY01.
  DATA MATNR TYPE MATNR.
  IMPORT MATNR FROM MEMORY ID 'ZTEST_MATNR'.
  WRITE: MATNR.
  
  REPORT  Z2014HZJ_TEST_MEMORY02.
  DATA MATNR TYPE MATNR.
  MATNR = '000001234'.
  EXPORT MATNR TO MEMORY ID 'ZTEST_MATNR'.
  SUBMIT Z2014HZJ_TEST_MEMORY01.  (运行此程序)
  运行结果:

图1.1 ABAP内存共享实例运行结果

  1.4.2 SAP内存共享实例
  REPORT  Z2014HZJ_TEST_MEMORY01.
  DATA MATNR TYPE MATNR.
  GET PARAMETER ID 'ZTEST' FIELD MATNR. "内存值在注销本次登录后失效
  WRITE: MATNR.
  
  REPORT  Z2014HZJ_TEST_MEMORY02.
  DATA MATNR TYPE MATNR.
  MATNR = '000001234'.
  SET PARAMETER ID 'ZTEST' FIELD MATNR.
  运行结果:

图1.2 SAP内存共享实例运行结果


  
2不同用户之间共享内存
  2.1   SHARED MEMORY/SHARED BUFFER: 服务器上的一片所有用户共享的内存
  如果EXPORT SHARED BUFFER,则必须用IMPORT SHARED BUFFER才能读取到,用IMPORT SHARED MEMORY是读不到的。
  2.2   实例:
  REPORT  Z2014HZJ_TEST_MEMORY02.
  DATA: MATNR TYPE MATNR.
  MATNR = '678901'.
  EXPORT MATNR TO SHARED BUFFER INDX(AA) ID  'ZTEST_SHARED_BUFFER'.(先运行此程序,BUFFER值被存储到服务器,服务器下所有用户俱可读取,若该值没有进行手动删除(DELETE),则保存至服务器关机为止)。
  
  REPORT  Z2014HZJ_TEST_MEMORY01.
  DATA: MATNR TYPE MATNR.
  IMPORT MATNR FROM SHARED BUFFER INDX(AA) ID  'ZTEST_SHARED_BUFFER'.
  WRITE: MATNR.
  DELETE FROM SHARED BUFFER INDX(AA) ID  'ZTEST_SHARED_BUFFER'.(在本机或者另外的机器上运行此程序均可从服务器读取到值)。
  INDX是系统中符合特定格式的表,IMPORT/EXPORT语句并没有在INDX表中添加记录,服务器仅仅是借用INDX表结构管理该片共享内存(BUFFER)。
  SHARED BUFFER不访问数据库。
  2.3   运行结果:

图1.3 SHARED BUFFER内存共享实例运行结果


3   DATABASE访问数据库
3.1 SHARED BUFFER不访问数据库,需要访问数据库用DATABASE.

3.2 访问DATABASE实例

DATA: MATNR TYPE MATNR.

MATNR = '45667890123'.

EXPORT MATNR TO DATABASE INDX(AA) ID  'ZTEST_SHARED_AND_DATABASE'.(运行此程序,将在数据库表INDX中添加一条记录)

运行结果:(SE16查看数据库表INDX,可以发现新增了一条RELID = AA, SRTFD = YTEST_MATNR的记录)。


图1.4.1 EXPORT DATABASE查看INDX表选择屏幕


图1.4.2 EXPORT DATABASE查看INDX表条目


DATA: MATNR TYPE MATNR.

IMPORT MATNR FROM DATABASE INDX(AA) ID  'ZTEST_SHARED_AND_DATABASE'.(从数据库读取该记录)

WRITE: MATNR.

DELETE FROM DATABASE INDX(AA) ID  'ZTEST_SHARED_AND_DATABASE'.(删除测试记录)

  运行结果:(从数据库表INDX中读取到了记录并打印)

图1.5 INPORT DATABASE查看打印新增的INDX表条目


  
  
4附注
  4.1 SHARED BUFFER对于内表的操作(SHARED MEMORY,DATABASE类似)
  4.1.1 示例程序:REPORT  Z2014HZJ_TEST_MEMORY02.(共享内表)
  TABLES:
  MAKT.
  
  TYPES: BEGIN OF TY_MAKT.
  INCLUDE STRUCTURE MAKT.
  TYPES: END OF TY_MAKT.
  
  DATA: GT_MAKT TYPE TY_MAKT OCCURS 0,
  GW_MAKT TYPE TY_MAKT.
  
  SELECT-OPTIONS:  MATNR FOR MAKT-MATNR .
  
  START-OF-SELECTION.
  PERFORM FRM_GET_DATA.
  EXPORT GT_MAKT TO SHARED BUFFER INDX(AA) ID 'SHARED_BUFFER_MAKT'.
  END-OF-SELECTION.
  
  FORM FRM_GET_DATA.
  SELECT *
  INTO CORRESPONDING FIELDS OF TABLE GT_MAKT
  FROM MAKT
  WHERE MAKT~MATNR IN MATNR.
  WRITE: 'OK'.
  ENDFORM.
  4.1.2运行结果:

图1.6.1 EXPORT SHARED BUFFER程序选择屏幕



图1.6.2 EXPORT SHARED BUFFER程序运行结果


  
  4.2.1示例程序:REPORT  Z2014HZJ_TEST_MEMORY02.(读取内存中的内表)
  TABLES:
  MAKT.
  
  TYPES: BEGIN OF TY_MAKT.
  INCLUDE STRUCTURE MAKT.
  TYPES: END OF TY_MAKT.
  
  DATA: GT_MAKT TYPE TY_MAKT OCCURS 0,
  GW_MAKT TYPE TY_MAKT.
  
  IMPORT GT_MAKT FROM SHARED BUFFER INDX(AA) ID 'SHARED_BUFFER_MAKT'.
  LOOP AT GT_MAKT INTO GW_MAKT.
  WRITE: / GW_MAKT-MANDT,
  GW_MAKT-MATNR,
  GW_MAKT-SPRAS,
  GW_MAKT-MAKTX,
  GW_MAKT-MAKTG.
  ENDLOOP.
  DELETE FROM SHARED BUFFER INDX(AA) ID  'SHARED_BUFFER_MAKT'.
  
  4.2.2运行结果:

图1.7 IMPORT SHARED BUFFER程序运行结果

本文相关图片没有显示,详细文档参见:

http://files.cnblogs.com/Goergia/%E5%86%85%E5%AD%98%E4%BC%A0%E5%80%BC.pdf

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-115180-1-1.html 上篇帖子: SAP Server group Short dump 信息 下篇帖子: SAP如何自定义客户编码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表