Approver determination using HR functions

Hello,
this is my first question on this forum, so be tolerant !!
Has anybody ever used HR functions (assigned at position level (S) in org structure) and corresponding HR search paths to determine approvers, instead of using PFCG roles ?
If yes, what are the constraints ? the gains against PFCG roles ? the performance issues ?
Rgds
Christophe

Gordan,
Approver determination in standard is independant from the role. It just get the first manager (hat in org. structure) of the requester, if no direct approver at requester level it goes to the next level, etc.
Usually this is not sufficient for customer and they develop their own determination (badi for dynamic wkf or adhoc object for classic wkf). It is just abap coding so any solution is possible.
About performance using HR path, I have no input. If you need to read all the organization and all beholders of the function, it certainly will be poor performance. If starting from requester and follow up the organization is enough, it should be the same as for the standard processing (manager or requester) .
Rgds,
Pierre

Similar Messages

  • SD: Output determination - Use of transmission medium = "Special function"?

    Hi,
    Would you tell me what is the specific use of transmission medium = "Special function" (table TNAPR-NACHA = 8) in the output determination for messages?
    Transaction V/30
    Thanks and regards,
    Eric

    Hi Guys - Transmission medium 8 - special function is a very strong functionality that SAP has provided. You can have a business document perform a specific function everytime it is created, obviously as an output to that document. I am not sure about FICO areas, but I have worked on it in SD.
    We do automatic shipment creation for deliveries. An output condition was created with access sequence of shipping cond and shipping point. Now whenever there will be a delivery created for this shipping point, it would trigger this output. The output is configured with special function transmission medium. The special function executes the program mentioned in the condition record set up. Through that program, we create a shipment that will have that delivery doc.
    So then everytime a delivery is created, we would have a shipment document created for it without having to schedule another background job....!!!!
    Likewise, you may accordingly utilize FICO documents and processing using special function output medium.
    Thanks
    Nikhil

  • Purchase Requistion - Agent Determination using responsibilities - Issue

    Hi Everyone,
    I am new to workflow. I am having an issue wrt Purchase Requistion - Agent Determination using responsibilities.
    Created some 30 to 40 resposibilities with combination of inputs - R1, P1 & Cost Center
    Checked rule with responsibilities in Simulation mode and for the given inputs shows correct output.
    Same config is present both in DEV and ACP. Simulation works fine in both systems.
    But when I created Purchase Req. in DEV and save it. Workitem is generated for the correct agent. But when I do the same test in Quality, it fails and created Workitems for several agents.
    Checked container info. in both systems,no.of agents is the ONLY difference (i.e. 1 in DEV and 30+ agents in Quality).
    Put shred some light on this issue.
    Workflow Used: BUS2009
    Task : TS00007986
    Thanks a ton in advance.
    Regards,
    Krishna

    Hi,
    Open the workflow (WS*******) with SWDD and see the bindings for the rule in the approval step (using TS00007986). Do they look the same in both environments? Are you passing the same parameters for the rule?
    Another thing that you should check is a possible authorisation error. Maybe the users are not authorised to execute the needed functions for finding the agent inside the rule (common problem).
    Also try to read the technical workflow log (Start a workflow, open SWI1 and drill-down to the workflow log). Can you see some error messages there? You will probably find a message saying that "cannot execute agent rule" or something like that. It is WF behaviour that if it cannot find an agent it will send the work item to all possible agents (unless otherwise configured).
    Regards,
    Karri

  • Using a function return in an "IN" statement

    All,
    I need to filter the records in a table based on the return value of a function. The function determines a person's group and then executes 2 separate select statements depending on the group.
    CREATE OR REPLACE PACKAGE pkg_rolebased
    AS
    CURSOR all_dmn_cur
    IS
    SELECT dmn_id
    FROM tomwojeck.pa_domain ;
    CURSOR child_dmn_cur (role_id_in IN varchar)
    IS
    SELECT distinct r.dmn_id
    FROM tomwojeck.pa_domain_restriction_domain r
    WHERE r.dmn_restriction_id IN (
    SELECT DISTINCT a.dmn_restriction_id
    FROM tomwojeck.pa_role_wf_entity_fct_access a
    WHERE a.role_id = role_id_in
                        AND a.workflow_entity_fct_id= 'View Student.Student.View'
                        AND a.dmn_restriction_id IS NOT NULL);
    FUNCTION rolelookup (stud_email IN varchar)
    RETURN roletable;
    END;CREATE OR REPLACE PACKAGE BODY pkg_rolebased
    IS
    FUNCTION rolelookup (stud_email IN varchar)
    RETURN roletable
    IS
    v_roleid varchar2(200);
    v_returnval varchar2(200);
    v_data roletable := roletable ();
    dmn_rec all_dmn_cur%ROWTYPE;
    BEGIN
    -- Find out the role of the person
    SELECT r.role_id
    INTO v_roleid
    FROM tomwojeck.pa_user_prfl p, tomwojeck.pa_user_prfl_role r
    WHERE p.user_name = r.user_name
    AND UPPER (p.email_addr) = UPPER (stud_email);
    IF UPPER (v_roleid) = 'ALL'
    THEN
    OPEN all_dmn_cur;
    LOOP
    FETCH all_dmn_cur
    INTO dmn_rec;
    v_data.EXTEND;
    v_data (v_data.COUNT) := dmn_rec.dmn_id;
    EXIT WHEN all_dmn_cur%NOTFOUND;
    END LOOP;
    CLOSE all_dmn_cur;
    ELSE
    OPEN child_dmn_cur (v_roleid);
    LOOP
    FETCH child_dmn_cur
    INTO dmn_rec;
    v_data.EXTEND;
    v_data (v_data.COUNT) := dmn_rec.dmn_id;
    EXIT WHEN child_dmn_cur%NOTFOUND;
    END LOOP;
    CLOSE child_dmn_cur;
    END IF;
    RETURN v_data;
    END rolelookup;
    END;
    The select statement to filter on this mess is:
    select
    lname,
    fname,
    dmn_id,
    stud_id
    from tomwojeck.pa_student p
    where p.DMN_ID in (select * from table(cast(tomwojeck.pkg_rolebased.rolelookup('[email protected]') as tomwojeck.RoleTable)))
    The problemm is this performs horribly! If I enter an email address that causes the first cursor to be used, it runs well, but if I use an email address that causes the second cursor to run, it takes forever.
    Is there a better way to do this?
    Thanks,
    Tom Wojeck

    <<The version of Oracle is 9i.>>
    Could you specify the exact version? For example, 9.2.0.3.0.
    <<I'm not sure of the query optimizer version. How do I find that?>>
    SQL> show parameter optimizer_mode
    NAME                                 TYPE
    VALUE
    optimizer_mode                       string
    CHOOSE<<The interestin thing is that the function itself runs well; it's when I try to use the function as an "IN" clause that the performance degrades. It almost seems as though the database is retrieving each row from the student table, and then running the function to see if there are any matches. >>
    Your query has to be tuned. The execution plan as well as the information on the indexes will certainly help.

  • To use Boolean function in DECODE or CASE statement

    Hi all
    I have a scenario where i need to use a boolean function inside DECODE statement. When i tried this way iam getting "ORA-06553: PLS-382: expression is of wrong type".
    I doubt whether i can use boolean function inside DECODE or not?
    My query will be like this:
    select decode(my_fuction( ),'TRUE',1,'FALSE',0) from dual;
    Any help is highly appreciated.
    Thanks
    Sriram

    Overloaded functions must differ by more than their
    return type . At the time that the overloaded
    function is called, the compiler doesn't know what type
    of data that function will return. The compiler cannot,
    therefore, determine which version of the function to
    use if all the parameters are the same.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • How can we use DECODE function in where clause.

    Hi Guys,
    I have to use DECODE function in where clause.
    like below
    select * from tab1,tab2
    where a.tab1 = b.tab2
    and decode(code, 'a','approved')
    in this manner its not accepting?
    Can any one help me on this or any other aproach?
    Thanks
    -LKR

    >
    I am looking for to decode the actual db value something in different for my report.
    like if A then Accepted
    elseif R then Rejected
    elseif D then Denied
    these conditions I have to check in where clause.
    >
    what are you trying to do?
    may be you are looking for
    select * from tab1,tab2
    where a.tab1 = b.tab2
    and
       (decode(:code, 'A','Accepted') = <table_column>
        or
        decode(:code, 'R','Rejected') = <table_column>
       or
        decode(:code, 'D','Denied') = <table_column>
       )

  • How to use BAPI_MATERIAL_AVAILABILITY Function Module....

    Hi Experts,
    I want to know actual free available quantity (ATP Qty.) for mass materials,
    How to use BAPI_MATERIAL_AVAILABILITY function module ?
    I have select all material from MARA and inserted in itab.
    LOOP AT ITAB.
    CALL FUNCTION 'BAPI_MATERIAL_AVAILABILITY'
      EXPORTING
        PLANT                    =
        MATERIAL                 =
        UNIT                     =
      CHECK_RULE               =
      STGE_LOC                 =
      BATCH                    =
      CUSTOMER                 =
      DOC_NUMBER               =
      ITM_NUMBER               =
      WBS_ELEM                 =
      STOCK_IND                =
      DEC_FOR_ROUNDING         =
      DEC_FOR_ROUNDING_X       =
      READ_ATP_LOCK            =
      READ_ATP_LOCK_X          =
    IMPORTING
      ENDLEADTME               =
      AV_QTY_PLT               =
      DIALOGFLAG               =
      RETURN                   =
      TABLES
        WMDVSX                   =
        WMDVEX                   =
    I dont know how to use it.
    pl. guide us.
    Yusuf

    Hi,
           data:  iwmdvsx type table of bapiwmdvs with header line,
           iwmdvex type table of bapiwmdve with header line.
    parameters: p_matnr type mara-matnr,
                p_werks type marc-werks,
                p_meins type mara-meins.
    call function 'BAPI_MATERIAL_AVAILABILITY'
      exporting
        plant            = p_werks
        material         = p_matnr
        unit             = p_meins
      CHECK_RULE       =
      STGE_LOC         =
      BATCH            =
      CUSTOMER         =
      DOC_NUMBER       =
      ITM_NUMBER       =
      WBS_ELEM         =
      STOCK_IND        =
    IMPORTING
      ENDLEADTME       =
      AV_QTY_PLT       =
      DIALOGFLAG       =
      RETURN           =
      tables
        wmdvsx           = iwmdvsx
        wmdvex           = iwmdvex.
    check sy-subrc = 0.
    Text
    ATP information
    Functionality
    Using this function module, you can determine the receipt quantity still available for a particular material in a certain plant according to ATP logic (MRPII).
    The availability check is carried out on transferring the material number, the plant and the input table (WMDVSX). The scope of the check, that is, which stocks, receipts and issues are to be included in the check is defined by the combination of checking group (material master) and cheking rule. In the function module, the system uses the checking rule defined in Sales & Distribution (A). You can overrule this checking rule by using an interface or a user-exit (exit_saplw61v_001). A similar procedure is also valid for the plant parameters. The customer number in the user-exit means that the plant selection can be controlled via the customer. If no plant parameters are given via the interface, the system uses the parameter 'WRK' saved in the user's fixed values.
    The results of the availability check are recorded in the output table (WMDVEX). This table contains dates and available receipt quantities (ATP quantities). The results of the check depends on the following entries:
    If no date and no quantity is transferred, the system displays the ATP situation from today's date into the future as the result.
    If only a date and no quantity is transferred, the system displays the ATP situation from the corresponding date as the result.
    If both a date and a quantity are transferred, the system calculates the availability situation for the quantity specified.
    In the last two cases, the parameter 'DIALOGFLAG' is supplied. This can result in the following:
    ' ' (blank)   <=> quantity completely available
    'X'           <=> only partial quantity available or not available at
                      all
    'N'           <=> Material not included in the availability check
                      (Material not relevant to the availability check)
    The system also displays the end of the replenishment lead time (ENDLEADTME).
    regards

  • How to use Align function in Flexible UI template

    Hi HR experts,
    how to use Align function in Flexible UI Perforformance management ( not Cascading Goals) do we need any configuration setup, this Align function we are able to see in Predefine Performance Managment template , but not in Flexible UI
    any help
    Regards
    Vijai

    >
    A. Jimenez wrote:
    > Hi Ana,
    >
    > Do you know if the "Obsolete" function also apply only to Predefined UI?
    >
    > Thanks in advance.
    obsolete goals showing up in it's own tab is by default only avaialbe in predefined UI.
    however, the value determinations could be built in flexible so that obsolete goals show up in one criteria group for goals, and active goals appear only in the other criteria group goals. 
    when the cascaded goal is made obsolete it is noted in the description for flexible, but it will not appear anywhere separately.  You could also allow for "deletion of an element" in the flexible template.

  • HT3887 how can i configure my wireless keyword so i can use the Function F keys to control volume etc...? I am using 10.5.8 OS

    how can i configure my wireless keyword so i can use the Function <F> keys to control volume etc...? I am using 10.5.8 OS

    little wireless cameras would not have the ability to send back to the base, even thought the base can reach it.
    Now if you take regular cameras and wire them into a Cisco switch that was attached to a wireless bridge that could shine back to the base...now you might have something, but your still going to have to do a survey/path analysis to determine if it is feasible.
    Coverage isnt throughput. I see one base station with 3 or 4 sectoral antennas depending on direction, pointing two several distribution bridges to bridge the gaps that go out again to the cameras...something like that. And all of it should be higher in the air than your construction.

  • Use of functions in static block

    Hello,
    I have this app containing a static {} block. The reason it's there is to 1) provide a splash screen 2) have input dialog to process input string and check if it's valid in order to load app or not.
    In pseudocode it's like this:
    1 - get input string with showInputDialog()
    2 - check for the input string validity (a valid string is with prefix A-, C- or S-)
    3 - if string is valid, load the app
    4 - if string is not valid, proceed to step 1.
    As you may already see, there is going to be a lot of code (with if-else statements) to check for A-, C- and S- prefixed because I am using indexOf() function which takes only one parameter.
    I am considering a way to somehow check recursively, but for this I think I'll need a function to call indexOf() with A-, C-, S- and assess validity for each case.
    My question is, is there a way in the static block to have a function? Or can somebody please recommend an efficient approach to checking a string validity with different possibilities inside a static block as in my case, to avoid lots of if-else statements?
    P.S. My apologies for initially posting this thread in wrong section.
    Thank you!
    Victor.

    DrClap wrote:
    What's a function? And why are you particularly concerned about doing those things in a static initializer as opposed to in some other place?Hi,
    Sorry, I'm still thinking c++. I meant method. Something like of the form:
    static
    boolean valid = false;
    while string is not valid
    stringfrominput = showInputDialog();   
    //determine if string is valid
    valid = checkvalid(stringfrominput)
    //if possible to have
    boolean checkvalid(stringfrominput)
    recursively process stringfrom input based on A-, S-, or C- prefixes
    return boolean value
    }I have a jar app. It is Windows-based and runs as a TrayIcon application. If I include this process when class is loaded, this means that the app will be loaded with all its features. But I need to make sure that the app's features will be loaded only if certain conditions are met.
    I am not sure how else to approach this requirement without using static {} block.
    Thank you,
    Victor.

  • How to use a function

    Hi
    I want to determine the variance for a column of numerical values.  I gather I should use 'insert function' in a new cell for this.  I'll get a display like this:
    =VAR(num-date,num-date...).  What do I enter to calculate the variance for, say, the column of cells k2 through k50?
    I apologize for the trivial question, after trying all morning I still can't work this out or find an explanation.
    thanks

    You can use the function VAR() as follows:
    =VAR(A)
    In this example cell C3=VAR(A)
    I placed data in column A and am using all cells of column A as the input to the function VAR()
    There is a help file that describes all functions.  Here is an excerpt for VAR()
    VAR(num-date, num-date…)
    num-date: 
    A value. num-date is a number value or a date/time value.
    num-date…: 
    Optionally include one or more additional values. If more than one num-date-dur value is specified, they must all be of the same type.
    In this case we use a single argument, num-date-- in my example num-date is "A"

  • How to use the Function Module RH_READ_INFTY_1001...

    Hi,
    Can any one Tell me .. How to do the same functionality .. given below (select).
    Using the Function Module RH_READ_INFTY_1001...
    *reads CP (Central Person) based on BP (Business Partner)
    Select single objid (Object ID)
           from hrp1001
           into gv_sobid
           where subty eq 'B207'
           and sclas eq 'BP'
           and sobid eq  is_header-partner.
    *reads P (Person) Based on determined BP (Business Partner)
    select single sobid (ID related Object)
           from hrp1001
           into gv_sobid
           where subty eq 'B209'
           and   otype eq 'CP'
           and   objid eq gv_sobid.
    *determines UserID from IT0105 for determined personell ID
    select single usrid
           from pa0105
           into gv_usrid
           where pernr eq gv_sobid
           and   subty eq '999'.
    Reply ASAP....
    Answers will be Rewarded...

    objects-plvar = l_plvar.
                  objects-otype = 'S '.
                  objects-sobid = l_positions-objid.
                  APPEND objects.
                  CLEAR i1001_itab. REFRESH i1001_itab.
                  CALL FUNCTION 'RH_READ_INFTY_1001'
                       EXPORTING
    *                       AUTHORITY       = 'DISP'
    *                       WITH_STRU_AUTH  = 'X'
                            istat           = '1'
    *                       EXTEND          = 'X'
                            subty           = 'A008'
                            begda           = l_keyda
                            endda           = l_keyda
    *                       CONDITION       = '00000'
    *                       SORT            = 'X'
    *                       WITH_EV         = ' '
    *                       ADATA           = 'X'
                       TABLES
                            i1001           = i1001_itab
                            objects         = objects
                       EXCEPTIONS
                            nothing_found   = 1
                            wrong_condition = 2
                            OTHERS          = 3.
                  IF sy-subrc <> 0.
                    CLEAR i1001_itab. REFRESH i1001_itab.
                    CLEAR mngr_nr.
                  ELSE.
                    READ TABLE i1001_itab WITH KEY sclas = 'P'.
                    IF sy-subrc = 0.
                      mngr_nr = i1001_itab-sobid.
                    ELSE.
    THis is the sample code to use function module using this function module you can get upto HRP1001 selection for userid you need to use same select you write for PA0105

  • Use of function module screen_sequence_control

    hi experts,
    i need to know how to use the function module "SCREEN_SEQUENCE_MODULE"  with an example.
    Thanks & Regards
    priya

    Hi
    Welcome to SCN
    To  determine the next screen with the help of the Function Code as  for further information
    [check This |http://www.sapfans.com/forums/viewtopic.php?p=21064&sid=ebc496ab2c70b177158a909b1c49561e]
    Regards
    Pavan

  • Use of function module BBP_PDH_WFL_APPROVAL_SIMULATE

    Dear SAP Gurus,
    We have build a custom check in the BBP_DOC_CHECK_SC Badi to check if an approver is added to the Shopping cart.
    In case of creating a Shopping Cart we can use the function module BBP_PDH_WFL_APPROVER_CHECK to check if an approver is added.
    In case of a Shopping Cart with status held, in case of the Shopping Cart in approval or in case of the Shopping Cart is disapprvod we can't use the function module BBP_PDH_WFL_APPROVER_CHECK. Because it's not checking correctly if the approver exist.
    In those case we use the function module BBP_PDH_WFL_APPROVAL_SIMULATE to check if en approver exist in the workflow. But we encounter a problem when using this function module.
    When the requester wants to add an approver, the requester first searches for the approver and then click on add approver. Then nothing happens. The approver isn't added to the workflow and in case there was no approver anymore (after disapproving the SC) first an error message is displayed but after performing the add approver task the error message isn't displayed anymore and the approver isn't visible in the workflow.
    Add an approver is also not possible when there is already an approver of no approver and the SC is put on Held. Then the same happens. Search for approver and click on Add Approver no approver is added.
    We think this has something to do with function module BBP_PDH_WFL_APPROVAL_SIMULATE.
    Has anyone some ideas how we can solve this? Check if approver exist in the workflow and still be abble to add an approver.
    We are on SRM 4.0 with ECC 6.0 in Extended Classic Scenario.
    Thank you in advance for your replies.
    Best regards,
    Jean-Pierre

    Hi,
    In my current project, there is a requirement to forward approver to other approver.
    Something like tcode SWIA when forwarding a workitem.
    In order to list approver of particular document, I am using BBP_PDH_WFL_APPROVAL_SIMULATE to needed parameters to run following FM BBP_PDH_WFL_PARAM_APPLET_FILL2.
    From FM BBP_PDH_WFL_PARAM_APPLET_FILL2, I know whether the document has approver assigned or not.
    Hopefully can help you.

  • Updation of material data using a function module

    HI
      i want to update fields in the mvke table,but the field is a Customer field in the table, not sap table field.i want to update the field using a program , not going to mm02. which function can i use for the updation.There is a function module MATERIAL_MAINTAIN_DARK for updation,will this funtion module update the customer fields also. Can anyone tell me about this function module and how to use this function module or MATERIAL_MAINTAIN_DARK.

    Using the function Module BAPI_MATERIAL_SAVEDATA , you can also update the custom fields.
    This is the documentation for the extension fields:
    <b>Reference Structure for BAPI Parameters EXTENSIONIN/EXTENSIO
    Description
        You use this structure to transfer the material's customer-defined
        fields. For information on transferring these fields, see the function
        module documentation.
    Note
        Besides the table fields already defined, customer-defined table fields
        can also be supplied with data. Since these fields are created by the
        customer, they are known only during the runtime and must therefore be
        determined dynamically.
        The structures BAPI_TE_<NAME> (<NAME> = MARA, MARC, MARD, MBEW, MLGN,
        MLGT, MVKE) and the relevant checkbox structures BAPI_TE_<NAME> (<NAME>
        = MARAX, etc.) must first be extended by the customer to include the
        fields required. The standard structures contain only the corresponding
        key fields. When including new fields in these structures, make sure
        that the field has the same name as the field in the database table. In
        addition, the fields in the structures BAPI_TE_<NAME> may only be of the
        type CHARACTER. The data element BAPIUPDATE must be used for the fields
        in the checkbox structure (except for key fields).
        The two parameters EXTENSIONIN and EXTENSIONINX are used to transfer the
        data to the method. The field STRUCTURE contains the name of the
        structure (for example, BAPI_TE_MARA or BAPI_TE_MARAX) used to identify
        the work area (for example, WA_BAPI_TE_MARA or WA_BAPI_TE_MARAX) to
        which the data is transferred. The remaining fields for the parameter
        EXTENSIONIN or EXTENSIONINX contain the data for the key fields (for
        example, the material number) and the data for the customer-defined
        fields. The number of characters reserved in the two parameters for the
        content of a customer-defined field must be the same as the number of
        characters for the corresponding work area field. If the number of
    characters required is smaller, the remaining characters in the two
    parameters must be filled with blanks. Only then may the content of
    another field be transferred. Here too, remember that the data is
    written to the database only if the corresponding indicator has been set
    in the work area.</b>
    Regards,
    ravi

Maybe you are looking for

  • Audio Line-in input and BT Headset output not working

    Hi, I'm trying to run the Line-in into my MBPro and route the output to my Logitech H800 BT Headphones at the same time (a pass through), but can't get it to work. I have tried to run the line-in to the Internal Speakers and can not get this to work

  • What is wrong with my computer I replaced the fan but it's not running

    Thank you Allan Eckert that would of helped but right now I figuired out what exactly was wrong. My mac seems that it's fan doesn't run after the replacement. Litterly what I did to test this is test another mac with smc control and that one ran at 2

  • Disappearing Tool Bar and Docking Bars

    While using Mail, my toolbar slides away, as does my docking bar.  I can't seem to find anything in Preferences to correct this.  Help! Thanks.

  • Ok to Delete the Contents of the Render Files Folder?

    Hello Hello I remember from using various PC Video Editing programs that each program established for itself a 'Render Folder', or sometimes called an 'Auxiliary Folder'. This folder contained the contents of the previously rendered files as they rel

  • C/C++ routines to convert tdm/tdx files to text

    I need to write a C/C++ program to convert TDM & TDX file data into text files.  Does NI or anyone offer any example C or C++ source code to do this?  I have some large data sets (> 500 Mbytes) that I would like to break up to be analyzed using MATLA