CRM and CX Blogs by Members
Find insights on SAP customer relationship management and customer experience products in blog posts from community members. Post your own perspective today!
cancel
Showing results for 
Search instead for 
Did you mean: 
bharatbajaj_acn
Active Participant


Hello Guys,

In this document, I'll explain the way to create a URL directly in the Attachment Block of any Opportunity using a Custom Program, without going to the Web UI.

This can be really helpful in case there is a requirement to automatically attach a unique URL for each opportunity after Create/Change operation.

For illustration, here I have created a Program to create the URL, but you can also put the code in a FM & call the same during/after the save or as per the business requirement.

Below is the small piece of code which will solve our purpose.

 











Sample Code


REPORT  ztest1.

PARAMETERS : p_opp_id TYPE crmt_object_id,      " Opportunity ID
p_url    TYPE char100 LOWER CASE.             " External URL

DATA : lv_opp_guid        TYPE crmt_object_guid,
wa_bus_obj     TYPE sibflporb,
lt_url         TYPE sdokcntascs,
wa_url         TYPE sdokcntasc,
lt_prop        TYPE sdokproptys,
wa_prop        TYPE sdokpropty,
wa_loio        TYPE skwf_io,
wa_phio        TYPE skwf_io,
wa_error       TYPE skwf_error.

CHECK p_url IS NOT INITIAL AND p_opp_id IS NOT INITIAL.

***
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input  = p_opp_id
IMPORTING
output = p_opp_id.

***
SELECT SINGLE guid
FROM crmd_orderadm_h
INTO lv_opp_guid
WHERE object_id = p_opp_id.

***
wa_url-line = p_url.
APPEND wa_url TO lt_url.

***
wa_bus_obj-instid = lv_opp_guid.  "(Opportunity GUID)
wa_bus_obj-typeid = 'BUS2000111'. "(For Opportunity)
wa_bus_obj-catid  = 'BO'.         "(Business Object)

***
wa_prop-name = 'KW_RELATIVE_URL'. "The name of URL
wa_prop-value = p_opp_id.
APPEND wa_prop TO lt_prop.

wa_prop-name = 'CONTENT_URL'.
wa_prop-value = p_url.
APPEND wa_prop TO lt_prop.

wa_prop-name = 'LANGUAGE'.
wa_prop-value = sy-langu.
APPEND wa_prop TO lt_prop.

wa_prop-name = 'DESCRIPTION'.
wa_prop-value = 'Opportunity External URL'.
APPEND wa_prop TO lt_prop.

***
CALL METHOD cl_crm_documents=>create_url
EXPORTING
url             = lt_url
properties      = lt_prop
business_object = wa_bus_obj
IMPORTING
loio            = wa_loio
phio            = wa_phio
error           = wa_error.

***
IF wa_error IS INITIAL.
WRITE : 'URl added to Oppty : ', p_opp_id .
ELSE.
MESSAGE ID wa_error-id TYPE wa_error-type NUMBER wa_error-no
WITH wa_error-v1 wa_error-v1 wa_error-v1 wa_error-v1.
ENDIF.

 

The above program calls the Static Method CREATE_URL of Global Class CL_CRM_DOCUMENTS and the logic is pretty straight forward & simple.

If I execute the above program with below inputs :



 

The URL will be directly added in the Attachment block of opportunity like below:

 



 

You can use the same program for Activities/ Business Partners or any other CRM object, you just need to pass the corresponding Business Object (BO) Type & the respective GUID in the method parameter "BUSINESS_OBJECT". (for Eg. BUS1006 for Business Partner / BUS2000126 for Activity)

 

I hope this will be helpful for you. Please add comments if you need any further help or inputs.

 

Regards,

Bharat Bajaj

1 Comment