cancel
Showing results for 
Search instead for 
Did you mean: 

Replace or add as an approver in SRM confirmation workflow

0 Kudos

Hi,

I am using the BADI BBP_CHNG_AGNT_GET to replace or add as an approver in SRM workflow.

I need to get the SC/PO details, Along with approvers value limit/level.

please help me with code.

Regards

Ahmed.

Accepted Solutions (0)

Answers (4)

Answers (4)

0 Kudos

Hi Rp,

Thanks a lot... there is similar Include ( INCLUDE <swfcntn01>.) for work flow.. i achieved this using the same tech.

  • Data Decleration

DATA : lv_app_limit TYPE bbp_spers_al-approval_limit," Approver Approval Limit

lv_spe_limit TYPE bbp_spers_sl-spending_limit," Approver Spending Limit

lv_nod_almit TYPE bbp_spers_al-approval_limit," Add or Change Approver

lv_nod_slmit TYPE bbp_spers_sl-spending_limit," Add or Change

lv_guid TYPE crmt_object_guid, " Guid

lv_req_name TYPE req_name, " Requester Name

lv_total_val TYPE bbp_total_value, " PO/SC total value

lv_nod_user TYPE swf_bor_object, " Node User

lv_req_user TYPE swf_bor_object. " Requester Name

  • Work area

DATA: lw_agetns TYPE swdaagnt, " Agents Details

lw_sc_header TYPE bbp_pds_sc_header_d, " SC Header Details

lw_po_header TYPE bbp_pds_po_header_d. " PO Header Details

  • Constants Decleration

CONSTANTS: c_co TYPE crmt_subobject_category_db VALUE 'BUS4101', " Create Object

c_sc TYPE crmt_subobject_category_db VALUE 'BUS2121', " Shopping Cart

c_po TYPE crmt_subobject_category_db VALUE 'BUS2201'. " Purchase Order

  • Transaction Number is Space

CHECK ev_agent_assignment EQ space.

MOVE iv_guid TO lv_guid.

  • SC or PO

CASE iv_object_type.

WHEN c_sc. " Shoppin Cart

  • To get Shopping cart Details

CALL FUNCTION 'BBP_PD_SC_GETDETAIL'

EXPORTING

i_guid = lv_guid

IMPORTING

e_header = lw_sc_header.

CLEAR lv_total_val.

MOVE lw_sc_header-total_value TO lv_total_val.

WHEN c_po. "Purchase Order

  • To get Purchase Order Details

CALL FUNCTION 'BBP_PD_PO_GETDETAIL'

EXPORTING

i_guid = lv_guid

IMPORTING

e_header = lw_po_header.

CLEAR lv_total_val.

MOVE lw_po_header-total_value TO lv_total_val.

ENDCASE.

LOOP AT it_agents INTO lw_agetns.

CLEAR: lv_req_name, lv_nod_user,

lv_req_user, lv_app_limit,

lv_spe_limit,lv_nod_almit,

lv_nod_slmit.

lv_req_name = lw_agetns-agent+2.

  • Get Approval ,spending limit for all

swf_create_object lv_req_user c_co lv_req_name.

swf_get_property lv_req_user 'ApprovalLimit' lv_app_limit.

swf_get_property lv_req_user 'SpendingLimit' lv_spe_limit.

  • Get Approval ,spending limit same level or above

swf_create_object lv_nod_user c_co iv_node_user.

swf_get_property lv_nod_user 'ApprovalLimit' lv_nod_almit.

swf_get_property lv_nod_user 'SpendingLimit' lv_nod_slmit.

  • Add or Change approver: Approver should be same or above to present approver and

  • approver limit value should be greater than Total SC/PO value.

IF ( lv_app_limit GE lv_total_val OR

lv_spe_limit GE lv_total_val ) AND

( lv_app_limit GE lv_nod_almit OR

lv_spe_limit GE lv_nod_slmit ).

APPEND lw_agetns TO et_agents.

ENDIF.

ENDLOOP.

Regards.

Ahmed.

0 Kudos

Hi Sachin,

thanks for replying..

Actually i am looking for how to get approver limit values from SC/PO.

Regards.

ahmed

Former Member
0 Kudos

Hi,

Can you check it in BBP_PD

Regards,

Sachin

Former Member
0 Kudos

By the way, where are the approver limits maintained ? In a custom table or the approval limits are maintained in the HR attributes ?

If the approval limit of a user is maintained in HR Attributes, use the following code to get the approval limits of the user.

include <cntn01>.

data: ls_appr_lim type bbp_spers_al,

req_user type swc_object,

lv_appr_lim_in_reqcurr like reqhead-total_value.

  • (Pass the userid into zname).

swc_create_object req_user 'BUS4101' zname.

swc_get_property req_user 'ApprovalLimit' ls_appr_lim-approval_limit.

swc_get_property req_user 'ApprovalCurrency' ls_appr_lim-currency.

Regards,

PR.

saumya_govil
Active Contributor
0 Kudos

Hi Ahmed,

To fetch PO details in the workflow you can use business obejct BUS2012.

If BUS2012 event is the triggering event for your workflow then you can directly access the info using binding.

Else you can use an Fm to fetch PO details in the workflow.

Please specify which approach are you using so that a more suitable answer could be provided.

Regards,

Saumya

Former Member
0 Kudos

Hi,

Try to use these function modules to fetch the data-

BBP_PD_SC_GETDETAIL----->SC

BBP_PD_PO_GETDETAIL----->PO

Regards,

Sachin

0 Kudos

Hi,

I request you to please provide the solution it is very urgen.

Regards

Ahmed