ABAP내에서 OData 호출 방법
/IWFND/CL_SUTIL_CLIENT_PROXY
T-Code : /IWFND/GW_CLIENT 에서 사용하는 Class를 이용하여 간단하게 ABAP 소스내에서 OData를 호출하는 소스코드입니다.
GET/POST/PUT/DELETE 모두 가능하며 상황에 맞게 WEB_REQUEST 메소드 파라미터에 값을 넣어서 실행하면 됩니다.
# 소스코드 예시(GET)
DATA: LT_REQUEST_HEADER TYPE /IWFND/SUTIL_PROPERTY_T,
LV_STATUS_CODE TYPE I,
LV_STATUS_TEXT TYPE STRING,
LT_RESPONSE_HEADER TYPE /IWFND/SUTIL_PROPERTY_T,
LV_RESPONSE_CONTENT_TYPE TYPE STRING,
LV_RESPONSE_BODY TYPE XSTRING.
* OData 호출 정보
LT_REQUEST_HEADER = VALUE #( ( NAME = 'accept' VALUE = 'application/json' )
( NAME = '~request_method' VALUE = 'GET' )
( NAME = '~request_uri' VALUE = |/sap/opu/odata/SAP/YTEST231115_SRV/fidocSet(IBelnr='0100000001',IBukrs='1510',IGjahr='2016')| ) ).
* WEB Request 실행
/IWFND/CL_SUTIL_CLIENT_PROXY=>GET_INSTANCE( )->WEB_REQUEST(
EXPORTING
IT_REQUEST_HEADER = LT_REQUEST_HEADER " HTTP Request Header Table
* IV_REQUEST_BODY = " HTTP Request Body
* IV_REUSE_CONNECTION = ABAP_FALSE " X: Reuse HTTP connection
* IV_CSRF_URI = " Request URI for CSRF (no standard OData request)
* IV_CSRF_METHOD = " HTTP Method for CSRF Token
* IV_SUPPRESS_DIALOG = ABAP_FALSE " X: No Dialog (CSRF Token)
IMPORTING
EV_STATUS_CODE = LV_STATUS_CODE " HTTP Status Code
EV_STATUS_TEXT = LV_STATUS_TEXT " HTTP Status Text
EV_CONTENT_TYPE = LV_RESPONSE_CONTENT_TYPE " HTTP Content Type
ET_RESPONSE_HEADER = LT_RESPONSE_HEADER " HTTP Response Header Table
EV_RESPONSE_BODY = LV_RESPONSE_BODY " HTTP Response Body
* ET_ADD_REQUEST_HEADER = " HTTP Additional Request Header Table
* EV_SAP_CLIENT = " SAP Client
* EV_LOCAL_CLIENT = " Local HTTP Client
* EV_URI_PREFIX = " HTTP Connection Info in URI
* EV_SM59_HTTP_DEST = " HTTP Destination (SAP GW Client as a browser)
* EV_REQUEST_ID = " Request ID
* EV_ERROR_TYPE = " Error Type
* EV_ERROR_TEXT = " Error Text if any
* EV_ERROR_TIMESTAMP = " Error Timestamp from SAP GW Framework
* EV_DURATION = " Duration in ms
).
* 응답 결과
IF LV_RESPONSE_BODY IS NOT INITIAL.
"JSON String (xstring to string convert)
DATA(LV_JSON) = CL_BCS_CONVERT=>XSTRING_TO_STRING( IV_XSTR = LV_RESPONSE_BODY
IV_CP = '4110' "Unicode UTF-8
).
"JSON 미리보기
CALL TRANSFORMATION SJSON2HTML SOURCE XML LV_JSON RESULT XML DATA(LV_HTML).
CL_ABAP_BROWSER=>SHOW_HTML( HTML_STRING = CL_ABAP_CODEPAGE=>CONVERT_FROM( LV_HTML ) ).
ENDIF.
'ABAP > OData' 카테고리의 다른 글
[OData] OData Project 없이 REST API 개발 (2) | 2023.11.21 |
---|---|
[OData] CSRF 인증 비활성화 방법 (0) | 2023.10.31 |
[OData] CSRF Token 받기 (0) | 2023.10.31 |
[OData] OData 개념 및 T-Code (0) | 2023.10.31 |
댓글