<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Simple Transformation: Map XML boolean to ABAP boolean in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/simple-transformation-map-xml-boolean-to-abap-boolean/m-p/12372332#M1993718</link>
    <description>&lt;P&gt;I am using ST for the deserialization of JSON files (yes I know about /ui2/cl_json=&amp;gt;deserialize() but that does not meet my requirements).&lt;/P&gt;
  &lt;P&gt;I just want to be able to check that a value is true and if so then map the correct abap boolean value (X). The problem is with returning the correct value.&lt;/P&gt;
  &lt;P&gt;My Sample Program&lt;/P&gt; 
  &lt;PRE&gt;&lt;CODE&gt;REPORT z_json_abap2.

CLASS demo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS main.
ENDCLASS.

CLASS demo IMPLEMENTATION.
  METHOD main.

    TYPES: BEGIN OF ty_s_line,
             posnr  TYPE posnr,
             return TYPE boole_d,
             reason TYPE char3,
           END OF ty_s_line.

    TYPES: BEGIN OF ty_s_header,
             order_id TYPE vbeln,
             items    TYPE TABLE OF ty_s_line WITH DEFAULT KEY,
           END OF ty_s_header.

    DATA: lt_order TYPE ty_s_header.


    DATA(lv_json) = cl_abap_codepage=&amp;gt;convert_to(
   `{` &amp;amp;&amp;amp;
  ` "order_id": "51324", ` &amp;amp;&amp;amp;
  ` "items": [ ` &amp;amp;&amp;amp;
  ` { ` &amp;amp;&amp;amp;
  `   "line": "01", ` &amp;amp;&amp;amp;
  `   "return": true, ` &amp;amp;&amp;amp;
  `   "order_reason": "ABC" ` &amp;amp;&amp;amp;
  `   }, ` &amp;amp;&amp;amp;
  `   { ` &amp;amp;&amp;amp;
  `   "line": "02", ` &amp;amp;&amp;amp;
  `   "return": true ` &amp;amp;&amp;amp;
  `   }, ` &amp;amp;&amp;amp;
  `   { ` &amp;amp;&amp;amp;
  `   "line": "03", ` &amp;amp;&amp;amp;
  `   "return": false, ` &amp;amp;&amp;amp;
  `   "order_reason": null ` &amp;amp;&amp;amp;
  `   } ` &amp;amp;&amp;amp;
  `  ] ` &amp;amp;&amp;amp;
  `  } `  ).


    CALL TRANSFORMATION zst_order_test SOURCE XML lv_json RESULT root = lt_order.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  demo=&amp;gt;main( ).&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt;I check that the element has the value "true" - and if it does I want to return the appropriate value for an ABAP_BOOLEAN . I have tried many options. It this latest version it raises an exception that the value "X" was expected.&lt;/P&gt; 
  &lt;PRE&gt;&lt;CODE&gt;&amp;lt;?sap.transform simple?&amp;gt;
&amp;lt;tt:transform xmlns:tt="http://www.sap.com/transformation-templates" xmlns:ddic="http://www.sap.com/abapxml/types/dictionary" xmlns:def="http://www.sap.com/abapxml/types/defined"&amp;gt;
  &amp;lt;tt:root name="ROOT" type="?"/&amp;gt;
  &amp;lt;tt:variable name="RETURN"/&amp;gt;
  &amp;lt;tt:variable length="1" name="ABAP_TRUE" type="C" val="'X'"/&amp;gt;
  &amp;lt;tt:template&amp;gt;
    &amp;lt;object&amp;gt;
      &amp;lt;str name="order_id"&amp;gt;
        &amp;lt;tt:value option="noError" ref="ROOT.order_id"/&amp;gt;
      &amp;lt;/str&amp;gt;
      &amp;lt;array&amp;gt;
        &amp;lt;tt:loop ref="ROOT.items"&amp;gt;
          &amp;lt;object&amp;gt;
            &amp;lt;str name="line"&amp;gt;
              &amp;lt;tt:value ref="$ref.posnr"/&amp;gt;
            &amp;lt;/str&amp;gt;
            &amp;lt;bool name="return"&amp;gt;
              &amp;lt;tt:read type="C" var="RETURN"/&amp;gt;
              &amp;lt;tt:cond-var check="RETURN='true'"&amp;gt;'X'&amp;lt;/tt:cond-var&amp;gt;
              &amp;lt;tt:cond-var check="RETURN!='true'"/&amp;gt;
              &amp;lt;tt:skip/&amp;gt;
            &amp;lt;/bool&amp;gt;
            &amp;lt;tt:cond&amp;gt;
              &amp;lt;str name="order_reason"&amp;gt;
                &amp;lt;tt:value option="noError" ref="$ref.reason"/&amp;gt;
              &amp;lt;/str&amp;gt;
            &amp;lt;/tt:cond&amp;gt;
            &amp;lt;tt:cond&amp;gt;
              &amp;lt;null name="order_reason"&amp;gt;
                &amp;lt;tt:value option="noError" ref="$ref.reason"/&amp;gt;
              &amp;lt;/null&amp;gt;
            &amp;lt;/tt:cond&amp;gt;
          &amp;lt;/object&amp;gt;
        &amp;lt;/tt:loop&amp;gt;
      &amp;lt;/array&amp;gt;
    &amp;lt;/object&amp;gt;
  &amp;lt;/tt:template&amp;gt;
&amp;lt;/tt:transform&amp;gt;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sun, 28 Feb 2021 20:36:49 GMT</pubDate>
    <dc:creator>niall_brennan4</dc:creator>
    <dc:date>2021-02-28T20:36:49Z</dc:date>
    <item>
      <title>Simple Transformation: Map XML boolean to ABAP boolean</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/simple-transformation-map-xml-boolean-to-abap-boolean/m-p/12372332#M1993718</link>
      <description>&lt;P&gt;I am using ST for the deserialization of JSON files (yes I know about /ui2/cl_json=&amp;gt;deserialize() but that does not meet my requirements).&lt;/P&gt;
  &lt;P&gt;I just want to be able to check that a value is true and if so then map the correct abap boolean value (X). The problem is with returning the correct value.&lt;/P&gt;
  &lt;P&gt;My Sample Program&lt;/P&gt; 
  &lt;PRE&gt;&lt;CODE&gt;REPORT z_json_abap2.

CLASS demo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS main.
ENDCLASS.

CLASS demo IMPLEMENTATION.
  METHOD main.

    TYPES: BEGIN OF ty_s_line,
             posnr  TYPE posnr,
             return TYPE boole_d,
             reason TYPE char3,
           END OF ty_s_line.

    TYPES: BEGIN OF ty_s_header,
             order_id TYPE vbeln,
             items    TYPE TABLE OF ty_s_line WITH DEFAULT KEY,
           END OF ty_s_header.

    DATA: lt_order TYPE ty_s_header.


    DATA(lv_json) = cl_abap_codepage=&amp;gt;convert_to(
   `{` &amp;amp;&amp;amp;
  ` "order_id": "51324", ` &amp;amp;&amp;amp;
  ` "items": [ ` &amp;amp;&amp;amp;
  ` { ` &amp;amp;&amp;amp;
  `   "line": "01", ` &amp;amp;&amp;amp;
  `   "return": true, ` &amp;amp;&amp;amp;
  `   "order_reason": "ABC" ` &amp;amp;&amp;amp;
  `   }, ` &amp;amp;&amp;amp;
  `   { ` &amp;amp;&amp;amp;
  `   "line": "02", ` &amp;amp;&amp;amp;
  `   "return": true ` &amp;amp;&amp;amp;
  `   }, ` &amp;amp;&amp;amp;
  `   { ` &amp;amp;&amp;amp;
  `   "line": "03", ` &amp;amp;&amp;amp;
  `   "return": false, ` &amp;amp;&amp;amp;
  `   "order_reason": null ` &amp;amp;&amp;amp;
  `   } ` &amp;amp;&amp;amp;
  `  ] ` &amp;amp;&amp;amp;
  `  } `  ).


    CALL TRANSFORMATION zst_order_test SOURCE XML lv_json RESULT root = lt_order.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  demo=&amp;gt;main( ).&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt;I check that the element has the value "true" - and if it does I want to return the appropriate value for an ABAP_BOOLEAN . I have tried many options. It this latest version it raises an exception that the value "X" was expected.&lt;/P&gt; 
  &lt;PRE&gt;&lt;CODE&gt;&amp;lt;?sap.transform simple?&amp;gt;
&amp;lt;tt:transform xmlns:tt="http://www.sap.com/transformation-templates" xmlns:ddic="http://www.sap.com/abapxml/types/dictionary" xmlns:def="http://www.sap.com/abapxml/types/defined"&amp;gt;
  &amp;lt;tt:root name="ROOT" type="?"/&amp;gt;
  &amp;lt;tt:variable name="RETURN"/&amp;gt;
  &amp;lt;tt:variable length="1" name="ABAP_TRUE" type="C" val="'X'"/&amp;gt;
  &amp;lt;tt:template&amp;gt;
    &amp;lt;object&amp;gt;
      &amp;lt;str name="order_id"&amp;gt;
        &amp;lt;tt:value option="noError" ref="ROOT.order_id"/&amp;gt;
      &amp;lt;/str&amp;gt;
      &amp;lt;array&amp;gt;
        &amp;lt;tt:loop ref="ROOT.items"&amp;gt;
          &amp;lt;object&amp;gt;
            &amp;lt;str name="line"&amp;gt;
              &amp;lt;tt:value ref="$ref.posnr"/&amp;gt;
            &amp;lt;/str&amp;gt;
            &amp;lt;bool name="return"&amp;gt;
              &amp;lt;tt:read type="C" var="RETURN"/&amp;gt;
              &amp;lt;tt:cond-var check="RETURN='true'"&amp;gt;'X'&amp;lt;/tt:cond-var&amp;gt;
              &amp;lt;tt:cond-var check="RETURN!='true'"/&amp;gt;
              &amp;lt;tt:skip/&amp;gt;
            &amp;lt;/bool&amp;gt;
            &amp;lt;tt:cond&amp;gt;
              &amp;lt;str name="order_reason"&amp;gt;
                &amp;lt;tt:value option="noError" ref="$ref.reason"/&amp;gt;
              &amp;lt;/str&amp;gt;
            &amp;lt;/tt:cond&amp;gt;
            &amp;lt;tt:cond&amp;gt;
              &amp;lt;null name="order_reason"&amp;gt;
                &amp;lt;tt:value option="noError" ref="$ref.reason"/&amp;gt;
              &amp;lt;/null&amp;gt;
            &amp;lt;/tt:cond&amp;gt;
          &amp;lt;/object&amp;gt;
        &amp;lt;/tt:loop&amp;gt;
      &amp;lt;/array&amp;gt;
    &amp;lt;/object&amp;gt;
  &amp;lt;/tt:template&amp;gt;
&amp;lt;/tt:transform&amp;gt;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 28 Feb 2021 20:36:49 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/simple-transformation-map-xml-boolean-to-abap-boolean/m-p/12372332#M1993718</guid>
      <dc:creator>niall_brennan4</dc:creator>
      <dc:date>2021-02-28T20:36:49Z</dc:date>
    </item>
    <item>
      <title>Re: Simple Transformation: Map XML boolean to ABAP boolean</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/simple-transformation-map-xml-boolean-to-abap-boolean/m-p/12372333#M1993719</link>
      <description>&lt;P&gt;See comment added there &lt;A href="https://stackoverflow.com/questions/66419546/sap-transformation-deserialization-boolean-values"&gt;SAP Transformation: Deserialization Boolean Values - Stack Overflow&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 01 Mar 2021 13:48:38 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/simple-transformation-map-xml-boolean-to-abap-boolean/m-p/12372333#M1993719</guid>
      <dc:creator>Sandra_Rossi</dc:creator>
      <dc:date>2021-03-01T13:48:38Z</dc:date>
    </item>
    <item>
      <title>Re: Simple Transformation: Map XML boolean to ABAP boolean</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/simple-transformation-map-xml-boolean-to-abap-boolean/m-p/12372334#M1993720</link>
      <description>&lt;P&gt;Thanks to a tip from Sandra this is now solved. For those who are interested here is the solution (the key point being to use XSDBOOLEAN - which I thought I had tried but apparently not in the right combination with everything else).&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;REPORT z_json_abap2.

CLASS demo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS main.
ENDCLASS.

CLASS demo IMPLEMENTATION.
  METHOD main.

    TYPES: BEGIN OF ty_s_line,
             posnr  TYPE posnr,
             return TYPE xsdboolean,
             reason TYPE char3,
           END OF ty_s_line.

    TYPES: BEGIN OF ty_s_header,
             order_id TYPE vbeln,
             items    TYPE TABLE OF ty_s_line WITH DEFAULT KEY,
           END OF ty_s_header.

    DATA: lt_order TYPE ty_s_header.


    DATA(lv_json) = cl_abap_codepage=&amp;gt;convert_to(
   `{` &amp;amp;&amp;amp;
  ` "order_id": "51324", ` &amp;amp;&amp;amp;
  ` "items": [ ` &amp;amp;&amp;amp;
  ` { ` &amp;amp;&amp;amp;
  `   "line": "01", ` &amp;amp;&amp;amp;
  `   "return": true, ` &amp;amp;&amp;amp;
  `   "order_reason": "ABC" ` &amp;amp;&amp;amp;
  `   }, ` &amp;amp;&amp;amp;
  `   { ` &amp;amp;&amp;amp;
  `   "line": "02", ` &amp;amp;&amp;amp;
  `   "return": true ` &amp;amp;&amp;amp;
  `   }, ` &amp;amp;&amp;amp;
  `   { ` &amp;amp;&amp;amp;
  `   "line": "03", ` &amp;amp;&amp;amp;
  `   "return": false, ` &amp;amp;&amp;amp;
  `   "order_reason": null ` &amp;amp;&amp;amp;
  `   } ` &amp;amp;&amp;amp;
  `  ] ` &amp;amp;&amp;amp;
  `  } `  ).

    TRY.
        CALL TRANSFORMATION zst_order_test SOURCE XML lv_json RESULT root = lt_order.
      CATCH cx_transformation_error INTO DATA(exc).
        cl_demo_output=&amp;gt;display( exc-&amp;gt;get_text( ) ).
        RETURN.
    ENDTRY.

  ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.
  demo=&amp;gt;main( ).
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Working Transformation&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;    &amp;lt;?sap.transform simple?&amp;gt;
    &amp;lt;tt:transform xmlns:tt="http://www.sap.com/transformation-templates" xmlns:ddic="http://www.sap.com/abapxml/types/dictionary" xmlns:def="http://www.sap.com/abapxml/types/defined"&amp;gt;
      &amp;lt;tt:root name="ROOT" type="?"/&amp;gt;
      &amp;lt;tt:template&amp;gt;
        &amp;lt;object&amp;gt;
          &amp;lt;str name="order_id"&amp;gt;
            &amp;lt;tt:value option="noError" ref="ROOT.order_id"/&amp;gt;
          &amp;lt;/str&amp;gt;
          &amp;lt;array&amp;gt;
            &amp;lt;tt:loop ref="ROOT.items"&amp;gt;
              &amp;lt;object&amp;gt;
                &amp;lt;str name="line"&amp;gt;
                  &amp;lt;tt:value ref="$ref.posnr"/&amp;gt;
                &amp;lt;/str&amp;gt;
                &amp;lt;bool name="return"&amp;gt;
                    &amp;lt;tt:value option="noError" ref="$ref.return"/&amp;gt;
                &amp;lt;/bool&amp;gt;
                &amp;lt;tt:cond&amp;gt;
                  &amp;lt;str name="order_reason"&amp;gt;
                    &amp;lt;tt:value option="noError" ref="$ref.reason"/&amp;gt;
                  &amp;lt;/str&amp;gt;
                &amp;lt;/tt:cond&amp;gt;
                &amp;lt;tt:cond&amp;gt;
                  &amp;lt;null name="order_reason"&amp;gt;
                    &amp;lt;tt:value option="noError" ref="$ref.reason"/&amp;gt;
                  &amp;lt;/null&amp;gt;
                &amp;lt;/tt:cond&amp;gt;
              &amp;lt;/object&amp;gt;
            &amp;lt;/tt:loop&amp;gt;
          &amp;lt;/array&amp;gt;
        &amp;lt;/object&amp;gt;
      &amp;lt;/tt:template&amp;gt;
    &amp;lt;/tt:transform&amp;gt;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 01 Mar 2021 15:23:59 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/simple-transformation-map-xml-boolean-to-abap-boolean/m-p/12372334#M1993720</guid>
      <dc:creator>niall_brennan4</dc:creator>
      <dc:date>2021-03-01T15:23:59Z</dc:date>
    </item>
  </channel>
</rss>

