There is a XSLT code deployed in our SAP PO system to generate output file from IDoc. Sometimes, SAP PO is throwing the error
Variable $Warehouse has not been bound to a value
Error snap from PO:
and the message fails.
It doesn't happen with all the files. Also, these files rarely get re-sent successfully as well. As per my analysis, the code doesn't expect a value for the "WAREHOUSE" as a mandatory one. But wondering why does the file still fails with this error. Please go through the code and let me know if anything has to be altered in the code to avoid this error.
XSLT code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:javamap="java:com.pipo.xslt.ZSAP_TO_EXTERNAL">
<xsl:strip-space elements="*" />
<xsl:variable name="CONST_WERKS">P249</xsl:variable>
<xsl:param name="IM_MHDHB" select="expression" />
<xsl:param name="IM_IPRKZ" select="expression" />
<xsl:variable name="EX_MHDHB" select="shelf" />
<xsl:variable name="EX_IPRKZ" select="period" />
<xsl:variable name="EX_PLANT" select="shelf" />
<xsl:variable name="EX_STORAGE_TYPE" select="shelf" />
<xsl:variable name="lang" select="shelf" />
<xsl:variable name="check" select="" />
<xsl:variable name="plant" select="" />
<xsl:variable name="plant_val" select="" />
<xsl:variable name="range" select="" />
<xsl:variable name="salesorg" select="shelf" />
<xsl:variable name="CONST_WERKS1" select="shelf" />
<xsl:param name="inputparam" />
<xsl:template match="/">
<IDOC xmlns="http://www.3rdparty.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.3rdparty.com/IDoc.xsd">
<HEADER>
<xsl:attribute name="number">
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/DOCNUM" />
</xsl:attribute>
<TABNAM>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/TABNAM" />
</TABNAM>
<MANDT>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/MANDT" />
</MANDT>
<DOCNUM>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/DOCNUM" />
</DOCNUM>
<DOCREL>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/DOCREL" />
</DOCREL>
<STATUS>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/STATUS" />
</STATUS>
<DIRECT>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/DIRECT" />
</DIRECT>
<OUTMOD>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/OUTMOD" />
</OUTMOD>
<EXPRSS>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/EXPRSS" />
</EXPRSS>
<TEST>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/TEST" />
</TEST>
<IDOCTYP>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/IDOCTYP" />
</IDOCTYP>
<CIMTYP>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/CIMTYP" />
</CIMTYP>
<MESTYP>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/MESTYP" />
</MESTYP>
<MESCOD>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/MESCOD" />
</MESCOD>
<MESFCT>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/MESFCT" />
</MESFCT>
<STD>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/STD" />
</STD>
<STDVRS>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/STDVRS" />
</STDVRS>
<STDMES>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/STDMES" />
</STDMES>
<SNDPOR>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/SNDPOR" />
</SNDPOR>
<SNDPRT>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/SNDPRT" />
</SNDPRT>
<SNDPFC>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/SNDPFC" />
</SNDPFC>
<SNDPRN>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/SNDPRN" />
</SNDPRN>
<SNDSAD>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/SNDSAD" />
</SNDSAD>
<SNDLAD>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/SNDLAD" />
</SNDLAD>
<RCVPOR>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/RCVPOR" />
</RCVPOR>
<RCVPRT>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/RCVPRT" />
</RCVPRT>
<RCVPFC>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/RCVPFC" />
</RCVPFC>
<RCVPRN>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/RCVPRN" />
</RCVPRN>
<RCVSAD>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/RCVSAD" />
</RCVSAD>
<RCVLAD>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/RCVLAD" />
</RCVLAD>
<CREDAT>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/CREDAT" />
</CREDAT>
<CRETIM>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/CRETIM" />
</CRETIM>
<REFINT>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/REFINT" />
</REFINT>
<REFGRP>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/REFGRP" />
</REFGRP>
<REFMES>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/REFMES" />
</REFMES>
<ARCKEY>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/ARCKEY" />
</ARCKEY>
<SERIAL>
<xsl:value-of select="ZMATMAS3/IDOC/EDI_DC40/SERIAL" />
</SERIAL>
</HEADER>
<MESSAGE>
<xsl:for-each select="ZMATMAS3/IDOC/E1MARAM">
<SEGMENT id="E1MARAM">
<xsl:if test="MATNR">
<FIELD>
<ID>MATNR</ID>
<VALUE>
<xsl:value-of select="MATNR" />
</VALUE>
</FIELD>
</xsl:if>
<xsl:if test="MTART">
<FIELD>
<ID>MTART</ID>
<VALUE>
<xsl:value-of select="MTART" />
</VALUE>
</FIELD>
</xsl:if>
<xsl:if test="MEINS">
<FIELD>
<ID>MEINS</ID>
<VALUE>
<xsl:value-of select="MEINS" />
</VALUE>
</FIELD>
</xsl:if>
<xsl:if test="NUMTP = 'UC'">
<xsl:if test="EAN11">
<FIELD>
<ID>EAN11</ID>
<VALUE>
<xsl:value-of select="format-number(EAN11,'00000000000000')" />
</VALUE>
</FIELD>
</xsl:if>
<xsl:if test="NUMTP">
<FIELD>
<ID>NUMTP</ID>
<VALUE>
<xsl:value-of select="NUMTP" />
</VALUE>
</FIELD>
</xsl:if>
</xsl:if>
<xsl:if test="TEMPB">
<FIELD>
<ID>TEMPB</ID>
<VALUE>
<xsl:value-of select="TEMPB" />
</VALUE>
</FIELD>
</xsl:if>
<FIELD>
<ID>XCHPF</ID>
<xsl:choose>
<xsl:when test="XCHPF">
<VALUE>
<xsl:value-of select="XCHPF" />
</VALUE>
</xsl:when>
<xsl:otherwise>
<VALUE>
<xsl:text> </xsl:text>
</VALUE>
</xsl:otherwise>
</xsl:choose>
</FIELD>
<xsl:param name="IM_MHDHB">
<xsl:value-of select="string(MHDHB)" />
</xsl:param>
<xsl:param name="IM_IPRKZ">
<xsl:value-of select="string(IPRKZ)" />
</xsl:param>
<xsl:param name="plant">
<xsl:value-of
select="javamap:PTSINT107_ZMATMAS_MHDHB($IM_MHDHB,$IM_IPRKZ, $inputparam)" />
</xsl:param>
<FIELD>
<ID>MHDHB</ID>
<VALUE>
<xsl:value-of select="normalize-space($plant)" />
</VALUE>
</FIELD>
<xsl:param name="IM_MHDHB">
<xsl:value-of select="string(MHDHB)" />
</xsl:param>
<xsl:variable name="range">
<xsl:value-of
select="javamap:PTSINT107_ZMATMAS_IPRKZ($IM_MHDHB,$inputparam)" />
</xsl:variable>
<FIELD>
<ID>IPRKZ</ID>
<VALUE>
<xsl:value-of select="normalize-space($range)" />
</VALUE>
</FIELD>
<FIELD>
<ID>MPROF</ID>
<VALUE>0000</VALUE>
</FIELD>
<xsl:for-each select="E1MLGNM">
<xsl:param name="IM_WORKSTREAM">
PTS
</xsl:param>
<xsl:param name="IM_OBJTYPE">
PLANT_WHSE
</xsl:param>
<xsl:param name="IM_WERKS">
<xsl:value-of select="string($CONST_WERKS)" />
</xsl:param>
<xsl:variable name="plant_val">
<xsl:value-of
select="javamap:PTSINT107_ZMATMAS_WERKS($IM_WORKSTREAM,$IM_OBJTYPE,$IM_WERKS,$inputparam)" />
</xsl:variable>
<xsl:if test="LGNUM = normalize-space($plant_val)">
<FIELD>
<ID>LAGKL</ID>
<VALUE>
<xsl:value-of select="ZE1MLGNM/LAGKL" />
</VALUE>
</FIELD>
</xsl:if>
</xsl:for-each>
<xsl:param name="IM_WORKSTREAM">
PTS
</xsl:param>
<xsl:param name="IM_OBJTYPE">
MES_LANG
</xsl:param>
<xsl:param name="IM_WERKS">
<xsl:value-of select="string($CONST_WERKS)" />
</xsl:param>
<xsl:param name="lang">
<xsl:value-of
select="javamap:PTSINT107_ZMATMAS_MAKTX($IM_WORKSTREAM,$IM_OBJTYPE,$IM_WERKS,$inputparam)" />
</xsl:param>
<xsl:for-each select="E1MAKTM">
<xsl:if test="MAKTX">
<xsl:if test="SPRAS_ISO = normalize-space($lang)">
<SEGMENT id="E1MAKTM">
<FIELD>
<ID>MAKTX</ID>
<VALUE>
<xsl:value-of select="MAKTX" />
</VALUE>
</FIELD>
</SEGMENT>
</xsl:if>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="E1MARCM">
<xsl:if test="position() = 1">
<xsl:variable name="CONST_WERKS1" select="WERKS" />
</xsl:if>
<xsl:if test="WERKS = $CONST_WERKS">
<SEGMENT id="E1MARCM">
<FIELD>
<ID>WERKS</ID>
<VALUE>
<xsl:value-of select="WERKS" />
</VALUE>
</FIELD>
<xsl:choose>
<xsl:when test="../MSTAE = '05'">
<FIELD>
<ID>LVORM</ID>
<VALUE>X</VALUE>
</FIELD>
</xsl:when>
<xsl:otherwise>
<FIELD>
<ID>LVORM</ID>
<VALUE>
<xsl:value-of select="LVORM" />
</VALUE>
</FIELD>
</xsl:otherwise>
</xsl:choose>
<FIELD>
<ID>LGFSB</ID>
<VALUE>
<xsl:value-of select="LGFSB" />
</VALUE>
</FIELD>
<FIELD>
<ID>SERNP</ID>
<VALUE>
<xsl:value-of select="SERNP" />
</VALUE>
</FIELD>
<xsl:if test="KZECH">
<FIELD>
<ID>KZECH</ID>
<VALUE>
<xsl:value-of select="KZECH" />
</VALUE>
</FIELD>
</xsl:if>
<xsl:if test="OTYPE">
<FIELD>
<ID>OTYPE</ID>
<VALUE>
<xsl:value-of select="OTYPE" />
</VALUE>
</FIELD>
</xsl:if>
</SEGMENT>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="E1MARMM">
<xsl:if test="MEINH">
<SEGMENT id="E1MARMM">
<FIELD>
<ID>MEINH</ID>
<VALUE>
<xsl:value-of select="MEINH" />
</VALUE>
</FIELD>
<FIELD>
<ID>UMREZ</ID>
<VALUE>
<xsl:value-of select="format-number(UMREZ,'0')" />
</VALUE>
</FIELD>
<FIELD>
<ID>UMREN</ID>
<VALUE>
<xsl:value-of select="format-number(UMREN,'0')" />
</VALUE>
</FIELD>
<xsl:if test="NUMTP = 'UC'">
<xsl:if test="EAN11">
<FIELD>
<ID>EAN11</ID>
<VALUE>
<xsl:value-of select="format-number(EAN11,'00000000000000')" />
</VALUE>
</FIELD>
</xsl:if>
<xsl:if test="NUMTP">
<FIELD>
<ID>NUMTP</ID>
<VALUE>
<xsl:value-of select="NUMTP" />
</VALUE>
</FIELD>
</xsl:if>
</xsl:if>
</SEGMENT>
</xsl:if>
</xsl:for-each>
<xsl:if test="E1MARMM/NUMTP = 'UC'">
<xsl:choose>
<xsl:when test="E1MLGNM/LGNUM = '012'">
<xsl:variable name="WAREHOUSE" select="012" />
</xsl:when>
</xsl:choose>
<xsl:for-each select="E1MLGNM">
<xsl:param name="IM_TVARV_VAR_NAME">
ZPTS_INT107_LETY
</xsl:param>
<xsl:param name="IM_STORAGE_TYPE1">
<xsl:value-of select="string(LETY1)" />
</xsl:param>
<xsl:param name="IM_STORAGE_TYPE2">
<xsl:value-of select="string(LETY2)" />
</xsl:param>
<xsl:param name="IM_STORAGE_TYPE3">
<xsl:value-of select="string(LETY3)" />
</xsl:param>
<xsl:param name="STR_TYP">
<xsl:value-of
select="javamap:PTSINT107_GET_TVARVC($IM_TVARV_VAR_NAME,$IM_STORAGE_TYPE1,$IM_STORAGE_TYPE2,$IM_STORAGE_TYPE3,$inputparam)" />
</xsl:param>
<xsl:if test="LGNUM = $WAREHOUSE and normalize-space($STR_TYP) !='-1'">
<SEGMENT id="E1MARMM">
<FIELD>
<ID>MEINH</ID>
<VALUE>
<xsl:value-of select="normalize-space($STR_TYP)" />
</VALUE>
</FIELD>
<FIELD>
<ID>UMREN</ID>
<VALUE>1</VALUE>
</FIELD>
<FIELD>
<ID>UMREZ</ID>
<VALUE>
<xsl:choose>
<xsl:when test="$STR_TYP !='-1'">
<xsl:value-of select="format-number(LHMG1,'0')" />
</xsl:when>
<xsl:when test="$STR_TYP !='-1'">
<xsl:value-of select="format-number(LHMG2,'0')" />
</xsl:when>
<xsl:when test="$STR_TYP !='-1'">
<xsl:value-of select="format-number(LHMG3,'0')" />
</xsl:when>
</xsl:choose>
</VALUE>
</FIELD>
<FIELD>
<ID>EAN11</ID>
<VALUE>003555130000000000</VALUE>
</FIELD>
<FIELD>
<ID>NUMTP</ID>
<VALUE>UC</VALUE>
</FIELD>
</SEGMENT>
</xsl:if>
</xsl:for-each>
</xsl:if>
<xsl:param name="IM_WORKSTREAM">
PTS
</xsl:param>
<xsl:param name="IM_OBJTYPE">
MES_LANG
</xsl:param>
<xsl:param name="IM_WERKS">
<xsl:value-of select="string($CONST_WERKS1)" />
</xsl:param>
<xsl:param name="salesorg">
<xsl:value-of
select="javamap:PTSINT107_GET_EXT_VALUE2($IM_WORKSTREAM,$IM_OBJTYPE,$IM_WERKS,$inputparam)" />
</xsl:param>
<xsl:if test="normalize-space($salesorg) = '-1'">
<xsl:if test="E1MVKEM/Z1TXTH0/Z1TXTP0/TDLINE">
<xsl:for-each
select="E1MVKEM/Z1TXTH0[LANGUA_ISO=normalize-space($lang)]">
<xsl:if test="position() = 1">
<SEGMENT id="E1MVKEM">
<FIELD>
<ID>SALES_TEXT</ID>
<VALUE>
<xsl:value-of disable-output-escaping="no"
select="substring(Z1TXTP0/TDLINE, 1, 60)" />
</VALUE>
</FIELD>
</SEGMENT>
<xsl:variable name="check">
<xsl:value-of select="true()" />
</xsl:variable>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:if>
<xsl:if test="normalize-space($salesorg) != '-1'">
<xsl:if test="E1MVKEM/Z1TXTH0/Z1TXTP0/TDLINE">
<xsl:for-each select="E1MVKEM">
<xsl:if test="VKORG = normalize-space($salesorg)">
<SEGMENT id="E1MVKEM">
<FIELD>
<ID>SALES_TEXT</ID>
<VALUE>
<xsl:value-of disable-output-escaping="no"
select="substring(Z1TXTH0/Z1TXTP0/TDLINE, 1, 60)" />
</VALUE>
</FIELD>
</SEGMENT>
<xsl:variable name="check">
<xsl:value-of select="true()" />
</xsl:variable>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:if>
<xsl:if test="$check != 'true'">
<xsl:if test="E1MVKEM/Z1TXTH0/Z1TXTP0/TDLINE">
<xsl:for-each
select="E1MVKEM/Z1TXTH0[LANGUA_ISO=normalize-space($lang)]">
<xsl:if test="position() = 1">
<SEGMENT id="E1MVKEM">
<FIELD>
<ID>SALES_TEXT</ID>
<VALUE>
<xsl:value-of disable-output-escaping="no"
select="substring(Z1TXTP0/TDLINE, 1, 60)" />
</VALUE>
</FIELD>
</SEGMENT>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:if>
<xsl:if test="E1MTXHM/E1MTXLM/TDLINE">
<xsl:for-each select="E1MTXHM">
<xsl:if
test="TDOBJECT = 'MATERIAL' and TDID = 'GRUN' and SPRAS_ISO = normalize-space($lang)">
<SEGMENT id="E1MTXHM">
<FIELD>
<ID>HANDLING_INSTRUCTIONS</ID>
<VALUE>
<xsl:value-of disable-output-escaping="no"
select="substring(E1MTXLM/TDLINE, 1, 60)" />
</VALUE>
</FIELD>
</SEGMENT>
</xsl:if>
</xsl:for-each>
</xsl:if>
</SEGMENT>
</xsl:for-each>
</MESSAGE>
</IDOC>
</xsl:template>
</xsl:stylesheet>
Input XML (Idoc):
<ZMATMAS3>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
<MANDT>010</MANDT>
<DOCNUM>0000000159128565</DOCNUM>
<DOCREL>750</DOCREL>
<STATUS>30</STATUS>
<DIRECT>1</DIRECT>
<OUTMOD>2</OUTMOD>
<IDOCTYP>MATMAS03</IDOCTYP>
<CIMTYP>ZMATMAS3</CIMTYP>
<MESTYP>ZMATMAS</MESTYP>
<SNDPOR>SAPRQ1</SNDPOR>
<SNDPRT>LS</SNDPRT>
<SNDPRN>RQ1CLNT010</SNDPRN>
<RCVPOR>POJPORT</RCVPOR>
<RCVPRT>LS</RCVPRT>
<RCVPRN>POJIDOC</RCVPRN>
<CREDAT>20230323</CREDAT>
<CRETIM>072809</CRETIM>
<SERIAL>20230323072809</SERIAL>
</EDI_DC40>
<E1MARAM SEGMENT="1">
<MSGFN>018</MSGFN>
<MATNR>9006654</MATNR>
<ERSDA>20180729</ERSDA>
<ERNAM>RCORBIN</ERNAM>
<LAEDA>20230323</LAEDA>
<AENAM>TMUTHUSA</AENAM>
<PSTAT>KCVBLSDQEAG</PSTAT>
<MTART>ZFE1</MTART>
<MBRSH>P</MBRSH>
<MATKL>145</MATKL>
<MEINS>PK</MEINS>
<BLANZ>000</BLANZ>
<EKWSL>2</EKWSL>
<BRGEW>118.000</BRGEW>
<NTGEW>2.086</NTGEW>
<GEWEI>GRM</GEWEI>
<VOLUM>0.000</VOLUM>
<BEHVO>02</BEHVO>
<RAUBE>03</RAUBE>
<TEMPB>25</TEMPB>
<TRAGR>0003</TRAGR>
<SPART>10</SPART>
<WESCH>0.000</WESCH>
<ETIAR>M7</ETIAR>
<ETIFO>E1</ETIFO>
<EAN11>00372511760026</EAN11>
<NUMTP>UC</NUMTP>
<LAENG>0.000</LAENG>
<BREIT>0.000</BREIT>
<HOEHE>0.000</HOEHE>
<ERGEW>0.000</ERGEW>
<ERVOL>0.000</ERVOL>
<GEWTO>0.0</GEWTO>
<VOLTO>0.0</VOLTO>
<VABME>1</VABME>
<XCHPF>X</XCHPF>
<FUELG>0</FUELG>
<STFAK>0</STFAK>
<MAGRV>REP</MAGRV>
<BEGRU>FIN</BEGRU>
<MHDRZ>1</MHDRZ>
<MHDHB>36</MHDHB>
<MHDLP>0</MHDLP>
<VPSTA>KCVBXLSDQEZAG</VPSTA>
<MSTAE>03</MSTAE>
<MSTDE>00000000</MSTDE>
<MSTDV>00000000</MSTDV>
<COMPL>00</COMPL>
<RDMHD>+</RDMHD>
<IPRKZ>2</IPRKZ>
<MTPOS_MARA>NORM</MTPOS_MARA>
<GEWTO_NEW>0.0</GEWTO_NEW>
<VOLTO_NEW>0.0</VOLTO_NEW>
<MATFI>X</MATFI>
<SLED_BBD>B</SLED_BBD>
<ANP>000000000</ANP>
<ZE1MARAM SEGMENT="1">
<ZZREG_LVL>COM</ZZREG_LVL>
<ZZPROD_FAM>FP145</ZZPROD_FAM>
<ZZMODALITY>MA</ZZMODALITY>
<ZZCONC_TRGT>140</ZZCONC_TRGT>
<ZZCONC_UOM>MG/ML</ZZCONC_UOM>
<ZZDOSAGE>140</ZZDOSAGE>
<ZZDOS_UOM>MGM</ZZDOS_UOM>
<ZZDOS_FORM>LVP</ZZDOS_FORM>
<ZZMANU_STG>FDP</ZZMANU_STG>
<ZZMANU_BUILD>PRJU:APR1</ZZMANU_BUILD>
<ZZMANU_SUITE>319/4137</ZZMANU_SUITE>
<ZZFRANCHISE>100</ZZFRANCHISE>
<ZZTRADE_NAME>REPATHA</ZZTRADE_NAME>
<ZZLDN>72511-0760-02</ZZLDN>
<ZZLDNC>NDC</ZZLDNC>
<ZZDESI_CODE>2</ZZDESI_CODE>
<ZZCOST_CRIT>1</ZZCOST_CRIT>
<ZZSS_PLN_DAYS>000</ZZSS_PLN_DAYS>
<ZZGENERIC>evolocumab</ZZGENERIC>
<ZZACQUISITION>00000000</ZZACQUISITION>
<MTSTB>Unrestricted</MTSTB>
<ZZDOS_FORM_DESC>Low Volume Pre-Filled Pen</ZZDOS_FORM_DESC>
<ZZMANU_STG_DESC>Finished Drug Product</ZZMANU_STG_DESC>
<WGBEZ60>Fully Human Anti-PCSK9 Antibody</WGBEZ60>
<ZZPROD_FAM_DESC>AMG 145 Family</ZZPROD_FAM_DESC>
<ZZMODALITY_DESC>Monoclonal Antibody</ZZMODALITY_DESC>
<ZZPRIORITY>00</ZZPRIORITY>
<ZZPHARM_FORM>SOINJ</ZZPHARM_FORM>
<ZZPACK_TYPE>BX</ZZPACK_TYPE>
<ZZMTBEZ_DESC>AMG Comm Fin Product</ZZMTBEZ_DESC>
<ZZPHARM_FORM_DES_EN>Solution for injection</ZZPHARM_FORM_DES_EN>
<ZZPACK_TYPE_EN>Box</ZZPACK_TYPE_EN>
<ZZMAGRV_EN>Repatha</ZZMAGRV_EN>
<ZZMATKL_DES_S>AMG 145</ZZMATKL_DES_S>
</ZE1MARAM>
<E1MARCM SEGMENT="1">
<MSGFN>018</MSGFN>
<WERKS>P001</WERKS>
<PSTAT>BDQAVLSG</PSTAT>
<EKGRP>D02</EKGRP>
<DISMM>X0</DISMM>
<DISPO>MTS</DISPO>
<PLIFZ>2</PLIFZ>
<WEBAZ>5</WEBAZ>
<PERKZ>M</PERKZ>
<AUSSS>0.00</AUSSS>
<DISLS>EX</DISLS>
<BESKZ>E</BESKZ>
<MINBE>0.000</MINBE>
<EISBE>0.000</EISBE>
<BSTMI>0.000</BSTMI>
<BSTMA>100000000.000</BSTMA>
<BSTFE>0.000</BSTFE>
<BSTRF>1.000</BSTRF>
<MABST>0.000</MABST>
<LOSFX>0</LOSFX>
<SBDKZ>1</SBDKZ>
<ALTSL>3</ALTSL>
<AUSDT>00000000</AUSDT>
<NFMAT>Amgen Europe BV</NFMAT>
<FHORI>001</FHORI>
<BEARZ>0.00</BEARZ>
<RUEZT>0.00</RUEZT>
<TRANZ>0.00</TRANZ>
<BASMG>0.000</BASMG>
<DZEIT>0</DZEIT>
<MAXLZ>0</MAXLZ>
<UEETO>0.0</UEETO>
<UEETK>X</UEETK>
<UNETO>0.0</UNETO>
<WZEIT>0</WZEIT>
<VZUSL>0.00</VZUSL>
<KZDKZ>X</KZDKZ>
<UMLMC>0.000</UMLMC>
<LADGR>0003</LADGR>
<XCHPF>X</XCHPF>
<LGRAD>0.0</LGRAD>
<OBJID>00000000</OBJID>
<MTVFP>Z2</MTVFP>
<VRVEZ>0.00</VRVEZ>
<VBAMG>0.000</VBAMG>
<VBEAZ>0.00</VBEAZ>
<STAWN>3002150000</STAWN>
<HERKL>US</HERKL>
<MTVER>0001</MTVER>
<PRCTR>0000005193</PRCTR>
<TRAME>0.000</TRAME>
<FXHOR>000</FXHOR>
<VRMOD>1</VRMOD>
<VINT1>031</VINT1>
<VINT2>000</VINT2>
<LOSGR>6000.000</LOSGR>
<LGPRO>L001</LGPRO>
<DISGR>0001</DISGR>
<KAUSF>0.00</KAUSF>
<TAKZT>0</TAKZT>
<ABCIN>A</ABCIN>
<AWSLS>000001</AWSLS>
<VRBDT>00000000</VRBDT>
<VRBFK>0.00</VRBFK>
<PREND>00000000</PREND>
<PRENG>00000000</PRENG>
<PRFRQ>0</PRFRQ>
<STRGR>40</STRGR>
<CCFIX>X</CCFIX>
<QMATA>000050</QMATA>
<MMSTA>03</MMSTA>
<SFCPF>ZI12</SFCPF>
<SHZET>00</SHZET>
<MMSTD>00000000</MMSTD>
<DPLHO>0</DPLHO>
<MINLS>0.000</MINLS>
<MAXLS>0.000</MAXLS>
<FIXLS>0.000</FIXLS>
<LTINC>0.000</LTINC>
<COMPL>00</COMPL>
<EISLO>0.000</EISLO>
<PPS_PEG_STRATEGY>00</PPS_PEG_STRATEGY>
<PPS_GIPRT>0</PPS_GIPRT>
<PPS_CONHAP>0.000</PPS_CONHAP>
<PPS_CONHAP_OUT>0.000</PPS_CONHAP_OUT>
<ZE1QMATM SEGMENT="1">
<ART>01</ART>
<MPDAU> 8</MPDAU>
<INSMK>X</INSMK>
<KURZTEXT>Goods Receipt Insp. for Purchase Order</KURZTEXT>
<AKTIV>X</AKTIV>
</ZE1QMATM>
<ZE1QMATM SEGMENT="1">
<ART>04</ART>
<MPDAU> 5</MPDAU>
<INSMK>X</INSMK>
<KURZTEXT>Goods receipt inspection from production</KURZTEXT>
<AKTIV>X</AKTIV>
</ZE1QMATM>
<ZE1QMATM SEGMENT="1">
<ART>05</ART>
<MPDAU> 30</MPDAU>
<INSMK>X</INSMK>
<KURZTEXT>Inspection for other goods receipt</KURZTEXT>
<AKTIV>X</AKTIV>
</ZE1QMATM>
<ZE1QMATM SEGMENT="1">
<ART>08</ART>
<MPDAU> 10</MPDAU>
<INSMK>X</INSMK>
<KURZTEXT>Stock transfer inspection</KURZTEXT>
<AKTIV>X</AKTIV>
</ZE1QMATM>
<ZE1QMATM SEGMENT="1">
<ART>09</ART>
<MPDAU> 60</MPDAU>
<KURZTEXT>Recurring inspection of batches</KURZTEXT>
<AKTIV>X</AKTIV>
</ZE1QMATM>
</E1MARCM>
<E1MARCM SEGMENT="1">
<MSGFN>018</MSGFN>
<WERKS>P249</WERKS>
<PSTAT>BVDAQELSG</PSTAT>
<EKGRP>D02</EKGRP>
<DISMM>X0</DISMM>
<DISPO>MTS</DISPO>
<PLIFZ>0</PLIFZ>
<WEBAZ>7</WEBAZ>
<PERKZ>M</PERKZ>
<AUSSS>0.00</AUSSS>
<DISLS>EX</DISLS>
<BESKZ>E</BESKZ>
<MINBE>0.000</MINBE>
<EISBE>0.000</EISBE>
<BSTMI>22000.000</BSTMI>
<BSTMA>22000.000</BSTMA>
<BSTFE>0.000</BSTFE>
<BSTRF>0.000</BSTRF>
<MABST>0.000</MABST>
<LOSFX>0</LOSFX>
<ALTSL>3</ALTSL>
<AUSDT>00000000</AUSDT>
<NFMAT>Amgen Ohio (AOH)</NFMAT>
<FHORI>004</FHORI>
<BEARZ>0.00</BEARZ>
<RUEZT>0.00</RUEZT>
<TRANZ>0.00</TRANZ>
<BASMG>0.000</BASMG>
<DZEIT>0</DZEIT>
<MAXLZ>0</MAXLZ>
<UEETO>0.0</UEETO>
<UEETK>X</UEETK>
<UNETO>0.0</UNETO>
<WZEIT>0</WZEIT>
<VZUSL>0.00</VZUSL>
<KZDKZ>X</KZDKZ>
<UMLMC>0.000</UMLMC>
<LADGR>0003</LADGR>
<XCHPF>X</XCHPF>
<LGRAD>0.0</LGRAD>
<OBJID>00000000</OBJID>
<MTVFP>CH</MTVFP>
<VRVEZ>0.00</VRVEZ>
<VBAMG>0.000</VBAMG>
<VBEAZ>0.00</VBEAZ>
<PRCTR>0000005193</PRCTR>
<TRAME>0.000</TRAME>
<FXHOR>124</FXHOR>
<VRMOD>1</VRMOD>
<VINT1>030</VINT1>
<VINT2>000</VINT2>
<LOSGR>1.000</LOSGR>
<LGPRO>L001</LGPRO>
<DISGR>0001</DISGR>
<KAUSF>0.00</KAUSF>
<TAKZT>0</TAKZT>
<ABCIN>A</ABCIN>
<AWSLS>000001</AWSLS>
<VRBDT>00000000</VRBDT>
<VRBFK>0.00</VRBFK>
<PREND>00000000</PREND>
<PRENG>00000000</PRENG>
<PRFRQ>0</PRFRQ>
<STRGR>40</STRGR>
<CCFIX>X</CCFIX>
<QMATA>000050</QMATA>
<MMSTA>02</MMSTA>
<SFCPF>PI01</SFCPF>
<SHZET>00</SHZET>
<MMSTD>00000000</MMSTD>
<DPLHO>0</DPLHO>
<MINLS>0.000</MINLS>
<MAXLS>0.000</MAXLS>
<FIXLS>0.000</FIXLS>
<LTINC>0.000</LTINC>
<COMPL>00</COMPL>
<EISLO>0.000</EISLO>
<PPS_PEG_STRATEGY>00</PPS_PEG_STRATEGY>
<PPS_GIPRT>0</PPS_GIPRT>
<PPS_CONHAP>0.000</PPS_CONHAP>
<PPS_CONHAP_OUT>0.000</PPS_CONHAP_OUT>
<ZE1QMATM SEGMENT="1">
<ART>01</ART>
<MPDAU> 7</MPDAU>
<INSMK>X</INSMK>
<KURZTEXT>Goods Receipt Insp. for Purchase Order</KURZTEXT>
<AKTIV>X</AKTIV>
</ZE1QMATM>
<ZE1QMATM SEGMENT="1">
<ART>04</ART>
<MPDAU> 10</MPDAU>
<INSMK>X</INSMK>
<KURZTEXT>Goods receipt inspection from production</KURZTEXT>
<AKTIV>X</AKTIV>
</ZE1QMATM>
<ZE1QMATM SEGMENT="1">
<ART>05</ART>
<MPDAU> 30</MPDAU>
<INSMK>X</INSMK>
<KURZTEXT>Inspection for other goods receipt</KURZTEXT>
<AKTIV>X</AKTIV>
</ZE1QMATM>
<ZE1QMATM SEGMENT="1">
<ART>08</ART>
<MPDAU> 7</MPDAU>
<INSMK>X</INSMK>
<KURZTEXT>Stock transfer inspection</KURZTEXT>
<AKTIV>X</AKTIV>
</ZE1QMATM>
<ZE1QMATM SEGMENT="1">
<ART>09</ART>
<MPDAU> 0</MPDAU>
<KURZTEXT>Recurring inspection of batches</KURZTEXT>
</ZE1QMATM>
<E1MARDM SEGMENT="1">
<MSGFN>018</MSGFN>
<LGORT>L001</LGORT>
<PSTAT>DL</PSTAT>
<LMINB>0.000</LMINB>
<LBSTF>0.000</LBSTF>
<BSKRF>0.0000000000000000E+00</BSKRF>
</E1MARDM>
</E1MARCM>
<E1MARMM SEGMENT="1">
<MSGFN>018</MSGFN>
<MEINH>EA</MEINH>
<UMREZ>1</UMREZ>
<UMREN>2</UMREN>
<LAENG>0.000</LAENG>
<BREIT>0.000</BREIT>
<HOEHE>0.000</HOEHE>
<VOLUM>0.000</VOLUM>
<BRGEW>0.000</BRGEW>
<NEST_FTR>0</NEST_FTR>
<MAX_STACK>0</MAX_STACK>
<CAPAUSE>0.000</CAPAUSE>
</E1MARMM>
<E1MARMM SEGMENT="1">
<MSGFN>018</MSGFN>
<MEINH>PK</MEINH>
<UMREZ>1</UMREZ>
<UMREN>1</UMREN>
<EAN11>00372511760026</EAN11>
<NUMTP>UC</NUMTP>
<LAENG>0.000</LAENG>
<BREIT>0.000</BREIT>
<HOEHE>0.000</HOEHE>
<VOLUM>0.000</VOLUM>
<BRGEW>118.000</BRGEW>
<GEWEI>GRM</GEWEI>
<NEST_FTR>0</NEST_FTR>
<MAX_STACK>0</MAX_STACK>
<CAPAUSE>0.000</CAPAUSE>
</E1MARMM>
<E1MLGNM SEGMENT="1">
<MSGFN>018</MSGFN>
<LGNUM>002</LGNUM>
<LGBKZ>001</LGBKZ>
<LTKZE>307</LTKZE>
<LTKZA>307</LTKZA>
<LHMG1>0.000</LHMG1>
<LHMG2>0.000</LHMG2>
<LHMG3>0.000</LHMG3>
<MKAPV>0.000</MKAPV>
</E1MLGNM>
<E1MLGNM SEGMENT="1">
<MSGFN>018</MSGFN>
<LGNUM>006</LGNUM>
<LGBKZ>001</LGBKZ>
<LTKZE>001</LTKZE>
<LTKZA>001</LTKZA>
<LHMG1>3136.000</LHMG1>
<LHMG2>1568.000</LHMG2>
<LHMG3>0.000</LHMG3>
<LHME1>PK</LHME1>
<LHME2>PK</LHME2>
<LETY1>E2</LETY1>
<LETY2>E1</LETY2>
<MKAPV>0.000</MKAPV>
</E1MLGNM>
<E1MLGNM SEGMENT="1">
<MSGFN>018</MSGFN>
<LGNUM>007</LGNUM>
<LGBKZ>024</LGBKZ>
<LTKZE>300</LTKZE>
<LTKZA>300</LTKZA>
<LHMG1>1568.000</LHMG1>
<LHMG2>0.000</LHMG2>
<LHMG3>0.000</LHMG3>
<LHME1>PK</LHME1>
<LETY1>E1</LETY1>
<MKAPV>0.000</MKAPV>
</E1MLGNM>
<E1MLGNM SEGMENT="1">
<MSGFN>018</MSGFN>
<LGNUM>008</LGNUM>
<LGBKZ>003</LGBKZ>
<LTKZE>300</LTKZE>
<LTKZA>300</LTKZA>
<LHMG1>1344.000</LHMG1>
<LHMG2>336.000</LHMG2>
<LHMG3>0.000</LHMG3>
<LHME1>PK</LHME1>
<LHME2>PK</LHME2>
<LETY1>FP</LETY1>
<LETY2>HP</LETY2>
<MKAPV>714.280</MKAPV>
</E1MLGNM>
</E1MARAM>
</IDOC>
</ZMATMAS3>

I've searched in the XSLT and found a variable whose name is
$WAREHOUSEwhich is referred to in the expression below but is not bound to a value at that point.That's obviously an error.
Presumably the XSLT processor doesn't detect the error when it's processing certain XML source files because those files don't meet the conditions in which the erroneous expression is evaluated. e.g. that erroneous expression is nested inside this
ifstatement:... so if that expression is false then the erroneous expression with the unbound variable will never be evaluated.
There is a point in the stylesheet in which the variable
$WAREHOUSEis bound to a value, but the scope of that variable binding is ineffectual:It's important to understand that the scope of a variable binding in XSLT is defined lexically by the parent element in which the
<xsl:variable/>element appears. The variable is visible to any element within that parent element which follows the<xsl:variable>element itself; in other words the variable is usable only by following sibling elements and their descendants. It follows from this that any<xsl:variable>element that has no following siblings is totally ineffectual.In this case, the variable binding exists only for nodes which are also children of that
xsl:whenelement, and which follow thexsl:variableelement, but there are none.By the way, a variable called
$WAREHOUSEis not the same as$Warehousebecause variable names in XSLT are case sensitive.