如何通过$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_
相关产品推荐
相关产品推荐

