How to get propose products in Sales Order
Logon on HN1/Q2U using SALESPRO role, Sales Cycle -> Sales Order Search -> Edit List in Items AB -> More -> Propose Items from Listings (please see CRM_PT_SALES_Product_Proposal.xls for detail steps)
After clicked Propose Items from Listing, the propose products will be rendered in the list table.
Question: How to get products in Sales Order? Does it use Product Search component or itself?
As you see, when adding items in list, not only include product id, but also include Unit, Currency, and Net Value and so on. There are three steps to render products in Items AB:
Step1: Get product list by additional function modules, not Product Search Component. This step just get product id list.
Step2: Get product attributes by Product Search Component based on the product id list in step1.
Step3: get price based on products with attributes.
So in sales order, they get product id list by their own function modules. Product Search Component is used to get attributes of result products which will be used to get product price.
(1) using St05 to trace the sql when clicked Propose Items form Listing, see screenshot:
The highlight item is sql in SQL_issue.txt.
Setting a breakpoint in SAPLCRM_PRODUCT_GETLIST/CRM_PRODUCT_GETLIST2 to debug, see call stack screenshot:
UI Component: BT115IT_SLSO
Trigger event: eh_onpp_listings
Call stack 21: trigger event en_onpp_listings
Call stack 30: CRM_PRODUCT_PROPOSAL_DETERMINE is key function
first, function CRM_MKTPR_PP_GENERATE is the funtion to get product id list.
In it, it reads method schema.
Then loop schemas to execute function modules to get propose products:
Then call funtion CRM_PRODUCT_PROPOSAL_PRICEDET to get net price
More Info here:
Spro -> img -> crm -> transactions -> settings for sales transaction -> product proposals in Quotations and Orders -> method schemas for product proposals -> assign method schema to transaction type.
You can assign a method schema to a sales organization with a transaction type
Every method schema has a list of function modules:
Call stack 32: In BEA_CNPL_API_SIMULATE to call funtion BEA_CNPL_PDL_O_DATA_ENRICH to get product attributes.
Call stack 35: call function COM_PRODUCT_GETLIST_API with scenario parameter.
Call stack 36: delegate to product search component with proposed product in it_criteria.