Class com.sap.basis.ukm.GetKeyMapping
The class provides methods for reading key mappings using RFC function module UKM_GET_KEYMAPPINGS. Both single and mass access is supported.
The namespace extensions for the classes of the unified key mapping that are used are declared in the header of the xslt transformation. A GetKeyMapping instance for the required key store is created in the global part of the transformation and stored in a reference variable $ref. Of course the variable can be renamed.
The required mappings are defined in the template with Identifier instances and passed to the GetKeyMapping instance referenced with $ref with method addMapping(). With method getResults(), the flagged mapping requests are executed and the results are passed. They are provided as xml fragment and stored in variable $result. The xslt context must be restored before the first access.
A complete coding example for querying a key mapping is given below.
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:Identifier="java:com.sap.basis.ukm.Identifier"
xmlns:GetKeyMapping="java:com.sap.basis.ukm.GetKeyMapping">
<xsl:param name="mappingTrace"/>
!-- Get a reference to the default key store -->
<xsl:variable name="ref" select="GetKeyMapping:new($MappingTrace)"/>
<xsl:template match="/">
<!-- Create source key -->
<xsl:variable name="sourceID"
select="Identifier:new('PartnerGUID', 'QM3_300', 'B123')"/>
<!-- Create incomplete target key -->
<xsl:variable name="targetID"
select="Identifier:new('CustomerID', 'EU3_003')"/>
<!-- Add mapping request -->
<xsl:variable name="void"
select="GetKeyMapping:addMapping($ref, 'BUS1006',
$sourceID, $targetID)"/>
<!-- Execute the pending keymapping calls and get the messages -->
<xsl:variable name="result" select="GetKeyMapping:getResult($ref)"/>
<!-- Always restore context after calling an extension function -->
<xsl:for-each select="$result"/>
<!-- Output messages of the call -->
<xsl:copy-of select="$result"/>
</xsl:template>
</xsl:transform>
If such a key mapping with result 'B456' is defined, the results of this call will be:
<MappingResult> <Mapping mainContextID="BUS1006"> <SourceID schemeID="PartnerGUID" clientDefault="" schemeVersionID="" schemeAgencyID="QM3_300" schemeAgencySchemeID="" schemeAgencySchemeAgencyID="ZZZ">B123</SourceID> <TargetID schemeID="CustomerID" clientDefault="X" schemeVersionID="" schemeAgencyID="EU3_003" schemeAgencySchemeID="" schemeAgencySchemeAgencyID="ZZZ">B456</TargetID> </Mapping> </MappingResult>
If no such key exists, the results of the call are as follows:
<MappingResult> <Mapping mainContextID="BUS1006"> <SourceID schemeID="PartnerGUID" clientDefault="" schemeVersionID="" schemeAgencyID="QM3_300" schemeAgencySchemeID="" schemeAgencySchemeAgencyID="ZZZ">B123</SourceID> <TargetID schemeID="CustomerID" clientDefault="X" schemeVersionID="" schemeAgencyID="EU3_003" schemeAgencySchemeID="" schemeAgencySchemeAgencyID="ZZZ"/> </Mapping> </MappingResult>