IfS and ifSWithoutElse: What is their functinality?

Hi All,
In SP 15 two new standard functions: ifS and ifSWithoutElse have been added.
How are they different from if and ifWithoutElse functions?
Could not find much about them on SAP Help.
Regards,
Anurag Mahendru.

It has been clearly defined in the oss note
https://service.sap.com/sap/support/notes/1090369
For your benefit and the benefit of the group I am pasting the content from the above oss note
*********************Start of note**********************
Summary
Symptom
The behaviour of functions 'if' and 'ifWithoutElse' in Message-Mapping has been changed. We have changed it after we've become aware of the fact that both functions behave inconsistently with the documentation.
This change has some important consequences, which are described in this note.
Let us consider the function 'if'. The situation with 'ifWithoutElse' is analogous to it.
There are, in fact, two distinct use-cases for the function 'if':
1. One is when the function is used as an if statement. For example, consider this pseudocode:
if <condition>
  value = <expression1>
else
  value = <expression2>
end
In this case, one expects that the <condition> expression is evaluated first and then, depending on the value of the condition, one of the branch expressions is evaluated and assigned to variable 'value'.
2. The second use case is when the function is used as a procedure. In pseudocode:
value = if (<condition>, <expression1>, <expression2>)
In this case, all three expressions (<condition>, <expression1> and <expression2>) whould be evaluated first and the results of this expressions would be passed to function 'if', which in turn, would return one of them, depending on condition value, to be assigned to 'value' variable. This second use-case is also known in some programming languages as function 'iif'.
In Message-Mapping, the analog of evaluating an expression is advancing a pointer on one of the argument queues of a function. It turned out that the function 'if' did not consistently work either way and that the customers need both variants of the function. The SAP Note 1053706 has delivered the first patch to the function 'if'. This patch was not functionally complete and the function 'if' was patched again. The SAP Note 1085331 has delivered the finally fixed function 'if'. With this Note, the function always works as in use-case 2 above. That is, all arguments are evaluated first, then value of one of them is returned. To minimize compatibility problems with old usages, the function makes one exception to this rule: in case when evaluating one of the branches throws an Exception, the function ignores it, if the exception is in the branch that is not selected by condition.
This change in behaviour can lead to some of the Message-Mappings producing different results than before implementing the patch.
One common problem situation is when one of the branches of function 'if' contains a User-Defined function that produces side-effects. Like increments and stores a counter in 'GlobalContainer', for example. Such functions will be executed more times than before and will cause the numbering to go awry.
Other terms
Message Mapping, XI, PI, IF,IFS IFSWIthoutElse Boolean functions
Reason and Prerequisites
See above.
Solution
To provide customers with functions to use in use-case 1 above, SAP will deliver new standard functions 'ifS' and 'ifSWithoutElse'. The 'S' in the names states for 'Statement'. The new functions will be delivered in
Patch level 1 of SP21 of XITOOLS 3.0,
and SP22 onwards
Patch level 1 of SP14 of XITOOLS 7.0,
Patch level 2 of SP15 of XITOOLS 7.0
and SP16 onwards
SP05 of SAPXIESR 7.1 and SAPXIPCK 7.1,
and subsequent Support Packages of each corresponding major release.
It is not recommended to install the patches between SAP Note 1053706 and 1085331. If you decide to install a patch from Note 1085331 or any subsequent release, carefully test Message-Mappings before deploying the patch in productive systems.
In case the upgrade is necessary and Message-Mappings do not work as before, there is a possibility to workaround the problem. There's no known generic workaround for all kinds of problems that can arise.
Note :
IFS and IFSWIthoutElse functions have a Limitation.
When the The IFS and IFSWIthoutElse functions have the UDF of type Queue or Context, it will be executed unconditionally.
i.e the Queue UDF will be executed once even it does not have a matching condition in the input queue and the Context UDF will be executed once for every Context in the input queue, even if there is no matching condition in the input context.
For situation with functions leaving side-effects described above, we recommend to add a new argument to the User-Defined Function and create the side-effect conditionally based on that argument. Most probably you will want to put in this additional argument the same queue that you use in condition for function 'ifS'.
Please read the relevant Note 1158485 also.
Header Data
Release Status: Released for Customer
Released on: 30.04.2008  13:52:29
Priority: HotNews
Category: Program error
Primary Component: BC-XI-IBD-MAP Mapping
*********************End of note**********************

Similar Messages

  • What is their difference betwwen  Sun ONE Application Server  and J2EE serv

    Sun ONE Application Server is Sun implementation of J2EE server.
    But it seems even no Sun ONE Application Server, use J2EE SDK command
    j2ee -verbose
    we still can launch an Application Server that support EJB, JSP....
    what is their difference betwwen Sun ONE Application Server and J2EE server provided by J2EE SDK ?
    Thanks,

    Sun ONE generally refers to the Sun ONE Application Server version 7.x. This is a J2EE 1.3 compliant application server from Sun. Sun also released a Reference Implementation version (RI) as a requirement of the J2ee 1.3 spec. This is the J2EE server you are refering too. The Sun ONE Application Server 7 is a more robust production ready App Server.
    Going forward, Sun combined the 2 seperate groups to include just 1 release. The J2EE 1.4 Reference Implementation is the Sun Java System Application Server Platform Edition version 8. SJS AS 8 PE is both free and production ready. Other version will include High Availability, Managing and Monitoring features.
    -Jeff

  • I have an app idea project going on but I have no access to itunes connect so I can send my idea to the app developers and see what their opinion is about it.Do you know any other ways that can help me promote my idea so it can be further developed?

    I have an app idea project going on but I have no access to itunes connect so I can send my idea to the app developers and see what their opinion is about it.Do you know any other ways that can help me promote my idea so it can be further developed?

    You can not merge accounts.
    Apps are tied to the Apple ID used to download them, you can not transfer them.

  • Gave My IPad to family mem. reset it and reregistered it to their name. Downloaded apps, that now won't open. What's the prob?

    Gave my iPad 2 to a family mem. Reset it and reregistered it in their name. Downloaded apps and now they won't open? Wow , what went wrong?

    A reset may help. Tap and hold the Home button and the On/Off buttons for approximately 10-15 seconds, until the Apple logo reappears. When the logo appears, release both buttons.
    No content is affected by this procedure.

  • HT201269 Hi. My kids are all on my itunes account.  They have purchased music and apps.  I need to set up their own accounts since when on my account they also get my ext messages.  How can I set up new accounts and transfer what they purchased from my ac

    Hi.  My kids are all on my itunes account.  As a result they also ge my text messages.  I would like to set up their own accounts but be able to transfer the songs and apps they purchased.  Can this be done?

    You can still share an iTunes account for purchasing and downloading content. Just create a new Apple ID for iCloud to use for Messaging. If you try to create a new Apple ID for music and content, everything on their phone is tied to the Apple ID used for purchases, and would then require the password for that Apple ID to update. The way I described is easier.

  • What is the process for transferring 2 lines from separate family plans and joining them in their own share plan?

    I am part of a family plan (not the owner) and my boyfriend is part of a family plan, also not the owner of it.  We would like to transfer both of our phones out of our family plans and do our own share plan together. What is the process for this??

    Have each of the account owners contact Verizon to let them know that you will be doing an AOL on your lines. Then you call Verizon and explain what you want to do. Just that easy. But understand you'll have to get the new Share everything plan.

  • Transactions accross iFS and 'normal' database

    I want to do a combined transaction where file operations are combined with normal table data transactions - for instance I would like to delete a file and at the same time insert a row in my log-table (this is just an example :-)).
    The documentation is quite unhelpful here as it gives me no description on how to do this. Has anybody out there tries this ?
    Thanks in advance
    Jacob

    Hi,
    Is there a way to do something like this? I need to update a field in another schema on the same database as IFS, based on a action that happens in IFS.
    <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by Jacob Due (jcd@ramboll:
    Tkanks for the input but I really want a more general approach :-) - using a trigger will make something happen allways (I might have application functionality that should not trigger any action other than the iFS action), and I really do not like having my application code in database triggers. So what I whish for is that I can somehow have a shared transaction spanning across the iFS and the normal database with full two phase commit.
    <HR></BLOCKQUOTE>
    null

  • How do i find previous owner of iphone 5 so they can take the phone i bought off craigslist and take it off their account so i can use it.

    how do i find previous owner of iphone 5 so they can take the phone i bought off craigslist and take it off their account so i can use it.

    The same way you found them to buy it - use whatever means you
    used to accomplish the purchase on craigslist.
    Apple cannot/will not give you the information about any previous
    owner(s) of the iPhone.
    When/if you do contact them, here is what the previous owner needs
    to do:
    Backup the device to iTunes or iCloud, if desired: http://support.apple.com/kb/ht1766
    Settings > Messages > iMessage > Off
    Settings > FaceTime > Off
    Settings > iCloud > Delete Account (this only unregisters and deletes it off the iPhone)
    Settings > General > Reset > Erase All Content and Settings
    More Info... http://support.apple.com/kb/HT5661
    (thanks to paulcb for the wording)

  • Hi everybody,please someone help me,i had a 3gs last year and i bought a 4,but itunes doesn't synch videos from photos file and it crashes,every time i try to synch photos it stacks when videos try to synch and crashes,what to do please?

    hi everybody,please someone help me,i had a 3gs last year and i bought a 4,but itunes doesn't synch videos from photos file and it crashes,every time i try to synch photos it stacks when videos try to synch and crashes,what to do please?

    hi i had the same problem today when i updated my itunes to latest version. however, i have just found my songs in the 'itunes media' folder. this was accessed through 'my music'  then keep clicking through until you find itunes media and all my library songs were in there and i then just added these files to my library and all were restored however, i have lost all my playlists but at least my 700 songs are back. very dissapointed with apple that they have let this happen with their latest update, the previous version was miles better than this one . hope you find them. stevo

  • What is meaning of Labels, what is their purpose, how we create labels

    what is meaning of Labels, what is their purpose, how we create labels.

    To create labels in SAPSCRIPT, you will have to define multiple MAIN WINDOWS in the Page Window.. try the following steps..
    Main windows in page windows allow you to format text in multiple columns. Define an area in the page window, in which to position the main windows.
    1. Create a page window and assign it to a page.
    2. Choose Edit --> Main windows.
    A dialog box appears.
    3. Enter values in the fields Area width and Area height in accordance with the input guidelines for main windows.
    4. Enter values in the fields Spacing and Number in the Horizontal group if you want to use multiple columns. You can ignore the fields in the Vertical group.
    5. Determine how many columns and line areas are required for label printing. Then enter the corresponding values in the fields in the Horizontal and Vertical groups.

  • TS4009 setting up phone from iclud backup, it loaded 372 of 3,000 photos and stopped what do I need to do

    I am loading a new phone from icloud backup and it loaded 372 photos of the 3,000 on icloud and stopped
    what do I need to do

    Lightning is a problem for you because it hooks into Thunderbird at a low level and you need a version compiled for the platform Thunderbird is running on. So you can't do the preferred solution, which is to put your whole profile in a shared folder and have both instances of Thunderbird reference the same profile. (Ditto for Enigmail). Lightning may become an integral part of Thunderbird in an upcoming release, at which point this limitation due to Lightning should disappear.
    And if you can't use a shared profile, you can't set your Lightning, or your Address Book, to share a common set of files. Put another way, the linkage from Thunderbird to its address book files and calendar data is hard-coded, and not exposed where we can adjust it. :-(
    The halfway house is to place your mail stores in a shared place, and use the Local Directory setting in each account's settings to connect to it. They don't need to be in the profile; what's more important in your case is that they are in a folder accessible to both operating systems.
    Look in your profile; everything under Mail and ImapMail needs to be moved out to a shared folder. Note the entries in Thunderbird under Local Directory before you do this, and reconstruct those pathnames in Thunderbird, but adjusted to suit their new locations.
    (You can see here that you need to make many adjustments, one per account, in each instance of Thunderbird, so it's a high-maintenance solution and this is why we don't recommend it when the alternative, moving the whole profile, is possible.)
    I share address books and calendars between Thunderbirds on various computers (and my phone and tablet) by syncing to something in the cloud; Google Contacts and Google Calendar are my choices, using gContactSync and CalDav.
    Having made the break myself some years ago, I'd recommend you break away from Windows. ;-)

  • I updated my iphone 5 to 6.1.2 and my lock button will not work anymore and idea what i can do to fix this

    i updated my iphone 5 to 6.1.2 and my lock button will not work anymore and idea what i can do to fix this or what i can do to get it fixed

    I'm having similar issues with my phone.  I got my first iPhone recently, only had an iPod touch gen4 for a little over a year.  Updated to 6.0.2 when we got the phone (iPhone 5) a few days before Christmas.  When I got home on the evening of January 11, my phone would not connect the router anymore.  I was able to get it to connect after resetting the phone and the router, updating the router, and manually connecting.  That laste for a few minutes and then wouldn't work anymore.   I live in an area with very limited service, we have a network extender installed to help, and I am barely getting a 3G signal at times.
    My wife's iPad 4, my touchiPod 4, and all of our laptops are working just fine on the router.  When I dropped my kid off at school today, I noticed that I am not even seeing the school network anymore from the parking lot where before I got 3 or 4 bars and could connect to their wifi when I was there.  Today my phone goes back and forth between seeing my home network but not connecting, to not even seeing the network at all even from the same room that the router is in.
    Hope Apple fixes this problem soon..............

  • IFS and Excel Documents

    Good Morning,
    I am new to working with iFS. My questions revolves around placing excel documents into iFS. We want to place excel spreadsheets into iFS and then we want to read the data from the excel sheet into the database. Is this possible?

    could you explain exactly what you mean? do you mean parsing the contents of the excel spreadsheet (into CSV for example)?

  • Lost inside my ifs and elses

    i was in the middle of trying to amend my program and something has changed and i just cannot work out what is goin wrong. it is something to do with my ifs and elses and else ifs and my brackets cause this is all that i've changed. i've been tryin to sort it out for over an hour. any help would be massively appreciated. this is in the actionperformed method of main interface for an applet, i can post up the whole class if that would help:
              //Guess section begins: if guess button is pressed...
          if (e.getSource()==guessButton) {
                  //counter increments and buttons are disabled
                      counter = counter +1;     
                      harryRadio.setEnabled(false);
                      montanaRadio.setEnabled(false);
                      deVitoRadio.setEnabled(false);
                      corleoneRadio.setEnabled(false);
                      gunRadio.setEnabled(false);
                      knifeRadio.setEnabled(false);
                      poisonRadio.setEnabled(false);
                      ropeRadio.setEnabled(false);
                      guessButton.setEnabled(false);
                      newGameButton.setEnabled(false);
                   newGuessButton.setEnabled(false);   
                   //if gunRadio or montanaRadio is selected
           if((gunRadio.isSelected())||(montanaRadio.isSelected())){
                   //if gunRadio and montanaRadio are both selected
                if((gunRadio.isSelected())&&(montanaRadio.isSelected())){
                   /*play .wav file and set congratulations message to results text area*/
         play(getDocumentBase(), "crowdcheer.wav");
         resultText.setText("Well done, you caught the killer");
                 newGameButton.setEnabled(true);
                   else if
    /*if not means only one variable was correct play .wav file and set text to results text area and enable newGuess button*/
           play(getDocumentBase(), "impress.wav");
           resultText.setText("You got one guess right");
           newGuessButton.setEnabled(true);
    /*if no correct guesses send try again to text area, play .wav file and enable new guess button*/
               else{
         resultText.setText("Try Again");
         play(getDocumentBase(), "doh.wav");
                newGuessButton.setEnabled(true);
    /*if counter is equal to 3 and both guesses are right play .wav file and set text in results to congratulations message*/
              if (counter==3) {
            if ((gunRadio.isSelected())&&(montanaRadio.isSelected()))
            //play(getDocumentBase(), "crowdcheer.wav");
         resultText.setText("Well done, you caught the killer");
                  else if{
           /*else set text in results text, play .wav file, disable         newGuess and guess buttons and enable newGame*/ 
    resultText.setText("Thats 3 guesses,  you better watch out the
    murderer is\n"+"coming after you for squealing to the police");
               play(getDocumentBase(), "laugh04.wav");
               guessButton.setEnabled(false);
                   newGuessButton.setEnabled(false);
               newGameButton.setEnabled(true);
    /*if either newGame or newGuess buttons are pressed set text to text
    area and enable all other buttons except newGame*/
             if
    ((e.getSource()==newGameButton)||(e.getSource()==newGuessButton)) {
               resultText.setText("Catch him before he kills again");
               newGuessButton.setEnabled(false);
               harryRadio.setEnabled(true);
               montanaRadio.setEnabled(true);
               deVitoRadio.setEnabled(true);
               corleoneRadio.setEnabled(true);
               gunRadio.setEnabled(true);
               knifeRadio.setEnabled(true);
               poisonRadio.setEnabled(true);
               ropeRadio.setEnabled(true);
               guessButton.setEnabled(true);
               newGameButton.setEnabled(false);
                    /*if newGame button is pressed set text to resultText and enable guessButton, and return counter to 0*/
            if (e.getSource()==newGameButton)
               resultText.setText("Catch him before he kills again");
               guessButton.setEnabled(true);
               counter=0;
    }

    Here's your code fomatted, this should make it more obvious. Hint, if (counter == 3).
         if (e.getSource() == guessButton) {
              //counter increments and buttons are disabled
              counter = counter + 1;
              harryRadio.setEnabled(false);
              montanaRadio.setEnabled(false);
              deVitoRadio.setEnabled(false);
              corleoneRadio.setEnabled(false);
              gunRadio.setEnabled(false);
              knifeRadio.setEnabled(false);
              poisonRadio.setEnabled(false);
              ropeRadio.setEnabled(false);
              guessButton.setEnabled(false);
              newGameButton.setEnabled(false);
              newGuessButton.setEnabled(false);
              //if gunRadio or montanaRadio is selected
              if ((gunRadio.isSelected()) || (montanaRadio.isSelected())) {
                   //if gunRadio and montanaRadio are both selected
                   if ((gunRadio.isSelected()) && (montanaRadio.isSelected())) {
                        //play .wav file and set congratulations message to results text area
                        play(getDocumentBase(), "crowdcheer.wav");
                        resultText.setText("Well done, you caught the killer");
                        newGameButton.setEnabled(true);
                   else if (counter >= 3) {
                        //if not means only one variable was correct play .wav file and set text to results text area and enable newGuess button
                        play(getDocumentBase(), "impress.wav");
                        resultText.setText("You got one guess right");
                        newGuessButton.setEnabled(true);
              //if no correct guesses send try again to text area, play .wav file and enable new guess button
              else {
                   resultText.setText("Try Again");
                   play(getDocumentBase(), "doh.wav");
                   newGuessButton.setEnabled(true);
              //if counter is equal to 3 and both guesses are right play .wav file and set text in results to congratulations message
              if (counter == 3) {
                   if ((gunRadio.isSelected()) && (montanaRadio.isSelected()))
                        //play(getDocumentBase(), "crowdcheer.wav");
                        resultText.setText("Well done, you caught the killer");
              else {
                   //else set text in results text, play .wav file, disable newGuess and guess buttons and enable newGame
                   resultText.setText(
                        "Thats 3 guesses, you better watch out the murderer is\n"
                             + "coming after you for squealing to the police");
                   play(getDocumentBase(), "laugh04.wav");
                   guessButton.setEnabled(false);
                   newGuessButton.setEnabled(false);
                   newGameButton.setEnabled(true);
         //if either newGame or newGuess buttons are pressed set text to text area and enable all other buttons except newGame
         if ((e.getSource() == newGameButton) || (e.getSource() == newGuessButton)) {
              resultText.setText("Catch him before he kills again");
              newGuessButton.setEnabled(false);
              harryRadio.setEnabled(true);
              montanaRadio.setEnabled(true);
              deVitoRadio.setEnabled(true);
              corleoneRadio.setEnabled(true);
              gunRadio.setEnabled(true);
              knifeRadio.setEnabled(true);
              poisonRadio.setEnabled(true);
              ropeRadio.setEnabled(true);
              guessButton.setEnabled(true);
              newGameButton.setEnabled(false);
         //if newGame button is pressed set text to resultText and enable guessButton, and return counter to 0
         if (e.getSource() == newGameButton) {
              resultText.setText("Catch him before he kills again");
              guessButton.setEnabled(true);
              counter = 0;
         }

  • I recently converted to PSE13 from 11 and noticed what appear to be duplicate files.

    I recently converted to PSE13 from 11 and noticed what appear to be duplicate files named: BreezeData, CAXMPFiles, Style, syncdb, and WaldoData.  Can these be deleted?  Do they belong to the previous version 11?  If they do, then I may not want to delete them if I ever have to run PSE11 again.

    What you are seeing are default subfolders within your catalog folders. Don't mess with the contents of the catalog folders, they don't contain any of your picture files, only the databases and their associated assets. You'll find such subfolders in any of your catalog folders whatever their version (11 or 13). They are not duplicates.
    You should keep the PSE11 catalogs if you want to use them with PSE11 (you can keep both versions on your computer). Of course, you can delete the catalogs you no longer want to use. Simply use the catalog manager (menu File/catalogs...) and use the delete button; the catalog to delete should not be the active catalog, select another one first. Deleting catalogs this way will delete the subfolders you are seeing, like BreezeData etc.

Maybe you are looking for

  • MOBO ms-7592 Problem with dualcore and cor2duo

    I have this board ms-7592 and it used to work for a year with a dualcore cpu 2.66 2M , and it stopped suddenly but when i tried a celeron cpu it worked  , and also didn't work with a core2duo 2.1 3M , May i know how to solve this problem ?? Thx in ad

  • Locked Iframe

    Hi I made a html file with iframe in DreamWeaver. when I open it in Edge animation, iframe layer is locked and can´t be moved to the top of the other content in timeline. Is there a way to unlock the iframe layer afterward?

  • Online guru help

    Hi, I've just finished an online chat with Preeti, but closed the window before rating the service.  It took over 30mins to resolve my issue but Pretti was really helpful, she did everything she could to help me and I just wanted to say thanks!

  • Acer 5920G media touch buttons

    Hello there, I am using Acer Aspire 5920G notebook. There are touch sensitive media (play, pause, etc) buttons on my keyboard [0]. However, on linux, they behave as if they are mouse buttons. I am using a usb mouse with 9 buttons. And I want to use t

  • Lite-on cd-rw

    Hi I just got a very cheap lite-on cd-rw (SOHR-5238S) at a local thrift store. I installed it and it works fine as a cd-rom. I used it to install jaguar on a computer, and used patchburn and it is now fully supported in jaguar. How can I get this to