You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过$batch方法的CHANGESET_PROCESS获取导入参数?

在$batch的CHANGESET_PROCESS中获取函数导入参数的解决思路
  • 解析ChangeSet请求的HTTP Body
    POST类型的函数导入参数通常封装在IT_CHANGESET_REQUEST条目的HTTP_BODY字段中,格式为JSON。可以用ABAP的JSON解析工具(如/UI2/CL_JSON)将其解析为对应结构或内表,直接提取参数:

    DATA(lt_params) = VALUE #( ).
    /ui2/cl_json=>deserialize(
      EXPORTING json = ls_changeset_request-http_body
      CHANGING  data = lt_params
    ).
    
  • 利用OData框架工具类提取参数
    通过CL_OData_Request_Processor类构建请求对象,调用其方法直接获取函数导入参数:

    DATA(lo_request) = cl_odata_request_processor=>get_request( iv_request = ls_changeset_request-http_body ).
    DATA(lt_action_params) = lo_request->get_action_parameters( ).
    

    该方法会自动解析OData规范格式的请求体,返回结构化的参数集合。

  • 解析GET类型函数导入的URI参数
    如果函数导入是GET方式,参数会包含在请求URI的查询字符串中。从HTTP_HEADER的~REQUEST_URI字段提取URI后,用CL_HTTP_UTILITY拆分查询参数:

    DATA(lv_uri) = ls_changeset_request-http_header->get_header_field( name = '~REQUEST_URI' ).
    DATA(lt_query_params) = cl_http_utility=>split_query_string( uri = lv_uri ).
    

    遍历lt_query_params内表即可获取对应参数值。

  • 自定义Header传递参数(兜底方案)
    若上述方法无法满足需求,可在构造Batch请求时,将函数导入参数放入自定义HTTP Header(如X-Func-Import-Params),在~CHANGESET_PROCESS中直接读取并解析:

    DATA(lv_custom_params) = ls_changeset_request-http_header->get_header_field( name = 'X-Func-Import-Params' ).
    * 后续解析lv_custom_params中的参数内容
    

内容的提问来源于stack exchange,提问作者Fishrage_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 05:33:58