Program to create URL in Attachment Block of Opportunity/Activity/BP in CRM WEB UI
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.
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
Hi, Thanks for the code...
How can i add both the condition together i.e for activity and business partner?
Hi Raksha,
The method cl_crm_documents=>create_url accepts only one type of object at time.
So you need to call the method separately for each object type.