ABAP内存 MEMORY ID快速定位

ABAPer的痛点

ABAPer在工作中经常会碰到一个问题:如何追溯与管理MEMORY ID?

在遇到EXPROT与IMPORT时,如果没有注释或文档支持,我们很难快速准确地定位到MEMORY ID导入或导出时的位置。

接下来,本文将介绍一种通过类的静态属性管理MEMORY ID的方法。

解决方案

SE24创建全局类

创建全局类ZCL_MEMORY_ID

创建时选择常见ABAP类即可满足需求,考虑后续可能需要继承,我们不勾选最终。

维护类的静态属性

维护类的静态属性DEMO

这里注意属性的级别为Static Attribute,可见性为Public,即公开的静态属性,类型选择MEMORY_ID,接下来激活即可使用。

本例使用DEMO作为测试属性,在正式项目中,可以用模块+流水号的方式命名,例如MM001,来进行规范管理。

2022.09.08补充:在同一会话中使用多个静态属性时,会导致冲突,此时需要维护属性的初始值,建议为Z+属性名,例如’ZMM001’,相当于使用静态属性的初始值作为MEMORY ID的KEY值。

DEMO

  SELECT
    matnr,
    maktx
    INTO TABLE @DATA(lt_makt)
    FROM makt
    UP TO 10 ROWS.

  EXPORT lt_makt TO MEMORY ID zcl_memory_id=>demo.

  CLEAR lt_makt.

  IMPORT lt_makt FROM MEMORY ID zcl_memory_id=>demo.

  cl_demo_output=>display( lt_makt ).

DEMO运行结果:

DEMO结果

DEMO反查

反查

反差结果

总结

使用类的静态属性对ABAP内存进行管理,可以快速准确地定位MEMORY ID,非常方便,如果需要对MEMORY ID增加一些额外的业务逻辑,也可以增加类的静态方法进行处理,读者可以自行探索。

本文介绍的方法也存在一定缺点:如果使用单个类对所有的MEMORY ID进行管理,偶尔会出现不同开发者请求号之间的冲突,此问题可以通过对不同模块设立内存管理类得到一定程度的缓解。

如果读者有更好的办法对ABAP内存进行管理,或者有其他改进建议,欢迎在评论区留言~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值