SAP ABAP JSON
From SapWiki
Ejemplo XSLT JSON
Uso en programas ABAP
FORM crear_json USING p_guia TYPE zhr01_dgtl p_uname CHANGING p_string_json TYPE string. DATA: json_writer TYPE REF TO cl_sxml_string_writer. DATA json TYPE xstring. DATA lt_guia TYPE TABLE OF zhr01_dgtl. APPEND p_guia TO lt_guia. json_writer = cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ). CALL TRANSFORMATION zhcm_guia_dgtl SOURCE root = lt_guia usuario = p_uname RESULT XML json_writer. "se usa el ejemplo 2 de Ejemplos json = json_writer->get_output( ). * PERFORM encoding2 CHANGING json p_string_json. PERFORM decode USING json CHANGING p_string_json. ENDFORM. " CREAR_JSON
FORM decode USING p_xstring CHANGING p_string. CALL METHOD cl_http_utility=>if_http_utility~decode_utf8 EXPORTING encoded = p_xstring RECEIVING unencoded = p_string. ENDFORM. "decode
Ejemplo Serializing JSON
<nowiki> *&---------------------------------------------------------------------* *& Report YTEST_JSON3 *&---------------------------------------------------------------------* *& ejemplo Serializing JSON *&---------------------------------------------------------------------* REPORT ytest_json3 LINE-SIZE 260. DATA l_string TYPE string. TYPES: BEGIN OF ty_t001, bukrs TYPE t001-bukrs, butxt TYPE t001-butxt, ort01 TYPE t001-ort01, land1 TYPE t001-land1, waers TYPE t001-waers, spras TYPE t001-spras, END OF ty_t001. DATA lt_data TYPE TABLE OF ty_t001. SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_data FROM t001 UP TO 2 ROWS where land1 = 'DE'. CALL METHOD /ui2/cl_json=>serialize EXPORTING data = lt_data " Data to serialize RECEIVING r_json = l_string. " JSON string WRITE:/ l_string. CALL METHOD /ui2/cl_json=>serialize EXPORTING data = lt_data " Data to serialize pretty_name = /ui2/cl_json=>pretty_mode-camel_case RECEIVING r_json = l_string. " JSON string WRITE:/ l_string. CALL METHOD /ui2/cl_json=>serialize EXPORTING data = lt_data " Data to serialize pretty_name = /ui2/cl_json=>pretty_mode-camel_case name = 'SOCIEDADES' RECEIVING r_json = l_string. " JSON string WRITE:/ l_string. TYPES: BEGIN OF ty_data, nombre TYPE string, edad TYPE i, nacimiento TYPE d, direccion TYPE string, plata(10) TYPE p DECIMALS 0, END OF ty_data. DATA wa TYPE ty_data. wa-nombre = 'Deadpool'. wa-edad = 1000. wa-nacimiento = '19720915'. wa-direccion = 'USA'. wa-plata = 999999. CALL METHOD /ui2/cl_json=>serialize EXPORTING data = wa " Data to serialize RECEIVING r_json = l_string. " JSON string WRITE:/ l_string. *#################################################################### TYPES: BEGIN OF tp_s_data, sschema TYPE string, odatacontext TYPE string, shortened_abap_name TYPE string, standard TYPE string, END OF tp_s_data. DATA: ls_exp TYPE tp_s_data, lt_mapping TYPE /ui2/cl_json=>name_mappings, lv_json TYPE /ui2/cl_json=>json. lt_mapping = VALUE #( ( abap = `SSCHEMA` json = `$schema` ) ( abap = `ODATACONTEXT` json = `@odata.context` ) ( abap = `SHORTENED_ABAP_NAME` json = `VeeeeryyyyyLooooongJSONAttrbuuuuuuuuuteeeeeeeeeee` ) ). ls_exp-sschema = 'sss'. ls_exp-odatacontext = 'odata'. ls_exp-shortened_abap_name = 'ssssname'. ls_exp-standard = 'stan'. lv_json = /ui2/cl_json=>serialize( data = ls_exp name_mappings = lt_mapping ). WRITE:/ lv_json.</nowik>