如何使用类CL_ABAP_CONTAINER_UTILITIES读取、写入EXTENSIONIN详解编程语言
编程语言 使用 如何 详解 读取 写入 ABAP container
2023-06-13 09:11:51 时间
很多BAPI允许用户将自定义字段通过一个table参数EXTENSIONIN传入BAPI中,比如采购订单创建的bapi BAPI_PO_CREATE1,如下:
img >
定义EXTENSIONIN的结构类型BAPIPAREX如下:
img >
STRUCTURE字段用来填写结构名字,这个结构里面就是自定义增强字段,BAPI_PO_CREATE1中可供使用的是以下6个结构名,
BAPI_TE_MEPOHEADER 采购订单抬头这些结构里大概就是下面这个样子,当然这些自定义字段需要通过增强append到ekpo中
img >
VALUEPART1,VALUEPART2,VALUEPART3,VALUEPART4中保存的是自定义字段值和更新标识
,EXTENSIONIN怎么才能赋值呢?下面主角登场了,SAP提供了一个类CL_ABAP_CONTAINER_UTILITIES,里面有两个方法, 方法read_container_c-用来读取EXTENSIONIN, 方法fill_container_c用来填充EXTENSIONIN。
img >
例子代码当然不能少了,下面这一小段代码就是先将EXTENSIONIN中的值读出来,然后再加入一个自定义字段 zsfyg的值,再回写EXTENSIONIN。
LOOP AT et_extensionin ASSIGNING fs_ext WHERE structure = BAPI_TE_MEPOITEM. * 读取自定义字段值 CALL METHOD cl_abap_container_utilities= read_container_c EXPORTING im_container = fs_ext +30 IMPORTING ex_value = ls_bapi_te_mepoitem EXCEPTIONS illegal_parameter_type = 1 OTHERS = 2. IF ls_bapi_te_mepoitem-po_item = iv_ebelp. * PO行项目相同 ls_bapi_te_mepoitem-zsfyg = iv_zsfyg. * 写入新的自定义字段值 CALL METHOD cl_abap_container_utilities= fill_container_c EXPORTING im_value = ls_bapi_te_mepoitem IMPORTING ex_container = fs_ext +30 EXCEPTIONS illegal_parameter_type = 1 OTHERS = 2. ENDIF. ENDLOOP.
可以看到这两个方法的container参数中用到了 fs_ext +30,有个30的偏移量,含义就是将第一个字段STRUCTURE跳过,STRUCTURE恰好30位长,然后读取或写入之后的VALUEPART1,VALUEPART2,VALUEPART3,VALUEPART4。
以上。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/19321.html
cjava相关文章
- python使用pickle,marshal进行序列化、反序列及JSON的使用详解编程语言
- python使用sqlite3的简单代码详解编程语言
- 使用JSONP解决跨域问题-代码示例详解编程语言
- 使用jq实现简单的返回顶部效果详解编程语言
- Android获得sdcard大小及使用情况信息详解编程语言
- Java集合类: Set、List、Map、Queue使用场景梳理详解编程语言
- canvas时钟详解编程语言
- FunDA(8)- Static Source:保证资源使用安全 – Resource Safety详解编程语言
- 如何使用Hibernate对Oracle中Clob类型数据存储和取出详解编程语言
- php如何使用微信用户绑定网站用户详解编程语言
- java在开发过程中经常使用的的知识点详解编程语言
- javascript中如何使用bind()方法详解编程语言
- 如何使用JavaScript对表单中的邮箱做验证详解编程语言
- 对照项目(struts2、mybatis、spring),整理如何使用jxls导入excel数据详解编程语言
- [二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口编程语言
- java 线程 Lock 锁使用Condition实现线程的等待(await)与通知(signal)详解编程语言
- Java高效编程之三【类和接口】详解编程语言
- 语言程序如何在Linux中使用C编程语言(怎么在linux下编写c)
- SE16N使用方案总结详解编程语言
- 使用Boost Regex 的regex_search进行遍历搜索详解编程语言
- jquery实现比较靠谱的手风琴代码详解编程语言
- 使用java修改图片DPI详解编程语言
- JSTL自定义标签库 (二)详解编程语言
- 2016 年编程语言发展趋势