Monday, September 11, 2023

reading url , groovy code as array

  1. Discover/
  2. Integration Flow Design Guidelines - Learn the Basics/
  3. Modeling Basics - Restrict Http Method/



 import com.sap.gateway.ip.core.customdev.util.Message;

import java.util.HashMap;


def Message readIdFromUrlPath(Message message) {


       //get url 

       def map = message.getHeaders();

       def url = map.get("CamelHttpUrl");




       //split url

       String[] vUrl;

       vUrl = url.split('/');

       int size = vUrl.length;

       

       //get id

       message.setProperty('productId', vUrl[size-1]);

       

       return message;

}

accessing header and property in xslt SAP CPI BASIC Examples

 



<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:cpi="http://sap.com/it/" exclude-result-prefixes="cpi" version="2.0">

<!-- include exchange parameter -->
  <xsl:param name="exchange"/>
<!-- define property quantity -->
  <xsl:param name="quantity"/>
<!-- define header orderid -->
  <xsl:param name="orderid"/>
  
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="@* | node()">
    <xsl:apply-templates select="@* | node()"/>
  </xsl:template>

  <xsl:template match="/">
<!-- set headers -->
    <xsl:value-of select="cpi:setHeader($exchange, 'context', 'ModelingBasics-HeaderPropertiesInXSLT')"/>
    <xsl:value-of select="cpi:setHeader($exchange, 'content-type', 'application/xml')"/>
    <xsl:element name="PurchaseOrder">
      <xsl:element name="PurchaseOrderNumber">
<!-- use header orderid -->
        <xsl:value-of select="$orderid"/>
      </xsl:element>
      <xsl:element name="Items">
        <xsl:for-each select="/Products/Product">
          <xsl:call-template name="Order_Items"/>
        </xsl:for-each>
      </xsl:element>
    </xsl:element>
  </xsl:template>

  <xsl:template name="Order_Items">
    <xsl:element name="Item">
      <xsl:element name="ProductId">
        <xsl:value-of select="./ProductId"/>
      </xsl:element>
      <xsl:element name="ProductName">
        <xsl:value-of select="./Name"/>
      </xsl:element>
      <xsl:element name="Category">
        <xsl:value-of select="./Category"/>
      </xsl:element>
      <xsl:element name="Quantity">
<!-- use property quantity -->
        <xsl:value-of select="$quantity"/>
      </xsl:element>
      <xsl:element name="Price">
        <xsl:value-of select="./Price * $quantity"/>
      </xsl:element>
      <xsl:element name="Currency">
        <xsl:value-of select="./CurrencyCode"/>
      </xsl:element>
    </xsl:element>
  </xsl:template>

</xsl:stylesheet>


calling header and property variables in message mapping example from sap basics

 


import com.sap.it.api.mapping.MappingContext

def String getProperty(String propertyName, MappingContext context) {
    def propertyValue = context.getProperty(propertyName);
    return propertyValue;
}

def String getHeader(String headerName, MappingContext context) {
    def headerValue = context.getHeader(headerName);
    return headerValue;
}



---------------
odata call

resource path

https://refapp-espm-ui-cf.cfapps.eu10.hana.ondemand.com/espm-cloud-web/espm.svc

Products

$select=ProductId,Category,CategoryName,CurrencyCode,DimensionDepth,DimensionHeight,DimensionUnit,DimensionWidth,LongDescription,Name,PictureUrl,Price,QuantityUnit,ShortDescription,SupplierId,Weight,WeightUnit&$filter=ProductId eq '${property.productID}'







Friday, September 1, 2023

xslt mapping from examples from SAP STANDARD PACKAGE: BASICS

 <?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

  xmlns:cpi="http://sap.com/it/" exclude-result-prefixes="cpi" version="2.0">


<!-- include exchange parameter -->

  <xsl:param name="exchange"/>

<!-- define property quantity -->

  <xsl:param name="quantity"/>

<!-- define header orderid -->

  <xsl:param name="orderid"/>

  

  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

  <xsl:strip-space elements="*"/>


  <xsl:template match="@* | node()">

    <xsl:apply-templates select="@* | node()"/>

  </xsl:template>


  <xsl:template match="/">

<!-- set headers -->

    <xsl:value-of select="cpi:setHeader($exchange, 'context', 'ModelingBasics-HeaderPropertiesInXSLT')"/>

    <xsl:value-of select="cpi:setHeader($exchange, 'content-type', 'application/xml')"/>

    <xsl:element name="PurchaseOrder">

      <xsl:element name="PurchaseOrderNumber">

<!-- use header orderid -->

        <xsl:value-of select="$orderid"/>

      </xsl:element>

      <xsl:element name="Items">

        <xsl:for-each select="/Products/Product">

          <xsl:call-template name="Order_Items"/>

        </xsl:for-each>

      </xsl:element>

    </xsl:element>

  </xsl:template>


  <xsl:template name="Order_Items">

    <xsl:element name="Item">

      <xsl:element name="ProductId">

        <xsl:value-of select="./ProductId"/>

      </xsl:element>

      <xsl:element name="ProductName">

        <xsl:value-of select="./Name"/>

      </xsl:element>

      <xsl:element name="Category">

        <xsl:value-of select="./Category"/>

      </xsl:element>

      <xsl:element name="Quantity">

<!-- use property quantity -->

        <xsl:value-of select="$quantity"/>

      </xsl:element>

      <xsl:element name="Price">

        <xsl:value-of select="./Price * $quantity"/>

      </xsl:element>

      <xsl:element name="Currency">

        <xsl:value-of select="./CurrencyCode"/>

      </xsl:element>

    </xsl:element>

  </xsl:template>