Quantcast
Channel: SCN : Blog List - SAP SRM: Shopping Cart & Catalog
Viewing all 28 articles
Browse latest View live

GR Substitute in SRM

$
0
0

To Do Confirmation on the Behalf of the User who has left the Organization or is on leave/Vacation

 

Transaction MIGO in SAP and Central Goods Recipient Role in SRM is not in scope

Classic Scenario

Let say SB # xxx created by User A and let say User A has left the Organization and GR has to be done by User B

Step 1

In Transaction BBP_PD for SB double click the Goods Recipient under Partner

Step 2

Note Down the Partner Number

(This Partner number is a unique number for a user)

In this case Partner Number of User A was

5FA530FA92013A498E3FF4C57FD24389

Step 3

Go To Table CRMD_PARTNER and enter this Partner Number # 5FA530FA92013A498E3FF4C57FD24389 (User # User A)

Under this Partner Number for Partner Function

00000016 – Requestor

00000020 – Goods Recipient

Change the Partner Number for the above Partner Function to in Debug Change Mode

4A001C7132935245AD2EB39DFA64F10C (User # User B)

Now Login with User ID of User B and in the confirmation screen under extended search select the option as Goods/Services deliver to me

Henceforth User B is able to do the confirmation for SB # xxx

Extended Classic

Do the same steps for PO and User B will be able to do the confirmation for SB # xxx

In order to have consistency in PO and SC so therefore make the same changes in SC also.

 

Regards

TRINATH NAYAK


PDP Issue - PR is not getting Transfer from ECC to SRM

$
0
0

Lesson Learnt – Plan Driven Procurement Issue

 

 

PDP Scenario SRM 5.0 Vs SRM 7.0

PDP Issue

____________________________________________________________________________________________________________________________________

 

PDP SRM 5.0 Configuration Settings :-

 

Settings on SRM side:

 

  • Set up RFC Channel in ORG Structure
  • Assign RFC user to this RFC Channel
  • Assign Purchase Group to this RFC Channel
  • Set up Sourcing Configuration

Settings on ECC side:

 

  • Maintain tables V_T160EX and V_T160PR
  • Schedule the report BBP_EXTREQ_TRANSFER

 

Note- Communication between SRM and ECC is through RFC.

PDP SRM5.0.jpg

_____________________________________________________________________________________________________________________________________

 

PDP SRM 7.0 Configuration Settings:-

 

Note- From SRM7.0 , ECC6.0 (EHP4) ESOA is used so PI will be used for communication between ECC and SRM

 

Settings on ECC side:

 

  • Activate Business Function LOG_MM_P2PSE_1

  • Implement Badi  ME_REQ_SOURCING_CUST – controls transfer of the Purchase Requisition from ERP to SRM

 

  • Activation of workflow in ERP for BUS 2105 WS53800009 for events change, created, sourcingrequested (Tcode SWETYPV)

 

_____________________________________________________________________________________________________________________________________

 

 

PDP Issue- Purchase Requisition is not getting Transferred from ECC to SRM

 

Landscape- SRM 7.01 and ECC 6.0 ( EHP5)

 

Solution:

 

  •   Purchase Requisition data is send from ECC  through Function Module MMPUR_Trigger_Message to SRM. There is a table "T175ESOA_TRIG_C" in ECC which checks for Q registration ie if you want to send manually via SMQ1 then you can mainatin the entry in the table else if you want to send it automatically then do not maintain the entry.

  • BAdi implementations  on ECC side were inactive (Enhancement: PUR_SPOT_SE_PURCHASE_REQUEST, bAdi: PUR_SE_PRERPSOURCINGRQCO_ASYN). So , activated these implementations. This Badi implementation is required for XML message communication as a part of ESOA.

  • Attribute of the PI user – BUK (company code ), BWA ( Movement type – ’101’, ‘201’ ) was missing.

  • PI user should not locked.

 

 

Thanks,

Ashish Garg

Allow deletion of every single shopping cart via shopping cart monitor in SRM 7.0x

$
0
0

First of all, Deletion of shopping cart is not a standard solution.

Please refer to knowledge base article 1649794 - Status dependent control of Shopping Cart

The administrator can only change shopping carts when:

- the shopping cart was created by himself,

- the shopping cart items have the status 'Error in transfer process' (I1112).

 

Shopping Carts with item Status ‘Error in transfer process’, can be only proceed by the administrator. The administrator can in transaction Monitor Shopping Cart:

- edit the erroneous Shopping Cart items to resolve the error and reorder them again,

- delete the erroneous line items,

- retransfer the erroneous line items without change.

 

I had a need to delete a shopping cart, which has not been transferred to backend - have active status "error in transmission".

SAP provides a standard shopping cart monitor, which allow to delete shopping carts as administrator, but unfortunatelly, not for approved shopping carts.

image2013-5-12 12-7-1.png

But there is a simple solution for this. All you need is to implement a BADI /SAPSRM/BD_PDO_MONITOR_SC.

Here are some steps, how to do this.

First you should go to transaction SE18 - Business Add-Ins: Definitions, select a BADI and click on "Display" button.

image2013-5-12 12-23-21.png

Then click on "Create BADI Implementation" Button.

image2013-5-12 12-31-53.png

A new popup window will be opened.

You should enter a name for enhancement Implementation and composite enhancement implementation.

image2013-5-12 12-35-4.png

Please do it according to your naming conventions. If you want to create new composite enhancement implementation - first click on create button,

image2013-5-12 12-37-20.png

image2013-5-12 12-37-55.png

then you need to define a Package, where you want to save your implementation (Z_BADI in my case).

image2013-5-12 12-52-36.png

And define a request number for transport to Test and Productive.

image2013-5-12 12-54-9.png

After saving all the changes you'll get a new popup for BADI Implementation (will be created inside of newly created enhancement implementation).

image2013-5-12 12-56-56.png

Please enter BADI Implementation and implementation class names according to your naming conventions.

Confirm your changes.

image2013-5-12 12-58-22.png

After confirming you'll jump to windows with BADI Implementation.

image2013-5-12 12-59-42.png

Here you should navigate to implementation class (just double click).

You need to imeplement MODIFY_LIST method of the BADI. Make a double click on method name.

image2013-5-12 13-3-11.png

In the opened popup you will be prompted to implement the method.

image2013-5-12 13-6-14.png

I used following code, to change standard system behaviour.

 

METHOD /sapsrm/if_ex_bd_pdo_mon_sc~modify_list.  FIELD-SYMBOLS: <fs_header> LIKE LINE OF ct_sc_result_header,                 <fs_item> LIKE LINE OF ct_sc_result_item.  LOOP AT ct_sc_result_header ASSIGNING <fs_header> WHERE status = /sapsrm/if_pdo_status_c=>gc_pdo_sc_released                                                      AND flag_delete_allowed = abap_false.    <fs_header>-flag_delete_allowed = abap_true.    LOOP AT ct_sc_result_item ASSIGNING <fs_item> WHERE header = <fs_header>-guid                                                    AND del_ind = abap_false                                                    AND status <> /sapsrm/if_pdo_status_c=>gc_pdo_transfer_err.      <fs_header>-flag_delete_allowed = abap_false.      EXIT.    ENDLOOP.    UNASSIGN <fs_item>.  ENDLOOP.  UNASSIGN <fs_header>.
ENDMETHOD.

 

Method has a following logic: first loop via all shopping cart headers, which are approved but deletion is not allowed. For every shopping cart is by default allowed to delete it. Then is checked, whether all not deleted positions have active status "error in transfer", if not - disable deletion.

Changes should be activated.

image2013-5-12 13-24-21.png

Additionally you should implement the rest 2 mthods of the class. You may leave implementation empty (don't forget to actiovate newly implemented methods).

After activation you should be able to delete shopping carts, which have not been transferred.

image2013-5-12 13-30-25.png

Custom Requester for Sourced Purchase Requsition

$
0
0

Process: purchase requisition sourcing in SRM.

Requirement: requester of shopping cart must be defined via customer logic. In standard SAP solution requester is always an RFC-User (acces from PI System).

Remarks:

  • Following solution was designed and tested for SRM 7.01 SP 5, for tha purchase requisition transfer via SOA. If you use another version of SRM or PR transfer via RFC - you may need another solution.
  • Solution is realized with enhancements and modifications of standard SAP code. So no warranty and support from SAP.

 

Solution

Utility class

First of all you may need to create a customer utility class for requester determination.

Class will have a public static attribute and one method.

image2013-6-20 21-29-36.png

This attribute indicates the process of shopping cart creation from purchase requisition. Before creation attribute is set ot true, at the end - to false.

Value of the attribute will be used during creation process to differentiate shopping cart creation direct in SRM and via SOA.

image2013-6-20 21-36-32.png

Method get_requester is served to get user name of requester for shopping cart. Method implements customer logic and has only one returning parameter RV_UNAME type XUBNAME.

 

METHOD get_requester.  rv_requestor = 'KANIKEEV'. " Here you should define your customer logic
ENDMETHOD.

 

Enhancements

For this solution you may need to enhance/modify following methods.

First you need to enhance proxy class, which is responsible for XML processing. You may find this class via SPROXY transaction for Interface PurchaseRequestERPSourcingRequest_In.

image2013-6-20 21-45-22.png

/SAPSRM/CL_PUR_REQ_ERP_SRC_REQ->/SAPSRM/II_PUR_REQ_ERP_SRC_REQ~PUR_REQ_ERPSRC_REQ

Here you need to create pre- and post-enhancements

Pre-enhancement: ZKSH_EXT_REQ_UTIL=>MV_EXT_REQ_CREATION = ABAP_TRUE.

Post-enhancement: ZKSH_EXT_REQ_UTIL=>MV_EXT_REQ_CREATION = ABAP_FALSE.

 

/SAPSRM/CL_PDO_BO_SC->GET_REQUESTER_OF_FIRST_ITEM

Here you need to create a post-enhancement.

 

IF abap_true = zksh_ext_req_utils=>mv_ext_req_creation.  rv_uname = zksh_ext_req_utils=>get_requester( ).
ENDIF.

 

/SAPSRM/CL_CH_SOA_DO_MAP_PARTN->CONSTRUCTOR

Here you need to create a post-enhancement.

 

  DATA lv_requester TYPE xubname.  IF iv_create_user_context EQ abap_true.
* Instantiate user context    TRY.      lv_requester = zksh_ext_req_utils=>get_requester( ).      CALL METHOD /sapsrm/cl_pdo_factory_user=>get_instance_us_context_prov        EXPORTING          iv_user            = lv_requester          iv_application     = iv_application        RECEIVING          ro_us_context_prov = mo_user_context.    CATCH /sapsrm/cx_pdo_incons_user INTO lx_pdo_icons_user.      mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_icons_user ).    ENDTRY.  ENDIF.

 

/SAPSRM/CL_CH_SOA_DO_MAP_PLANT=>CONSTRUCTOR

Here you need to create a post-enhancement.

 

DATA lv_requester TYPE xubname.
TRY.  lv_requester = zksh_ext_req_utils=>get_requester( ).  CALL METHOD /sapsrm/cl_pdo_factory_user=>get_instance_us_context_prov    EXPORTING      iv_user            = lv_requester      iv_application     = iv_application    RECEIVING      ro_us_context_prov = mo_user_context.
 CATCH /sapsrm/cx_pdo_incons_user INTO lx_pdo_icons_user.   mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_icons_user ).
ENDTRY.

 

/SAPSRM/CL_CH_SOA_DO_MAP_SHTOL->CONSTRUCTOR

Here you need to create a post-enhancement.

 

DATA lv_requester TYPE xubname.
TRY.   lv_requester = zksh_ext_req_utils=>get_requester( ).   CALL METHOD /sapsrm/cl_pdo_factory_user=>get_instance_user_context      EXPORTING        iv_user         = lv_requester        iv_application  = iv_application      RECEIVING        ro_user_context = mo_user_context.  CATCH /sapsrm/cx_pdo_incons_user INTO lx_pdo_icons_user.    mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_icons_user ).
ENDTRY.

 

/SAPSRM/CL_SOA_PUR_REQ->CREATE_PDO_SC_INSTANCE

Here you need to create a overwrite-enhancement.

image2013-6-20 22-3-20.png

METHOD iow_zksh_ei_cl_soa_pur_req~create_pdo_sc_instance.
*"------------------------------------------------------------------------*
*" Declaration of Overwrite-method, do not insert any comments here please!
*"
*"methods CREATE_PDO_SC_INSTANCE .
*"------------------------------------------------------------------------*    DATA:      lo_pdo_message_handler TYPE REF TO /sapsrm/if_pdo_msg_consumer.
* Exceptions    DATA:      lx_pdo_wf_mode_ban      TYPE REF TO /sapsrm/cx_pdo_wf_mode_ban,      lx_pdo_wrong_bus_type   TYPE REF TO /sapsrm/cx_pdo_wrong_bus_type,      lx_pdo_pd_read_error    TYPE REF TO /sapsrm/cx_pdo_pd_read_error,      lx_pdo_lock_failed      TYPE REF TO /sapsrm/cx_pdo_lock_failed,      lx_pdo_no_authorizatio  TYPE REF TO /sapsrm/cx_pdo_no_authorizatio,      lx_pdo_parameter_error  TYPE REF TO /sapsrm/cx_pdo_parameter_error,      lx_pdo_status_error     TYPE REF TO /sapsrm/cx_pdo_status_error,      lx_pdo_incons_user      TYPE REF TO /sapsrm/cx_pdo_incons_user,      lx_pdo_error            TYPE REF TO /sapsrm/cx_pdo_error,      lx_pdo_abort            TYPE REF TO /sapsrm/cx_pdo_abort.    DATA lv_requester TYPE xubname.    TRY.
*     Create Shopping Cart instance        lv_requester = zksh_ext_req_utils=>get_requester( ).        CALL METHOD /sapsrm/cl_pdo_factory_sc_adv=>create_new_instance          EXPORTING            iv_uname           = lv_requester            iv_bosubtype       = 'ER'          IMPORTING            eo_message_handler = lo_pdo_message_handler            eo_sc_instance     = me->core_object->mo_pdo_pr.        zsrmcln_ext_req_utils=>set_pdo( me->core_object->mo_pdo_pr ).      CATCH /sapsrm/cx_pdo_wf_mode_ban INTO lx_pdo_wf_mode_ban.        me->core_object->mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_wf_mode_ban ).      CATCH /sapsrm/cx_pdo_wrong_bus_type INTO lx_pdo_wrong_bus_type.        me->core_object->mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_wrong_bus_type ).      CATCH /sapsrm/cx_pdo_pd_read_error INTO lx_pdo_pd_read_error.        me->core_object->mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_pd_read_error ).      CATCH /sapsrm/cx_pdo_lock_failed INTO lx_pdo_lock_failed.        me->core_object->mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_lock_failed ).      CATCH /sapsrm/cx_pdo_no_authorizatio INTO lx_pdo_no_authorizatio.        me->core_object->mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_no_authorizatio ).      CATCH /sapsrm/cx_pdo_parameter_error INTO lx_pdo_parameter_error.        me->core_object->mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_parameter_error ).      CATCH /sapsrm/cx_pdo_status_error INTO lx_pdo_status_error.        me->core_object->mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_status_error ).      CATCH /sapsrm/cx_pdo_incons_user INTO lx_pdo_incons_user.        me->core_object->mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_incons_user ).      CATCH /sapsrm/cx_pdo_abort INTO lx_pdo_abort.        me->core_object->mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_abort ).      CATCH /sapsrm/cx_pdo_error INTO lx_pdo_error.        me->core_object->mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_error ).    ENDTRY.    CALL METHOD me->core_object->mo_msg_hdlr->set_message_consumer      EXPORTING        io_message_handler = lo_pdo_message_handler.  ENDMETHOD.                    "IOW_ZKSH_EI_CL_SOA_PUR_REQ~CREATE_PDO_SC_INSTANCE

 

Modifications

/SAPSRM/CL_CH_SOA_DO_PR_ITM->CONSTRUCTOR

 

METHOD constructor.  DATA : ls_ipt LIKE LINE OF mt_allowed_ipt,         lt_limit_ipt LIKE   mt_allowed_ipt.
* Exceptions  DATA:    lx_pdo_icons_user      TYPE REF TO /sapsrm/cx_pdo_incons_user.  CALL METHOD super->constructor    EXPORTING      io_base_mapper = io_base_mapper      io_msg_hdlr    = io_msg_hdlr.
* Instantiate DOs  me->init_do( ).
* Set node name  me->mv_node_name = 'PR_ITEM'(001).    "#EC *
* Instantiate user context  TRY.
*{   REPLACE        **********                                        1
*\      CALL METHOD /sapsrm/cl_pdo_factory_user=>get_instance_user_context
*\        EXPORTING
*\          iv_user         = sy-uname
*\          iv_application  = iv_application
*\        RECEIVING
*\          ro_user_context = mo_user_context.      DATA lv_requester TYPE xubname.      IF abap_true = zksh_ext_req_utils=>mv_ext_req_creation.        lv_requester = zksh_ext_req_utils=>get_requester( ).      ELSE.        lv_requester = sy-uname.      ENDIF.      CALL METHOD /sapsrm/cl_pdo_factory_user=>get_instance_user_context        EXPORTING          iv_user         = lv_requester          iv_application  = iv_application        RECEIVING          ro_user_context = mo_user_context.
*}   REPLACE    CATCH /sapsrm/cx_pdo_incons_user INTO lx_pdo_icons_user.      mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_icons_user ).  ENDTRY.
**** Get the Hierarchy Template and Store it  CALL METHOD /sappssrm/cl_ih_cust_prov=>get_template_from_trans_type    EXPORTING      iv_process_type       = 'EXTR'    RECEIVING      rv_hierarchy_template = mv_hier_template.
**** FILL THE HIERARCHY TEMPLATE and Allowed IPT's.  CALL METHOD /sappssrm/cl_ih_cust_prov=>get_allowed_ipt_full    EXPORTING      iv_hier_templ  = mv_hier_template      iv_object_type = 'BUS2121'    RECEIVING      rt_ipt         = mt_allowed_ipt.  READ TABLE mt_allowed_ipt INTO ls_ipt WITH KEY ps_ctrl_key = '0001'.  CALL METHOD /sappssrm/cl_ih_cust_prov=>get_allowed_ipt_full    EXPORTING      iv_hier_templ  = mv_hier_template      iv_object_type = 'BUS2121'      iv_ps_ipt      = ls_ipt-ps_ipt    RECEIVING      rt_ipt         = lt_limit_ipt.  APPEND LINES OF lt_limit_ipt TO mt_allowed_ipt.  SORT mt_allowed_ipt BY ps_ctrl_key.  DELETE ADJACENT DUPLICATES FROM mt_allowed_ipt COMPARING ps_ctrl_key.
ENDMETHOD.

 

/SAPSRM/CL_CH_SOA_DO_PR_ITM->ADD_ITEM

 

METHOD add_item.
* Exceptions  DATA:    lx_pdo_no_authorizatio TYPE REF TO /sapsrm/cx_pdo_no_authorizatio,    lx_pdo_abort           TYPE REF TO /sapsrm/cx_pdo_abort,    lx_pdo_incons_user     TYPE REF TO /sapsrm/cx_pdo_incons_user,    lx_pdo_curr_error      TYPE REF TO /sapsrm/cx_pdo_curr_error,    lx_pdo_cat_not_allowed TYPE REF TO /sapsrm/cx_pdo_cat_not_allowed,    lx_pdo_prd_not_unique  TYPE REF TO /sapsrm/cx_pdo_prd_not_unique,    lx_pdo_prd_not_found   TYPE REF TO /sapsrm/cx_pdo_prd_not_found.  TRY.
*{   REPLACE        **********                                        1
*\      CALL METHOD io_pdo_sc->/sapsrm/if_pdo_bo_sc~add_item
*\        EXPORTING
*\          iv_uname           = sy-uname
*\          is_item            = is_bbp_item
*\          iv_account_from_pr = iv_account_from_pr
*\        IMPORTING
*\          es_return          = es_return
*\        CHANGING
*\          co_message_handler = mo_pdo_consumer.      DATA lv_user TYPE xubname.      DATA lo_us_context TYPE REF TO /sapsrm/if_pdo_user_context.      lo_us_context = /sapsrm/cl_pdo_factory_user=>get_buffered_user_context( ).      IF lo_us_context IS BOUND.        lv_user = lo_us_context->/sapsrm/if_pdo_us_context_cons~get_user( ).      ELSEIF abap_true = zksh_ext_req_utils=>mv_ext_req_creation.        lv_user = zksh_ext_req_utils=>get_requester( ).      ELSE.        lv_user = sy-uname.      ENDIF.      CALL METHOD io_pdo_sc->/sapsrm/if_pdo_bo_sc~add_item        EXPORTING          iv_uname           = lv_user          is_item            = is_bbp_item          iv_account_from_pr = iv_account_from_pr        IMPORTING          es_return          = es_return        CHANGING          co_message_handler = mo_pdo_consumer.
*}   REPLACE    CATCH /sapsrm/cx_pdo_cat_not_allowed INTO lx_pdo_cat_not_allowed.      mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_cat_not_allowed ).    CATCH /sapsrm/cx_pdo_no_authorizatio INTO lx_pdo_no_authorizatio .      mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_no_authorizatio ).    CATCH /sapsrm/cx_pdo_abort INTO lx_pdo_abort.      mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_abort ).    CATCH /sapsrm/cx_pdo_incons_user INTO lx_pdo_incons_user .      mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_incons_user ).    CATCH /sapsrm/cx_pdo_curr_error INTO lx_pdo_curr_error.      mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_curr_error  ).    CATCH /sapsrm/cx_pdo_prd_not_unique INTO lx_pdo_prd_not_unique.      mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_prd_not_unique  ).    CATCH /sapsrm/cx_pdo_prd_not_found INTO lx_pdo_prd_not_found.      mo_msg_hdlr->add_exception( io_pdo_error_exception = lx_pdo_prd_not_found  ).  ENDTRY.
ENDMETHOD.

 

As a result you should become a custom requester for shopping carts, created from backend purchase requisitions.

 

P.S.:  English language is not my native language, and any person is not insured from mistakes and typing errors. If you have found an error in the text, please let me know.

P.P.S.: If you have some remarks or hints - please don't hesitate to leave a comment.

Reports to be used when transferring failed shopping carts

$
0
0

In this post, I would like to share some experiences that I have with reports used to resubmit shopping carts that are stuck in status I1111, failed in status I1112 and also without any item status.

 

If note 1499352 is not applied:

Before redesign note 1499352 is released/applied in SRM, shopping carts that were stuck in status I1111 - "Item in transfer process" should be processed by report BBP_ALERT_SB_NOTTRANSFERED.

This report checked shopping carts that were in status I1111 and then changed their status to I1112 - "Error in transmission".

Once this was done, administrator could access the Monitor Shopping Cart, correct the document and retransfer it.

Transfer could also be done from Application Monitor.

 

Note 1480994 provides more details about this process.

 

If note 1499352 is applied:

Note 1499352 changed all shopping cart transfer design. Propose of this note was to correct all transfer and update issues that occurred during the shopping cart transfer and follow-on document creation.

Once note 1499352 is applied in SRM, report BBP_ALERT_SB_NOTTRANSFERED is not valid anymore.

 

Note 1734421 provides more information about this.

 

Therefore, if note 1499352 is applied/delivered by support package, new report BBP_SC_AUTO_RETRANSFER is available.

This report needs to be scheduled as background job and it will try to transfer shopping carts that are pending in status I1111. If, after some attempts, follow-on document is not created, this report will change shopping cart status from I1111 to I1112 and then administrator will be able to correct the cart in Shopping Cart Monitor and retransfer it.

 

An entry will also appear in Application Monitor, saying what occurred during the cart transfer that avoided follow-on document creation.

 

If attempts to create follow-on documents is successfully achieved, status will change to I1113 - "Follow-on document created".

 

Note 1499352 explains how this report works and the parameters to be used when executing it.

It is importanto to read this note carefully. It provides important information.

 

In additiion, I would recommend to apply note 1788671. This note inserts shopping cart number as input parameter in report BBP_SC_AUTO_RETRANSFER. Then, it will be able to execute the report only for a specific cart.

 

Retransferring Shopping Carts from Monitor Shopping Cart:

In Monitor Shopping Cart, there is a button "create follow-on documents".

This button will be enabled when cart is in "error in transmission" status. However, in order to have this functionality working, workflows WS 10000214 and WS 10000215 should be active.

 

Note 387701 describes this topic.

 

For further information, check KBA 1734421 - Report BBP_ALERT_SB_NOTTRANSFERED does not work anymore.

SRM User Interface Add-On - Configuration and Implementation Information

$
0
0

I'm getting a number of questions on where to find the configuration and implementation information for the SRM User Interface Add-On.  The best resources are:

 

    1. SRM Master Guide : service.sap.com/srm-inst => SAP SRM UI Add-on
    2. SAP Notes: 1752753 (for Installation planning), 1760438 (Release Info note with all dependencies), 1830075 (User defined fields enablement), 1848843  (Sizing)
    3. SRM UI Add-on Configuration Guide - Note 1911004

 

Hope this helps and that it's a quick and easy implementation for you.

 

 

Shopping cart quantity rounding

$
0
0

Hello,

 

I have noticed that some users are complaining that quantity with decimal places in shopping cart is being rounded, even when BAdI BBP_ROUNDING_BADI is not active. Therefore, I would like to share with you the standard design in this topic.

 

This is occurring mainly in SRM 5.0, when support package higher than 20 is applied.

 

In support package 20, note 1264188 has been introduced.
Such note ensures that rounding in shopping cart will occur based on UOM settings defined in transaction CUNI, as per code below available in FM BBP_PDH_QUANTITY_ROUNDING:

 

* the standard SRM solution does only round the Purchase order
quantities
* and Shopping cart Quantities based on CUNI settings...
  IF is_icom_rounding-object_type EQ c_po or
is_icom_rounding-object_type EQ c_shop.
*   Round the value to the next valid value
*   according to the data of the T006 Customizing ...
    PERFORM convert_value_according_to_uom
                USING    iv_unit
                CHANGING lv_quantity.
  ENDIF.

 

Checking UOM in CUNI, field "Decimal pl. rounding" defines how many decimal places are used.

As per logic available in form convert_value_according_to_uom, if "Decimal pl. rounding" is set as 0, rounding will occur for UOM.
If such settings is maintained as 3, for example, rounding will not occur and decimal places will be kept as initially.

Therefore, in order to avoid the rounding, field "Decimal pl. rounding" should be customized in transaction CUNI for UOM in question. This is the responsible transaction in SRM to define the decimal place rounding for quantities.

 

Of course, BAdI BBP_ROUNDING_BADI can overwrite this.

 

See KBA 1700884 for more details.

Goods recipient search help in shopping cart

$
0
0

Hello,

 

Some users have doubts related to "Goods recipient" search help, that is available in shopping cart. Users complain that no results are displayed.

In order to clarify this, I have decided to write this blog.

 

Results for "Goods recipient" search help will be populated when attribute "Requisitioner" is customized in PPOMA_BBP.

It is the same setting for "Buy on Behalf" search help.

 

Therefore, in order to have results in this search help, go to PPOMA_BBP and select user who is creating the cart.
Then, go to attributes tab and select "Requisitioner". Populate this field with following information:

 

US<USERNAME> - To have only one user name displayed in search help

or
O <ORGANIZATION ID> - To have the entire organization unit displayed in search help

 

Just pay attention that when organization ID is populated in this attribute, performance issues can occur, depending on the number of users assigned to this organization. In such case, please read note 1095895, that suggests the use of BAdI BBP_F4_READ_ON_ENTRY.

 

Even though description of badi BBP_F4_READ_ON_ENTRY is maintained as "obsolete" in SRM 7.0X, it is still being called from function module BBP_GET_BOBUSERS_F4.

 

You can read KBA 1867092 for further information about this topic.

 

Regards,

Ricardo


SRM Product Support - we are here to help.

$
0
0

 

How can we help you?

 

What topics would you like to see more information on?

 

 

We are the SRM Product Support team. We work in many areas of the SRM application.

 

Reply to the blog with your topic(s) of interest. We will write about it for you.

 

Please note the topics must be general and not customer specific. If we do not have an expert in that area we will try to research it for you if possible. This may not always be possible but we will try!

 

Big or small, easy or hard, important or trivial, we will strive to help you with any and all problems. All we ask is that they are generic issues.

SRM UI Add-On - A web-like shopping experience for casual users

$
0
0

SAP SRM User Interface Add-On 1.0 is a user experience for casual users to create shopping carts (purchase requests) from catalogs with little or no training. The familiar look-and-feel and dynamic web page features that users enjoy from online shopping and internet search experiences have been incorporated into their corporate buying experience. Users can search across catalogs (internal and external catalog content) to quickly find the products and services they need to order. Companies can customize the user interface to their familiar corporate branding and unique procurement processes.

 

 

 

SRM UI Add-on.png

 

 

 

SAP SRM User Interface Add-On 1.0 is a non-modifying add-on that will quickly implement on top of an existing SRM 7.0 landscape. Customers do not need to modify any configuration in their SRM landscape. With the ease of implementation, customers will be able to increase SRM adoption within their organization to realize process efficiencies, drive contract compliance and improve purchasing control.

 

 

 

Key Capabilities

  • Cross-catalog Search - includes internal and external catalog content and material masters
  • Search results – familiar user-interface with filtering, mini tray, and product details, including images and related product information
  • Checkout - Quick checkout or change item details. Users can update multiple line items at once.
  • Order Tracking

 

 

Key Value Propositions

  • Casual users can buy products and services that they need with little or no training.
  • Improve compliance with company purchasing rules and contracts
  • Reduces the number of steps to get information, such as order tracking
  • Ability to process multiple items efficiently
  • Reduce errors and re-processing

 

An overview presentation can be found on the Service Marketplace at https://websmp208.sap-ag.de/~sapidb/011000358700000171162013E.pdf

MASTER DATA REPLICATION SETTINGS (ECC -SRM)

$
0
0

Once the integration of SRM system with backend R/3 (ECC) system gets underway the following settings needs to be maintained before the replication of master data.

The settings that need to be maintained in backend R/3:

 

1. CRMCONSUM table needs to be maintained using SM30 transaction for the possible users of Adapter functionality.

 

1.jpg

2.png

 


The entry for SRM (User) is maintained in the table with the Active column checked.

 

2. CRMSUBTAB table needs to be maintained for up & download of objects using T-code SM30 .

 

3.png

 

4.png

 

Maintain the entries for SRM user as shown in the above screen shot by copying the same from CRM user.

 

3. CRMRFCPAR table needs to be maintained for defining the RFC connections using  T-code  SM30.

5.png

6.png


Maintain the object name, RFC destination and load type for the SRM user by copying the required objects from CRM user.

 

4. CRMPAROLTP table needs to be maintained with the OLTP parameters for the user using t-code SM30 .

 

7.png

8.png

 

The OLTP parameters and the parameter values have to be maintained to the SRM user.


The following settings need to be maintained in SRM (EBP) system:

 

1. SMOFPARSFA table needs to be maintained for Middleware parameters using t-code SM30.

 

9.png

10.png

 

11.png

 

The key, parameter name, middleware user name and parameter value needs to be maintained in the table.


2. Middleware parameters need to be setup using SMOEAC (Administration console).

 

12.png

 

Select the object type as site and click on the filter icon.

 

13.png

 

The nodes of CRM & R/3 should get displayed under Site types.

 

14.png

 

15.png

 

 

Create object SRM under CRM node by clicking on create new objects icon and enter the object information. The site attributes window will pop up when the site attributes tab is clicked.

 

16.png

17.png

Create object EC2CLNT300 (backend server) under R/3 node by clicking on create new objects icon and enter the object information. The site attributes window will pop up when the site attributes tab is clicked.


Once you create the objects the nodes will be displayed as under:

 

18.png

 

 

3. Ensure that no entries are there in “Assign Hierarchies to Applications” table using
   COMM_PRAPPLCAT transaction.

 

19.png

 

4. Ensure that there are no inbound queues in SRM using SMQ2 transaction and no
   Outbound queues in R/3 using SMQ1 transaction before starting the initial upload.
  
5. Ensure that the customizing objects are maintained and active in the Adapter overview using R3AC3 transaction.

 

20.png

21.png

Ensure that the below mentioned objects are active :

 

DNL_CUST_BASIS3
DNL_CUST_PROD0
DNL_CUST_PROD1
DNL_CUST_SRVMAS


6. Once the above steps are ensured then start the initial upload using R3AS transaction.

 

Select the load object as DNL_CUST_BASIS3 and enter. The source site and destination site gets automatically defaulted. Then execute using execute icon.

 

22.png

 

Similarly load other objects:

DNL_CUST_PROD0
DNL_CUST_PROD1
DNL_CUST_SRVMAS

 

7. The loaded objects can be monitored using R3AM1 transaction.

 

23.png

 

Enter the object name and execute. The following screen gets displayed.

 

24.png

The status of the object gets displayed as shown in the above screen shot.

 

8. Once all the objects were successfully uploaded. The replicated hierarchies, material groups and material types can be checked using COMM_HIERARCHY transaction.

 

25.png

 

Choose hierarchy in the Find tab and click on start. The replicated backend R/3 hierarchies get displayed.

 

By double clicking on R3MATCLASS hierarchy all the material groups replicated from the backend can be seen.

 

SS.png

 

Similarly all the material types replicated from the backend R/3 can be seen by double clicking the R3PRODSTYP hierarchy.

 

 

9. Maintain business adapter objects using R3AC1 transaction in adapter object overview.

 

26.png

 

 

Select Material and click on details and maintain filter settings.

 

27.png

 

Similarly maintain filter settings for SERVICE_MASTER.

 

28.png

 


10.   Once the above settings are complete replicate the backend R/3 materials and services using R3AS transaction and clear the inbound and outbound queues in SRM & R/3 respectively before executing this transaction.

 

29.png

 

Enter the load object and press enter the source site and destination site gets automatically defaulted. Then execute the transaction. The status of the object can be seen using R3AM1 transaction.


Similarly the service master can be replicated from R/3 by executing the SERVICE_MASTER load job.

 

11. Once the replication is successfully completed, the replicated materials and services can be seen using COMMPR01 transaction.

 

Select Materials in Find tab and click on start button. The materials replicated from backend can be seen. The replicated services can also be viewed in a similar way.

Extending SRM NXP Shoppingcart with an action on a custom field (JS/UI5)

$
0
0

At my current customer, we have extended the SAP Shopping cart structures with a couple of custom fields. One of those fields contains a field on which the shipping address needs to be re-determined.Currently, the SAP NXP (UI5) shopping cart does an initial load of the shipping address, but there is no re-determination done on a round trip.

 

To make sure that the shopping cart we are implementing corresponds with the current workflow, this has to be implemented. Doing so, I came to the conclusion that:

 

1. There wasn't a lot of information available on how to do so.

2. The cookbook for SRM NXP contains an error which caused a big search in how to implement it correctly.

 

Since I think sharing is key, i'll post my findings.

 

The first thing I came across, is that if I use the filename "custom2.js" for my custom function, it somehow doesn't get parsed by the extensibility classes. Choosing a file name that is different from this (custom.js in my case), somehow parses correct.

 

As soon as I saw my console.log() messages turning up in my JavaScript console, I was able to implement my custom-code.

 

CUSTOM = function() {
}
CUSTOM.prototype.CUSTOM_POST_EXIT = function (methodName, view, controller, methodSignature) {     if (view.oView.sId == "singleitemdet_id") { // View which contains my Z-Fields             var crtl = view.oView.getController();             var modelData = crtl.getView().getModel().getData();             var lData = crtl.loadedData;             if ( modelData.<myZ-field> != lData.<myZ-field> ) { // Comparison on object-level works better than using the response of the method.              window.execRefresh = true; // Set parameter on the window, so i'ts globally available.             }     }     if (view.oView.sId == "shipAddress" ) { // Shipping address view         var crtl = view.oView.getController();         if (window.execRefresh) {             crtl.refresh("MODE_SWITCHED"); // Do the actual refresh on the shippingaddress object.             window.execRefresh = false;         }     }
};

This custom code actually reuses the existing method on the shipping address controller to make sure it's being refreshed but by checking for a change, it allows the address being changed without overruling the change with a refresh.

Banner Image configuration as per note 1821203 for Non Microsoft Windows systems.

$
0
0

Symptom

In the Configuration UI of the catalog, the customer provides the path to the image to be displayed as the Banner instead of the Default Banner image "Procurement Catalog". But the new image is not displayed as the banner and the default image Procurement Catalog is shown.

 

The issue is noticed mostly in cases where the image is kept in non-Microsoft Windows systems or network folders.

 

 

Reason

The issue occurs due to exceptions while fetching the image from the specified folder. Here the customer specific image is replaced by the default image.

 

Prerequisites

  1. The Image name must end with User's logon language.Ex:"banner_image_en.jpg" or "banner_image_de.gif""
  2. The image resolution may be within 274x30.

 

Solution

  1. Copy the image to the J2EE engine path where the image is accessible    for everyone. For ex: /usr/sap/ /JC< ID>/j2ee/cluster/server0/temp/webdynpro/web/sap.com/tc~mdm~srmcat~uisearch/Components/com.sap.mdm.srmcat.uisearch.Master/

 

Note: Please make sure the image is kept in a folder within "sap.com" folder.

 

  1. Set the path in the Configuration UI Path with the image path ending    with User's logon language.
  2. Relaunch the SRM-MDM Catalog.

SRM UI5 shopping cart blank when starting (JavaScript problem!)

$
0
0

To all SRM guys, who are facing a current problem with SRM 7 (EHP 3) UI5 shopping cart not starting.

 

My System:

SRM 7

EHP 3

UISRM200 SP6

SRMNXP01 SP6

 

I was struggling a few days now with a problem, that after new Installation of SRM 7 EHP3 and
activation of UIADDON the UI5 shopping cart was not starting.

 

After Login the tab text of the browser was changing to "Enterprise Search", but the main screen

remains grey and empty.

 

There is an old OSS Note 1847792 referencing a SHELL.JS.BAK which must be changed to .JS.

I changed this but with no positive further result.

 

There is no actual advice, not in OSS or in SCN or GOOGLE...

 

Our browser problems where:

 

* After Login Screen is grey

* Error message: "Reference error, extensibility not defined"

* Chrome browser debug (F12) showed an abort because of missing MessageHandlerRenderer.js.

 

PROBLEM: There is another MIME file MessageHandlerRenderer.js with extension .BAK !!!

==========================================================================

 

Where do you find this file?

 

SE80

MIME Repository

SAP -> Public -> BC -> UI5 -> Libaries -> SSPUX -> META-INF -> Resources -> srm_usability_control_lib

 

MessageHandlerRenderer.js.BAK

 

has to be changed

 

to MessageHandlerRenderer.js

 

Use properties to change extension. System change mode for namespace /SRMNXP/ must activated !

 

Best regards
Klaus Wegener

SRM UI5 with Apache SOLR search engine

$
0
0

The purpose of this blog is the discussion about the search engine provided for SRM UI5. Not to forget, a search engine is the heart of a Web Shop architecture and one of the key success factors for a user friendly shopping experience, also in SAP. By default, SRM UI5 is delivered with SAP Trex serving as a search engine. This means, Catalog Content has to be loaded from a Catalog Management System into so called Staging Tables on SAP NetWeaver (SRM). From there, catalogs are indexed into SAP Trex.

 

Comparing other Web Shops and internet sites with huge amount of catalog data, Apache SOLR turned up to be one of the most popular and most powerful Open Source search engines in the internet. What if you consider a Catalog Management system which operates directly on Apache SOLR without the need for catalog replication? In fact this will make your catalog process very fast and efficient. Catalogs can be loaded by buyers and suppliers and they are becoming active directly after approval. See below Screencast for the powerful search capabilities supporting real-time boosting of search results, facetted search, multi language catalogs, real-time catalog view assignment and real-time catalog view filters.

 

 

Further information on SOLR can be found here:

 

WIKI: Apache Solr - Wikipedia, the free encyclopedia

 

Apache SOLR Homepage: Apache Solr

 

Catalog Cloud Services: Catalog Cloud Services

 

When looking into above solutions, consider the following KPIs which have been addressed by many customers:

  • increase usability for end users
  • keep the IT simple and costs low
  • leverage the already existing and powerful tools

 

Your comments, questions, concerns and any further ideas and proposals are welcome.


Catalogs as the Center of Procurement Compliance

$
0
0

Contracts are often depicted as the linchpin between Strategic Sourcing, the processes that generate value and competitive advantage for companies, and Operational Procurement, the execution phase where value is realized.  Contract compliance is a top Key Performance Indicator (KPI) for best-in-class Procurement organizations because the greater the compliance, the higher the cost savings.  Compliance is a best-in-class objective, but is contract compliance too narrowly focused?

 

Catalogs allow companies to achieve compliance for more spend categories plus offer usability and familiarity that encourage adoption.  Accordingly, I am planning a few blog posts on catalog strategies to get the most out of the true center of Procurement.

 

 

Catalogs are the center

 

Strategic Sourcing and contract creation are often multi-month processes that involve many resources.  The associated cost is often reserved for important products and services for the company’s supply chain, competitive advantage, and mitigating down time.  However, there are other cost-appropriate ways that Procurement will influence spend in other categories and achieve the broad goals of right suppliers and cost savings.  The spend influenced by procurement is often controlled systematically using methods like approved supplier lists or source lists, inforecords (PIRs), quote awards, rate cards, supplier-category discounts, pricing for configurable items, and even 3rd party verified items.  Often in a Procurement system, these methods need to be maintained in different places and by multiple people.  Thus, we have seen in many companies that not all spend is under compliance, or out-of-date information leads to downstream fixes and possibly onerous invoice exception processes.   Furthermore, the laborious task for employees to enter information leads to contracts left “in the drawer”.   However, the multitudes of pricing arrangements, the fruits of strategic sourcing and managed spend, can be recorded and maintained centrally in the catalog with relative ease. 

 

This central repository for the right price and right supplier (specific to each company) should be accessible from a variety of internal processes and systems to achieve compliance and realize value.  Employees throughout the organization are working in a variety of systems in their daily routines: Purchasing, Plant Maintenance, Project, Planning, Bidding, Contract, and Invoicing to name a few, and generating documents that they need to perform their jobs and comply with company rules and policies.  Some of those documents include:

 

  • Requisitions
  • Purchase Orders
  • Projects
  • Work Orders
  • Blanket/Limit Items
  • Service Entry
  • Invoices
  • Contracts
  • RFx/Auction

 

In Procurement execution, catalog integration with all employee systems ensures that employees throughout the company are driving compliance across all spend categories regardless of the process.   

 

Usability equals adoption

 

Compliance doesn’t happen if users ignore the systems, or use them inappropriately.  Usability is not only a familiar and intuitive experience that looks good, but also puts the process in the user’s critical path.  If the user has to stop what they are doing and start a new process, gets stuck, or has to process something at a later time, then the inefficiency will devalue the experience.  The process may get delayed, or even worse, may not get done at all.  I have seen companies ready to throw out an entire system because a C-level person couldn’t perform an approval.  When satisfaction increases, more people will use the system, which leads to an increase in compliance and better visibility on spend. 

 

What is the benchmark? What is familiar?  Employees are already using online shopping, email, and internet searches for example in their daily lives.  Have you heard, “can’t this be more like Amazon”? Accordingly, a good user experience will draw on the familiar and intuitive, which in turn, will reduce the need for training.  Most people who look at online catalogs will likely figure out what to do because the catalog is a familiar tool for product search and online buying. 

 

Mobile applications are also very familiar to users and have the added value of being portable.  For Procurement, that means employees can buy products and services when the need arises.  Business takes place away from the desk, procurement should too. Nevertheless, many mobile Procurement user interfaces focus on fitting the interface to the screen rather than enabling the mobile use case.  Mobile devices provide a context, such as location.   Catalogs allow users to match that context to products and services, including the parts that are frequently bought for that location as an example. The catalog then gives the mobile workforce access to a true marketplace to make product and service decisions to meet their requirements on the spot.  Furthermore, employees who use the catalog don’t necessarily need to know all the information required to make a requisition (eg: accounting).  They can use the catalog to identify the need, and then the power users in requisitioning systems can add the missing information.

 

 

 

Enterprise Underneath, Simple on the face

 

Usability isn’t just about enabling simple processes, but even making the hard processes seem simple. Catalogs can guide users through a process or Standard Operating Procedure (SOP).  Online forms, rate cards, and configurable products in the catalog can guide users through questions or present a series of choices to the user that will determine the right price for a product or service.  Many companies also have requirements for information that needs to be on the purchasing documents for a particular category. The catalog forms can prompt the user to enter the required information. 

 

These same forms can also be customized to ask the user the question in a language they understand. We often found that users didn’t know what to enter for “expected value” and “total value” for a limit item.  With catalogs, the user can just enter the information as they know it based on familiar prompts.  The catalog will then map the responses to the appropriate system fields.   Users work in their familiar process and terminology, but the catalog does the work to make the data work for the system.

 

Catalogs have come a long way to enable companies to run their processes and customize the user experience to the way the company does business.  However, for the catalog to be effective, the data has to be there. Like a contract, compliance doesn’t happen if the contract is in the drawer.  The tools to get product content, supplier information, and schemas have become easier to administer, and once set up, can often flow through a workflow as an exception process.  Data can often be more integrated to the source systems that generate the data, such as contracts.  In addition, the catalog can be administered by the supplier who knows their data and wants to promote their products and services to their customers.

 

Full Circle


As we come full circle, we see now how the catalog sits at the center between strategic sourcing and operational systems to drive compliance to what Procurement has predetermined as the means to cost savings and the best use of funds.  Procurement’s reach to generate value covers more than just contracted products and services.  Accordingly, the mechanisms at Procurement’s disposal to enforce compliance should also extend beyond contracts and should be managed centrally.  Procurement’s job is easier when the organization uses the tools and uses them correctly.  The familiarity and the ease-of-use of catalogs is driving that adoption and enabling companies to realize best-in-class. 

 

More to Come

 

In my experiences I haven’t seen enough companies utilize Procurement catalogs to their fullest potential.  For that reason I will publish a series of blogs to help companies understand catalog capabilities and provide some tips and tricks for best practices. 

 

  • How to drive contract compliance through catalog usage?
  • What's the difference between internal vs. external catalog?
  • What is Level 2 Punch out?
  • What's the difference between private vs. public marketplace?
  • How to manage service procurement via catalog?
  • How to organize the category tree?
  • How do you handle quotes for suppliers?

 

You can also suggest additional topics in the comments. 

Real Life Customer Story: Mobile Shopper Scenario

$
0
0

Think of your younger days when Mom left a blank shopping list on the refrigerator door. If you opened the fridge and saw the milk was running low or you opened a cabinet and something was missing, you'd put the item on the list. Mom would take the list to the store and buy what was on the list (including the ice cream you stuck on the list).


Vroozi mobile.png

 

 

In the business context, people are walking around and noticing products and services that need to be purchased. You start with an employee who wanders by a parts cabinet and sees a part is missing. She scans the QR code which takes her to a list of parts that should be in that cabinet (after authorizing the user of course). The user adds the missing part to a shopping list associated with the cabinet or the buyer who processes orders for the cabinet. She doesn't have to know any of the accounting. The power user is notified that an item needs to be procured and can decide to take immediate action or if the purchase can wait. When the power user makes the purchase, she goes to SRM or ERP, accesses the shopping list, adds items from the list to a shopping cart or requisition, supplies the needed information (eg: accounting), and orders the product(s).  It's a great way for employees to make the requests they need without having to know all the accounting. 

What's the difference between internal and external catalogs?

$
0
0

Catalogs will drive compliance to your company’s contracted and approved suppliers, but what type of catalog is best, internal or external catalogs?  Although the question seems basic on the outset, the decision has many implications and the answer is not the same for everyone.  Your company may in fact adopt a hybrid approach, a mix of internal and external catalogs.  So, how does one decide the best catalog strategy? 

 

Internal and External Catalog


Internal catalogs are catalogs where the data is obtained from suppliers, mapped to the buying companies’ category schema, approved, and indexed for search.  Companies go through this catalog content management process because they want to provide their users with a one-stop search for all products and services.  That is, if a user searches for a product, the search results will present the approved supplier(s) and pricing for that search.  A user does not need to know, for instance, which catalog or supplier to search for a given product.  Cross-catalog search has always been a top requirement from customers for an “Amazon-like” user experience.

 

However, note that the catalog content management process requires some work to maintain the catalog data for internal catalogs.  Therefore, external catalogs have been used where companies do not want to manage the catalog.  For external catalogs, the user at the buying company will “punch out” to a site that hosts the supplier’s catalog, perform the search in the external catalog, select items, and return the cart to the buying system in a round trip.  The disadvantage of course is that the user will need to know what catalog to access depending on the product or category. The ability to do a cross-catalog search is limited.  In addition, the user will have a different user experience when they go to the external site where they often get confused by different color schemes, terminology, and process flows.  We really haven’t seen a good technology that delivers cross catalog search and a unified user experience for external catalog content. 

 

Internal Content for a Better User Experience and Compliance


Where user experience has been the important requirement for users to make purchase requests without any training, the internal catalog content has been the best practice.  The model for so many is Amazon.  By taking the familiar, companies reduce dependency on training, increase adoption, and improve compliance.  The objective of the internal content then is to help users make the right product and service decisions, guide users to the right sources of supply (eg: contracted and approved suppliers), guide users to follow company policies when purchasing, and determine the right price. 

 

With internal catalog content companies have tremendous control to help their users.  Not only does catalog content provide users with all the product and service definitions they need to make their purchasing decisions, including pictures, contracts, pricing, and availability – the typical catalog fare, but also the catalog content has been used quite effectively to guide users. For example, catalogs can display rate cards that allow the user to determine the correct price based on the consultant level that matches the requirements.  Also, the catalog data will show the contracted price scales so users know the thresholds to achieve pricing discounts.  When a user enters the quantity, the right price will display based on that input.  Lastly, many customers have used catalog content to publish “How Tos”.  For more complex items that require multiple steps or an explanation on procedure, the “how to” will guide the user through the steps. The catalog is an underutilized tool for empowering users to make the appropriate choices and enter the correct data.

 

Don’t forget External Catalogs


As I mentioned in the opening, many companies may adopt a hybrid of both internal and external catalogs. So, where do external catalogs fit? External catalogs are largely used where prices change frequently (eg: commodities) and the company can’t keep up with the updates, or the company simply doesn’t want to manage the catalog content. With external catalogs, the supplier is responsible for managing their site.  The user will then punch out to consume the data when needed to obtain the right specs and price (the assumption is that the punch out data is up-to-date, but we’ll save that for another blog). 

 

Let the Internal Catalog Be your Guide


If our objective again is to provide all users with a familiar experience where they can always find what they are looking for, then the internal catalog will need to guide the users to the right place.  In the internal catalog content, the company can define “pointers” to the right external catalog or even the right place in the external catalog, a one-time setup. If a user searches on “laptop” then the search results can take the user to the right external catalog (ie: the search results will point to the right external catalog).  This is called Level 2 data and we will have more on that in the subsequent blog.  But, for the focus of this blog, note that the internal content can guide the user through the company’s marketplace of internal and external catalog content that represent the companies approved and contracted suppliers, as well as potentially new suppliers to discover (more on eMarketplaces later).

 

If you are making a decision on internal versus external catalog content, then look to internal content as much as possible.  Where you need external content because prices change frequently or you prefer that the supplier manages the content, then consider creating the internal pointers to the external data for a best in class user experience.

What is Level 2 punch out and how is it used?

$
0
0

Do you want to give your employees a familiar and intuitive online shopping experience, but don’t want to manage catalogs?  In my last blog I talked about internal versus external content and a best practice for external catalogs – or punch out catalogs.  To recap, an external catalog can be deployed where prices change frequently or when you don’t want to manage internal catalog content. Suppliers will manage catalogs on the company’s behalf and employees will punch out to the catalog to return products and services to the procurement system.  However, for companies with multiple catalogs, how do employees know which catalog to search?

 

To point users to the right catalog we can give them search results that tell them the right catalog to open given the product, service, or category they want to purchase. The search results can even take users to a specific page in the external catalog. This is level 2 punch-out - internal catalog content that is searchable by users and can be used to direct the employees to the right external catalog content. With Level 2 content, companies stay consistent with a use case that starts with search.  Most people who use Internet searches, such as Google search, are very familiar with this use case.

 

Level 2 catalog content can direct users to very specific locations in the external catalog – store, aisle, or shelf.

 

  • Store – points the user to the landing  page of the catalog where the employee can branch to the appropriate category or product
  • Aisle – points the user to the specific category page where the employee can find their product or service among others in the category
  • Shelf – points the user to product page with the detailed product descriptions.

 

 

For companies that like the supplier-managed external catalogs, Level 2 should be adopted to provide users with guidance on where to purchase. Typically these pointers do not need frequent updates so the catalog management for these internal catalog items is largely a one-time setup.  Some suppliers will even provide Level 2 data for their customers, particularly for top selling items.  Take advantage of level 2 data. Your users will appreciate the help and your company will continue to stay on contract and stay with approved suppliers.

Private and Public Marketplaces - How does my Catalog Work for Me?

$
0
0

How does a marketplace benefit my company?  Not only does a marketplace drive compliance to existing supplier relationships, but also it is an opportunity to benchmark those relationships and potentially discover new suppliers who will strengthen the value chain or increase spend under management.  Best in class procurement companies will want both a private and a public marketplace to drive compliance and discovery. 

 

Companies perform strategic sourcing to establish relationships with suppliers that are in the best interest of the company’s strategic goals.  The goals can be cost savings, sustainability, process efficiencies, innovation, etc.   Not all companies have formal strategic sourcing processes, but they create relationships for their most strategic products and services.  With these relationships solidified (contract or handshake), the company has established a private marketplace of suppliers that will enable the company to deliver on its competitive advantage. 

 

How do the procurement solutions help?  In a previous blog, I talked about how compliance and adoption have been enhanced by online shopping - the familiarity of online shopping drives the adoption and the catalog content drives compliance.  Thus, companies can model their product and service agreements in a catalog or private marketplace for employees to access during tactical purchasing. Many know catalogs for a basic product-price lookup, but many more terms can be modeled in the catalog such as price scales, price schedules, product configurations, dynamic pricing, rate cards, etc.  Whenever an employee needs to make a decision, the catalog can guide the user to the right price in accordance with strategic relationships. 

 

But what about the companies who don’t have a team to perform strategic sourcing?  Most companies do some form of strategic sourcing, focused largely on their most strategic products and services.  People are picking up the phone and calling suppliers, negotiating agreements, and relying on solid performance from suppliers. Accordingly, there is a private marketplace, albeit relatively small.  Certainly there is an opportunity to increase spend under management.  The challenge is a team dedicated to the next tier of spend and the leverage to negotiate worthwhile terms and conditions.  For these companies, a Global Purchasing Organization (GPO) model offers an outsourced strategic sourcing team that can negotiate on behalf of a group of companies to combine the buying power of the group.  We’ve called this the “Costco model” where companies can join the club to get the better pricing.  Again, the procurement catalog can preserve the negotiated pricing and offer a familiar and user-friendly online store for members to purchase at member pricing. 

 

With that, we have ventured into the more public marketplace.  In the case of the GPO, we have a marketplace with verified suppliers based on the third party or GPO strategic sourcing activities.  But, does it make sense to open the marketplace to anyone, a public marketplace?  The answer is easy: it doesn’t hurt to look.  I’ve talked to so many companies who have agreements with suppliers, but they want to know how good those agreements are.  They want to benchmark.  The public forum gives companies the opportunity to compare their existing relationships with potentially new opportunities.  However, in the open frontier of a public marketplace, it will become increasingly important to qualify suppliers.  What may look good at face may not be a good fit when it comes to the details.  Thus the marketplace requires the functionality to qualify (eg: engagement tools, bidding) or the third parties to verify (eg: ratings and reviews).  Information that can be aggregated from marketplace activities (many buyers, suppliers, and market makers) will help companies identify the right supplier. 

 

Like a top professional sports team, the marketplace affords a solid bench, a good farm system, and a free agent market to ensure current and future performance.  The private marketplace is a one-of-a-kind.  This is the winning team that strategic sourcing assembled to be competitively better than opponents.  In some positions where the team is comparatively weak, the company can look to the marketplace to identify any opportunities to improve in that position.  The marketplace will help us to identify those weaker positions and discover new players because we can benchmark what we have with what we can get.  To complete the sports team analogy and plug for the solutions I pose a question, what good is the team if it isn’t used? Ever heard the expression, “that team looks great on paper”?  The e-procurement solutions, in particular catalog management, will ensure the adoption and compliance so the team isn’t just on paper, but used competitively. 

Viewing all 28 articles
Browse latest View live




Latest Images