20240123

Objetos para CDHDR e CDPOS

Tabela TCDOB

Os objetos podem ser identificados pela sua tabela principal.
Ex.: 
   EKKO --> EINKBELEG 
   AUFK --> ORDER




20240106

JSON <--> ABAP

  METHOD tamplates_1 .

    WRITE:'*** tamplates_1 - ' .
    WRITE:'*** ' .
    WRITE:'*** JSON --> ABAP' .

    DATA v_abap_str TYPE string VALUE 'Isto é uma string ABAP'.


    data(v_writercl_sxml_string_writer=>CREATE(
                           type if_sxml=>CO_XT_JSON
                     ).

    CALL TRANSFORMATION ID SOURCE text v_abap_str
      RESULT XML v_writer.


    DATA(v_jsonv_writer->GET_OUTPUT).

    cl_demo_output=>DISPLAY_JSONv_json ).



write/ |    DATA v_abap_str TYPE string VALUE 'Isto é uma string ABAP'|.
write/ |.|.
write/ |        data(v_writercl_sxml_string_writer=>CREATE|.
write/ |                               type if_sxml=>CO_XT_JSON |.
write/ |                         )|.
write/ |.|.
write/ |        CALL TRANSFORMATION ID SOURCE text v_abap_str |.
write/ |          RESULT XML v_writer|.
write/ |.|.
write/ |        DATA(v_jsonv_writer->GET_OUTPUT)|.
write/ |.|.
write/ |        cl_demo_output=>DISPLAY_JSONv_json )|.




    ULINE.

  ENDMETHOD.










***
***   Exemplo Simples
***
  METHOD tamplates_2 .

    WRITE:'*** tamplates_2 - ' .
    WRITE:'*** ' .
    WRITE:'*** ABAP --> JSON' .
    WRITE:'*** ' .

    DATA v_json_str type string VALUE '{"ATTR":"Isto é uma string JSON"}'.

    DATA v_abap_str TYPE string.

    CALL TRANSFORMATION id
      SOURCE XML v_json_str
      RESULT attr v_abap_str .

    cl_demo_output=>display|attr={ v_abap_str } | ).


    write:/ |    DATA v_json_str type string VALUE ["ATTR":"Isto é uma string JSON" ]. |.
    write:/ |.|.
    write:/ |    DATA v_abap_str TYPE string.|.
    write:/ |.|.
    write:/ |    CALL TRANSFORMATION id|.
    write:/ |      SOURCE XML v_json_str|.
    write:/ |      RESULT attr v_abap_str .|.
    write:/ |.|.
    write:/ |    cl_demo_output=>displayattr [ v_abap_str ]  ).|.


    ULINE.

  ENDMETHOD.







***
*** Literal + expression
***
  METHOD tamplates_3 .

    WRITE:'*** tamplates_3 -' .
    WRITE:'*** ' .
    WRITE:'*** JSON (tabela)' .
    WRITE:'*** ' .

    types:
      BEGIN OF y_tp1,
        campo1   type char10,
        campo2   type char20,
      END OF y_tp1.

    data(s1VALUE y_tp1(
                  campo1 'valor1'
                  campo2 'valor2'
               ).


    DATA(v_writer=
         cl_sxml_string_writer=>createtype if_sxml=>co_xt_json ).

    CALL TRANSFORMATION id
      SOURCE s1json s1
      RESULT XML v_writer.

    DATA(v_jsonv_writer->get_output).
    cl_demo_output=>display_jsonv_json  ).


    ULINE.


  ENDMETHOD.







***
***
***
  METHOD tamplates_4 .

    WRITE:'*** tamplates_4 - ' .
    WRITE:'*** ' .
    WRITE:'*** JSON --> ABAP (tipo complexo)' .
    WRITE:'*** ' .


    DATA v_json_str   type string VALUE '{"ATTR1":"valor1","ATTR2":"valor2" }'.

    data v_abap_str   type string .

    CALL TRANSFORMATION id
      SOURCE XML v_json_str
      RESULT attr1 v_abap_str.

    cl_demo_output=>display| ATTR1 { v_abap_str } | ).

    ULINE.

  ENDMETHOD.







***
***
***
  METHOD tamplates_5 .

    WRITE:'*** tamplates_5 - '.
    WRITE:'*** JSON --> ABAP (tipo complexo 2)' .
    WRITE:'*** ' .


    write:/ |    DATA v_json_str   type string VALUE '["JSONS1":["ATTR1":"valor1","ATTR2":"valor2" ]]'|.

    write:/ |    TYPES|.
    write:/ |      BEGIN OF y_tp1|.
    write:/ |        attr1     type char10|.
    write:/ |        attr2     type char20|.
    write:/ |      END OF y_tp1|.

    write:/ |    DATA s1 type y_tp1|.

    write:/ |    CALL TRANSFORMATION id |.
    write:/ |      SOURCE XML v_json_str |.
    write:/ |      RESULT jsons1 s1|.

    write:/ |    cl_demo_output=>display|.
*    write:/ |    "|",'ATTR1='&&'[ s1-attr1 ]'&&'\nATTR2=[ s1-attr2 ]| |'.
*    write:/ |     ]. |.


    DATA v_json_str   type string VALUE '{"JSONS1":{"ATTR1":"valor1","ATTR2":"valor2" }}'.

    TYPES:
      BEGIN OF y_tp1,
        attr1     type char10,
        attr2     type char20,
      END OF y_tp1.

    DATA s1 type y_tp1.

    CALL TRANSFORMATION id
      SOURCE XML v_json_str
      RESULT jsons1 s1.

    cl_demo_output=>display(
    |ATTR1={ s1-attr1 }\nATTR2={ s1-attr2 }|
     ).

    ULINE.

  ENDMETHOD.