본문 바로가기
ABAP/OData

[OData] ABAP내에서 OData 호출 방법

by name_text 2023. 11. 21.

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

 

'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

댓글