Skip to Content
avatar image
Former Member

Problem when using XSLT Mapping with Java Methods.

Hi all,

when i am running the following XSLT Mapping inPI7.1

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:javamap="java:at.pi.mapping.besoldung.BesoldungMapping">
	<xsl:template match="Messages">
		<Messages>
			<Message1>
				<xsl:apply-templates></xsl:apply-templates>
			</Message1>
		</Messages>
	</xsl:template>
	<xsl:template match="Message1">
		<test></test>
		<xsl:param name="inputparam"></xsl:param>
		<xsl:for-each select="MT_BesoldungConversions">
			<test1></test1>
			<!-- Prüfen ob die subtractDates Methode verfügbar ist -->
			<xsl:if test="function-available('javamap:createWhitespace')">
				<xsl:if test="function-available('javamap:extendTextWithWhitespaces')">
					<MT_BesoldungOut>
						<EDI_DC40>
							<xsl:param name="tablename">
								<xsl:value-of select="tablename"></xsl:value-of>
							</xsl:param>
							<xsl:variable name="constTen">10</xsl:variable>
							<xsl:value-of select="javamap:extendTextWithWhitespaces($tablename,$tablename, $inputparam)"></xsl:value-of>
						</EDI_DC40>
					</MT_BesoldungOut>
				</xsl:if>
			</xsl:if>
		</xsl:for-each>
	</xsl:template>
</xsl:stylesheet>

i get the exception:

Method fatalError called, terminate transformation, because of

javax.xml.transform.TransformerException: com.sap.engine.lib.xml.util.NestedException: Incompatible types at com.sap.engine.lib.jaxp.TransformerImpl.transform(TransformerImpl.java:251) at com.sap.aii.ib.server.mapping.execution.AbstractMappingTransformer.transform(AbstractMappingTransformer.java:174) at com.sap.aii.ib.server.mapping.execution.XSLTMapping.executeStep(XSLTMapping.java:79) at com.sap.aii.ib.server.mapping.execution.Mapping.execute(Mapping.java:60) at com.sap.aii.ib.server.mapping.execution.SequenceMapping.executeStep(SequenceMapping.java:40) at com.sap.aii.ib.server.mapping.execution.Mapping.execute(Mapping.java:60) at com.sap.aii.ib.server.mapping.execution.MappingHandler.map(MappingHandler.java:87) at com.sap.aii.ib.server.mapping.execution.MappingHandler.map(MappingHandler.java:54) at com.sap.aii.ibrep.server.mapping.rt.MappingHandlerAdapter.run(MappingHandlerAdapter.java:139) at com.sap.aii.ibrep.server.mapping.exec.ExecuteIfMapCommand.execute(ExecuteIfMapCommand.java:33) at com.sap.aii.ib.server.mapping.exec.CommandManager.execute(CommandManager.java:43) at com.sap.aii.ibrep.server.mapping.ServerMapService.execute(ServerMapService.java:40) at com.sap.aii.ibrep.server.mapping.MapServiceBean.execute(MapServiceBean.java:40) at sun.reflect.GeneratedMethodAccessor490_10000.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy1510_10000.execute(Unknown Source) at sun.reflect.GeneratedMethodAccessor489_10000.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585)

Can anyone explain me, what the problem in this mapping is.

I am using the SAP XML Toolkit

Best regards,

Martin

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

5 Answers

  • avatar image
    Former Member
    Jan 12, 2009 at 12:36 PM

    Hi Martin,

    a) what happens if you uncheck the button "use sap xmltoolkit" in your operation mapping?

    b) Open you source in XMLSPY? Is the XML wellformed? Maybe there are any special character like ampersand that are in a wrong format.

    Regard Mario

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jan 12, 2009 at 12:54 PM

    The mapping was created in xml spy and it is wellformed.

    If i uncheck the use sap xml toolkit option, the java methods cannot be found.

    br,

    martin

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hi martin,

      I meant

      check the XML source (= the XML that has to be transformed) instance NOT the mapping programm!

      Regards Mario

  • avatar image
    Former Member
    Jan 12, 2009 at 01:01 PM

    i have checked the xml file containing the message. it is wellformed.

    Add comment
    10|10000 characters needed characters exceeded

  • Jan 12, 2009 at 01:06 PM

    Could you post the signature of your Java class method?

    It might incorrect.

    Regards

    Stefan

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jan 12, 2009 at 01:34 PM

    Hi Stefan,

    the signature of the java method is th following:

    public static String extendTextWithWhitespaces(String aText, String aTotal, Map aInputParam)

    br,

    martin

    Add comment
    10|10000 characters needed characters exceeded