on 12-12-2012 1:53 PM
How to create OPPORTUNITY in CRM using BAPI_OPPORTUNITY_CREATEMULTI or crmd_order_maintain .
Can any one have sample code of create an OPPORTUNITY using this BAPI_OPPORTUNITY_CREATEMULTI or crmd_order_maintain.
cannot create opp where partners would be filled.
Thanks
RR PRADHAN.
hi pradhan,
the sample code to create opportunity using bapi is,
FUNCTION ZCRM_OPPORTUNITY_CREATE.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(DESC) TYPE CRMT_PROCESS_DESCRIPTION
*" VALUE(EXP_REVENUE) TYPE BAPICUREXT
*" VALUE(START_DATE) TYPE DATS
*" VALUE(CLOSE_DATE) TYPE DATS
*" VALUE(CLIENT) TYPE CRMT_PARTNER_NO
*" VALUE(SALESEMP) TYPE CRMT_PARTNER_NO
*" VALUE(PHASE) TYPE CRMT_CURR_PHASE
*" VALUE(STATUS) TYPE CRM_J_STATUS
*" VALUE(PROCESS_TYPE) TYPE CRMT_PROCESS_TYPE
*" VALUE(SUCCESS) TYPE CRMT_PROBABILITY
*" EXPORTING
*" VALUE(MESSAGE) TYPE CHAR255
*" VALUE(OBJECT_ID) TYPE CRMT_OBJECT_ID
*"----------------------------------------------------------------------
object_id = '0000000000'.
DATA: it_header LIKE bapibus20001_header_ins OCCURS 0 WITH HEADER LINE,
it_opportunity LIKE bapibus20001_opportunity OCCURS 0 WITH HEADER LINE,
it_input_field LIKE bapibus20001_input_fields OCCURS 0 WITH HEADER LINE,
it_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
it_partner LIKE bapibus20001_partner_ins OCCURS 0 WITH HEADER LINE,
ls_logical_key_part TYPE crmt_partner_logic_partner_key,
it_status LIKE bapibus20001_status_ins OCCURS 0 WITH HEADER LINE,
it_text LIKE bapibus20001_text_ins OCCURS 0 WITH HEADER LINE,
it_item LIKE bapibus20001_item OCCURS 0 WITH HEADER LINE,
it_product LIKE bapibus20001_product OCCURS 0 WITH HEADER LINE,
it_schedule LIKE bapibus20001_schedlin OCCURS 0 WITH HEADER LINE,
it_pricing LIKE BAPIBUS20001_PRICING OCCURS 0 WITH HEADER LINE,
it_saved LIKE bapibus20001_object_id OCCURS 0 WITH HEADER LINE.
*header
it_header-handle = '0000000001'.
it_header-process_type = PROCESS_TYPE. "'ZOSM'.
it_header-descr_language = sy-langu.
it_header-langu_iso = sy-langu.
it_header-description = desc.
APPEND it_header.
* opportunity
it_opportunity-ref_handle = '0000000001'.
it_opportunity-exp_revenue = exp_revenue.
it_opportunity-CURRENCY = 'USD'.
it_opportunity-probability = success.
* it_opportunity-currency_iso = 'USD'.
*date+4(2) date+6(2) date(4)
**concatenate start_date+4(2) start_date+6(2) start_date(4) into start_date separated by '.'.
**concatenate close_date+4(2) close_date+6(2) close_date(4) into close_date separated by '.'.
it_opportunity-startdate = start_date.
it_opportunity-expect_end = close_date.
it_opportunity-type = '0001'.
it_opportunity-curr_phase = phase.
APPEND it_opportunity.
* partner
it_partner-ref_handle = '0000000001'.
it_partner-ref_kind = 'A'.
it_partner-partner_fct = '00000009'.
it_partner-partner_no = CLIENT.
it_partner-no_type = 'BP'.
it_partner-display_type = 'BP'.
APPEND it_partner.
it_partner-ref_handle = '0000000001'.
it_partner-ref_kind = 'A'.
it_partner-partner_fct = '00000012'.
it_partner-partner_no = SALESEMP.
it_partner-no_type = 'BP'.
it_partner-display_type = 'BP'.
* MOVE-CORRESPONDING it_partner TO ls_logical_key_part.
APPEND it_partner.
it_pricing-ref_kind = 'A'.
it_pricing-ref_handle = '0000000001'.
it_pricing-currency = 'USD'.
* it_pricing-currency_iso = 'USD'.
* it_pricing-net_value_man = it_price-amount.
APPEND it_pricing.
*input field
it_input_field-ref_handle = '0000000001'.
it_input_field-ref_kind = 'A'.
it_input_field-objectname = 'ORDERADM_H'.
it_input_field-fieldname = 'PROCESS_TYPE'.
APPEND it_input_field.
it_input_field-objectname = 'ORDERADM_H'.
it_input_field-fieldname = 'OBJECT_ID'.
APPEND it_input_field.
it_input_field-objectname = 'ORDERADM_H'.
it_input_field-fieldname = 'DESCRIPTION'.
APPEND it_input_field.
it_input_field-objectname = 'OPPORT_H'.
it_input_field-fieldname = 'EXP_REVENUE'.
APPEND it_input_field.
it_input_field-objectname = 'OPPORT_H'.
it_input_field-fieldname = 'CURR_PHASE'.
APPEND it_input_field.
it_input_field-objectname = 'OPPORT_H'.
it_input_field-fieldname = 'CURRENCY'.
APPEND it_input_field.
* it_input_field-objectname = 'ORDERADM_H'.
* it_input_field-fieldname = 'CURRENCY_ISO'.
* APPEND it_input_field.
it_input_field-objectname = 'OPPORT_H'.
it_input_field-fieldname = 'STARTDATE'.
APPEND it_input_field.
it_input_field-objectname = 'OPPORT_H'.
it_input_field-fieldname = 'EXPECT_END'.
APPEND it_input_field.
it_input_field-logical_key = ls_logical_key_part.
it_input_field-objectname = 'PARTNER'.
it_input_field-fieldname = 'PARTNER_FCT'.
APPEND it_input_field.
it_input_field-objectname = 'PARTNER'.
it_input_field-fieldname = 'PARTNER_NO'.
APPEND it_input_field.
it_input_field-objectname = 'PARTNER'.
it_input_field-fieldname = 'DISPLAY_TYPE'.
APPEND it_input_field.
it_input_field-objectname = 'PARTNER'.
it_input_field-fieldname = 'NO_TYPE'.
APPEND it_input_field.
it_input_field-objectname = 'PARTNER'.
it_input_field-fieldname = 'KIND_OF_ENTRY'.
APPEND it_input_field.
it_input_field-objectname = 'PARTNER'.
it_input_field-fieldname = 'MAINPARTNER'.
APPEND it_input_field.
CLEAR it_input_field-logical_key.
it_input_field-objectname = 'STATUS'.
it_input_field-fieldname = 'STATUS'.
APPEND it_input_field.
it_input_field-objectname = 'STATUS'.
it_input_field-fieldname = 'ACTIVATE'.
APPEND it_input_field.
it_input_field-objectname = 'TEXTS'.
it_input_field-fieldname = 'TDID'.
APPEND it_input_field.
it_input_field-objectname = 'TEXTS'.
it_input_field-fieldname = 'TDFORMAT'.
APPEND it_input_field.
it_input_field-objectname = 'TEXTS'.
it_input_field-fieldname = 'TDLINE'.
APPEND it_input_field.
it_input_field-objectname = 'TEXTS'.
it_input_field-fieldname = 'TDSPRAS'.
APPEND it_input_field.
it_input_field-objectname = 'PRICING'.
it_input_field-fieldname = 'CURRENCY'.
APPEND it_input_field.
* it_input_field-objectname = 'PRICING'.
* it_input_field-fieldname = ' CURRENCY_ISO'.
* APPEND it_input_field.
*** it_input_field-objectname = 'PRICING_I'.
*** it_input_field-fieldname = 'CURRENCY'.
*** APPEND it_input_field.
*** it_input_field-objectname = 'PRICING_I'.
*** it_input_field-fieldname = 'CURRENCY_ISO'.
*** APPEND it_input_field.
***
***
DATA handle(10) TYPE n VALUE '0000000001'.
DATA item(10) TYPE n VALUE '0000000010'.
*** *status
it_status-ref_handle = '0000000001'.
it_status-ref_kind = 'A'.
it_status-status = status.
it_status-activate = 'X'.
APPEND it_status.
handle = '0000000001'.
item = '0000000010'.
CALL FUNCTION 'BAPI_OPPORTUNITY_CREATEMULTI'
TABLES
header = it_header
opportunity = it_opportunity
* ORGANISATION =
partner = it_partner
text = it_text
* product = it_product
PRICING = it_pricing
input_fields = it_input_field
* CREATED_PROCESS =
return = it_return
saved_process = it_saved
item = it_item
scheduleline = it_schedule
* APPOINTMENT =
* SERVICE_OS =
status = it_status
* CUSTOMER_HEAD =
* CUSTOMER_ITEM =
* DOCUMENT_FLOW =
* pricing_item =
* CONFIG_CFG =
* CONFIG_BLB =
* CONFIG_INS =
* CONFIG_PRT =
* CONFIG_VAL =
* CONFIG_VK =
* CONFIG_REF =
* CONDITION_CREATE =
* EXTENSIONIN =
.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
READ TABLE it_saved INDEX 1.
IF sy-subrc = 0.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = it_saved-object_id
IMPORTING
OUTPUT = it_saved-object_id
.
CONCATENATE ' Opportunity' it_saved-object_id
'Created Successfully. ' INTO message SEPARATED BY space.
object_id = it_saved-object_id.
wait up to 2 seconds.
update CRMD_OPPORT_H set PROBABILITY = success where GUID eq it_saved-GUID.
ELSE.
READ TABLE it_return WITH KEY type = 'E'.
IF sy-subrc = 0.
message = it_return-message.
ELSE.
message = 'Error while Creating Opportunity'.
ENDIF.
ENDIF.
ENDFUNCTION.
Hope you find it useful.
Regards,
Hcl sparks.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello,
You can do a where-used on the BAPI you mentioned and see how it is being called. Not called at a lot of places, so should be easy to figure out.
Regards,
KA
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello,
The FM CRM_ORDER_MAINTAIN is a little bit difficult to use.
You have to enter the data in the correct way including filling CT_INPUT_FIELDS. Sometimes you have to check in the debugger what the FM is expecting.
You can also set a break-point in this FM while you create an opportunity in the standard application (either GUI or WebUI). I think this is the best way to find out which fields should be filled how. Go to CRMD_ORDER and creat an opportunity without any data (just mandatory fields) and set a break-point in this FM.
Best regards,
Thomas Wagner
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
7 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.