WS14000145 Approval N-Step for PO skips others approvers

Hi All:
Here is my scenario.
WS14000145 was working fine before SP08 application to SRM SERVER 500 component.
Now (after sp08):
You create a PO (based on a SC of course) and because of the amount of the purchase it needs to be approved by several people, let's say John, Mike (john's boss), and Peter (mike`s boss)
When you create the PO it shows the authorization flow like this: 1st approver John, 2nd approver Mike, 3rd approver Peter; and it is retained awaiting for all three approvals.
Now all three of them got an entry in their authorizations pool.
The problem is: when John authorizes the PO the workflow skips the others approvers and the PO gets fully approved. And the PO disappears from 2nd and 3rd approvers inbox, because it is already approved by 1st approver.
The Org Structure is well defined, 3rd approver Mike is a Director, 2nd approver Mike is a Manager, and 1st approver John is an employee.  (also it was working fine before the sp08)
Any ideas please.
Greetings,
Dario

Vadim,
That's correct it is a PO WF we're talking about.
I've checked the badi it is implemented in the BBP_WFL_APPROV_BADI definition as ZW_APPROVAL_PO in the method GET_REMAING_APPROVERS.
As i see the approval_index is been incremented according to the level; although there is no place where ls_approver-approval_branch  is assigned ( should it be always = 1 ??)
I'm pasting the code here, hope it doesn´t matters.
Thanks!
method IF_EX_BBP_WFL_APPROV_BADI~GET_REMAING_APPROVERS.
Interface parameters:
OBJECT_ID                  TYPE  CRMT_OBJECT_ID                "Import
OBJECT_TYPE                TYPE  CRMT_SUBOBJECT_CATEGORY       "Import
GUID                       TYPE  BBP_GUID_32                   "Import
ACTUAL_APPROVAL_INDEX      TYPE  SWH_NUMC10                    "Import
APPROVAL_HISTORY_TABLE     TYPE  BBP_WFL_APPROVAL_HISTORY_BADI "Import
ITEM_APPROVAL_HISTORY_TABLE TYPE BBPT_WFL_ITEM_APPROVAL_BADI   "Import
APPROVAL_TABLE             TYPE  BBPT_WFL_APPROVAL_TABLE_BADI  "Export
ITEM_APPROVAL_TABLE        TYPE  BBPT_WFL_ITEM_APPROVAL_BADI   "Export
NO_FURTHER_APPROVAL_NEEDED TYPE  BOOLEAN                       "Export
ITEM_APPROVAL_OBJ          TYPE  BBPT_WFL_ITEM_APPROVAL_OBJ  "Changing
This is the 2nd example of the BADI implementation that includes
dynamic spending limit approval for PO
INCLUDE <CNTAIN>.
  DEFINE swc_set_element.
    call function 'SWC_ELEMENT_SET'
      EXPORTING
        element   = &2
        field     = &3
      TABLES
        container = &1
      EXCEPTIONS
        others    = 1.
  END-OF-DEFINITION.
  INCLUDE .
  data:   swc_object type swotobjid.
  DATA:
   ls_header_sc                TYPE bbp_pds_sc_header_d,
   ls_header_po                TYPE BBP_PDS_PO_HEADER_D,
   ls_approver                 TYPE bbp_wfl_approval_table_badi,
   ls_approver1                TYPE bbp_wfl_approval_table_badi,
   ls_approver2                TYPE bbp_wfl_approval_table_badi,
   ls_approverc                TYPE bbp_wfl_approval_table_badi,
   ls_approver3                TYPE bbp_wfl_approval_table_badi,
   ls_approver4                TYPE bbp_wfl_approval_table_badi,
   lv_approval_index           TYPE swh_numc10,
   lv_guid                     TYPE crmt_object_guid,
   lo_new_instance             TYPE swf_bor_object,
   lt_approval_agent_obj       TYPE TABLE OF swf_bor_object,
   ls_wa_agent_obj             TYPE swf_bor_object,
   lo_user                     TYPE swf_bor_object,
   ls_approval_agent           TYPE bbp_wfl_approval_table,
   lv_index                    TYPE syindex,
   lv_usr01_name               TYPE ad_namtext,
   lt_approval_init_agents     TYPE TABLE OF bbp_wfl_approval_table,
   ls_wa_approval_init_agents  TYPE bbp_wfl_approval_table,
   ls_wa_approval_history      TYPE bbps_wfl_history_line_badi,
   lt_partner                  type table of BBP_PDS_PARTNER,
   ls_partner                  type BBP_PDS_PARTNER,
   lt_item                     type table of BBP_PDS_SC_ITEM_D,
   ls_item                     type BBP_PDS_SC_ITEM_D,
   lt_item_po                     type table of BBP_PDS_PO_ITEM_D,
   ls_item_po                     type BBP_PDS_PO_ITEM_D,
   lv_record                   type ZRECTYPE.
  data: ac_container type table of swcont,
        org_object   type swhactor,
        actor_tab    type table of swhactor.
  data: partner_guid type BU_PARTNER_GUID.
  data: lastname     type BBP_USR01-LASTNAME,
        firstname    type BBP_USR01-FIRSTNAME,
        title        type BBP_USR01-TITLE.
  data: userid_app   type BBP_USR01-USERID,
        ret          type table of BAPIRET2,
        val_mxp      type BBP_TOTAL_VALUE.
Organitational Data
  Data: lt_orgdata type table of BBP_PDS_ORG,
        ls_orgdata type          BBP_PDS_ORG,
        lv_unidorg type          BBP_PROC_GROUP_ID.
  Data: lt_OBJECTS   TYPE  OBJEC_T,
        lt_STRUCTURE TYPE  STRUC_T,
        lv_level     like  sy-tabix.
  data: lv_obj_guid type CRMD_ORDERADM_H-GUID.
Business objects type (local constants)
  CONSTANTS:
   c_po            TYPE crmt_subobject_category_db VALUE 'BUS2201',
   c_biddingdoc    TYPE crmt_subobject_category_db VALUE 'BUS2200',
   c_quotation     TYPE crmt_subobject_category_db VALUE 'BUS2202',
   c_grse          TYPE crmt_subobject_category_db VALUE 'BUS2203',
   c_invoice       TYPE crmt_subobject_category_db VALUE 'BUS2205',
   c_shop          TYPE crmt_subobject_category_db VALUE 'BUS2121',
   c_contract      TYPE crmt_subobject_category_db VALUE 'BUS2000113',
   c_salescontract TYPE crmt_subobject_category_db VALUE 'BUS2000114',
   c_avl           TYPE crmt_subobject_category_db VALUE 'BUS2206',
   c_invoicegrp    TYPE crmt_subobject_category_db VALUE 'BUS2207',
   c_vendor_obj    TYPE crmt_subobject_category_db VALUE 'BUS1006200'.
workflow approval states
  CONSTANTS:
   c_wf_approved           TYPE  bbp_wfl_approvalstate VALUE '0',
   c_wf_rejected           TYPE  bbp_wfl_approvalstate VALUE '1',
   c_wf_not_instanced      TYPE  bbp_wfl_approvalstate VALUE '2',
   c_wf_changed            TYPE  bbp_wfl_approvalstate VALUE '3',
   c_wf_partialapproved    TYPE  bbp_wfl_approvalstate VALUE '4',
   c_wf_step_in_process    TYPE  bbp_wfl_approvalstate VALUE '5'.
  CLEAR: lt_approval_init_agents[], lt_approval_agent_obj[],
         ls_wa_agent_obj, ls_approval_agent, ls_wa_approval_init_agents,
         ls_wa_approval_history.
map input data to local data
map char32 to raw16
  MOVE guid TO lv_guid.
  data: lt_zzs_approver_tec type table of ZZS_APPROVER_TEC,
        ls_zzs_approver_tec type ZZS_APPROVER_TEC.
  data: lt_zzs_approver_rep type table of ZZS_APPROVER_REP,
        ls_zzs_approver_rep type ZZS_APPROVER_REP,
        userid              type syuname.
  data: lt_sc_approvers type table of ZSRM_SC_APPROVER,
        ls_sc_approver type ZSRM_SC_APPROVER.
  CASE object_type.
======================   shopping cart  =========================== *
    WHEN c_shop.
get the approvers
      select * from ZSRM_SC_APPROVER into table lt_sc_approvers.
get the details of the SC
      CALL FUNCTION 'BBP_PD_SC_GETDETAIL'
        EXPORTING
          i_object_id = object_id
        IMPORTING
          e_header    = ls_header_sc
        TABLES
          e_item      = lt_item.
      read table lt_item with key BE_DOC_TYPE = 'ECDP' transporting no fields.
      if sy-subrc eq 0. "or ls_header_sc-ZZSTATUS = 'A' or ls_header_sc-ZZSTATUS = 'C'
        no_further_approval_needed = 'X'.
      else.
        clear: lastname,
               firstname,
               title.
Cambio 28.01., Oli: We don't take a single approver anymore, we use table ZSR_SC_APPROVERS
data: lv_uid type BBP_USR01-USERID.
        loop at lt_sc_approvers into ls_sc_approver.
          move ls_sc_approver-uname to lv_uid.
          CALL FUNCTION 'BBP_USER_GET_DETAIL_BBP_USR01'
            EXPORTING
              BBP_USR01_USERID    = lv_uid
            IMPORTING
              BBP_USR01_LASTNAME  = lastname
              BBP_USR01_FIRSTNAME = firstname
              BBP_USR01_TITLE     = title
            TABLES
              RETURN              = ret.
          concatenate title firstname lastname into ls_approver-name separated by space.
          concatenate 'US' ls_sc_approver-uname into ls_approver-approval_agent.
          ls_approver-approval_index = 1.
          ls_approver-approval_description = 'Single approval step'.
          APPEND ls_approver TO approval_table.
          endloop.
          no_further_approval_needed = 'X'.
        endif.
======================  purchase order ============================= *
      WHEN c_po.
        move guid to lv_obj_guid .
get the details of the po
        CALL FUNCTION 'BBP_PD_PO_GETDETAIL'
          EXPORTING
        i_object_id = object_id
            i_guid = lv_obj_guid
          IMPORTING
            e_header    = ls_header_po
          TABLES
            e_item      = lt_item_po
            e_partner   = lt_partner
            E_ORGDATA   = lt_orgdata.
        read table lt_item_po index 1 into ls_item_po.
        lv_record = ls_item_po-zzrecordtype.
No approval in case of AOG or Critico (Oli, 08.12.)
        if ls_header_po-zzstatus = 'A' or
          ls_header_po-zzstatus = 'C' or ls_header_po-zzcapturista = 'X'.
          no_further_approval_needed = 'X'.
          exit.
        endif.
        if lv_record ne 'R'.
          select * from ZZS_APPROVER_TEC into table lt_zzs_approver_tec.
        else.
          select * from ZZS_APPROVER_REP into table lt_zzs_approver_tec.
        endif.
        read table lt_partner into ls_partner with key PARTNER_FCT = '00000016'.
        partner_guid = ls_partner-partner_no.
        read table lt_orgdata into ls_orgdata index 1.
        move ls_orgdata-PROC_GROUP_ID to lv_unidorg.
        CALL FUNCTION 'HR_STRUCTURE_GET'
          EXPORTING
            ROOT_PLVAR                = '01'
            ROOT_OTYPE                = 'O'
            ROOT_OBJID                = lv_unidorg
            PATHID                    = 'A002'
          IMPORTING
            RESULT_OBJECTS            = lt_OBJECTS
            RESULT_STRUCTURE          = lt_STRUCTURE
        ROOT_COPY                 =
          EXCEPTIONS
            PLVAR_NOT_FOUND           = 1
            ROOT_NOT_FOUND            = 2
            PATH_NOT_FOUND            = 3
            INTERNAL_ERROR            = 4
            OTHERS                    = 5
        IF SY-SUBRC eq 0.
          describe table lt_structure lines lv_level.
        ELSE.
          move 10 to lv_level.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        CALL FUNCTION 'BP_CENTRALPERSON_GET'
          EXPORTING
            IV_BU_PARTNER_GUID  = partner_guid
          IMPORTING
            EV_USERNAME         = userid
          EXCEPTIONS
            NO_CENTRAL_PERSON   = 1
            NO_BUSINESS_PARTNER = 2
            NO_ID               = 3
            OTHERS              = 4.
        IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        if lv_level gt 2.
          org_object-otype = 'O' .
          org_object-objid = ls_orgdata-PROC_GROUP_ID.
          SWC_SET_ELEMENT AC_CONTAINER 'ORG_OBJECT' ORG_OBJECT.
*Get first approver
          CALL FUNCTION 'SWX_GET_MANAGER'
            TABLES
              ACTOR_TAB    = ACTOR_TAB
              AC_CONTAINER = AC_CONTAINER
            EXCEPTIONS
              NOBODY_FOUND = 1
              OTHERS       = 2.
          read table actor_tab index 1 into ls_approver1-approval_agent.
          clear: userid_app,
                 lastname,
                 firstname,
                 title.
          userid_app = ls_approver1-approval_agent+2.
          CALL FUNCTION 'BBP_USER_GET_DETAIL_BBP_USR01'
            EXPORTING
              BBP_USR01_USERID    = userid_app
            IMPORTING
              BBP_USR01_LASTNAME  = lastname
              BBP_USR01_FIRSTNAME = firstname
              BBP_USR01_TITLE     = title
            TABLES
              RETURN              = ret.
          concatenate title firstname lastname into ls_approver1-name separated by space.
        endif.
        if lv_level gt 3.
          ORG_OBJECT = ls_approver1-approval_agent.
          SWC_SET_ELEMENT AC_CONTAINER 'ORG_OBJECT' ORG_OBJECT.
Get Planeador (in case of Reparaciones)
          CALL FUNCTION 'BBP_USER_GET_DETAIL_BBP_USR01'
            EXPORTING
              BBP_USR01_USERID    = 'PLANEADOR01'
            IMPORTING
              BBP_USR01_LASTNAME  = lastname
              BBP_USR01_FIRSTNAME = firstname
              BBP_USR01_TITLE     = title
            TABLES
              RETURN              = ret.
          concatenate title firstname lastname into ls_approverc-name separated by space.
*Get second approver
          CALL FUNCTION 'SWX_GET_MANAGER'
            TABLES
              ACTOR_TAB    = ACTOR_TAB
              AC_CONTAINER = AC_CONTAINER
            EXCEPTIONS
              NOBODY_FOUND = 1
              OTHERS       = 2.
          read table actor_tab index 1 into ls_approver2-APPROVAL_AGENT.
          clear: userid_app,
                 lastname,
                 firstname,
                 title.
          userid_app = ls_approver2-approval_agent+2.
          CALL FUNCTION 'BBP_USER_GET_DETAIL_BBP_USR01'
            EXPORTING
              BBP_USR01_USERID    = userid_app
            IMPORTING
              BBP_USR01_LASTNAME  = lastname
              BBP_USR01_FIRSTNAME = firstname
              BBP_USR01_TITLE     = title
            TABLES
              RETURN              = ret.
          concatenate title firstname lastname into ls_approver2-name separated by space.
        endif.
        if lv_level gt 4.
          ORG_OBJECT = ls_approver2-APPROVAL_AGENT.
          SWC_SET_ELEMENT AC_CONTAINER 'ORG_OBJECT' ORG_OBJECT.
*Get third approver
          CALL FUNCTION 'SWX_GET_MANAGER'
            TABLES
              ACTOR_TAB    = ACTOR_TAB
              AC_CONTAINER = AC_CONTAINER
            EXCEPTIONS
              NOBODY_FOUND = 1
              OTHERS       = 2.
          read table actor_tab index 1 into ls_approver3-APPROVAL_AGENT.
          clear: userid_app,
                 lastname,
                 firstname,
                 title.
          userid_app = ls_approver3-approval_agent+2.
          CALL FUNCTION 'BBP_USER_GET_DETAIL_BBP_USR01'
            EXPORTING
              BBP_USR01_USERID    = userid_app
            IMPORTING
              BBP_USR01_LASTNAME  = lastname
              BBP_USR01_FIRSTNAME = firstname
              BBP_USR01_TITLE     = title
            TABLES
              RETURN              = ret.
          concatenate title firstname lastname into ls_approver3-name separated by space.
        endif.
        if lv_level gt 5.
          ORG_OBJECT = ls_approver3-APPROVAL_AGENT.
          SWC_SET_ELEMENT AC_CONTAINER 'ORG_OBJECT' ORG_OBJECT.
*Get fourth approver
          CALL FUNCTION 'SWX_GET_MANAGER'
            TABLES
              ACTOR_TAB    = ACTOR_TAB
              AC_CONTAINER = AC_CONTAINER
            EXCEPTIONS
              NOBODY_FOUND = 1
              OTHERS       = 2.
          read table actor_tab index 1 into ls_approver4-APPROVAL_AGENT.
          clear: userid_app,
                 lastname,
                 firstname,
                 title.
          userid_app = ls_approver4-approval_agent+2.
          CALL FUNCTION 'BBP_USER_GET_DETAIL_BBP_USR01'
            EXPORTING
              BBP_USR01_USERID    = userid_app
            IMPORTING
              BBP_USR01_LASTNAME  = lastname
              BBP_USR01_FIRSTNAME = firstname
              BBP_USR01_TITLE     = title
            TABLES
              RETURN              = ret.
          concatenate title firstname lastname into ls_approver4-name separated by space.
        endif.
        if ls_header_po-CURRENCY ne 'USD' and ls_header_po-CURRENCY ne 'MXN'.
          call function 'CONVERT_TO_LOCAL_CURRENCY'
            EXPORTING
              date             = sy-datlo
              foreign_amount   = ls_header_po-total_value
              foreign_currency = ls_header_po-CURRENCY
              local_currency   = 'USD'
            IMPORTING
              local_amount     = val_mxp.
        else.
          val_mxp = ls_header_po-total_value.
        endif.
        if ls_header_po-CURRENCY = 'MXN'.
          loop at lt_zzs_approver_tec into ls_zzs_approver_tec
               where low_mxp  le val_mxp
               and   high_mxp ge val_mxp.
          endloop.
        else.
          loop at lt_zzs_approver_tec into ls_zzs_approver_tec
               where low_usd  le val_mxp
               and   high_usd ge val_mxp.
          endloop.
        endif.
In case of Reparaciones we have the first approval, when the value of the PO is still 0.
        if lv_record = 'R' and val_mxp le '0.01'.
          ls_approver-approval_index = 1.
          ls_approver-approval_agent = ls_approver1-approval_agent.
          ls_approver-name = ls_approver1-name.
          ls_approver-approval_description = 'First approval step'.
          APPEND ls_approver TO approval_table.
          no_further_approval_needed = 'X'.
          exit.
        endif.
        if sy-subrc eq 0.
          case ls_zzs_approver_tec-nivel.
            when 1.
1 step approval
              if lv_level gt 2.
                ls_approver-approval_index = 1.
                ls_approver-approval_agent = ls_approver1-approval_agent.
                ls_approver-name = ls_approver1-name.
                ls_approver-approval_description = 'First approval step'.
                APPEND ls_approver TO approval_table.
              endif.
            when 2.
2 step approval
              if lv_level gt 2.
                ls_approver-approval_index = 1.
                ls_approver-approval_agent = ls_approver1-approval_agent.
                ls_approver-name = ls_approver1-name.
                ls_approver-approval_description = 'First approval step'.
                APPEND ls_approver TO approval_table.
                if lv_level gt 3.
                  ls_approver-approval_index = 2.
                  ls_approver-approval_agent = ls_approver2-approval_agent.
                  ls_approver-name = ls_approver2-name.
                  ls_approver-approval_description = 'Second approval step'.
                  APPEND ls_approver TO approval_table.
                endif.
              endif.
              no_further_approval_needed = 'X'.
            when 3.
3 step approval
              if lv_level gt 2.
                ls_approver-approval_index = 1.
                ls_approver-approval_agent = ls_approver1-approval_agent.
                ls_approver-name = ls_approver1-name.
                ls_approver-approval_description = 'First approval step'.
                APPEND ls_approver TO approval_table.
                if lv_level gt 3.
                  ls_approver-approval_index = 2.
                  ls_approver-approval_agent = ls_approver2-approval_agent.
                  ls_approver-name = ls_approver2-name.
                  ls_approver-approval_description = 'Second approval step'.
                  APPEND ls_approver TO approval_table.
                  if lv_level gt 4.
                    ls_approver-approval_index = 3.
                    ls_approver-approval_agent = ls_approver3-approval_agent.
                    ls_approver-name = ls_approver3-name.
                    ls_approver-approval_description = 'Third approval step'.
                    APPEND ls_approver TO approval_table.
                  endif.
                endif.
              endif.
              no_further_approval_needed = 'X'.
            when 4.
4 step approval
              if lv_level gt 2.
                ls_approver-approval_index = 1.
                ls_approver-approval_agent = ls_approver1-approval_agent.
                ls_approver-name = ls_approver1-name.
                ls_approver-approval_description = 'First approval step'.
                APPEND ls_approver TO approval_table.
                if lv_level gt 3.
                  ls_approver-approval_index = 2.
                  ls_approver-approval_agent = ls_approver2-approval_agent.
                  ls_approver-name = ls_approver2-name.
                  ls_approver-approval_description = 'Second approval step'.
                  APPEND ls_approver TO approval_table.
                  if lv_level gt 4.
                    ls_approver-approval_index = 3.
                    ls_approver-approval_agent = ls_approver3-approval_agent.
                    ls_approver-name = ls_approver3-name.
                    ls_approver-approval_description = 'Third approval step'.
                    APPEND ls_approver TO approval_table.
                    if lv_level gt 5.
                      ls_approver-approval_index = 4.
                      ls_approver-approval_agent = ls_approver4-approval_agent.
                      ls_approver-name = ls_approver4-name.
                      ls_approver-approval_description = 'Fourth approval step'.
                      APPEND ls_approver TO approval_table.
                    endif.
                  endif.
                endif.
              endif.
              no_further_approval_needed = 'X'.
            when 5.
          endcase.
        else.
Auto approval for value less than 10000 pesos.
       if ls_header_po-total_value le 10000.
         no_further_approval_needed = 'X'.
       endif.
Nothing found in table
          no_further_approval_needed = 'X'.
        endif.
    ENDCASE.
  ENDMETHOD.

Similar Messages

  • Need help setting up approval workflow step for PO and Shopping Cart

    Hello,
    We are on SRM 7.0 and setup BRF and process level config for automatic approvals of SCs and POs using task 40007988. We would now like to test approval based workflow (create work item to route to approver) using a process level step.
    1) Is there a standard task that can be used to enter in the process level step? Or should we create a new standard task? If a new task is required, what import/export parameters should be defined?
    2) How do we setup agent for this step? Are the entries u201CResp Resolveru201D and u201CResp Resolver Parameteru201D in process level config required? The BADI BD_WF_RESP_RESOLVER already has some SAP delivered implementations? Should I create a new implementation here?
    Thanks,
    Zack

    Hi,
    Welcome to new Process-Controlled Workflow implementation in SRM 70.
    You can find the task list in the transaction PFTC. Task Group 40000003.
    Please activate the BC Sets in transaction SCPR20. Find the BC Sets /sapsrm/*.
    Regards,
    Masa

  • Problem with Approval N-Step for PO

    Hi, all,
    please help me, I'm activate the WF14000145
    but it's not work, in tr. SWUD I have the error: E WS14000145 WD:401 Workflow definition '' not in version ''. I check the note the  962488 "Workflow definition '&' not in version '&'".
    1. Run the function module SWD_WFD_REPLICATE_FROM_9999.
    2. Re-activate the WF definitions in the transaction SWDD. In SWDD I see three version of WF14000145 and one -active.
    3. Check Consistency in the transaction SWUD.
    But still have this error. 
    Best regards,
    Guzal.

    Hi, all,
    I'm solved my problem. Problem was in WS14000154.
    Best regards,
    Guzal.

  • How to skip approving steps for users who are also approvers?

    We have a business need to be able to skip the approving steps for the users who are also approvers.
    For this following steps were followed :-
    1) Open .task file and go into the Assignment tab. Double click on the performer box within the routing slip, this should open the "Edit Participant Type" editor. Expand the "Advanced" section and place a check next to "specify skip rule", then click the edit icon to the right. Now enter an XPath expression that will test whether the current user is equal to the task creator.
    2) We used - isUserInRole XPath function in the "Identify Service Functions" dropdown - first param to function is the userID, the 2nd is the role name.
    We tried with hardcoded userID as well as by using
    ids:isUserInRole(/task:task/task:systemAttributes/task:updatedBy/task:id,'California')
    where 'California' is the group name (as one of the forum threads told this function works with groups).
    We also tried with swimlane roles(using bpm.getPerformer() function) but it does not work either.
    Please let me know if any one has any solution to this problem.

    session as DirectorySession = DirectorySession.currentEngineSession
    dirHum as Fuego.Fdi.DirHumanParticipant = DirHumanParticipant.fetch(session : session, id : "myUserId")
    result = hasRoleAssigned(dirHum, role : "Approver")Give that a try...
    HTH,
    -Kevin

  • How to use the Validate step for Approve step

    Hi Experts,
       I have modeled a workflow with the steps start,process, validate, approve, process and stop.
    Process is set to owner and approve is set to some other user user1.
       My requirement is as follows :
    1) Approve the records by approver and then it should send it to the next step for further processing
    1.1)  if the approver did not approve the record it should send a error message until the record is approved. So it should not send it to the next step when record is not approved
    I am using a field called item status for approving and disapproving the records. My validation is based on this field only... Validation working fine when i tested it manually.
    But my issue is when am using this validate step in workflow design validation is getting triggered for all the users.as per my requirement only approver should get the error message.But in my scenario owner is getting the error message and approver is not getting any message.
    How can i use the validate step only for particular step say approve in workflow.
    Can anyone please help me out how should use validate step only for approve step...
    Thanks & Regards
    Sireesha.
    Edited by: sireesha esukapalli on Jun 17, 2008 2:48 PM

    Hi ,
      I have set the validation property to "None".
      My design is as follows :
    start->process->validate->approve->stop.
      Owner is assigned to process step and approver is assigned to approve step.
    Now my problem is owner is also getting this error message along with the approver. AS per the design both process, approve users are getting the error message.
    As per my requirement only approver should get this prompt but not the owner.
    How can i restrict only for specifc user to get this message.
    Can anybody please advice how can restrict the owner to not get this error message...
    Thanks & Regards
    Sireesha.
    Edited by: sireesha esukapalli on Jun 24, 2008 2:18 PM

  • Single Step approval BRF Workflow for RFx.

    Hi,
    I am facing one problem in process controlled workflow for RFx. I have the scenario where I have only one approver but 7-8 reviewer are there in between of approver and initiator for example:
    Initiator >reviewer1>reviewer2->reviewer3->....reviewer8-->approver.
    For acheiving this I have activated standard single step approval workflow.
    But while I am trying to add reviewers to the RFx at the time of creation of RFx the system is not shwing the reviewers. it gets refreshed only reviewers line is added to the reviewers Tab but system did not display any reviewer.
    And while I publish the RFx it directly goes to the approver and while i tried to add the reviewer from approver end the same problem is coming.
    Please help me. How I cam achieve this functionality.
    Thanks & Regards,
    Sachin

    Hello Ashutosh,
    Thanks For your reply. I want to add reviewers at the time of creation of RFx not ad-hoc approvers.
    As I explain in my question that I have only one approver in whole approval process rest all are the reviewers only who only do the review and add comments not the approving authority.
    Thanks,
    Sachin

  • Some steps for configuring  Network are skipped in installation Solaris 10

    Hi everybody !!!
    I'm a newbie in Solaris 10. I had some problems in installation Solaris 10:
    I downloaded installation packet for x64/x86 (DVD) on site Sun.I want to install Solaris 10 on my PC AMD 2500+.I connect to internet through a LAN.
    1)In process installation, some steps for configuring Network ( from 5 to 15 in Solaris 10 installation guide) were skipped automatically. It has been directly moved to 16-th step(setup Time and region). Then i tried to finish installing it. But in working with it, i recognized that Network card had been not found( i use NVIDIA nForce MCP Networking Adapter). I typed some command in console shell :
    $netstat -in
    loo...........
    and received only one row like above.
    i have tried some times , but not succeeded
    2)Port USB is also not working
    Please help me. Thanks a lot !!!

    hi Vantuan,
    guess I just posted reply to your other post...
    also check Sun hardware compatibility list for your network card here:
    http://www.sun.com/bigadmin/hcl/data/sol/components/views/networking_all_results.page1.html
    - Jags Desai

  • GRC AC V10 - one approval step for manager and role owner

    Hello Community,
    I have one, perhaps easy, question. Where is it possible to maintain the solution of one approval step for manager and roleowner, if both are unique.
    E.g.:
    simple approval workflow: manager stage afterwards roleowner stage afterwards auto-provisioning
    So if the request is routed to the manager and the manager is also the roleowner of the requested authorization role (same UserID). The user has to approve one and the same request twice.
    Is it possible in V.10 to change the config that the user has only to approve the request once? And then to decide on which relevant stage settings are valid for this process.
    Thanks,
    Alexa

    Hi Alexa,
    We have had a similar questions raised in a project. In an ideal world, a single "Sign-off approval" would be a great functionality where the same user has to approve the same consecutive stages, but the reason for different stages would entail that the responsibilities entailed per stage differ, e.g. Line Manager would just check the over request, and the role owner etc may be reviewing the elegibility of a specifc role etc.
    If it is likely to be the same person reviewing the 2 consecutive stages, maybe a single stage workflow would be sufficient to cover this scenario.
    I think the logic you are trying to configure in the workflow is possible but will require alot of work with knowing how to create a clever custom workflow with BRF+ or the actual WF stuff in SAP itself.

  • Mail server automatically cc all email for user to other acct but group...

    Back on April 2007, David_X answered this question:
    How to have the mail server automatically cc all e-mail for user to other accounts, (gmail, hotmail, etc). Here is the old post that explains that:
    http://discussions.apple.com/thread.jspa?messageID=4357149&#4357149
    What I did not catch at the time was if you setup a Group, one of three ways, the cc step no longer works. There is a fourth way but it is not practical. Creating local groups on individual Macs.
    *Group method 1 per David_X:*
    Use edited group files on the server.
    The following sends to members of groups but does not show all recipients in the received message...
    In /etc/postfix/aliases, add...
    groupname: :include:/path/to/groupname.txt
    In a file called groupname.txt (using plaintext editor)...
    [email protected]
    [email protected]
    Reload aliases...
    sudo newaliases
    sudo postalias aliases
    sudo postfix reload
    Mail sent to [email protected] gets passed to amavisd once, before then being relayed out for each individual recipient.
    *Group method 2 per David_X:*
    Make a user, e.g., "accounts"
    In mail settings, select 'Forward' option and enter the group members' email addresses, comma separated e.g.,
    [email protected],[email protected]
    This gets a bit 'long' for lots of members.
    The email then gets sent to each of the people in this list.
    *Group method 3 that I just discovered:*
    Create a group in Workgroup Manager.
    Drag the users you want in it.
    Save.
    Test sending to that group.
    Best part, the group name shows up in Address Book if you have LDAP setup.
    So I have setup all three. If I send an email to any type of group, they work.
    The problem:
    If one of those members in the group also has a BCC setup to Gmail or any other outside email, they never get the e-mail copied out to the external account.
    Example:
    I send an email to [email protected]. He gets the email there and also a copy at his Gmail account.
    If I send an email to the Sales group that jsmith belongs to, he gets the email there but nothing at the Gmail account.
    It looks like the mail server processes the "aliases" file and skips the "Recipient_bcc" file that handles the forwards.
    Is there a way to have my cake and eat it too? David_X your thoughts also?
    Thanks everyone!

    Bump.
    Short version. Sales guy has a Gmail account he wants his e-mail copied to also.
    Send e-mail directly to his Xserve account, he gets it there and it gets sent on to his Gmail account.
    Send an e-mail to the sales Group that he is a member of, he gets it there but it never gets sent out to the Gmail account.
    Ideas?

  • Step for Adding new condition in Pricing procedure

    Hi,
      We have different pricing procedure  with different condition ,  in this procerdure i want to add one new  condition at 2 position and the requirement is that  if system found the value with this condition it should skip the 3 step and directly go to 4 step  can u give the step for this  how to add new condition to this procedure.
    regards,
    zafar

    I think you need to use condition exclusion so if the condition at step 2 is found then step 3 becomes inactive if it  is also found.
    Depnding on your pricing keys, you might be able to add a step in the access sequence on step 3 and only use a single condition (V/07) and marking that step exclusive if a record is found.

  • What are the steps for upgrading os x 10.5.8 to 10.6.7

    I'm thinking of upgrading from 10.5.8 to 10.6.x.  Can I just install over the top of 10.5.8 or do I need to do something beforehand?  Do I just insert the disk and run?
    Much obliged.

    How to Install OS X Updates Successfully
    A. Repair the Hard Drive and Permissions Boot from your current OS X Installer disc. After the installer loads select your language and click on the Continue button. Then select Disk Utility from the Installer menu (Utilities menu for Tiger and later.) After DU loads select your hard drive entry (mfgr.'s ID and drive size) from the the left side list.  In the DU status area you will see an entry for the S.M.A.R.T. status of the hard drive.  If it does not say "Verified" then the hard drive is failing or failed. (SMART status is not reported on external Firewire or USB drives.) If the drive is "Verified" then select your OS X volume from the list on the left (sub-entry below the drive entry,) click on the First Aid tab, then click on the Repair Disk button. If DU reports any errors that have been fixed, then re-run Repair Disk until no errors are reported. If no errors are reported click on the Repair Permissions button. Wait until the operation completes, then quit DU and return to the installer. Now shutdown the computer for a couple of minutes and then restart normally.  
    If DU reports errors it cannot fix, then you will need Disk Warrior (4.0 for Tiger) and/or TechTool Pro (4.5.2 for Tiger) to repair the drive. If you don't have either of them or if neither of them can fix the drive, then you will need to reformat the drive and reinstall OS X.
    B. Make a Bootable Backup Using Restore Option of Disk Utility
    Open Disk Utility from the Utilities folder. 
    Select the backup or destination volume from the left side list.
    Click on the Erase tab in the DU main window.  Set the format type to Mac OS Extended (journaled, if available) and click on the Erase button.  This step can be skipped if the destination has already been freshly erased.
    Click on the Restore tab in the DU main window. 
    Select the backup or destination volume from the left side list and drag it to the Destination entry field.
    Select the startup or source volume from the left side list and drag it to the Source entry field. 
    Double-check you got it right, then click on the Restore button. 
    C. Important: Please read before installing
    If you have a FireWire hard drive connected, disconnect it before installing the update unless you will boot from this drive and install the update on it. Reconnect it and turn it back on after installation is complete and you've restarted. 
    You may experience unexpected results if you have installed third-party system software modifications, or if you have modified the operating system through other means. (This does not apply to normal application software installation.) 
    The installation process should not be interrupted. If a power outage or other interruption occurs during installation, use the standalone installer (see below) from Apple Downloads to update.  While the installation is in progress do not use the computer. 
    D. Download and install update(s) if updating: 
    Use Software Update, or
    Download standalone updater(s).
    E. To upgrade from an earlier major version:
    Purchase the requisite installer package (Snow Leopard for example.)
    Boot from the installer DVD.
    Choose the install option:
    None required for Snow Leopard.
    Archive and Install for versions prior to Snow Leopard.

  • Customizing PO approval workflow POAPPRV for email subject/body changes

    Hi,
    The requirement is to modify the email subject/body of the emails sent to the suppliers once PO is approved.
    They would also like to remove the
    'From/To/Sent/Id' which is displayed as first section in body currently.
    I am new to workflow, so could you please guide me in achieving this?
    Is workflow customization only option?
    Do we have any other way in which the requirement can be accomplished?
    Thanks!

    >
    I would like to know how FYI gets appended before.
    in the body before the actual text, From/To/Sent/Id are all displayed. I would like to know where they are fetched from.
    I can understand it uses some template for email, but am unable to locate it.
    >
    The FYI is appended based on the type of notification. Since this message does not require any action from user, Oracle adds FYI.
    See http://apps2fusion.com/apps/workflows/327-workflow-notification-template to understand the template.
    >
    Also can you point me to good references for workflow customization.
    >
    You can look at
    Customizing seeded workflow steps
    http://www.workflowfaq.com/
    Anil Passi has good tutorials for this http://oracle.anilpassi.com/oracle-workflow-training-lesson-1-2.html
    See white paper at http://www.vivekasolutions.com/user_docs/WFCustomizationWP.pdf
    >
    Because this is the only change that am expected to do in this critical PO workflow. I dont want something else to be affected because of this.
    >
    As long as you stick to PO approval workflow, you won't affect other areas. If you modify the template (provided you find it), you may affect other areas.
    Sandeep Gandhi

  • 'Add Approver' is inactive for SRM contracts

    Dear colleagues,
    We have deal with SRM 5.5. The point is that the button 'Add Approver' is inactive for  'Approval Preview'.
    This issue regarding SRM contracts. Does anybody know how to activate usage of "add approver"  during approvement  of a contract.
    Many thanks in advance for your help.
    Kind regards,
    Grygoriy
    P/S
    I've had a look at  notice 'ADD Approver/Reviewer buttons are disabled'  by  N M Poojari ( ADD Approver/Reviewer buttons are disabled), unfortunately, author didn't point to solution of his problem. So, I'll appreciate more detailed  plan of actions.

    Thanks, Siobhan, for your reply.
    However, the problem was caused by my attempt to  to do the following steps with a wrong WF (instead standart workflow for contracts (WS14000148) we use Z-flow) :
    PFTC -> Select workflow template ->  workflow you are using -> Display -> Additional data ->
    Agent Assignment -> Maintain -> Attributes -> Select radio button
    'General Task'. -> The problem is solved
    Yours faithfully,
    Grygoriy Gavrylyuk

  • Post installation steps for PI 7.0

    Hi,
    Can anybody send me the Post installation steps for PI 7.0?
    Thanks in advance..
    ~Kumar

    Hello,
    <br><br><br>
    We did PI Installation recently and version is 7.1
    <br><br><br>
    Steps are as under...
    <br><br><br>
    <br>1.     Basic PI installation</br>
    <br><br>2.     System checks after basic installation
    <br>a.     SM50
    <br>b.     SM21
    <br>c.     ST22
    <br>d.     SM12
    <br>e.     SM13
    <br>f.     SM37
    <br><br>3.     Unlock the 001 client for cross-client changes temporarily and set system timezone (STZAC)
    <br><br>4.     Change 001 client settings back to no changes allowed.
    <br><br>5.     Create BASIS team member accounts in ABAP Stack and assign SAP_ALL.
    <br><br>6.     Set directory permission for \usr\sap\trans directory on Transport Domain Controller system.
    <br><br>7.     Import profiles (RZ10)
    <br><br>8.     Add the 4 following entries in to the instance profile and restart instance(RZ10)
    <br>a.     DIR_TRANS =
    hostname.domain.ext\sapmnt\trans
    <br>b.     icm/host_name_full = hostname.domain.ext
    <br>c.     login/system_client = 100
    <br>d.     icm/server_port_0 = PROT=HTTP,PORT=5<sysno>00,TIMEOUT=1800,PROCTTIMEOUT=1800 {SAP Note 1107808}
    <br><br>9.     Configure TMS in transport domain controller{PI DEV} (STMS)
    <br>a.     Add virtual system
    <br>b.     STMS in newly installed system and configure proper transport domain
    <br>c.     In domain controller approve the new system (STMS -> SAP system -> Approve)
    <br><br>10.     Get maintenance certificate and SAP license from service marketplace and apply in to the new system {ABAP and JAVA} (slicense and NWA)
    <br><br>11.     Kernel Update JSPM
    <br>a.     JSPM update
    <br>b.     Kernel update
    <br>c.     BC-FES-IGS update
    <br><br>12.     Support pack installation ABAP
    <br>a.     SPAM update
    <br>b.     Support packs update
    <br><br>13.     Support pack installation JAVA
    <br>a.     Apply support pack stack
    <br>b.     Apply support pack patches
    <br>i.     After JVM installation Error occurs apply MS windows KB973544 {SAP Note 1367498}
    <br>c.     Restart JSPM and continue patch installation
    <br><br>14.     Client copy from client 001 to X00 using profile SAP_ALL
    <br><br>15.     Create logical system and assign it to new client (SALE)
    <br><br>16.     Change UME target in JAVA to client X00.
    <br>a.     Enter URL as http://hostname.domain.ext:port/nwa
    <br>b.     Management -> Infrastructure -> Destination
    <br>c.     Logon data TAB change client to X00
    <br>d.     Restart JAVA Instance
    <br><br>17.     Create following users
    <br>a.     PIAFUSER, PIRWBUSER, PIISUSER, PIDIRUSER, PIREPUSER and PIAPPLUSER on the target SLD and new system manually and assign role/group SAP_SLD_CONFIGURATOR to them. {SAP Note 1309239}
    <br>b.     PISUPER in new system and assign appropriate roles in ABAP and JAVA
    <br>c.     SLD_DS_<SID> and SLD_CL_<SID> on target SLD {Use source system master password}
    <br>d.     JCoRFC_<SID> in new system
    <br>e.     Sapadm user in new system
    <br><br>18.     Assign roles and groups to BASIS team on JAVA Stack
    <br><br>19.     Create PUBLIC logon group (SMLG)
    <br><br>20.     Configure SLD collector job as sapadm (RZ70)
    <br><br>21.     Run Configuration Wizard
    <br>a.     Enter URL as http://hostname.domain.ext:port/nwa
    <br>b.     Configuration management -> Scenarios -> Configuration Wizard
    <br>c.     Select Initial Configuration and click Start.
    <br><br>22.     Create the JCoRFC connection.
    <br>a.     Enter URL as http://hostname.domain.ext:port
    <br>b.     Web Dynpro -> Content administrator -> Maintain JCo destination
    <br>c.     Fill in information for the following 4 entries using client X00 and JCoRFC_<SID> as the user {Make sure you note the distinction between Metadata and Model destinations when you are creating the destination}
    <br>i.     WD_ALV_METADATA_DEST
    <br>ii.     WD_ALV_MODELDATA_DEST
    <br>iii.     WD_MODELDATA_DEST
    <br>iv.     WD_RFC_METADATA_DEST
    (Use dictionary Meta Data for the Metadata connections, use Application Data for the Model Data connections.)
    (Use the master password for EXQ)
    <br><br>23.     Repeat for the remaining 3 JCo RFC destinations. 
    <br><br>24.     Run PI Full Qualified Host Name Wizard {SAP Note: 1320707}{Make sure you check the host names for integration server and SLD}
    <br><br>25.     Create RFC destination in to ERP target system (SM59)
    <br>a.     Give Name PI_INTEGRATIONSERVER
    <br>b.     Connection type H
    <br>c.     In Technical settings TAB provide
    <br>i.     Target host = hostname.domain.ext
    <br>ii.     Path Prefix = /sap/xi/engine/?type=entry
    <br>iii.     User information is blank
    <br><br>26.     Setting SXMB_ADM ERP target system
    <br>a.     Open Integration engine configuration
    <br>b.     Goto -> Change Global Configuration Data
    <br>c.     Role of Business system = Application System {This is optional}
    <br>d.     Provide RFC destination name in Corresponding Integ. Server = dest://PI_INTEGRATIONSERVER
    <br><br>27.     Schedule Standard Jobs as SAPADM in client X00.
    <br><br>28.     SICF service to activate
    <br>a.     /default_host/sap/public/bc/pictograms
    <br>b.     /default_host/sap/public/bc/webicons
    <br>c.     /default_host/sap/public/bc/its/designs
    <br>d.     /default_host/sap/public/bc/workflow
    <br>e.     /default_host/sap/bc/ccms
    <br>f.     /default_host/sap/bc/webdynpro/sap/CTS_BROWSER
    <br>g.     /default_host/sap/bc/webflow
    <br>h.     /default_host/sap/bc/workflow
    <br>i.     /default_host/sap/bc/workflow_xml
    <br>j.     /default_host/sap/bc/xmb
    <br>k.     /default_host/sap/bc/ping
    <br>l.     /default_host/sap/xi/wsdl_sr
    <br>m.     /default_host/sap/xi/wsdl_url
    <br>n.     /sap/bc/webdynpro/sap/appl_soap_management
    <br><br>29.     Adjusting JNLP Heap size
    <br>a.     Open the Exchange profile through the link  u201Cadministrationu201D from the  web page of the Process Integration tools.
    <br>b.     Under the folder u201CIntegration Builderu201D click on the variable u201Ccom.sap.aii.ib.clientjnlp.j2se.maxheapsizeu201D
    <br>c.     Value = 1024
    <br>d.     Save the change and restart the J2EE instance of PI so that the new value can take effect.
    <br><br>30.     Create RFC destination for Advanced Adaptor Engine in sender ERP system(SM59)
    <br>a.     RFC Destination = AAE_<SID>
    <br>b.     Connection type = G
    <br>c.     Target Host = Host Name of AAE Server {PI Server}
    <br>d.     Service No. u2013 HTTP port number of AAE Server
    <br>e.     Path Prefix = /XISOAPAdepter/MessageServlet?ximessage=true
    <br>f.     Under Logon & Security use PIAPPLUSER with PI target systemsu2019 master password.
    <br><br>31.     Create RFC destination <SID>_ALE in ERP Source system with user ERQALEUSER {Make sure you have this user created in new installed system}
    <br><br>32.     Install External Driver Configuration in Process Integration 7.1 Using JSPM {SAP NOTE: 1138877}
    <br><br><br>
    Please let me know if I am missing anything there...
    <br><br><br>
    Cheers,
    <br>
    Yogesh

  • Can anyone give me step by step for calling FM from one SAP to another SAP

    can anyone give me step by step for calling FM from one SAP to another SAP
    points will be rewarded,
    thank you,
    Regards,
    Jagrut BharatKumar Shukla

    *& Report  RFC_FOR_CUSTOMER_LIST
    *& RFC to a Fn. module from another system which implements BAPI
    REPORT  rfc_for_customer_list.
    DATA:
      fl_status TYPE i.
    DATA:
      fs_message TYPE bapiret2.
    DATA:
      BEGIN OF fs_customers,
        id   TYPE s_customer,
        name TYPE s_custname,
      END OF fs_customers.
    DATA:
      t_customers LIKE
         STANDARD TABLE
               OF fs_customers.
    CALL FUNCTION 'Z_BAPI_GET_CUSTOMER_LIST' DESTINATION 'R3N'
      IMPORTING
        return = fs_message
      TABLES
        customerlist = t_customers.
    IF sy-subrc EQ 0.
      fl_status = 1.
      LOOP AT t_customers INTO fs_customers.
        WRITE:
          /10 fs_customers-id,
           30 fs_customers-name.
        AT LAST.
          WRITE:
            /,/5 'No of customers in R3N = ', sy-tabix.
        ENDAT.
      ENDLOOP.
    ELSE.
      MESSAGE 'RFC failed' TYPE 'S'.
      EXIT.
    ENDIF.
                           TOP-OF-PAGE EVENT                            *
    TOP-OF-PAGE.
      IF fl_status NE 0.
        WRITE:
          /12 'ID'   COLOR 6,
           32 'NAME' COLOR 6.
        SKIP.
      ENDIF.
    This is one small example...
    Regards,
    Pavan

Maybe you are looking for