需要有访问权限(可咨询BASIS)
适用前提:第三方提供的接口形式在PO中配置困难,正常通过PO调用
实例:SAP集成 x-www-form-urlencoded格式的HTTP接口:
DATA: lo_client TYPE REF TO if_http_client.
DATA: lv_url TYPE string VALUE 'https://external.api/service'.
DATA: lv_body TYPE string VALUE 'key1=value1&key2=value2'.
* Create HTTP client
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = lv_url
IMPORTING
client = lo_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
" Handle Exception
ENDIF.
* Set Request Method
lo_client->request->set_method( 'POST' ).
* Set Header Fields
lo_client->request->set_header_field( name = 'Content-Type' value = 'application/x-www-form-urlencoded').
* 获取鉴权
lo_client->request->set_header_field(
EXPORTING
name = 'Authorization' " Name of the header field
value = lv_token " HTTP header field value
).
* Set Request Body
lo_client->request->set_cdata( lv_body ).
* Send Request
lo_client->send( ).
* Receive Response
lo_client->receive( ).
DATA(lv_str) = lo_client->response->get_cdata( ). "返回信息
* Free resources
lo_client->close( ).
Json解析时的变量格式(ABAP默认为大写)
例:保留驼峰格式
CALL METHOD /ui2/cl_json=>serialize
EXPORTING
data = lt_datajson
pretty_name = /ui2/cl_json=>pretty_mode-camel_case " 保留驼峰命名
RECEIVING
r_json = lv_datajson.
格式参数(pretty_mode):
none TYPE char1 VALUE ``,
low_case TYPE char1 VALUE `L`,
camel_case TYPE char1 VALUE `X`,
extended TYPE char1 VALUE `Y`,
user TYPE char1 VALUE `U`,
user_low_case TYPE char1 VALUE `C`,
参数 | 转换规则 | 示例输入 | JSON输出 | 适用场景 |
NONE | 保留原ABAP字段名(全大写) | FIRST_NAME | "FIRST_NAME" | 严格匹配后端字段名 |
LOW_CASE | 全小写 + 保留下划线 | FIRST_NAME | "first_name" | 蛇形小写(如Python API) |
CAMEL_CASE | 驼峰式(首字母小写) | FIRST_NAME | "firstName" | 前端开发(JavaScript/TypeScript) |
EXTENDED | 智能驼峰式(兼容特殊字符) | IS_ACTIVE | "isActive" | 复杂字段名转换 |
USER | 保留用户定义的大小写和下划线 | "firstName" | "firstName" | 完全自定义字段名 |
USER_LOW_CASE | 用户定义字段名转为全小写 | "FirstName" | "firstname" | 统一小写格式 |