Function for looking up multiple variables

I've been through the F&F user guide and the numbers help guide. I'm either not seeing it or something is just going over my head. I know what I'm doing when it comes to my mac and normally I'd say I'm very capable with the standard functions/operations. I've been teaching myself the more "advanced" functions and so far it's been going well. But now I've hit a road block....
I'm trying to create a form for work, to calculate pricing for jobs.
The first table here is my reference table. the second is part of the billing sheet, which you'd be inputting information for specific jobs etc. in order to determine the price
They are on different sheets but within the same document. But I understand using formulas on different sheets, so I think for simplicity sake we can talk about them as if they are on the same sheet. (unless someone feels that's a no no). In case this is relevant, I used custom cell formats for 's/wrap' in table 2 (( ## 's )) and the prices listed in table 1 (( $##.##/m )).
4-page
6-page
8-page
Broad
Gate
10-Page
25's
$20.00/m
$22.50/m
$23.50/m
$26.50/m
$35.00/m
$25.50/m
50's
$15.00/m
$17.50/m
$18.50/m
$21.00/m
$30.00/m
$20.50/m
100's
$12.50/m
$15.00/m
$16.00/m
$18.50/m
$28.00/m
$18.00/m
None
$10.00/m
$12.50/m
$13.50/m
$17.00/m
$25.00/m
$16.50/m
Yes/No
TRUE
Perf / Score
FALSE
Fold Type
4-page
S/wrap
25's
$/m
Sub-Total
HERE'S MY PROBLEM:
I've been trying to figure out what function to use / how to express it so that the $/m box in the second chart will come up with the correct price as listed in the top table. I can't find anything about multi-dimensional searching except that it tells me "MATCH" can't be used multi-dimensional. I've used LOOKUP for some other basic functions but I don't really understand HLOOKUP nor VLOOKUP
In the explanation for LOOKUP it mentions something about "search-where" being two-dimensional, when I try to make it two dimensional it tells me vector arguments can't be, however the formula and function guide book doesn't mention the word vector once (at least that's what the search told me).
But I THINK (think being the key word here) what I need is for the "search-for" to be two-dimensional. I'd like to be able to input a fold type and the s/wrap quantity and BAM get my price listed below.
Is this possible?
Can someone help me out here? I've been at this for hours and I'm pulling my hair out. Am I not conceptualizing something correctly or arranging my data poorly?
Any and all help would be immensely appreciated.
I hope that wasn't too long winded.
To further complicate my life, there are price discounts for larger quantity jobs. I was trying to get around this by creating price tables for the different quantity ranges (i.e. 0-7500; 75001-15,000 etc.). That is what I have the YES/NO check box for at the top of table 2. I have four tables just like table 2 on the same sheet (each table is named differently so as to be clear). But if there is a way to simplify this, that would be awesome too. I won't get my hopes up, I think I'm asking for a Hail Mary as it is. I'll provide more information if someone thinks what I am talking about is a possibility.

I wanted to thank you two again, you were both very helpful with your responses. I wanted to post this up again, to show you how you've helped, and maybe help someone else that needs help like this later.
Fold
Yes/No
TRUE
Folding Price Level
Level 1
Perf Score
FALSE
Fold Type
Single25
Price per M
20.00
Sub-Total
Note:
"yes/no" is a check box (well the check box is to the right of it, idicated by TRUE) which I will use later to instruct Numbers when to add the amount from this table to the total price of the job
(you can ignore the "perf score" line. it currectly has no influence/purpose)
Fold type: I used CONCATENATE to join the terms from the "Job Information" table shown below, which follows protocol and registers the correct headings in "Folding Price"
RE: GOM -- the INDIRECT function works great. I've realized that it does search the entire document for headings that match the parameters. I copied these tables onto another sheet so I could mess around with them without destroying what I've done, and I couldn't get the INDIRECT function to work. But as soon as I deleted the sheet with the copied tables, it corrected itself.
I can't thank you enough. Your suggestion just took days off the workload for this project. I'm working with a lot of different elements here and now you've given me a way to simplify things for myself and the user. Thanks again!!
Folding Price
Single25
Single50
Single100
SingleNone
6pg25
6pg50
6pg100
6pgNone
8pg25
8pg50
8pg100
8pgNone
10pg25
10pg50
10pg100
10pgNone
Level 1
20.00
15.00
12.50
10.00
22.50
17.50
15.00
12.50
Level 2
17.50
12.50
10.00
7.50
20.00
15.00
12.50
10.00
Level 3
Level 4
Note: I know this table looks like one giant string of information at the header row. But it doesn't look that way on my sheet. I just don't have time to be neurotic about this post! Haha
Note: different pricing levels are necessary for the project because we offer discounts on larger quantity jobs. In the table above "Single25" refers to creating a single fold and wrapping the job in stacks of 25. Both the fold type and the wrapping effect the price of the job.
Folding Price Levels
Quantity
Level 1
0-7499
Level 2
7500-14999
Level 3
15000-29999
Level 4
30000+
RE Jerrold:
This is what I took from your suggestion. I made a separate table to classify the different price levels by the quantity of the job. Which will now correspond to the Header Column of "folding price"
-I had previously planned on having 4 tables similar to the "Fold" table listed about, but each was to be titled by the different price levels and the user would have had to choose which table to use (I am positive that they would have done it wrong 99% of the time) and each of these tables was going to need a corresponding "folding Price" table. So we're taling about eliminating 6 tables right there, and this concept will be transferable to the other parts of the jobs, removing comprable amounts of tables. You've saved hours of "programming" and data entry.
-removing the custom formats was also clutch. It really simplified things for me.
Thanks again!!!
Job Information
Job #
Description
Form/Item #
Quantity
5000
Sheet Size
11x25.5”
Stock
Standard
Press
Fold Type
Single
S/wrap
25
Pieces Chip
YOU GUYS ARE ROCK STARS!!!
As far as the user experience of the form. The user will simply fill in the details in the "job information" table, and the form will (should) auto-populate everything I need. After that they just need to check the box in the "Fold" table and I'm golden.
JE: What you said about header names being a nuisance is definitely true, (at least I'm finding this out now). I plan to use "pop-up" menus to prevent users from entering improper values.
I have to make this form as simple as possible for the user. It's turning out to be not so simple for myself, but "nothing is ever easy"

Similar Messages

  • Looking for Calendar functionality for a Date Variable

    Hi Experts,
    Currently iam creating a WEBI Report where the source system is SAP BI System. I have a BEx Query with some characteristics at the row level and keyfigures at the column level. I have a Date Interval Variable (Based on 0DATE and optional), where the user will input the From and To date to execute the query. I have created the universe on top of this query, but date inteval variable appears as a character in the form of LOV. When i use this universe and buid the report in WEBI, the User Prompt for date is appearing as List of date values for this date interval variable, where as my requirement is to have date calendar for this date interval variable.
    I did some r&d on top of this, when the date varibale as single value and optional, iam able to get the date calendar, but when i use the Date interval Varibale it takes as a character. I searched the forum, but i didn't find any solution.
    Is it possible to have a date calendar for a date interval variable in BEx?? or its is only for single value date varibale.
    Kindly suggest
    Regards
    Santosh

    Hi,
    you stated it correctly that the calendar shows up in case of a keydate and in case of a single value but not in case of a range.
    in addition the underlying characteristic needs to be type DATS
    Ingo
    Edited by: Ingo Hilgefort on Dec 8, 2009 1:35 PM

  • Return multiple variables from function via DBLINK

    hey,
    I've created a function for use by another database through a dblink.
    I created the function to return a ref cursor but
    have since found out that this is not allowed so i'm looking for
    alternatives?
    Assuming I want to keep the function on our database (for maintainability reasons) what other options do i have?
    Two suggestions i've got are 1) to return a ',' delimited string
    or to have a number of OUT parameters. Is there any reason
    why either of these would not work or would be preferable to the other?
    Thanks for reading, any help much appreciated.
    BTW i'm new to PL/SQL so feel free to dumb it down.
    cheers.
    function....
    CREATE OR REPLACE FUNCTION "GET_SCHEME_DETAILS"
    IN_BRANCH IN VARCHAR2,
    IN_AGENCY IN VARCHAR2,
    IN_PRODUCT_SUFFIX IN VARCHAR2,
    IN_TERM IN INTEGER,
    IN_LOAN_START_DATE IN DATE
    RETURN sys_refcursor AS TYPE RESULTSET IS REF CURSOR;
    and its being called like this....
    select GET_SCHEME_DETAILS@PPPRO ( '864' , '500086' , 'M7' , 10 , TO_DATE ( '01/02/2010' , 'DD/MM/YYYY' ) ) FROM DUAL ;

    I would be amazed if that even compiled.
    The function should look something like:
    CREATE FUNCTION GET_SCHEME_DETAILS (in_branch          IN VARCHAR2,
                                        in_agency          IN VARCHAR2,
                                        in_product_suffix  IN VARCHAR2,
                                        in_term            IN INTEGER,
                                        in_loan_start_date IN DATE) RETURN sys_refcursor AS
       l_ref_cur SYS_REFCURSOR;
       < any other variables that need declaring >
    BEGIN
       OPEN l_ref_cur FOR
          <your select tstatment here>
       RETURN l_ref_cur;
    END;and you would call it from the other database like:
    DECLARE
       l_other_ref_cur SYS_REFCURSOR;
       < any other variables that need declaring  like one for each column in the ref cursor>
    BEGIN
       l_other_ref_cur := get_scheme_details@PPPRO ('864', '500086', 'M7', 10,
                                                    TO_DATE ( '01/02/2010' , 'DD/MM/YYYY' ));
       LOOP
          FETCH l_other_ref_cursor INTO <variable list>
          EXIT WHEN l_other_ref_cursor%NOT_FOUND;
          <do something with the values>
       END LOOP;
       CLOSE l_other_ref_cur;
    END;Having said that, if you are only expecting to get one row back, then you could just as easily use a procedure with out parameters.
    If you expect multiple rows back, you could also just do a query on the other database drectly using the db link assuming that the user that the db link uses to connect has appropriate privileges.
    HTH
    John

  • Actionscript 3 - Multiple variables for event listener.

    Ok, I have a question (of course that is the reason why I am here).  I have been focusing on PHP a lot lately and just had a client that requires an MP3 player playing multiple songs so I had to whip out my rusty actionscript skills.  I have the player completed and it is working as desired.  The down side is it has multiple songs.  I am using separate functions for each song and separate event listeners.  My main question is there a way to combine these funtions into one and just use the event listener to pass another variable to the functions?  Below is a sample of one of the code for Song1.  I would like to make it so anywhere there is Song1 in the code, I can make it a variable so I can put in for example (Song2, Song3, Song4, etc.)  This way, I can have one or two functions handle all the songs instead of having to copy, paste and then find and replace.
    Thanks for the help!
    // Song 1
    var Song1:Sound = new Sound();
    pbSong1.source = Song1;
    //pbSong1.visible = false;
    var Song1Loaded:Boolean = false;
    pbSong1.addEventListener(Event.COMPLETE, Song1LoadComplete);
    btnSong1Play.addEventListener(MouseEvent.CLICK, Song1Play);
    btnSong1Stop.addEventListener(MouseEvent.CLICK, Stop);
    function Song1Play(event:MouseEvent) {
         if (Song1Loaded == true) {
              sndchnlMain.stop();
              sndchnlMain = Song1.play();
         } else {
              pbSong1.visible = true;
              Song1.load(new URLRequest("media/music/Song1.mp3"));
    function Song1LoadComplete(event:Event) {
         trace("Size of file: " + Song1.bytesTotal);
         Song1.close();
         Song1Loaded = true;
         if(sndchnlMain) {
              sndchnlMain.stop();
         sndchnlMain = Song1.play();
         pbSong1.visible = false;

    But if I reset the bolean to false, if the visitor goes to replay that song, it will try to load the song again.  I did find away around having to the use the boolean value though and accomplish the same thing (I am loving this).  I am using:
    this["Song"+SongNum].bytesTotal
    If there are bytes, then the song is loaded OR loading.  In order to check if the song is completely loaded before it plays, I am using this:
    this["Song"+SongNum].bytesTotal == this["Song"+SongNum].bytesLoaded
    This elimates the need for the Boolean I was using.  Also instead of for each song defining:
    pbSong1.source = Song1;
    I am using the main function to do it for me:
    this["pbSong"+SongNum].source = this["Song"+SongNum];
    The reason why I asked about the Sound variable, I was currious if I could do the same with it as I did with the Progress Bar Source as shown above?  Instead of defining this first:
    var Song1:Sound = new Sound();
    Can I do this in the function:
    var this["Song"+SongNum]:Sound = new Sound();
    I tried it once but I got an error.
    Here is the new FULL updated code:
    import fl.controls.ProgressBar;
    import flash.events.ProgressEvent;
    import flash.events.IOErrorEvent;
    import flash.net.URLRequest;
    import flash.media.SoundChannel;
    import flash.media.Sound;
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.display.MovieClip;
    var sndchnlMain:SoundChannel;
    ClearNowPlaying();
      Song 1 Definitions
    var Song1:Sound = new Sound();
    pbSong1.addEventListener(Event.COMPLETE, LoadComplete);
    btnSong1Play.addEventListener(MouseEvent.CLICK, PlaySong);
    btnSong1Stop.addEventListener(MouseEvent.CLICK, Stop);
      Song 2 Definitions
    var Song2:Sound = new Sound();
    pbSong2.addEventListener(Event.COMPLETE, LoadComplete);
    btnSong2Play.addEventListener(MouseEvent.CLICK, PlaySong);
    btnSong2Stop.addEventListener(MouseEvent.CLICK, Stop);
      Song 3 Definitions
    var Song3:Sound = new Sound();
    pbSong3.addEventListener(Event.COMPLETE, LoadComplete);
    btnSong3Play.addEventListener(MouseEvent.CLICK, PlaySong);
    btnSong3Stop.addEventListener(MouseEvent.CLICK, Stop);
      Song 4 Definitions
    var Song4:Sound = new Sound();
    pbSong4.addEventListener(Event.COMPLETE, LoadComplete);
    btnSong4Play.addEventListener(MouseEvent.CLICK, PlaySong);
    btnSong4Stop.addEventListener(MouseEvent.CLICK, Stop);
      Song 5 Definitions
    var Song5:Sound = new Sound();
    pbSong5.addEventListener(Event.COMPLETE, LoadComplete);
    btnSong5Play.addEventListener(MouseEvent.CLICK, PlaySong);
    btnSong5Stop.addEventListener(MouseEvent.CLICK, Stop);
      Universal Functions
    function Stop(event:MouseEvent) {
         sndchnlMain.stop();
         ClearNowPlaying();
    function PlaySong(event:MouseEvent) {
         var SongNum:int = Number(event.currentTarget.name.split("btnSong").join("").split("Play").join(""));
         if (this["Song"+SongNum].bytesTotal) {
              if (this["Song"+SongNum].bytesTotal == this["Song"+SongNum].bytesLoaded) {
                   sndchnlMain.stop();
                   ClearNowPlaying();
                   this["NowPlayingSong"+SongNum].visible = true;
                   sndchnlMain = this["Song"+SongNum].play();
         } else {
              this["pbSong"+SongNum].source = this["Song"+SongNum];
              this["pbSong"+SongNum].visible = true;
              this["Song"+SongNum].load(new URLRequest("media/music/Song"+SongNum+".mp3"));
    function LoadComplete(event:Event) {
         var SongNum:int = Number(event.currentTarget.name.split("pbSong").join(""));
         trace("Size of file: " + this["Song"+SongNum].bytesTotal);
         this["Song"+SongNum].close();
         this["Song"+SongNum+"Loaded"] = true;
         if(sndchnlMain) {
              sndchnlMain.stop();
         ClearNowPlaying();
         this["NowPlayingSong"+SongNum].visible = true;
         sndchnlMain = this["Song"+SongNum].play();
         this["pbSong"+SongNum].visible = false;
    function ClearNowPlaying() {
         NowPlayingSong1.visible = false;
         NowPlayingSong2.visible = false;
         NowPlayingSong3.visible = false;
         NowPlayingSong4.visible = false;
         NowPlayingSong5.visible = false;

  • Is there a "where used" functionality for SEM variables?

    Hello everybody,
    I am about to do some major changes to a BPS application that i have built and have come to realize that it will be quite some work to go through the whole thing for the purpose of replacing some variables.
    Hence, is there a "where used" functionality for SEM variables somewhere out there?
    Greetings,
    Martin

    Hi Martin,
              Have not seen that functionality before,however I have used the same by creating my own reports.All the variables can be found in the UPC_VAR table.If you are looking for the use of the variables in fox code,use a wild card search with UPC_FORML table in the formula column for %'VARV'%.IF Searching for uses in the conditions field for planning functions , use the table UPC_OPTIOS, column variable.In my case i needed to search the foxcode for variable uses.
    Hope this helps to some extent.
    regs.

  • Multiple Partner Functions for a Sales document Item

    Hi,
    Can you please advise on modeling scenario for showing multiple partner functions for a given sales document in BI Report ..
    Because Key figure values should not be distributed for multiple records just becos of multiple partner functions but users want to see them in the reports along with sales doc and key figure
    I am explaining bit more clearly...
    I can achieve above requirement by having below model ..
    SDOC     ITEM  PF1  PF2  PF3  AMOUNT
    1000       10      AB    CD   EF    50000
    PF : Partner Function
    but as I feel it is a complicated task  to add more and more columns fro partner functions as and when new partner functions have been added or requested to show by users at sales doc level...
    So Can you please advise a better solution to meet the same requirement.
    Thanks & Regards,
    BRK
    Please advise me on this scenario
    Thanks & Regards,
    BRK
    Edited by: BRK on Jul 22, 2008 9:19 AM
    Edited by: BRK on Jul 22, 2008 9:29 AM

    SalesDoc______Item_______PartnerFunction________Amount
    80000_________10_____________A1_______________$1000
    80000_________10_____________A2_______________$1000
    80000_________10_____________A3_______________$1000
    This will be the normal display in the cube if there is only one Partner Function.
    But what we need is
    SalesDoc______Item_______PartnerFunction________Amount
    80000_________10_____________A1_______________$1000
    80000_________10_____________A2_________________' '
    80000_________10_____________A3_________________' '
    The Amount (KF) should be populated only for the first record for a SalesDoc / Item combo.
    You load data from source to the ODS, say delta.
    Suppose that the below record is already available in the ODS.
    SalesDoc______Item_______PartnerFunction________Amount
    80000_________10_____________A1_______________$1000
    And you get the following data as DELTA in the Data_Package from the source.
    SalesDoc______Item_______PartnerFunction________Amount
    80000_________10_____________A2_______________$1000
    80000_________10_____________A3_______________$1000
    If you populate the Amount again for these 2 records, then the total would sum to $3000, which is wrong.
    So what we do is,
    Write a Select stmt for ALL ENTRIES in Data_Package and fetch the records from the target ODS. Have it in an Internal table, say t_ODS1
    Take the SalesDoc / Item from the Data_Package and chk if it is present in the internal table t_ODS1.
    If it is present, then populate the Amount as ' ' (Blank)
    Else populate the Amount as $1000.
    Say, you are getting 3 new records, which is not present in the ODS1.
    In that case, your internal table t_ODS1 will be blank.
    Now again, we need to populate the Amount only for the first record among the 3 records.
    So, here comes the "Flag".
    Set the Flag as X, when we populate the Amount.
    Everytime chk the Flag <> X.
    Only if it is <> X, populate the Amount.
    Else Leave it Balnk.
    Hope I have explained in detail
    Regards,
    Balaji V

  • Classic Scenario PO has multiple OA Partner Functions for Vendor

    Hi,
    I have a 'design' issue. My R/3 Vendor has many OA Partner Functions for the different Branches they have and the PO needs to be Faxed to the OA Partner Function number, but the PO needs to be created against the VN Partner Function.
    So, how do i do this in SRM? I was going to have a seperate Catalog link for each OA Partner function, but this is not creating the R/3 PO with VN Partner Function of the 'core' Vendor number.
    Does anyone have any advice for this?
    regards Adam
    Using SRM 5.0 (Server 5.5) SP 8 and R/3 4.6C in Classic Scenario - my catalogs are external vendor.

    Hi
    Please see these links, which might help ->
    Partner function missing in backend PO
    Re: Error in transmission while PO cration
    "Multiple" partner data at PO header
    Partner functions in plan driven MM-SUS
    Re: Partner function not found
    Number range for business partner
    Re: Problem with BP. Assignment: Business partner person to user not unique
    Error in creation of Employee for Business Partner
    Re: enter exactly one partner of type vendor
    Re: Business partner as Vendor and Invoicing Party
    Partner functions in EBP for extended Classic Scenario
    Regards
    - Atul

  • Multiple calls of same function module do NOT initialize variables ?

    Hi all,
    ..so its my fist post here, this is a bit strange problem for me and maybe someone knows whats happening.
    So I have in SAP Solution Manager a function module 'Z', which calls a standard SAP class CL_SPROJECT_SOLAR_BASE_REPORT, which in turn calls the standard function module 'SPROJECT_GET_ADMIMP_SCREEN_BP'.
    During development, things worked fine, but now I run my Z-Program for more than one instance and even I do all FREE for the Class, apperently the function module SPROJECT_GET_ADMIMP_SCREEN_BP, which is called by the class CL_SPROJECT_SOLAR_BASE_REPORT, does not get it's variables from the global data of the function pool re-initialized, when it is called for the second, 3rd, ... time.
    This is a bit strane behavior for me, I would have expected that variables in a function module (or even in the global data of that function pool) get re-initialized each time that function module is called ?
    Actually, this is the only function in that function pool.
    Well, if not, does anyone has an idea how I can get the variables of this module pool re-initialized between the calls ? More concrete, the global data of function pool SAPLSPROJECT_SOLAR_ADMEVAL_BP define:
    DATA: g_v_with_var TYPE char1.
    In the function module line 36 (no reference to g_v_with_var, no module call, no changes to g_v_with_var before the IF-statement at all) it is querying:
      IF g_v_with_var IS INITIAL.
    So this is my problem, the second time I am calling the class  (which is 'free'ed and re-created between the calls) which calls this function module the 'g_v_with_var' is not initial and there seems to be no way to have it set to initial again ?
    So even thought this is in SolMan, I think the question & problem is a ABAP technical one ?
    Any thoughts, help or support would be very much appreciated,
    thank so much,
    Frank

    Hi Mae,
    ..thanks a lot for your fast reply, unfortunately there is only one function and no functions or forms at all for initializing. The variable I am fighting with is g_v_with_var and that is referenced only 4 times in the whole function pool:
    Global Data:   101 DATA: g_v_with_var TYPE char1.
    Function Module SPROJECT_GET_ADMIMP_SCREEN_BP (which is the only function module):
        36   IF g_v_with_var IS INITIAL.
       127       g_v_with_var = airep_true.
       193         CLEAR g_v_with_var.
    If in line 36 g_v_with_var is 'X', which it is always after the first call, the function will exit with an exception, so line 193 to clear it will actually never be executed...and it is not cleared  the next time the function module is called, so you never get back to have the function run...
    All the best,
    Frank

  • Creating multiple partner function for a sale order @ header level

    Hi All,
    I have a requirement where in i have to create more than one partner funtion for a sale order @ header level. But the system did not allow this sort of scenario and i got the error,
    Partner function ZZ can only occur  1 times in procedure TA (Sales Document Header)
    the function module that was giving this error was SD_PCHECK_PARVW_COUNT_OK
    here the function module checks if a partner function already exists if so it throws that error. This also updates the VBPA table where partner function is one of the key fields.
    Our issue is that we have to allow the system to enable posting 2 or more partner function for the same sale order. It was also verified that the unique key was unchecked during configuration.
    is there any other way of over coming this issue as we are updating the standard table. Is it possible??
    Thanks a lot in advance for your reply....

    I believe this is a configuration setting, based upon the details of your post.  Typically, a sales order can have multiple partner functions, but usually the partner type is not duplicated at a single level (header or one item).  For example, it would not be logical to have multiple ship-to partners at the header level...these would be unique at the item level, if required.
    Speak to your SD functional specialist about the configuration controls for partners, if you must have more than one partner with parvw = ZZ, for the entire order (header level).
    Edited by: DaveL on Aug 23, 2011 3:00 PM

  • API/package/procedure/function for updating physical attributes in Org/Mast

    I need some kind of procedure or function for updating the weight, volume, and dimensions in the organization and master items forms. We have almost 350,000 items and I want to update them in batch. Is there an API of some kind for this? I would do a simple update but I want to make sure there's no additional logic necessary (other tables that are updated during the process of updating those fields, etc).
    Thanks!

    here is for API's you need to check...
    You can use Decimal & UOM Quantity API
    These APIs are used to handle item decimal quantities:
    Convert from one UOM to another
    Validate quantities at input time
    Validate quantities at display/output time
    Quantity Comparison
    Get UOM information
    For your convenience, I am giving you the API as below:
    /*===========================================================================+
    | Copyright (c) 1999 Oracle Corporation |
    | Redwood Shores, California, USA |
    | All rights reserved. |
    +===========================================================================*/
    /*-----------------------------------------------------------------------+
    |This package contains procedures relevent to item decimal quantity |
    |processing. This package contains routines to: |
    |(1)validate item quantities based on UOM and decimal precision rules |
    |(2)validate whether the UOM controls and decimal precision rules |
    | themselves are correct based on functionality planned. For reviewing|
    | UOM and decimal quantity functional design details, please visit the|
    | following URL: |
    | "http//apps-us.oracle.com/inv/development/designs_120/ |
    | decimal_precision/decimal_precision.html" |
    |But here are a few basics to give background context: |
    | |
    | "Item Quantity" -- The item's quantity is described by the item |
    | identifier, the unit of measure (e.g. grams, kilos, etc), and a |
    | number value to indicate the amount in that unit of measure. |
    | |
    | "Unit of Measure" -- Units of measure belong to unit of measure |
    | classes(e.g. weight, volume, length, etc). Each unit of measure class|
    | has actual units of measure that belong to that class (e.g. the |
    | weight class may have units of measures like, "grams", "kilos", etc).|
    | |
    | "UOM Conversion" --Users can set up conversion rates between UOMs in |
    | them same UOM class, by defining conversions to the base UOM. These |
    | are standard conversions. Item-level intra-class conversions may also|
    | be defined. When doing intra-class conversions, item-level |
    | intra-class conversions are used first if defined, and then standard |
    | conversions are used. |
    | Users can define inter-class conversions. Inter-class Conversions may|
    | also be defined at the lot/sublot levels. For inter-class conversions|
    | sublot, lot, and then item inter-class conversions will be used in |
    | in order. If lot-lvel conversion is not defined, then item-level |
    | conversion is used. A strict hierarchy is imposed. |
    | |
    | "TU" -- Trasactable Unit.A UOM may have a TU. This implies |
    | that when transacting in this UOM, any item's quantities will be |
    | forced to be integer multiples of this TU quantity. The TU may also |
    | be declared at the item level. The TU quantity at the item level may |
    | be different from the UOM level TU, and if defined, item level TU |
    | takes precedance. |
    | |
    | "Decimal Precision"--Users have a choice of setting decimal precision|
    | at the base UOM for each UOM class. All other UOMs in that class get |
    | get their decimal precisions derived from the base UOM decimal |
    | precision, the converison rate, and TUs, if they are |
    | being used. |
    | |
    | |
    | "Conversion Rate Tolerance" -- This is a tolerance that may be set |
    | when conversion rate cannot be not strictly fixed. Example: |
    | 1 Chicken = 2 pounds (plus or minus 0.7 pounds). This 0.7 pounds is |
    | the conversion rate tolerance. Conversion rate tolerance is only |
    | definable at inter-class UOM conversions, at item or lot/sublot level|
    | |
    | History |
    | 04/08/99 Mansoor Jafri Created Package Spec |
    | 04/26/99 Mansoor Jafri Updated with TU at 3 levels as |
    | opposed to MTU at 2 and atomic at|
    | UOM class level. |
    | 04/29/99 Mansoor Jafri Updated document with lot/sublot |
    | conversions. Also, removed |
    | "atomic" as a separate control, |
    | since this can |
    | implemented as a TU at base UOM |
    | level with an integer quantity. |
    | 05/03/99 Mansoor Jafri Updated the package with sublot |
    | level control. Also, changed name|
    | of DTU to TU, so that it fits |
    | better in the "process" market. |
    | Also, conformed to BOI API stds. |
    +-----------------------------------------------------------------------*/
    SET VERIFY OFF
    WHENEVER SQLERROR EXIT FAILURE ROLLBACK;
    CREATE OR REPLACE PACKAGE inv_decimals_pub AS
    /* $Header: INVDECPS.pls 118.3 99/05/03 18:12:27 mjafri noship $ */
    /*--------------------------------------------------------------------------+
    |Procedure validate_compare_quantities(..)
    |Returns the quantity converted from the first UOM in the second UOM.
    |If quantities in 2 UOMs are already available, then this procedure will
    |compare and validate these quantities based on conversion rates
    |and UOM and decimal qty controls. This procedure may be used to validate
    |scenarios where quatities are entered in dual UOMs. We want to make sure
    |quantities are valid based on conversion, TUs, and conversion
    |rate tolerances.
    |
    |Procedure validate_and_compare(
    |p_api_version_number IN NUMBER, -- version # of API
    |p_init_msg_list IN VARCHAR2, -- whether to initialize list
    |p_inventory_item_id IN NUMBER, -- inventory_item_id
    |p_organization_id IN NUMBER, -- organization_id
    |p_lot_control_code IN NUMBER, -- item's lot control code
    |p_lot_number IN VARCHAR2, -- lot number
    |p_sub_lot_control_code IN NUMBER, --sub lot control code
    |p_sublot_number IN VARCHAR2, -- sublot number
    |p_from_quantity IN NUMBER, -- qty in first UOM
    |p_from_uom_code IN VARCHAR2, -- UOM of fisrt qty
    |p_to_uom_code IN VARCHAR2, -- UOM of second qty
    |p_to_quantity_to_check IN NUMBER, -- qty in second UOM
    |x_resultant_to_quantity OUT NUMBER, -- calculated qty in second UOM
    |x_comparison OUT NUMBER,--Possible values are 1,0,-1,-99
    |x_msg_count OUT NUMBER, -- number of messages
    |x_msg_data OUT VARCHAR2, -- populated,if msg count = 1
    |x_return_status OUT VARCHAR2) -- return status
    |
    |Note: The comparisons are done in base UOM
    | of the UOM class to which the first UOM belongs. x_comparison returns:
    |-1 if from_quantity is less than to_quantity (A < B)
    | 0 if from_quantity is equal to to_quantity (A = B)
    | 1 if from_quantity is greater than to_quantity (A > B)
    | -99 if the validations for the first/second quantity failed
    | If the UOMs belong to different classes, then users can specify whether
    | they want to use the effective interclass UOM conversion tolerance, say, T.
    | CASE: p_use_interclass_tolerance = 1
    | ------
    | Q1 > Q2 if (Q1 - Q2) >= T
    | Q1 = Q2 if ABS(Q1 - Q2) < T
    | Q1 < Q2 if (Q1 - Q2 ) <= -T
    |
    |The output variable x_resultant_to_quantity will contain the converted
    |quantity
    |in the second UOM, using effective conversion rates.
    |Usage: In a dual UOM scenario, this api will confirm whether quantities in
    |the two UOMs are equal or not, based on x_comparison output variable.
    +--------------------------------------------------------------------------*/
    Procedure validate_compare_quantities(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2,
    p_inventory_item_id IN NUMBER,
    p_organization_id IN NUMBER,
    p_lot_control_code IN NUMBER,
    p_lot_number IN VARCHAR2,
    p_sub_lot_control_code IN NUMBER,
    p_sublot_number IN VARCHAR2,
    p_from_quantity IN NUMBER,
    p_from_uom_code IN VARCHAR2,
    p_to_uom_code IN VARCHAR2,
    p_to_quantity_to_check IN NUMBER,
    x_resultant_to_quantity OUT NUMBER,
    x_valid_conversion OUT NUMBER,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCHAR2);
    /*--------------------------------------------------------------------------+
    |Function convert_UOM(..) return NUMBER ;
    |Returns the quantity converted from the first unit into the second unit.
    |If conversion is not possible, return status is failure.
    |Function convert(
    |p_api_version_number IN NUMBER,
    |p_init_msg_list IN VARCHAR2, -- whether to initialize list
    |p_inventory_item_id IN NUMBER, -- inventory_item_id
    |p_organization_id IN NUMBER, -- organization_id
    |p_lot_control_code IN NUMBER, -- item's lot control code
    |p_lot_number IN VARCHAR2, -- lot number
    |p_sub_lot_control_code IN NUMBER,
    |p_sublot_number IN VARCHAR2,
    |p_from_quantity IN NUMBER, -- qty in first UOM
    |p_from_uom_code IN VARCHAR2, -- UOM of fisrt qty
    |p_to_uom_code IN VARCHAR2, -- UOM of second qty
    |x_msg_count OUT NUMBER,
    |x_msg_data OUT VARCHAR2,
    |x_return_status OUT VARCHAR2)
    | return NUMBER ;
    |If there is an error, then -99 is returned.
    |1) From_quantity must be an absolute value.
    |2) From_quantity will be truncated to decimal precision in the from UOM, then
    | converted to base UOM in the class,
    |3) Then converted to base UOM of the
    | to_UOM class,
    |4) Then converted to the quantity in to_UOM,
    |5) Then truncated to decimal precision of the to_UOM.
    +--------------------------------------------------------------------------*/
    Function convert_UOM(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
    p_inventory_item_id IN NUMBER,
    p_organization_id IN NUMBER,
    p_lot_control_code IN NUMBER,
    p_lot_number IN VARCHAR2,
    p_sub_lot_control_code IN NUMBER,
    p_sublot_number IN VARCHAR2,
    p_from_quantity IN NUMBER,
    p_from_uom_code IN VARCHAR2,
    p_to_uom_code IN VARCHAR2,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCHAR2) return NUMBER ;
    /*--------------------------------------------------------------------------+
    | get_uom_properties(..)
    | This procedure is used to interrogate the UOM.
    | It returns:
    | (1) decimal precision at the UOM level
    | (2) TU, if defined, at the UOM level
    | (3) Atomicity, if defined for the class that this UOM belongs to
    | If some of the controls are not defined, null values are returned.
    | if the UOM is not found, the return status indicates this.
    | Procedure get_uom_properties(
    | p_api_version_number IN NUMBER,
    | p_init_msg_list IN VARCHAR2,
    | p_uom_code IN VARCHAR2,
    | x_decimal_precision OUT NUMBER,
    | x_uom_TU OUT NUMBER,
    | x_uom_class OUT VARCHAR2,
    | x_msg_count OUT NUMBER,
    | x_msg_data OUT VARCHAR2,
    | x_return_status OUT VARCAHR2);
    +--------------------------------------------------------------------------*/
    Procedure get_uom_properties(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
    p_uom_code IN VARCHAR2,
    x_decimal_precision OUT NUMBER,
    x_uom_TU OUT NUMBER,
    x_uom_class OUT VARCHAR2,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCAHR2);
    /*-------------------------------------------------------------------------+
    | get_item_uom_properties(..)
    | This procedure returns a specific item's primary UOM, TU, and tolerance
    | Procedure get_item_uom_properties(
    | p_api_version_number IN NUMBER,
    | p_init_msg_list IN VARCHAR2,
    | p_inventory_item_id IN NUMBER,
    | p_organization_id IN NUMBER,
    | p_lot_control_code IN NUMBER, -- item's lot control code
    | p_lot_number IN VARCHAR2,
    | p_sub_lot_control_code IN NUMBER,
    | p_sublot_number IN VARCHAR2,
    | x_primary_uom_code OUT VARCHAR2,
    | x_uom_class OUT VARCHAR2,
    | x_decimal_precision OUT NUMBER,
    | x_item_TU OUT NUMBER,
    | x_uom_TU OUT NUMBER,
    | x_effective_TU OUT NUMBER,
    | x_msg_count OUT NUMBER,
    | x_msg_data OUT VARCHAR2,
    | x_return_status OUT VARCHAR2 );
    | If the item is not a valid one, then this is reflected through the
    | return status.
    +-------------------------------------------------------------------------*/
    Procedure get_item_uom_properties(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
    p_inventory_item_id IN NUMBER,
    p_organization_id IN NUMBER,
    p_lot_control_code IN NUMBER,
    p_lot_number IN VARCHAR2,
    p_sub_lot_control_code IN NUMBER,
    p_sublot_number IN VARCHAR2,
    x_primary_uom_code OUT VARCHAR2,
    x_uom_class OUT VARCHAR2,
    x_decimal_precision OUT NUMBER,
    x_item_TU OUT NUMBER,
    x_class_TU OUT NUMBER,
    x_uom_TU OUT NUMBER,
    x_effective_TU OUT NUMBER,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCHAR2 );
    /*-------------------------------------------------------------------------+
    | Procedure compare_quantities(..)
    | Procedure compare_quantities(
    | p_api_version_number IN NUMBER,
    | p_init_msg_list IN VARCHAR2,
    | p_inventory_item_id IN NUMBER,
    | p_organization_id IN NUMBER,
    | p_lot_control_code IN NUMBER,
    | p_lot_number IN VARCHAR2,
    | p_sub_lot_control_code IN NUMBER,
    | p_sublot_number IN VARCHAR2,
    | p_fisrt_qauantity IN NUMBER,
    | p_first_uom IN VARCHAR2,
    | p_second_quantity IN NUMBER,
    | p_second_uom IN VARCHAR2,
    | p_use_interclass_tolerance IN VARCHAR2, -- Yes = 1, 2 = No
    | x_comaprison_result OUT NUMBER,
    | x_msg_count OUT NUMBER,
    | x_msg_data OUT VARCHAR2,
    | x_return_status OUT VARCHAR2);
    |
    | This procedure compares the quantities A and B and returns result in the
    | output variable x_comparison_result. The comparisons are done in base UOM
    | of the UOM class to which the first UOM belongs:
    |-1 if quantity A is less than quantity B (A < B)
    | 0 if quantity A is equal to quantity B (A = B)
    | 1 if quantity A is greater than quantity B (A > B)
    | If the UOMs belong to different classes, then users can specify whether
    | they want to use interclass UOM conversion tolerance, say, T.
    | CASE: p_use_interclass_tolerance = 1
    | ------
    | Q1 > Q2 if (Q1 - Q2) >= T
    | Q1 = Q2 if ABS(Q1 - Q2) < T
    | Q1 < Q2 if (Q1 - Q2 ) <= -T
    +------------------------------------------------------------------------*/
    Procedure compare_quantities(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
    p_inventory_item_id IN NUMBER,
    p_organization_id IN NUMBER,
    p_lot_control_code IN NUMBER,
    p_lot_number IN VARCAHR2,
    p_sub_lot_control_code IN NUMBER,
    p_sublot_number IN VARCHAR2,
    p_fisrt_qauantity IN NUMBER,
    p_first_uom IN VARCHAR2,
    p_second_quantity IN NUMBER,
    p_second_uom IN VARCHAR2,
    p_use_interclass_tolerance IN VARCHAR2,
    x_comaprison_result OUT NUMBER,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCHAR2);
    /*-----------------------------------------------------------------------+
    | Procedure Validate_Quantity(
    | p_api_version_number IN NUMBER,
    | p_init_msg_list IN VARCHAR2,
    | p_inventory_item_id IN NUMBER,
    | p_organization_id IN NUMBER,
    | p_lot_control_code IN NUMBER,
    | p_lot_number IN VARCHAR2,
    | p_sub_lot_control_code IN NUMBER,
    | p_sublot_number IN VARCHAR2,
    | p_input_quantity IN NUMBER,
    | p_UOM_code IN VARCHAR2,
    | x_msg_count OUT NUMBER,
    | x_msg_data OUT VARCHAR2,
    | x_return_status OUT VARCHAR2);
    |
    | Validates and returns the quantity in this manner (the caller does not need
    | to adjust the result):
    | 0. Truncate to and validate decimal precision
    | 1. Validate quantity with respect to TU controls.
    +-------------------------------------------------------------------------*/
    Procedure Validate_Quantity(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
    p_inventory_item_id IN NUMBER,
    p_organization_id IN NUMBER,
    p_lot_control_code IN NUMBER,
    p_lot_number IN VARCAHR2,
    p_sub_lot_control_code IN NUMBER,
    p_sublot_number IN VARCHAR2,
    p_input_quantity IN NUMBER,
    p_UOM_code IN VARCHAR2,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCHAR2);
    /*------------------------------------------------------------------------+
    | Function Truncate_Quantity(
    | p_api_version_number IN NUMBER,
    | p_init_msg_list IN VARCHAR2,
    | p_inventory_item_id IN NUMBER,
    | p_organization_id IN NUMBER,
    | p_lot_control_code IN NUMBER,
    | p_lot_number IN VARCHAR2,
    | p_sub_lot_control_code IN NUMBER,
    | p_sublot_number IN VARCHAR2,
    | p_input_quantity IN NUMBER,
    | p_UOM_code IN VARCHAR2,
    | x_msg_count OUT NUMBER,
    | x_msg_data OUT VARCHAR2,
    | x_return_status OUT VARCHAR2) return NUMBER;
    |
    | Truncates the quantity to decimal precision of the UOM.
    | In case of error conditions, -99 is returned.
    +------------------------------------------------------------------------*/
    Function Truncate_Quantity(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
    p_inventory_item_id IN NUMBER,
    p_organization_id IN NUMBER,
    p_lot_control_code IN NUMBER,
    p_lot_number IN VARCHAR2,
    p_sub_lot_control_code IN NUMBER,
    p_sublot_number IN VARCHAR2,
    p_input_quantity IN NUMBER,
    p_UOM_code IN VARCHAR2,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCHAR2) return NUMBER;
    * show errors package INV_DECIMALS_PUB
    * SELECT to_date('SQLERROR') FROM user_errors
    * WHERE name = 'INV_DECIMALS_PUB'
    * AND type = 'PACKAGE';
    commit;
    exit;

  • CVI IDE: Is it possible to see list of functions for faster navigation?

    Colleagues,
    Very simple question about CVI IDE.
    Is it possible to see whole list of functions for fast and convenient navigation, like in Micro$oft Visual Studio:
    When I have C code with more than 20-30 functions and 2000+ lines - its a very inconvenient to scroll up and down every time...
    I guess this feature should present in CVI, or I missing something? 
    How you working with relative large projects in CVI? 
    Thank you in advance,
    Andrey.

    CVI offers the Source Code Browser, which shows informations about files, functions, variables, data types and macros in your code. The code browser can be accessed in several ways: the easiest is to position over an element in the code and press Ctrl+F1: the lower part of the workbench will host the Source Code Browser area (though you can lately release this window to position it wherever you find it useful). There are several other ways to access these informations: I suggest you to look in the online help, topic Using LabWindows/CVI >> Writing Source Code >> Browsing Source Code
    CVI has several other ways of navigating in your application:
    Select a panel, menu or control callback and press Ctrl+Shift+U to go to the object in the UIR editor
    Right-click on an element in the UIR editor to go to its callback (if any)
    Select a function call in the code editor and press Ctrl+I to go to the function source
    Select a filename and press Ctrl+U to open it in an editor window
    ... and others I don't remember now! 
    Message Edited by Roberto Bozzolo on 05-07-2010 10:12 AM
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

  • Automator for PDF merge with variable

    Hi - very new to automator, but now very motivated to find a solution to this annoying problem.
    I have to scan expense receipts each week and upload them 1 by 1 into a client time & expense system. I don't think Automator can help me with this one.
    A second system requires all the expense receipts to be merged into a PDF and a 3rd copy emailed to an approver.
    This is what I would like automator to do:
    From my Expenses folder, where all my individual PDF's are located
    I select all my distinct PDF's for a particular week
    Using an automator service, right click style
    Using 'Ask for Text', I would enter the "Week of"
    My selected PDF's are merged into 1 PDF, with the name = "Week of <VAR>"
    Mail starts (can't figure out how to use Gmail in a browser in Automator)
    Creates a message to the approver guy with the merged attachment from #5 above
    Sends the message
    Quits Mail
    I can get the automator to run without the variables trick...but it really would save a lot of time if I could just key it in once (instead of #filename, #email subject, #body of the message).
    I also tried looking up the UUID for the variable and inserting it into the email body and subject line - but it didn't take.
    Can anyone help with this?
    Many thanks
    bforeste

    Can't help you with automator, but you can create an app with the applescript below that will do what you want.
    Procedure:
    1. Open the Applescript Editor by typing Apples in the spotlight search field and hitting 'return' on your keyboard.
    2. Copy the entire script below and paste it into the Editor window.
    3. Hit 'Command-K' on the keyboard and ensure there are no compiler errors. If there are, please look at the script and see if one part of it was highlighted. Report back what part of the script was highlighted and any error messages.
    If the compile didn't produce an error, then:
    4. Hit 'Command-S' on the keyboard, choose a snazzy name ("PDF merger" or something...) and a location to save it in (your Apps or Desktop folders).  Be sure to change the 'File Format:' to Application at the bottom of the Save screen before hitting 'Save'.
    5. The first time you run the app (you run it by double-clicking on it, like any other App), you'll be asked to put in the details manually. On subsequent runs, it will fill in the defaults for you. I haven't set up the default locations for looking and searching for the files as I'm not sure where they would be on your system. I can do that if you tell me the path from your 'home' or user directory.
    Also note, I've written the script so that it doesn't send the message until you've reviewed it. i.e., you might want to double check you've attached the correct file, or add a message. If you want it to send automatically without review change the following lines near the end of the script:
    change the line 'set visible to true' to 'set visible to false'
    change the line 'save' to 'send'
    property defaultFolder : ""
    property msgSubject : ""
    property theRecipient : ""
    property theWeeklyname : ""
    property outputFile : ""
    getInfo()
    mergePDFS()
    sendMail()
    on getInfo()
              display dialog "Type the recipient's email address: " default answer theRecipient
              set theRecipient to the text returned of the result
              delay 0.25
              display dialog "Set the subject of the message: " default answer msgSubject
              set msgSubject to the text returned of the result
    end getInfo
    on mergePDFS()
              display dialog "Please choose the files to merge…" default button "OK"
              set inputFiles to choose file of type "PDF" with multiple selections allowed without invisibles
              delay 0.25
              display dialog "Please choose a folder to save the merged PDF…" default button "OK"
              set outputFolder to choose folder
              delay 0.25
              display dialog "Type the name of the combined pdf (without the .pdf extension): " default answer theWeeklyname
              set theWeeklyname to text returned of the result
              set outputFile to (outputFolder as text) & theWeeklyname & "(" & (count of inputFiles) & ").pdf"
              set pdfFiles to ""
              repeat with p in inputFiles
                        set pdfFiles to pdfFiles & " " & quoted form of POSIX path of p
              end repeat
              do shell script "/System/Library/Automator/Combine\\ PDF\\ Pages.action/Contents/Resources/join.py " & "-o " & quoted form of POSIX path of outputFile & pdfFiles
              return outputFile as alias
    end mergePDFS
    on sendMail()
              tell application "Finder"
                        set theAttachment to outputFile as alias
              end tell
              tell application "Mail"
                        set newMessage to make new outgoing message with properties {subject:msgSubject, content:"" & return & return}
                        tell newMessage
                                  set visible to true
      make new to recipient at end of to recipients with properties {address:theRecipient}
                                  tell content
      make new attachment with properties {file name:theAttachment} at after the last paragraph
                                  end tell
      save
                        end tell
              end tell
    end sendMail

  • Mass approval functionality for SRM work items

    Hi,
    We want to implement mass approval functionality for SRM workflow, so that any user is able to approve/reject multiple requests at one go through UWL.
    Please guide if it is possible to implement this functinality for task id TS40007952.
    Regards,
    Avantika

    Hi Avantika,
    The mass approval functionality can be implemented for simple workflow items which have decisions to complete the work item. (User Decision Type)
    In SAP Business Workflow, user can define a task as a decision task by assigning DECISION as the underlying business object type. The task definition allows user to create two or more decision options to complete the task.
    The idea is to simply create a custom view/subview for the UWL item and configure it according to your needs.
    Have a look at this blog:
    Mass/Batch Processing of Work items in UWL
    and also check the documentation:
    http://help.sap.com/saphelp_nw70ehp1/helpdata/en/4e/72112bc9ea484196f2a5fdc68f5f5f/frameset.htm
    Let me know if you have any questions.
    Thanks,
    Shanti

  • Can i use create function for MSSql scalar and table valude function.

    Hi,
    1) Can i use create function for MSSql scalar and table valued function?
    2) How many type of user defined function are there in oracle 11g express?
    3) And can i reture any "type" form user defined function?
    yourse sincerely

    944768 wrote:
    Q1)That means even if i return predefined types like integer, varchar2 then also PGA is used ?The data type does not determine where the variable is stored. A string (called a varchar2 in Oracle) can be stored in stack space, heap space, on disk, in a memory mapped file, in a shared memory, in an atom table, etc.
    It is the who and what is defining and using that string, that determines where and how it is stored.
    The Oracle sever supports 2 languages in PL/SQL. The PL (Programming Logic) language is a procedural/declarative language. It is NOT SQL. SQL is integrated with it. The PL/SQL engine uses private process memory (PGA). So PL/SQL variables exist in the PGA (but there are exceptions such as LOBs).
    Q2) So please suggest me solution in oracle.Sounds to me you are looking at how to implement a T-SQL style function as an Oracle function, and once implemented, do joins on the function.
    Do not use PL/SQL in SQL in place of a SQL select. It is not T-SQL.
    One cannot use PL/SQL to create functions along the style of T-SQL, where the function executes a SQL using some conditional logic, and then return as if the function was a native SQL select.
    T-SQL is an extension to the SQL language - making it a hybrid and very impure language implementation. PL is based on ADA - part of the Pascal family of languages. The E-SQL (embedded SQL) approach used in languages like C/C++, Cobol and Ada, has been transparently done in PL/SQL. You can write and mix PL code and variables with SQL code. And the PL/SQL engine figures out how to make the call from the PL/SQL engine to the SQL engine.
    But PL/SQL is not "part" of the SQL language and does not "extend" the SQL language in a T-SQL fashion.
    So you need to check your SQL-Server preconcepts in at the door, as they are not only irrelevant in Oracle, they are WRONG in Oracle.
    The correct way in Oracle, in a nutshell - Use the SQL language to do data processing. Use PL/SQL to manage conditional process flow and the handling of errors.

  • Smartview VBA function for launch calc-scripts as strings. like EsbCalc ???

    We have used an Excel VBA which launch an calculation script from a STRING using the VBA Add-In function "EsbCalc".
    We would like to migrate to Smartview VBA functions.....
    The calc-script string has "parameters" which are modified at run-time...
    I have found the function HypExecuteCalcScript - but seems that use as parameters ONLY the calc-script name...
    Is it any VBA function in SmartView which launch a calc-script string (not a calc-script name) ?
    We are using EPM 11.2
    Thanks...

    A tip I just learned at Kaleidoscope 2010* is that one can create a calc script consisting entirely of a substitution variable. In other words, a calc script can look like this:
    &Calc
    Smart View VBA does have a function for changing or creating substitution variables (HypSetSubstitutionVariable). You could create a calc script and subvar in your database as above. Then, at run time, set that subvar to your calc string with HypSetSubstitutionVariable and execute the calc script with HypExecuteCalcScript.
    Quick test (11.1.1.3) shows that this really works.
    I can't remember privileges required to create or set subvars vs execute calc strings off the top of my head - might be an issue (I ran as an admin). Also this approach doesn't support concurrent users, unless they each have a calc script and subvar to themselves. Still, depending on your exact situation, this might be a feasible workaround.
    *I won't credit the presenter solely because the tip came from a presentation which he specifically declined to make public domain.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

Maybe you are looking for

  • Sending email using PL/SQL based on a query result

    Hello all, I want to create a procedure using PL/SQL, based on a query result.Here is the scenario: I have multiple tables in Target and Source databases that I want to compare(not the whole table but queries on these tables) and if they differ, I wa

  • SQL Loader bug

    2 day ago I meet with problem to load text file to Oracle DB with SQL statment in control file. It's my control file: LOAD DATA INFILE '/tmp/123/22-12.txt' REPLACE INTO TABLE VL_LOG (date_time SYSDATE, SOURCE POSITION(02:16) "TRUNC(SUBSTR(:SOURCE,1,3

  • Automatic PR or Reservation Generation for ROH

    Hi,         We are subcontract for our customer.Our Cutomer sending material 'A' which is ROH we will do some operation then give it as B (FERT). As per our scenario 'sales order is created against customer PO for material 'A'.We maintain strategy 81

  • CL_GOS_DOCUMENT_SERVICE / DELETE_ATTACHMENT

    Hi, I have requirement to delete an attachment attach to a sales document. For this i am using the following class CL_GOS_DOCUMENT_SERVICE and method DELETE_ATTACHMENT. My issue is in method DELETE_ATTACHMENT the parameter IP_ATTACHMENT is mandatory

  • Bapi in a badi, error call_function_conflict_leng

    Hi, i'm using the bapi BAPI_REL_CREATERELATION in the badi IF_EX_ECM_UPDATE~CHANGE_IN_UPDATE. But there is an rutime error that doesnt continue, that is call_function_conflict_leng. Did anyone have this error. plz help me, regards, Diego