Preface – This post is part of the Blockchain on SAP Cloud Platform and ABAP Programs series.
In this article, we will learn how to create a block in Blockchain on the SAP Cloud Platform.
METHOD create_object_history. DATA: lo_http_client TYPE REF TO if_http_client. DATA: response TYPE string, lv_url TYPE string, lv_auth TYPE string. CONSTANTS : lv_initial_url TYPE string VALUE '<Your_Service>'. IF iv_object_id IS NOT INITIAL. *** Getting Token TYPES: BEGIN OF t_entry, access_token TYPE string, token_type TYPE string, expires_in TYPE n LENGTH 8, scope TYPE string, jti TYPE string, END OF t_entry . TYPES: t_entry_map TYPE SORTED TABLE OF t_entry WITH UNIQUE KEY access_token. DATA: m_entries TYPE t_entry. DATA: lr_instance TYPE REF TO /ui5/cl_json_parser. CREATE OBJECT lr_instance. CALL METHOD me->get_token. IF gv_token IS NOT INITIAL. /ui2/cl_json=>deserialize( EXPORTING json = gv_token pretty_name = /ui2/cl_json=>pretty_mode-camel_case CHANGING data = m_entries ). DATA lv_auth2 TYPE string. lv_auth2 = m_entries-access_token. * gv_token = gv_token+17. CONCATENATE 'Bearer' lv_auth2 INTO lv_auth SEPARATED BY space. ENDIF. DATA lv_object_id TYPE string. lv_object_id = iv_object_id. TRANSLATE lv_object_id TO LOWER CASE. CONCATENATE lv_initial_url lv_object_id INTO lv_url. "Appending Fix URL and the Object ID to get the Request URL "create HTTP client by url CALL METHOD cl_http_client=>create_by_url EXPORTING url = lv_url IMPORTING client = lo_http_client EXCEPTIONS argument_not_found = 1 plugin_not_active = 2 internal_error = 3 OTHERS = 4. "Available API Endpoints "https://blockchain-service.cfapps.sap.hana.ondemand.com/blockchain/proofOfHistory/api/v1 "https://blockchain-service.cfapps.eu10.hana.ondemand.com/blockchain/proofOfHistory/api/v1 "https://blockchain-service.cfapps.us10.hana.ondemand.com/blockchain/proofOfHistory/api/v1 IF sy-subrc <> 0. "error handling ENDIF. "setting request method lo_http_client->request->set_method('POST'). "adding headers lo_http_client->request->set_header_field( name = 'Content-Type' value = 'application/x-www-form-urlencoded' ). lo_http_client->request->set_header_field( name = 'Accept' value = 'application/json' ). lo_http_client->request->set_header_field( name = 'Authorization' value = lv_auth ). "Available Security Schemes for productive API Endpoints "OAuth 2.0 CALL METHOD lo_http_client->send EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3 http_invalid_timeout = 4 OTHERS = 5. IF sy-subrc = 0. CALL METHOD lo_http_client->receive EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3 OTHERS = 5. ENDIF. IF sy-subrc <> 0. "error handling response = lo_http_client->response->get_cdata( ). ev_response = response. ELSE. response = lo_http_client->response->get_cdata( ). IF response IS NOT INITIAL. ev_response = response. ELSE. ev_response = 'Block created successfully'. ENDIF. ENDIF. ENDIF. ENDMETHOD.
0 Comments