Creation of service contract in background

Hello,
is there a function module or bapi to create and release an new service contract in background?
We plan to maintain service contracts in ERP. But we need in CRM a kind of mini contract for the SLA determination in the service request. Therefore we have the requirement to create and release this mini contract directly in background.
All the needed information like BP, Serviceproduct line item and object list will be available to feed such a FM or BAPI.
Thank you
Best regards
Manfred

Hi Manfred,
please try to use CRM_SRV_ORDER_API_CREATE.
When tracing the creation of a new contract there is also CL_CRM_1O_MAIN=>CREATE_ORDER, maybe this can be used.
best regards,
Johannes

Similar Messages

  • Creation of Service Contract from Inbound IDOC

    Hi Experts,
    I am using Inbound IDOC type ORDERS02 with message type ORDERS for creation of Sales Order. Now my requirement is like to create a  Service Contract from that Inbound IDOC. The IDOC type contains all the data require to create a Service Contract. The scenario is like, after creation of Sales Order it will check for the corresponding Service Contract exits or not by querying on a Z table which contains all those entries.
    So my idea is to create a Z Program, in which it will check for the Service Contract and will create the same by reprocessing the same IDOC or by calling some Function Module. Please suggest how shall i proceed to create a Service Contract.
    Is there any way to reprocess the IDOC or to collect the Data from the IDOC segments pass them to a FM which is responsible for creation of Inbound IDOC. Please suggest if this is feasible.
    Thanks in Advance.
    Regards,
    Priyabrata.

    Actually there is problem with BDCDATA. Inside the FM it's calling transaction with help of BDCDATA. If i am creating a Sales order or contract alone its creating successfully. But when i am trying to create both, it's retuning sy-subrc '1001' after calling the transaction on the second attempt. Is there any problem with BDCDATA like we can't handle with less time gap? Please help and give your inputs.
    Regards,
    Priyabrata

  • Data source creation for service contract configuration

    Hello all,
    I have to create a data source for extraction of service contract configuration. I think this could work like data source creation for sales order creation, but I don't know waht to enter in transaction CTBW. Anyone here has done this previously? Any pointers and/or the strategy you've used will be useful.
    Kind regards,
    Simon

    Hi,
    If you are asking about "CRM sales contracts", The following help gives the info about standard ODS and Datasource.
    http://help.sap.com/saphelp_nw2004s/helpdata/en/d5/9fcd3b869e7d72e10000000a11402f/frameset.htm
    With rgds,
    Anil Kumar Sharma .P

  • Internal Order creation in ECC after creation of Service Contract in CRM

    Hi,
    I hv created Service Contract in CRM, but there is no internal order created referring this in ECC. Even no errors in CRM. What shall i chk for this.
    rgds,
    balu

    Number range was changed in ECC for internal orders

  • Creation of Service Contract

    Hello
    Is it possible to create Service Contract through LSMW - BAPI methodology in SAP CRM EHP-2  ??
    Can anybody throw some light on : how to achieve it
    Thanks in Advance.
    Abhi

    Abhishek,
    There is no BAPI to create service contract. You can use either BOL or FM - CRM_ORDER_MAINTAIN based custom program to create service transaction in mass.
    There is lot of help available on these two.
    There is also a standard IDOC - CRMXIF_ORDER_SAVE_M available which can be used. But this one will not ba having custom fields and tables. You need to regenerate a custom out of it for custom fields and tables.
    Cheers,
    Niraj

  • Automatic Creation of Service ticket in Background

    Hi,
    My requirement is to create a Service Ticket in Web IC automatically in background when an enquiry is submitted by an user over the company's website. I am unable to find any function Module or BAPI to do the same. Is it possible to do it in the background? If so, please let me know how to go about it.
    Regards,
    Vimal
    Edited by: Joseph Vimal Whitchurch on Apr 13, 2009 8:27 AM

    Hi Joseph
    If you can get it to run through the ERMS process then yes it is possible.
    Check out John Burton's ERMS How to Guides under CRM-INST for CRM 5.0.
    Regards
    Arden

  • How to create a Service Contract ? (ABAP related devlopment)

    Dear All,
    How to create a Service Contract ? (ABAP related devlopment)
    The Info I have is that
    Service contract will contain:
    u2022     Validity Start
    u2022     Validity End
    u2022     Duration u2013 minimum period for contracts
    Additional Info:
    1. Creation of service contract will take place automatically via u201Cfunction moduleu201D. This step will take place if all serial numbers are known in the sales order.
    2. When ever a Sales Order is created in Seibel containing a line item of servie contract I need to create a service contract
    I searched a BAPI -- BAPI_CONTRACT_CREATE
    I searched a Tran  --  VA41- create Contarct ( type - WV - Service and maint)
    I am i in right direction ---> , If you have any good solution kindly answer
    Please help.

    Hi Iqbal,
    You can use
    BAPI_CONTRACT_CREATE
    BAPI_CONTRACTS_CREATEFROMDATA .
    Once you create the contract, update the technical objects for the contracts
    using two function modules called one after another.
    IWOL_WV_ADD_OBJECTS
    IWOL_WV_POST_OBJECT_LIST
    Check this link:
    http://abap.wikiprog.com/wiki/BAPI_CONTRACT_CREATE
    Regards,
    Chandra Sekhar

  • Billing Plan Start Date not copied to Sales order from Service Contract

    Hi
    We are developing a process of Creation of Service Contract and then a order confirmation.
    Now based on the Order Confirmation will bill based on the Bill Plan.
    The Bill plan start date in contract header is not flowing to Sales Order header while creating with reference.
    Then navigating to Header Billing plan and if we input the date the billing plan dates are displayed.
    We checked the copy control settings and seems like the date is not copied.Is this a standard behaviour.
    If so then do we have any work arounds to achieve the same. Because the contract start date can change before confirmation.
    So business wants a sales order confirmation to be created after contract creation and bill periodically as per the Sales order instead of contract.

    Hi,
    Appreciate ur quick response. But instead of FKDAT i need the FPLA-BEDAT to be flowed to Billing Plan.Right now iam entering the following date manually at header.Instead if it copies from Contract header then manual entry could be neglected.
    Is it possible with the same routine to code with the above mentioned FPLA-BEDAT.

  • Creation of Sales Order and Service Contract from Inbound IDOC

    Hi Experts,
    My requirement is to create a Sales Order as well as a Service Contract from one Inbound IDOC. I am getting the Inbound IDOC from a third Party. The message type is ORDERS and Basic Type is ORDERS02. How ever i am using an extension type IDOC which carries all the required data for Sales Order and Service Contract. My requirement is like, to create a Sales Order first.
    I have created a Z FM which is attached to the Process Code and subsequently to the message type. Inside the FM i an calling FM 'IDOC_INPUT_ORDERS' for creation of Sales Order. After that i am changing the IDOC data for the Document Type. I am changing the document type which is responsible for Contract Creation.
    Then I am again calling the FM 'IDOC_INPUT_ORDERS' for creation of Contract with the help of IDOC data. But here the Contract is not getting created. It's getting failed during the Batch input session.
    I need to solve this problem as soon as possible. Please help me. If there are any other options also please share.
    Thanks in Advance.
    Regards,
    Priyabrata

    Actually there is problem with BDCDATA. Inside the FM it's calling transaction with help of BDCDATA. If i am creating a Sales order or contract alone its creating successfully. But when i am trying to create both, it's retuning sy-subrc '1001' after calling the transaction on the second attempt. Is there any problem with BDCDATA like we can't handle with less time gap? Please help and give your inputs.
    Regards,
    Priyabrata

  • Service Contracts Billing Schedule Creation Error

    Hi,
    I have a requirement of creating service contracts from back-end for which I am using the oks_contracts_pub.create_contract_header, create_service_line, and create_bill_schedule. I am creating my contracts with active status and renewal type of EVN (Header level), FUL(Line Level). My contract is of type subscription. The contract header and line are creating fine but the Bill schedule API is throwing an UNEXPECTED ERROR. The billing schedules need to be created based on accounting rule which can be quarterly or monthly. I have included the bill schedule code (hard coded values) for review. Any help is greatly appreciated.
    Also the version I am working on is R12
    ________________________________________________CODE___________________________________________________________________
    CREATE OR REPLACE PROCEDURE BILLING_SCHEDULE AS
    l_strm_level_tbl OKS_BILL_SCH.STREAMLVL_TBL;
    v_bill_qtrs NUMBER := 0;
    v_bill_mths NUMBER := 0;
    v_bill_days NUMBER := 0;
    v_net_amount NUMBER := 468;
    v_acct_rule_name VARCHAR2(50) := 'QUARTERLY';
    v_amt_per_day NUMBER;
    x_error_locator VARCHAR2(2000);
    v_start_date DATE := '04-MAY-2010';
    v_end_date DATE := '25-MAY-2010';
    x_return_status VARCHAr2(3);
    x_msg_count NUMBER;
    x_msg_data VARCHAR2(2000);
    v_billing_sequence NUMBER;
    x_chr_id NUMBER := 17000;
    x_line_id NUMBER := 223248604345353294444923586786456728480;
    g_day_uom VARCHAR2(10) := 'DAY';
    g_month_uom VARCHAR2(10) := 'MTH';
    g_quarter_uom VARCHAR2(10) := 'QTR';
    v_amt NUMBER;
    v_invoicing_rule_id NUMBER := -2;
    BEGIN
    --Create Billing Schedule based on accounting rule
    okc_context.set_okc_org_context;
    MO_GLOBAL.INIT('OKS');
    MO_GLOBAL.SET_POLICY_CONTEXT('S', 83);
    v_bill_qtrs := 0;
    v_bill_days := 0;
    v_bill_mths := 0;
    SELECT NVL(v_net_amount, 0)/(v_end_date - v_start_date)
    INTO v_amt_per_day
    FROM dual;
    dbms_output.put_line('Calculated amt per day ' || v_amt_per_day);
    IF v_acct_rule_name LIKE '%QUARTERLY%' THEN
    --Quarterly billing schedule
    SELECT FLOOR(MONTHS_BETWEEN( v_end_date,
    v_start_date)/3),
    v_end_date - ADD_MONTHS(v_start_date, (FLOOR(MONTHS_BETWEEN(v_end_date, v_start_date)/3)*3))
    INTO v_bill_qtrs,
    v_bill_days
    FROM dual;
    dbms_output.put_line('Calculated the qtrs and days');
    IF v_bill_qtrs > 0 THEN
    SELECT (ADD_MONTHS(v_start_date, (FLOOR(MONTHS_BETWEEN(v_end_date, v_start_date)/3)*3)) - v_start_date)*v_amt_per_day
    INTO v_amt
    FROM dual;
    dbms_output.put_line('Calculated qtr amt');
    SELECT NVL(MAX(sequence_no), 0) + 1
    INTO v_billing_sequence
    FROM oks_stream_levels_b
    WHERE dnz_chr_id = x_chr_id
    AND cle_id = x_line_id;
    --Populating the stream line variables
    l_strm_level_tbl(v_billing_sequence).sequence_no := v_billing_sequence;
    l_strm_level_tbl(v_billing_sequence).dnz_chr_id := x_chr_id;
    -- l_strm_level_tbl(v_billing_sequence).id := x_line_id;
    l_strm_level_tbl(v_billing_sequence).cle_id := x_line_id;
    l_strm_level_tbl(v_billing_sequence).uom_code := g_quarter_uom;
    l_strm_level_tbl(v_billing_sequence).uom_per_period := 1;
    l_strm_level_tbl(v_billing_sequence).level_periods := v_bill_qtrs;
    l_strm_level_tbl(v_billing_sequence).start_date := v_start_date;
    l_strm_level_tbl(v_billing_sequence).end_date := v_end_date;
    l_strm_level_tbl(v_billing_sequence).invoice_offset_days := NULL;
    l_strm_level_tbl(v_billing_sequence).amount := v_amt/v_bill_qtrs;
    l_strm_level_tbl(v_billing_sequence).level_amount := v_amt/v_bill_qtrs;
    l_strm_level_tbl(v_billing_sequence).lines_detailed_yn := 'Y';
    l_strm_level_tbl(v_billing_sequence).due_arr_yn := 'Y';
    dbms_output.put_line('Before calling the Bill Sch API for QTR');
    OKS_CONTRACTS_PUB.CREATE_BILL_SCHEDULE ( p_billing_sch=>'E',
    p_strm_level_tbl=>l_strm_level_tbl,
    p_invoice_rule_id=>v_invoicing_rule_id,
    x_return_status=>x_return_status);
    dbms_output.put_line('After calling the Bill Sch API for QTR');
    IF x_return_status <> 'S' THEN
    x_msg_count := 1;
    dbms_output.put_line('Quarterly schedule creation error ' || x_msg_data);
    ---DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('OKS_A');
    -- RETURN;
    END IF;
    END IF;
    IF v_bill_days > 0 THEN
    SELECT NVL(MAX(sequence_no), 0) + 1
    INTO v_billing_sequence
    FROM oks_stream_levels_b
    WHERE dnz_chr_id = x_chr_id
    AND cle_id = x_line_id;
    dbms_output.put_line('sequence '||v_billing_sequence);
    --Populating the stream line variables
    l_strm_level_tbl(v_billing_sequence).sequence_no := v_billing_sequence;
    l_strm_level_tbl(v_billing_sequence).dnz_chr_id := x_chr_id;
    --l_strm_level_tbl(v_billing_sequence).id := x_line_id;
    l_strm_level_tbl(v_billing_sequence).cle_id := x_line_id;
    l_strm_level_tbl(v_billing_sequence).uom_code := g_day_uom;
    l_strm_level_tbl(v_billing_sequence).uom_per_period := v_bill_days;
    l_strm_level_tbl(v_billing_sequence).level_periods := 1;
    l_strm_level_tbl(v_billing_sequence).start_date := v_start_date;
    l_strm_level_tbl(v_billing_sequence).end_date := v_end_date;
    l_strm_level_tbl(v_billing_sequence).invoice_offset_days := NULL;
    l_strm_level_tbl(v_billing_sequence).amount := v_net_amount;--v_amt_per_day*v_bill_days;
    l_strm_level_tbl(v_billing_sequence).level_amount := v_net_amount;--v_amt_per_day*v_bill_days;
    l_strm_level_tbl(v_billing_sequence).lines_detailed_yn := 'Y';
    l_strm_level_tbl(v_billing_sequence).due_arr_yn := 'Y';
    dbms_output.put_line('Before calling the Bill Sch API for QTR days');
    OKS_CONTRACTS_PUB.CREATE_BILL_SCHEDULE ( p_billing_sch=>'E',
    p_strm_level_tbl=>l_strm_level_tbl,
    p_invoice_rule_id=>v_invoicing_rule_id,
    x_return_status=>x_return_status);
    dbms_output.put_line('After calling the Bill Sch API for QTR days ' || v_bill_days || ' ' || x_return_status);
    IF x_return_status <> 'S' THEN
    x_msg_count := 1;
    dbms_output.put_line('Day schedule, for quarterly accounting rule, creation error ' || x_msg_data);
    --DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('OKS_A');
    --RETURN;
    END IF;
    END IF;
    ELSE
    --Monthly billing schedule
    SELECT FLOOR(MONTHS_BETWEEN( v_end_date,
    v_start_date)),
    v_end_date - ADD_MONTHS(v_start_date, FLOOR(MONTHS_BETWEEN(v_end_date, v_start_date)))
    INTO v_bill_mths,
    v_bill_days
    FROM dual;
    dbms_output.put_line('Calculated the mths and days');
    IF v_bill_mths > 0 THEN
    SELECT (ADD_MONTHS(v_start_date,FLOOR(MONTHS_BETWEEN(v_end_date, v_start_date))) - v_start_date)*v_amt_per_day
    INTO v_amt
    FROM dual;
    dbms_output.put_line('Calculated the mths amt');
    SELECT NVL(MAX(sequence_no), 0) + 1
    INTO v_billing_sequence
    FROM oks_stream_levels_b
    WHERE dnz_chr_id = x_chr_id
    AND cle_id = x_line_id;
    --Populating the stream line variables
    l_strm_level_tbl(v_billing_sequence).sequence_no := v_billing_sequence;
    l_strm_level_tbl(v_billing_sequence).dnz_chr_id := x_chr_id;
    --l_strm_level_tbl(v_billing_sequence).id := x_line_id;
    l_strm_level_tbl(v_billing_sequence).cle_id := x_line_id;
    l_strm_level_tbl(v_billing_sequence).uom_code := g_month_uom;
    l_strm_level_tbl(v_billing_sequence).uom_per_period := 1;
    l_strm_level_tbl(v_billing_sequence).level_periods := v_bill_mths;
    l_strm_level_tbl(v_billing_sequence).start_date := v_start_date;
    l_strm_level_tbl(v_billing_sequence).end_date := v_end_date;
    l_strm_level_tbl(v_billing_sequence).invoice_offset_days := NULL;
    l_strm_level_tbl(v_billing_sequence).amount := v_amt/v_bill_mths;
    l_strm_level_tbl(v_billing_sequence).level_amount := v_amt/v_bill_mths;
    l_strm_level_tbl(v_billing_sequence).lines_detailed_yn := 'Y';
    l_strm_level_tbl(v_billing_sequence).due_arr_yn := 'Y';
    dbms_output.put_line('Before calling the Bill Sch API for MTHS');
    OKS_CONTRACTS_PUB.CREATE_BILL_SCHEDULE ( p_billing_sch=>'E',
    p_strm_level_tbl=>l_strm_level_tbl,
    p_invoice_rule_id=>v_invoicing_rule_id,
    x_return_status=>x_return_status);
    dbms_output.put_line('After calling the Bill Sch API for MTHS');
    IF x_return_status <> 'S' THEN
    x_msg_count := 1;
    dbms_output.put_line('Monthly schedule creation error ' || x_msg_data);
    --DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('OKS_A');
    --RETURN;
    END IF;
    END IF;
    IF v_bill_days > 0 THEN
    SELECT NVL(MAX(sequence_no), 0) + 1
    INTO v_billing_sequence
    FROM oks_stream_levels_b
    WHERE dnz_chr_id = x_chr_id
    AND cle_id = x_line_id;
    --Populating the stream line variables
    l_strm_level_tbl(v_billing_sequence).sequence_no := v_billing_sequence;
    l_strm_level_tbl(v_billing_sequence).dnz_chr_id := x_chr_id;
    --l_strm_level_tbl(v_billing_sequence).id := x_line_id;
    l_strm_level_tbl(v_billing_sequence).cle_id := x_line_id;
    l_strm_level_tbl(v_billing_sequence).uom_code := g_day_uom;
    l_strm_level_tbl(v_billing_sequence).uom_per_period := v_bill_days;
    l_strm_level_tbl(v_billing_sequence).level_periods := 1;
    l_strm_level_tbl(v_billing_sequence).start_date := v_start_date;
    l_strm_level_tbl(v_billing_sequence).end_date := v_end_date;
    l_strm_level_tbl(v_billing_sequence).invoice_offset_days := NULL;
    l_strm_level_tbl(v_billing_sequence).amount := v_amt_per_day*v_bill_days;
    l_strm_level_tbl(v_billing_sequence).level_amount := v_amt_per_day*v_bill_days;
    l_strm_level_tbl(v_billing_sequence).lines_detailed_yn := 'Y';
    l_strm_level_tbl(v_billing_sequence).due_arr_yn := 'Y';
    dbms_output.put_line('Before calling the Bill Sch API for MTH days');
    OKS_CONTRACTS_PUB.CREATE_BILL_SCHEDULE ( p_billing_sch=>'E',
    p_strm_level_tbl=>l_strm_level_tbl,
    p_invoice_rule_id=>v_invoicing_rule_id,
    x_return_status=>x_return_status);
    dbms_output.put_line('After calling the Bill Sch API for MTH days');
    IF x_return_status <> 'S' THEN
    x_msg_count := 1;
    dbms_output.put_line('Day schedule, for monthly accounting rule, creation error ' || x_msg_data);
    --DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('OKS_A');
    --RETURN;
    END IF;
    END IF;
    END IF;
    COMMIT;
    EXCEPTION
    when others then
    dbms_output.put_line('Error ' || sqlerrm);
    END;
    Thanks,
    Yash.

    Hi There,
    I have a similar requirement to create rental service contracts and create billing schedules.
    Can you please pass on your functional docs so that i can refer to them.
    Thanks,
    Raidu

  • Bapi for creation of a contract against services.

    Hi.
    i just want to know the correct bapi for creation of contracts against services..here i was tried with BAPI_CONTRACT_CREATE but the documentation says that it is not supported for exxternal or internal services.
    so iam not sure if this bapi is the one for contract creation for services.
    any way i was tried to test this function module but i havent got  Contract created.
    wil be waiting for an excellent answer.
    bye.
    reegards.
    seetaram.

    Hi Ram,
    Try the function module
    BAPI_CONTRACT_CREATEFROMDATA.
    Once you create the contract, update the technical objects for the contracts
    using two function modules called one after another.
    IWOL_WV_ADD_OBJECTS
    IWOL_WV_POST_OBJECT_LIST
    Regards,
    Chandra Sekhar

  • Automatic creation of Service RequestContract upon saving of Lease Contract

    Good day Gurus,
    Is there a way in SAP wherein when I create a Lease contract in Real Estate module (meaning clicking the SAVE icon), Service Request Contract will also be created? Is there a BTE available for this? I need it since same information created in Lease contract will also be inputed in service Contract.
    Thanks a lot.

    Hi,
    please check if BAdI BADI_RECN_CONTRACT, method AFTER_STORE, is helpful for your requirement.
    Regards,
    Franz

  • Creation of Mfg Service contract from IB Instance number

    Hi Team,
    We have a requirement from client that we need to create a Mfg Service contract for a given IB Instance number. Can you please let me know, if we have any API for this?
    I tried to create contract using Oks_Contracts_Pub.Create_Contract_Header API but this contract is not associated with Instance in IB.
    Please help to provide any ideas on this. We are on 11.5.10 version.
    Thanks/Suresh K

    Solution: You need to associate Contract with Covered line with that serial number.

  • Dump OBJECTS_OBJREF_NOT_ASSIGNED on service contract creation

    Hi All,
    I am working on crm upgrade from 7.0 to ehp3.
    After upgrade, I am facing the dump when creating the new service contract from New-->By selecting the Transaction type.
    Please find the below dump description.
    Runtime Errors         OBJECTS_OBJREF_NOT_ASSIGNED
    ABAP Program           CL_BT112H_S_ITEMLIST_CN01=====CP
    Application Component  CRM-BTX-CTR-SCO
    Short Text
         Access using a 'ZERO' object reference is not possible.
    Error analysis
        You are trying to access a component with a 'ZERO' object reference
        (points to 'nothing'). Variable: " ".
        An object reference must point to an object (an instance of a class)
        before it can be used to access a component. The reference has either
        never been set, or it was set to 'ZERO' with a CLEAR statement.
    Information on where terminated
        The termination occurred in ABAP program "CL_BT112H_S_ITEMLIST_CN01=====CP"
         in "ON_NEW_FOCUS".
        1 METHOD on_new_focus.
        2
        3   DATA lv_collection TYPE REF TO if_bol_bo_col.
        4   DATA lr_entity     TYPE REF TO cl_crm_bol_entity.
        5 ************************************************************
        6
    >>>>>   IF gr_tvc->gv_fast_mode_enabled EQ abap_true.
        8     trigger_coll_determ( focus_bo ).
        9   ELSE.
       10     lr_entity ?= focus_bo.
       11     TRY.
       12         lv_collection = lr_entity->get_related_entities( iv_
       13       CATCH cx_crm_genil_model_error cx_sy_ref_is_initial.
       14         RETURN.
       15     ENDTRY.
    Can anyone please help me in resolving the issue.
    Thanks & Regards,
    Chiru

    I'm afraid not, I'm still in ehp2, I just pointed to the note to ensure you started from there, I don't know if Nicolas Busson or Christian Drumm can help you from here keep us updated!

  • Unblocking the Service Contracts creation

    Hi,
      I am trying to create the service contract using CRM_ORDER_MAINTAIN.
      But while execution of this FM, it was giving the exit message as
    <b>"Business transaction type Service Contract. is blocked for further business 
      transactions"</b>.
       Can any one please guide me to unblock this service contract?
      Thanks for thier help.
    Regards,
    Gopinath Addepalli.

    Have a look at the customizing for your transaction type. There you need to un-set the inactive flag. Also make sure you have the correct settings for the subgroup 'Allowed Channels'.
    Regards, Kai

Maybe you are looking for