SRM Programming

Constants

DescriptionNameType
Document Status/sapsrm/if_pdo_status_cconstant interface
Object Types/sapsrm/if_pdo_obj_types_cconstant interface
Procurement Document Generic/sapsrm/if_pdo_constants_gen_cconstant interface
Workflow/sapsrm/if_wf_process_cconstant interface
Constant mix/sappssrm/cl_constantsconstant class
URL generation services (to access PDO)/sapsrm/cl_url_serviceclass

Useful classes

DescriptionNameUse
Workflow – Process Controlled/sapsrm/cl_wf_adv_facadeRetrieve WF related data of a Procurement Document
Workflow – Application Controlled/sapsrm/cl_wf_apv_facade_50Retrieve WF related data of a Procurement Document
 Workflow – Info /sapsrm/cl_apf_serviceFeatures to get workitem details and and related PDO Information
   

Programming using the PDO Model

Generic access to Procurement Document Header Details

Here you can pass the Header GUID/Object ID of various kind of document types (Shopping Cart, Purchae Order etc.), and retrieve all the fragments of this procurement document. 

  DATA(lo_pdo_model) = /sapsrm/cl_pdo_model_factory=>get_instance( ).

  lo_pdo_model->get_detail(
     EXPORTING
      iv_guid  = ls_po_item-header
    IMPORTING
      es_header   = DATA(ls_header)
      et_item     = DATA(lt_po_item)
      et_partner  = DATA(lt_po_partner)
  ).

Generic access to Procurement Document Item Details

Like for the header, but here you need to pass the item GUID.

  DATA(lo_pdo_model) = /sapsrm/cl_pdo_model_factory=>get_instance( ).

  lo_pdo_model->get_item_detail(
     EXPORTING
      iv_guid  = ls_po_item-guid
    IMPORTING
      et_account  = DATA(lt_account)
      et_partner  = DATA(lt_po_partner)
  ).

Specific Access to Procurement Documents

Unlike with generic access, you can target document specific features calling the factory dedicated for a given type of PDO. The example shows below, how-to access the Purchase Order in advanced mode.

DATA(po_adv) = /sapsrm/cl_pdo_factory_po_adv=>get_instance(
iv_header_guid = iv_header_guid
iv_mode = iv_mode
iv_process_type = lv_process_type
).

This works for most common documents in SRM, each has a dedicated factory.

  • /SAPSRM/CL_PDO_FACTORY_ASL Factory class for Supplier List BO
  • /SAPSRM/CL_PDO_FACTORY_AUC Factory for AUC object
  • /SAPSRM/CL_PDO_FACTORY_BEV SO PDO Factory for Bid Activities
  • /SAPSRM/CL_PDO_FACTORY_CP Componnent Planner PDO Factory Class 
  • /SAPSRM/CL_PDO_FACTORY_CRA Factory for getting CRA PDO instance
  • /SAPSRM/CL_PDO_FACTORY_CTR_ADV Factory for Contracts with approval document view
  • /SAPSRM/CL_PDO_FACTORY_CTR_MC Factory class
  • /SAPSRM/CL_PDO_FACTORY_CTR_MU Factory class for Contract Mass Update
  • /SAPSRM/CL_PDO_FACTORY_DAO_MO Creates Data Access Objects
  • /SAPSRM/CL_PDO_FACTORY_DAO_PM Creates Data Access Objects
  • /SAPSRM/CL_PDO_FACTORY_DAO_SRV Creates DAO objects
  • /SAPSRM/CL_PDO_FACTORY_INV_ADV Factory for Invoice with Workflow Capabilities.
  • /SAPSRM/CL_PDO_FACTORY_MUPD Factory class for MO Self Edit Company Data
  • /SAPSRM/CL_PDO_FACTORY_PC Factory class for PCard
  • /SAPSRM/CL_PDO_FACTORY_PO_ADV Factory for Purchase Orders with approval document view
  • /SAPSRM/CL_PDO_FACTORY_POR Factory class for POR
  • /SAPSRM/CL_PDO_FACTORY_PR Factory for Shopping Carts with approval document view
  • /SAPSRM/CL_PDO_FACTORY_QTA Factory class for Quota Arrangement BO
  • /SAPSRM/CL_PDO_FACTORY_QTE_ADV Factory for Quote Object
  • /SAPSRM/CL_PDO_FACTORY_RFQ Factory for RFQ object
  • /SAPSRM/CL_PDO_FACTORY_SC_ADV Factory for Shopping Carts with approval document view
  • /SAPSRM/CL_PDO_FACTORY_SC_SOCO Factory for Shopping Carts in Sourcing Cockpit
  • /SAPSRM/CL_PDO_FACTORY_SRVPKG Factory class for Survey Package
  • /SAPSRM/CL_PDO_FACTORY_SURV Factory for Survey
  • /SAPSRM/CL_PDO_FACTORY_SUSASN Factory Class for SUS ASN BO
  • /SAPSRM/CL_PDO_FACTORY_SUSCONF Factory class for SUS confirmation
  • /SAPSRM/CL_PDO_FACTORY_SUSINV Factory class for SUS INV BO
  • /SAPSRM/CL_PDO_FACTORY_SUSORD Factory class for AO SUS Order
  • /SAPSRM/CL_PDO_FACTORY_SUSPO Factory class for SUS PO
  • /SAPSRM/CL_PDO_FACTORY_USER Factory for User instances

Searching Procurement Documents

This can be done using the search factory, which provides a central access through OO pattern to search classes, implementing dedicated interefaces. Here is an example for contracts

DATA(contract_search) = /sapsrm/cl_pdo_so_srch_factory=>get_instance_ctr( ).

DATA(search_criteria) = VALUE /sapsrm/s_search_fields(
vendor = is_ctr_srch-supplier_no
category = is_ctr_srch-sh_category_id
with_closed = abap_true
).

contract_search->set_search_values( EXPORTING is_search_criteria_ctr = search_criteria ).

contract_search->execute_search(
IMPORTING
et_guid_list = DATA(ctr_hdr_guid_tab)
CHANGING
co_message_handler = message_handle
).

This works for other documents, just replace get_instance_ctr( ) with one of the methods below

  • get_instance_ros
  • get_instance_susinv
  • get_instance_suspo
  • get_instance_sc_2
  • get_instance_sc
  • get_instance_bupa
  • get_instance_dout
  • get_instance_po_2
  • get_instance_po
  • get_instance_rfq
  • get_instance_quick_search
  • get_instance_sus_quick_search
  • get_instance_ctr
  • get_instance_auc
  • get_instance_conf
  • get_instance_cnf2
  • get_instance_por
  • get_instance_inv
  • get_instance_qte
  • get_instance_arch

SAPDEV.EU
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.