如何使用类CL_ABAP_CONTAINER_UTILITIES读取、写入EXTENSIONIN

很多BAPI允许用户将自定义字段通过一个table参数EXTENSIONIN传入BAPI中,比如采购订单创建的bapi BAPI_PO_CREATE1,如下:

<img class="alignnone size-medium wp-image-6287" src="http://www.baidusap.com/wp-content/uploads/2019-05-22_22-36-13-740x303.jpg" alt="" width="740" height="303" srcset="http://www.baidusap.com/wp-content/uploads/2019-05-22_22-36-13-740x303.jpg 740w, http://www.baidusap.com/wp-content/uploads/2019-05-22_22-36-13-768x314.jpg 768w, http://www.baidusap.com/wp-content/uploads/2019-05-22_22-36-13.jpg 811w" sizes="(max-width: 740px) 100vw, 740px" />

定义EXTENSIONIN的结构类型BAPIPAREX如下:

<img class="alignnone size-medium wp-image-6288" src="http://www.baidusap.com/wp-content/uploads/2019-05-22_22-45-49-740x343.jpg" alt="" width="740" height="343" srcset="http://www.baidusap.com/wp-content/uploads/2019-05-22_22-45-49-740x343.jpg 740w, http://www.baidusap.com/wp-content/uploads/2019-05-22_22-45-49.jpg 741w" sizes="(max-width: 740px) 100vw, 740px" />

STRUCTURE字段用来填写结构名字,这个结构里面就是自定义增强字段,BAPI_PO_CREATE1中可供使用的是以下6个结构名,

  • BAPI_TE_MEPOHEADER--采购订单抬头
  • BAPI_TE_MEPOHEADERX
  • BAPI_TE_MEPOITEM--采购订单行项目
  • BAPI_TE_MEPOITEMX
  • BAPI_TE_MEPOACCOUNTING--采购订单科目分配
  • BAPI_TE_MEPOACCOUNTINGX

这些结构里大概就是下面这个样子,当然这些自定义字段需要通过增强append到ekpo中

<img class="alignnone size-medium wp-image-6289" src="http://www.baidusap.com/wp-content/uploads/2019-05-22_22-56-17-740x370.jpg" alt="" width="740" height="370" srcset="http://www.baidusap.com/wp-content/uploads/2019-05-22_22-56-17-740x370.jpg 740w, http://www.baidusap.com/wp-content/uploads/2019-05-22_22-56-17.jpg 741w" sizes="(max-width: 740px) 100vw, 740px" />

VALUEPART1,VALUEPART2,VALUEPART3,VALUEPART4中保存的是自定义字段值和更新标识

,EXTENSIONIN怎么才能赋值呢?下面主角登场了,SAP提供了一个类CL_ABAP_CONTAINER_UTILITIES,里面有两个方法, 方法read_container_c-用来读取EXTENSIONIN, 方法fill_container_c用来填充EXTENSIONIN。

<img class="alignnone size-medium wp-image-6290" src="http://www.baidusap.com/wp-content/uploads/2019-05-22_23-03-50-740x225.jpg" alt="" width="740" height="225" srcset="http://www.baidusap.com/wp-content/uploads/2019-05-22_23-03-50-740x225.jpg 740w, http://www.baidusap.com/wp-content/uploads/2019-05-22_23-03-50-768x234.jpg 768w, http://www.baidusap.com/wp-content/uploads/2019-05-22_23-03-50.jpg 824w" sizes="(max-width: 740px) 100vw, 740px" />

例子代码当然不能少了,下面这一小段代码就是先将EXTENSIONIN中的值读出来,然后再加入一个自定义字段  zsfyg的值,再回写EXTENSIONIN。

可以看到这两个方法的container参数中用到了<fs_ext>+30,有个30的偏移量,含义就是将第一个字段STRUCTURE跳过,STRUCTURE恰好30位长,然后读取或写入之后的VALUEPART1,VALUEPART2,VALUEPART3,VALUEPART4。

以上。

转载于:https://www.cnblogs.com/datie/p/11428589.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值