创建动态内表generate_subpool_dir_fulldump_SAP刘梦_新浪博客

货铺QQ群号:834508274

微信群不能扫码进了,可以加我微信SAPliumeng拉进群,申请时请提供您哪个模块顾问,否则是一律不通过的。

进群统一修改群名片,例如BJ_ABAP_森林木。群内禁止发广告及其他一切无关链接,小程序等,进群看公告,谢谢配合 

不修改昵称会被不定期踢除,谢谢配合

创建动态内表generate_subpool_dir_fulldump

客户提出个问题,说有个批导发送邮件程序,数量一多就dump,最多也就处理三十来条。


一个批导处理三十多条就dump,不应该啊,然后就去看了那个批导程序。


看到是发送时循环调用了一个Z function。

可能当时为了通用,用动态内表实现的。


CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE "动态内表结构填充
        EXPORTING
          IT_FIELDCATALOG           = GT_FIELDCAT
        IMPORTING
          EP_TABLE                  = DY_TABLE
        EXCEPTIONS
          GENERATE_SUBPOOL_DIR_FULL = 1
          OTHERS                    = 2.

 

前几行也没事儿,到三十多行突然就发现DY_TABLE变成空了。

然后看了下里面:

创建动态内表generate_subpool_dir_fulldump

这里subrc = 1。

具体啥意思一看也比较清楚了。


池子满了。

后来查了下,这个函数动态创建内表池子内最大数量是36.超过了就不能创建了。


要么换个其他方式动态实现,要么外面每次调用重开session,应该都能解决。


我比较懒。直接copy了一个这个函数。

运维嘛,尽量别影响其他原来的逻辑,copy个单独给这个批导使用影响最小嘛。

然后做了下面的调整。

创建动态内表generate_subpool_dir_fulldump

定义了俩全局变量,一个是参考创建的字段fieldcat 一个是创建的动态内表。


因为一直循环调用,所以就是先判断是否参考创建的fieldcat一致,另外是否已经创建了动态内表。


如果不满足,重新创建,如果已经满足了,直接用用得了。


这个算是改动最小的,当然还可以变通,比如可能参考多个不同结构,也可以类似的处理嘛。只要不超过36个就行。


同一个问题解决方法很多,怎么影响最小,怎么简单怎么来呗。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值