zoukankan      html  css  js  c++  java
  • 如何使用类CL_ABAP_CONTAINER_UTILITIES读取、写入EXTENSIONIN

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

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

    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中

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

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

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

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

    以上。

  • 相关阅读:
    Get-CrmSetting返回Unable to connect to the remote server的解决办法
    Dynamics 365中的常用Associate和Disassociate消息汇总
    Dynamics 365 Customer Engagement V9 活动源功能报错的解决方法
    Dynamics Customer Engagement V9版本配置面向Internet的部署时候下一步按钮不可点击的解决办法
    Dynamics 365检查工作流、SDK插件步骤是否选中运行成功后自动删除系统作业记录
    注意,更改团队所属业务部门用Update消息无效!
    Dynamics 365的审核日志分区删除超时报错怎么办?
    Dynamics 365使用Execute Multiple Request删除系统作业实体记录
    Dynamics 365的系统作业实体记录增长太快怎么回事?
    Dynamics CRM日期字段查询使用时分秒的方法
  • 原文地址:https://www.cnblogs.com/datie/p/11428589.html
Copyright © 2011-2022 走看看