Difference between revisions of "SAP ABAP JSON"
From SapWiki
| Line 38: | Line 38: | ||
ENDFORM. "decode | 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> | ||
[[Category:ABAP]] | [[Category:ABAP]] | ||
Revision as of 14:26, 30 March 2020
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>