cancel
Showing results for 
Search instead for 
Did you mean: 

SAP CRM SALES OPPOURTNTY

Former Member
0 Kudos

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.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

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.

Answers (2)

Answers (2)

kakshat
Advisor
Advisor
0 Kudos

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

Former Member
0 Kudos

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