One mapping program for three diferent enviroments

Hello there,
I have developed a scenario in which an rfc requests a web service trough XI. In the process a BPM is involved together with some XSLT mappings.
     R3->XI->WebService
The Web service request message looks like follows:
<?xml version="1.0" encoding="UTF-8"?>
<cem:Z_ORDER_SEARCH xmlns:cem="http://XXXXXXXX/yyyyyyyyyyyy">
     <messageStructure/>
</cem:Z_ORDER_SEARCH>
Where "http://XXXXXXXX/yyyyyyyyyyyy" Is the web service destination.
Everything works fine, but as I have to manage three different environments for Development, Quality and Production I need three different versions of the XSL mapping since destinations are not the same for Dev, Qlty and Production environments.
I found out that I can get information of the sender using runtime parameters as follows:
<xsl:param name="SenderSystem">
I would like to evaluate this information to determine the target URL destination.
If the sender is the development sender then the URL target is the development destination and so on.
I tried the following code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:cemDev="http://developmentDestination"
xmlns:cemQlty="http://qualityDestination"
xmlns:cemPrd="http://productionDestination"
xmlns:cem=""
<xsl:namespace-alias stylesheet-prefix="cem" result-prefix="cemDev"/>
<xsl:template match="/">
     <cem:mappingProgram/>
</xsl:template>
</xsl:stylesheet>
This works all right, but I cannot insert code to evaluate the destination.
On the other hand, this code is not valid:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:cemDev="http://developmentDestination"
xmlns:cemQlty="http://qualityDestination"
xmlns:cemPrd="http://productionDestination"
xmlns:cem="">
<xsl:param name="SenderSystem"/>
     <xsl:choose>
          <xsl:when test="string($SenderSystem) = 'PRODUCTION'">
               <xsl:namespace-alias stylesheet-prefix="cem" result-prefix="cemPrd"/>
          </xsl:when>
          <xsl:when test="string($SenderSystem) = 'QUALITY'">
               <xsl:namespace-alias stylesheet-prefix="cem" result-prefix="cemQlty"/>
          </xsl:when>
          <xsl:otherwise>
               <xsl:namespace-alias stylesheet-prefix="cem" result-prefix="cemDev"/>
          </xsl:otherwise>
     </xsl:choose>
     <xsl:template match="/">
          <cem:mappingProgram/>
     </xsl:template>
</xsl:stylesheet>
Neither this one:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:cemDev="http://developmentDestination"
xmlns:cemQlty="http://qualityDestination"
xmlns:cemPrd="http://productionDestination"
xmlns:cem="">
        <xsl:param name="SenderSystem"/>
        <xsl:template match="/">
     <xsl:choose>
          <xsl:when test="string($SenderSystem) = 'PRODUCTION'">
               <xsl:namespace-alias stylesheet-prefix="cem" result-prefix="cemPrd"/>
          </xsl:when>
          <xsl:when test="string($SenderSystem) = 'QUALITY'">
               <xsl:namespace-alias stylesheet-prefix="cem" result-prefix="cemQlty"/>
          </xsl:when>
          <xsl:otherwise>
               <xsl:namespace-alias stylesheet-prefix="cem" result-prefix="cemDev"/>
          </xsl:otherwise>
     </xsl:choose>
     <cem:mappingProgram/>
      </xsl:template>
</xsl:stylesheet>
I tried this other code, which is obviously not valid:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:template match="/">
          <xsl:param name="SenderSystem"/>
          <xsl:choose>
               <xsl:when test="string($SenderSystem) = 'PRODUCTION'">
                    <cem:Z_ORDER_SEARCH xmlns:cem="http://productionDestination">
               </xsl:when>
               <xsl:when test="string($SenderSystem) = 'QUALITY'">
                    <cem:Z_ORDER_SEARCH xmlns:cem="http://qualityDestination">
               </xsl:when>
               <xsl:otherwise>
                    <cem:Z_ORDER_SEARCH xmlns:cem="http://developmentDestination">
               </xsl:otherwise>
          </xsl:choose>
     <cem:mappingProgram/>
</cem:Z_ORDER_SEARCH>               
     </xsl:template>
</xsl:stylesheet>
So the only way I found to make it works is like this:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:template match="/">
          <xsl:param name="SenderSystem"/>
          <xsl:choose>
               <xsl:when test="string($SenderSystem) = 'PRODUCTION'">
                    <cem:Z_ORDER_SEARCH xmlns:cem="http://productionDestination">
     <cem:mappingProgram/>
                    </cem:Z_ORDER_SEARCH>
               </xsl:when>
               <xsl:when test="string($SenderSystem) = 'QUALITY'">
                    <cem:Z_ORDER_SEARCH xmlns:cem="http://qualityDestination">
     <cem:mappingProgram/>
                    </cem:Z_ORDER_SEARCH>
               </xsl:when>
               <xsl:otherwise>
                    <cem:Z_ORDER_SEARCH xmlns:cem="http://developmentDestination">
     <cem:mappingProgram/>
                    </cem:Z_ORDER_SEARCH>               
               </xsl:otherwise>
          </xsl:choose>
     </xsl:template>
</xsl:stylesheet>
Unfortunately this doesn’t solve my problem, because I need to reproduce the mapping program three times in the document.
Any ideas, or suggestions how to manage one mapping program for the three different environments?
Thanks a lot in advance, Raú

Hi there,
I just found one way of getting this done. It may not be the better waw, but I post it in case it is helpfull.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
     <!-- Sender System at runtime-->
     <xsl:param name="senderSystem"/>
     <!-- SenderSystem constants (development addressed by default)-->
     <xsl:variable name="qualitySenderSystem" select="'WHATEVERTHENAMEOFTHEQUALITYSENDERSYSTEM'"/>
     <xsl:variable name="productionSenderSystem" select="'WHATEVERTHENAMEOFTHEPRODUCTIONSENDERSYSTEM'"/>
     <!-- Mapping program template to be called-->
     <xsl:template name="mappingProgram" match="/">
          <!-- MAPPING PROGRAM-->
          <UNIQUE_MAPPING_PROGRAM/>
          <!-- END OF MAPPING PROGRAM-->
     </xsl:template>
     <!Receiver determination depending on senderSystem>
     <xsl:template match="/">
          <xsl:choose>
               <xsl:when test="$senderSystem=$productionSenderSystem">
                    <xxx:Z_ORDER_SEARCH xmlns:xxx="http://production">
                         <xsl:call-template name="mappingProgram"/>
                    </xxx:Z_ORDER_SEARCH>
               </xsl:when>
               <xsl:when test="$senderSystem=$qualitySenderSystem">
                    <xxx:Z_ORDER_SEARCH xmlns:xxx="http://quality">
                         <xsl:call-template name="mappingProgram"/>
                    </xxx:Z_ORDER_SEARCH>
               </xsl:when>
               <xsl:otherwise>
                    <xxx:Z_ORDER_SEARCH xmlns:xxx="http://development">
                         <xsl:call-template name="mappingProgram"/>
                    </xxx:Z_ORDER_SEARCH>
               </xsl:otherwise>
          </xsl:choose>
     </xsl:template>
</xsl:stylesheet>

Similar Messages

  • New Map program for N95

    Hi All
    I am trying to upgrade my n95 Map program and i have downloaded thre new MAP rom upgrade but it is comming with error to upgrade. I have the new firmware 12. and old looking screen map program. can you please help to upgrade it and if there is a patch to do it could someone tell me where it is and how to get it. I did use the use the download (NOKIA_MAPS_1_0_S60_UPDATE) back in 9th AUG 2007 and updated in my N95 but it is steel with the old looking map I meen by ther is not SATALITE BAR and KB download when is on GPS mode like the new look map program.Please help.
    Regards
    JOSEPHKH

    No one knows what will be included or when it will be released.
    The best place to visit for news about new firmware first is www.symbian-freak.com

  • Creation of one outbound interface for two diferent senders

    helo.
    i just want to conform ont thing that .
    my scenario is  two diferent files from 2 diferent business systems are sending to one Rfc.
    so i was created only one outbound interface for both senders and one message type bcos the file structure is same for both senders.
    so is there any thing wrong in creating only one datatype,message type,message interface for both senders.
    waiting for your response.
    cheers.
    seeta ram.

    Hi Ram,
    That is perfectly correct when you have two senders and one receiver Scenario and <b>Business Service is different</b>. Then you can use the same Interface.
    Just keep in mind that the key for XI to recognise the Right interface is combination of these 3 parameters:
    Sender Service, Sender Interface and Namespace. These cannot be duplicated.
    When the Message type is same in the sender input data then you can create just one Message Type and One Data type and RFC is anyhow the imported RFC which you need not have to worry.
    In Configuration Scenario you need to configure separately the RD, ID, CC and Agreements for the Interfaces.
    Hope this answers your query. Let us know if you need anymore clarification
    Thanks
    Srini

  • How to find out back end mapping program for Idoc ?

    HI Experts,
    Iam new to ALE IIDOCS .. i have a issue in existing idoc .
    Some data maping problem is there in the existing idocs
    I need to find out back end program for this perticular idoc  no .
    Exactly where they have written the maping code  .
    How to find out this ?
    is there any preceedure to trace the back end program based on the idoc number .
    Regards
    RameshG

    Hi Ramesh,
    If you are looking at Inbound que then we generally double click on idoc go to control datat info and then take partner data info there
    Goto we20 check teh system and there double click the message type and there in inbound option double clik the porcess code it gives you one FM where you can see logic written to process that IDOC
    Regards,
    Poornima

  • More than one print program for one sap script

    Hi Experts,
    I have more than one print program which is attached to one sap script. There is standard text used in the script which has variable as date, i want that date to be converted into the previous date but only for one specific print program. For rest of the print program it should behave as it is.
    I have tried it using ( s_date - 1 ) formula and it is working fine. But the variable s_date is used in other parts of the program which is affecting rest of the functionality when i am using above said formula. I can't use other variable in standard text as it is used by other programs.
    Please guide me to resolve this, thanks in advance.

    Well, I'm not sure if I understand the scenario 100%, but I think what you have is a standard text (that you cannot change) referring to variable &S_DATE&. You want this to display the previous day's date when the form is used by one print program but not when it's called by another.
    Also, you don't want to change S_DATE to S_DATE - 1 for the whole printout, because apart from the text display, S_DATE is used elsewhere and you want to keep the date as S_DATE, not the previous day.
    I assume that you can change the coding of the form.
    If all of the above is correct, then you could change the value for S_DATE in the form to the previous day just before it calls the standard text and change it back after the output of the text is done. So right befor the INCLUDE for the standard text, you could use an IF statement in the form logic, query the value of SY-REPID (or SY-CPROG). You'll have to test which one shows the print program name. Depending on that, you can do S_DATE = S_DATE - 1 and after the INCLUDE, do the same thing and change it back to S_DATE = S_DATE + 1.
    But honestly, this is a pretty shady programming technique... I mean, hard coding references to the print program name in the form logic is certainly not a very clean method

  • Looking for a Maps program for Cloud for Customer

    Hello,
    I'm looking for a maps program like Microsoft Bing Maps for SAP ByDesign that is compatible with Cloud for Customer. In the process of finding this forum, I can see Cloud for Customer and Business by Design are related but are these program compatible?
    Is there any documentation confirming these programs are compatible? A how to for matching them up?
    Is there an alternative that I could use with Cloud for Customer to achieve the same thing?  
    Thanks,
    Gabriel

    "SAP has updated to HTML5 interface and now has Google Map integration and that we now have it enabled."
    It looks like this has worked out, thanks everyone.

  • Different mapping programs for same source and target

    Hi All,
      I have to map the incoming idoc to xml messages.
      But based on customer numbers in incoming idoc i have to use different mapping programs and map to same xml messages.
    1 source message     - n mapping programs       - 1 target message
                                    (based on cust numbers)
    I dont want to harcode the customer numbers to find out the mapping programs.
    Can anyone guide me in this on how to achieve this functionality...
    thanks
    Giridhar

    Hi,
    have you tried to use Conditions in the Interface Determination?
    You can add multiple lines in the 'Configured Inbound Interfaces' and attach different mappings to each of them by picking a condition (basically using an XPath Expression).
    Check this Help Document,
    the section 'Multiple Identical Inbound Interfaces with Conditions' describes what I believe is your scenario.<a href="http://help.sap.com/saphelp_nw04s/helpdata/en/42/ea20e737f33ee9e10000000a1553f7/frameset.htm">Multiple Identical Inbound Interfaces with Conditions</a>
    regards,
    Peter

  • Map programe for valuation

    dear gurus
    yesterday i faced a problem with material stock valuation with ref. to that i got on replay ple check map program
    ple tell me about that
    tahnk u
    prakash

    Hi,
    If we are to be able to help we need more information, please cut and paste the exact text of the message you received and which transaction was being used.
    Steve B

  • Split in Mapping Program

    Hai,
    is it possible to use different Mapping programs in one process? For example I use Idoctype ACC_GL_POSTING01 to book some values from 3rd party into R3.
    So now I have to make a different mapping in according to the booking code coming from 3rd party.
    So what you guys think is the best way to solute this?
    Because I don't want to make large If-statements in one mapping program - if their is any better way!
    THX Matt
    Message was edited by: Matthias Boettger

    Hi Matthias,
    sure:)
    you can insert a switch step
    (which will take into consideration the bookig code)
    and on the basis of this create branches with different interface mappings (so different mapping programs)
    but you have to do it in BPM (integration process)
    Regards,
    michal
    Message was edited by: Michal Krawczyk

  • How can connect different ejb server in one client program

    hi , every
    i want to make connect ejb server into one client program.
    for that , but i try to change PROVIDER_URL property , it's not correct
    who solve this problem for novice? :(

    You need to create separate initialContext to each of the different servers
    and lookup up the different ejbs.
    -Sabha
    "inking" <[email protected]> wrote in message
    news:[email protected]..
    hi , every
    i want to make connect ejb server into one client program.
    for that , but i try to change PROVIDER_URL property , it's not correct
    who solve this problem for novice? :(

  • Driver program for FORM16

    Hi all,
    I am seaching for Driver program for FORM16 SMART FORM .There is one driver program for sap script , for smart form J_1IEWT_CERT IS there any driver program  .
    Can any one please guide me how to proceed?
    thanks in advance.
    Regards,
    suresh.

    Hi, i recently solved the j1incert issue.
    Can i know whether are you trying to change to the new tds format for form 16 (new format on 2010)?
    If so please let me know. i can guide you.
    [Click here|https://websmp130.sap-ag.de/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/sapnotes/index2.htm?numm=1522189] for new
    (note you need to have market place login) tds certificate format (2010)
    oss note: 1522189
    earlier the form used to be in script but now changed into smartform.
    For the driver program of form 16 in se38 please enter report name as J_1IEWT_CERT . and click on display
    Regards,
    koolspy.

  • Single concurrent program for multiple operating units

    HI
    I am working on XML/BI publisher to generate AR invoice reports.
    We have single rdf report using which rtf templates are generated.
    There are 10 operating units (10 ORG_ID's) and 10 rtf templates, one for each operating unit. There are 4 different responsibilities for each ORG_ID
    Eg: ORG_ID's = 11, 12, 13, 14..........etc
    Eg: Responsibility = xx, yy, zz...........etc
    I want to register a single concurrent program. When a user submits a request from "XX" responsibility, then the template associated with that org_id should be generated. Whichever responsibility the user is accessing from, that particular template must be shown as output.
    How can i register one concurrent program for multiple operating units.
    Thanks!
    Edited by: 994628 on Mar 18, 2013 4:39 PM
    Edited by: 994628 on Mar 18, 2013 4:42 PM

    >
    There are 10 operating units (10 ORG_ID's) and 10 rtf templates, one for each operating unit. There are 4 different responsibilities for each ORG_ID
    Eg: ORG_ID's = 11, 12, 13, 14..........etc
    Eg: Responsibility = xx, yy, zz...........etc
    I want to register a single concurrent program. When a user submits a request from "XX" responsibility, then the template associated with that org_id should be generated. Whichever responsibility the user is accessing from, that particular template must be shown as output.
    >
    interesting case for 10 OE set 10 template
    what is purpose? for each OE different requirements for layout?
    BTW
    if each Responsibility associated with one org_id then
    - you can get current org_id when you run concurrent program
    - create main template (will be #11) with condition like
    <?choose:?>
    <?when: ORG_ID=11?>
    <?import:xdo://FND.XX11_SUB.en.00/?>
    <?call:TEMPLATE11?>
    <?end when?>
    <?when: ORG_ID=12?>
    <?import:xdo://FND.XX12_SUB.en.00/?>
    <?call:TEMPLATE12?>
    <?end when?>
    <?otherwise:?>
    <?import:xdo://FND.XX21_SUB.en.00/?>
    <?call:TEMPLATE21?>
    <?end otherwise?>
    <?end choose?>so based on org_id will be import of needed subtemplate
    - re-register your "10 rtf templates" as subtemplates
    another way is substitution of template for concurrent then it running
    in before_report trigger set needed template
    l_conc_request_id := fnd_global.conc_request_id;
        if ORG_ID = 11 then
          UPDATE fnd_conc_pp_actions t
             SET t.argument2 = 'XX11'
           where t.concurrent_request_id = l_conc_request_id
             and t.action_type = 6;
      if ORG_ID = 21 then
          UPDATE fnd_conc_pp_actions t
             SET t.argument2 = 'XX21'
           where t.concurrent_request_id = l_conc_request_id
             and t.action_type = 6;

  • ABAP Program for Processchain..

    I have one processchain that is running my manually.
    if processchain running means need a output like processchain running.if processchain not running/completed
    i need a output like process completed.so finaly i need to develop abap program for my processchain.any one write program for my processchain?

    Hi,
    REPORT  ZPROCESSCHAINLOG.
    TABLES rspclogchain.
    DATA: gt_rspclogchain LIKE rspclogchain OCCURS 0,
          wa_rspclogchain LIKE rspclogchain.
    DATA: gt_log LIKE rspc_s_msg OCCURS 0,
          wa_log LIKE rspc_s_msg,
          log type c.
    SELECT * FROM rspclogchain
    INTO CORRESPONDING FIELDS OF TABLE gt_rspclogchain
    WHERE datum eq sy-datum
    AND chain_id = YOUR PROCESSCHAINID.
    IF sy-subrc = 0.
      SORT gt_rspclogchain BY datum DESCENDING
                               zeit DESCENDING.
      READ TABLE gt_rspclogchain
           INTO wa_rspclogchain INDEX 1.
      CALL FUNCTION 'RSPC_API_CHAIN_GET_LOG'
        EXPORTING
          i_chain = wa_rspclogchain-chain_id
          i_logid = wa_rspclogchain-log_id
        TABLES
          e_t_log = gt_log.
      IF sy-subrc = 0.
        LOOP AT gt_log INTO wa_log.
          if wa_log-msgv4 = 'Successfully completed'.
            log = 1 .
          endif.
        ENDLOOP.
        if log = 1.
          WRITE: / 'Processchain completed'.
        ELSE.
          WRITE :/ 'processchain is running'.
        endif.
      ELSEIF sy-subrc <> 0.
        WRITE :/ 'Not scheduled'.
      endif.
    endif.
    Best Regards,
    Thangesh

  • TS1702 Maps program does not work. In standard it only shows a grid. If I ask for a route it shows start and end point and three route boxes but nothing else. It does show directions. If I switch to hybrid it shows to routes but no roads. Background is a

    Maps program does not work. In standard it only shows a grid. If I ask for a route it shows start and end point and three route boxes but nothing else. It does show directions. If I switch to hybrid it shows to routes but no roads. Background is a blur.

    Do you have a question? This is a user to user help forum. Apple is not here only other users like yourself. You don't report problems to Apple here.
    By the way, it might help if you indicated where you are located.
    To complain to Apple use http://www.apple.com/feedback/ipad.html

  • XI 3.0: Additional libraries for mapping program

    Hello,
    I got the scenario that the program within my Interface Mapping is making use of additional custom java resources (jar's).
    I know that in XI 2.0 I had to put these additional libraries into the directory:
    ..\j2ee\cluster\server\additional-lib
    and register them in the files:
    ..\j2ee\cluster\server\managers\library.txt and
    ..\j2ee\cluster\server\managers\reference.txt
    Now in XI 3.0 I don't have these folders and files anymore. Therefore I simply imported the jar files into the repository...But I do neiter know wether that is the right way at all for registering additional libs in XI 3.0 nor I don't know if I have to import them into the same software component or namespace then the mapping program.
    Does anybody know how to make use of additional libraries within a XI 3.0 Stack 5 landscape? I would very much appreciate any recommendations on that!
    Kind regards,
    Sven Lattermann

    Hi Advait,
    From the below what I understand is that you are not able to do value mapping for the follwoing
    1     A
    2     A
    3     B
    As value mapping allow one to one mapping only. Please do it like as mentioned below
    1     1*A
    2     2*A
    3     3*B
    Then in the graphical mapping of Integration Repository do the mapping for the same as shown below
    source field > VALUEMAPPING> UDF--> TARGET Field
    In UDF suppress the value of  1* , 2* , 3* which can be done as follows
    create one UDF with one input field
    //write the code as below to suppress the field
    return input.substring(2);
    Here the davantage of using 1* , 2* , 3* etc is that you have the option to use value mapping for 100 values which I think is not normally the case for any Interface.
    If you have same source you can do the same thing for that.
    Hope this helps you to resolve your query.
    Thanks & Regards
    Prabhat

Maybe you are looking for

  • How to block certain users to print S1 billing document type documents

    Hello, I need to block some user so that they can not print the S1 reversed billing documents. How can I do this? Thank you. H

  • How to add a drop-down menu to a rollover image?

    Hi, I guess my title says it all... I was wondering how to add a drop-down menu to a rollover image? I know that there's the sprymenu, but I need to have my own rollover images. Thanks, Kazem

  • Widowed Fotter

    I have this master detail report with summary of details. When I let Report to make default layout it creates 3 group frames. First one is for header labels of columns (M_G_ORD_ITEM_HDR) Second one is repeating frame for Items (R_G_ORD_ITEM) And thir

  • Serve data driven docs - how to question

    I'm sure this is very basic for most, but this is my first go at this...  I'm only asking to be pointed in the right direction, not looking for  excessive hand holding. I have created a table in MySQL for documents I wish to serve up (PDFs,  MS word,

  • Handbrake won't let me select my itunes videos for conversion

    i'm opening handbrake and browsing for my videos but when i select one for conversion handbrake tells me that it's not a valid title and won't let me open it, what should i do?