In BADI - CRM_COPY_BADI , i need to modify partner number

Hi All,
I have a requirement like below.
For copy control Quote to Quote in CRM , i need to copy all custom fields and modify partner no based on some condition.
For that I have implemented CRM_COPY_BADI  and for Custom field copy it is working fine.But for Modifying Partner is an issue.
There is no methods for Partner. For that when i am using FM - CRM_ORDER_MAINTAIN or CRM_ORDER_MAINTAIN_MULTI_OW , both are giving recursive error.
Any solution ?
Thanks in advance ..

Hi,
Can you please let me know how did you copied all the custom fields in BADI - CRM_COPY_BADI ,
I have a similar requirement.
Thanks,
Mansi

Similar Messages

  • In BADI - CRM_COPY_BADI, i need to modify Partner No

    Hi Experts,
    I have a requirement like - in Copy Control Quote to Quote in CRM, i need to Copy all Custom fields and modify Partner No based on some condition. For that I have implemented BADI - CRM_COPY_BADI and now for Custom field copy to the Target quote it is working fine. Now the issue is with the Modifying Partner No. In this BADI . no Method is available for PARTNER. So I tried calling FM - CRM_ORDER_MAINTAIN and  CRM_ORDER_MAINTAIN_MULTY_OW, but both are giving recursive errors.
    Any solution for this ?
    Thanks ..

    Process_type shouldn't play any role. Here is one my coe sample for parter maintenance (for sales prospect - 00000021)...
        ls_partner_com-ref_guid = lv_ref_guid.
        ls_partner_com-ref_kind = 'A'.
        ls_partner_com-ref_partner_handle = '0001'.
        ls_partner_com-kind_of_entry = 'C'.
        ls_partner_com-partner_fct = '00000021'.
        ls_partner_com-partner_no = lv_bp_no.
        ls_partner_com-display_type  = 'BP'.
        ls_partner_com-no_type  = 'BP'.
        CLEAR: ls_input_field_names, lt_input_field_names.
        ls_input_field_names-fieldname = 'PARTNER_NO'.
        INSERT ls_input_field_names INTO TABLE lt_input_field_names.
        ls_input_field_names-fieldname = 'PARTNER_FCT'.
        INSERT ls_input_field_names INTO TABLE lt_input_field_names.
        ls_input_field_names-fieldname = 'DISPLAY_TYPE'.
        INSERT ls_input_field_names INTO TABLE lt_input_field_names.
        ls_input_field_names-fieldname = 'NO_TYPE'.
        INSERT ls_input_field_names INTO TABLE lt_input_field_names.
        ls_input_field_names-fieldname = 'KIND_OF_ENTRY'.
        INSERT ls_input_field_names INTO TABLE lt_input_field_names.
        CALL FUNCTION 'CRM_PARTNER_MAINTAIN_SINGLE_OW'
          EXPORTING
            iv_ref_guid          = lv_ref_guid
            iv_ref_kind          = 'A'
            is_partner_com       = ls_partner_com
          CHANGING
            ct_input_field_names = lt_input_field_names
          EXCEPTIONS
            error_occurred       = 1
            OTHERS               = 2.

  • Populate partner number from return IDOC.

    Hi Experts,
    I have a requirement where I need to populate partner number from return IDOC to the delivery document. The partner number will not be necessarily have a master data in SAP.Example: I will get a forwarding agent number which will not have a master data created in R/3, but still SAP should allow me to save the delivery with the number that I put in the delivery header-partners with appropriate partner funtion defined by us. Ideally my IDOC will carry any number which I need to populate under header partners in the delivery with out getting any error message saying "No master record exists for XXXXXX". Please provide your expert opinion.
    Regards,
    Emaya

    Emaya,
    You cannot save a Partner Function with a Partner Number that doesn't already exist in SAP. Therefore you either need to have the partner(s) created in SAP, or find somewhere else to store the data. There are a few free-format fields in LIKP that may suit your purpose, alternatively you could extend the iDoc & table LIKP to incorporate a new field.LIKP-LIFEX is a good candidate if you're not using it already, or of course there's always a text field.
    Cheers, Paul.

  • FM to determine employee's Manager using Employee partner number 4m OrgUNIT

    Hello All,
    my requirement is, i have Employee responsible information with me like parnternumber and user name, now i want to determine who is his manager at  Organisation Unit level.i need manager's partner number from Org unit.
    I did following to achieve the same, but i could reach upto knowing the manager position but not the BP assigned to that position.
    report 1.
    *1. get Employee's position
    data: objektid type objektid.
    call function 'BBPU_GET_ORGSTRUCTURE_OF_USER'
    exporting
       username                = sy-uname
    importing
       position_id             = objektid
    exceptions
       no_org_data_found       = 1
       others                  = 2
    *2.find leading position            (pass Employee position)
    *RH_GET_LEADING_POSITION            (get leading position)
    data: hrobject type table of hrobject,
          wa_hrobject type hrobject,
          sobid type hrsobid-sobid.
    move objektid to sobid.
    call function 'RH_GET_LEADING_POSITION'
      exporting
        plvar                   = '01'
        otype                   = 'S'
        sobid                   = sobid
      tables
        leading_pos             = hrobject
    exceptions
       no_lead_pos_found       = 1
       others                  = 2
    *3. get the manager number           (pass leading position)
    *RH_READ_INFTY_1001                 (get manager number)
    *data:   lt_itab1001   type table of p1001.
    *call function 'RH_READ_INFTY_1001'
    exporting
       authority        = ' '
       with_stru_auth   = ' '
       subty            = 'A008'
       begda            = sy-datum
       endda            = sy-datum
    tables
       i1001            = lt_itab1001
       objects          = hrobject
    exceptions
       nothing_found    = 1
       wrong_condition  = 2
       wrong_parameters = 3
       others           = 4.
    *if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    *endif.
    read table hrobject into wa_hrobject index 1.
    DATA lt_result_tab TYPE TABLE OF swhactor.
    CALL FUNCTION 'RH_STRUC_GET'
               EXPORTING
                    act_otype      = wa_hrobject-otype
                    act_objid      = wa_hrobject-objid
                    act_wegid      = 'SAP_TAGT'
               TABLES
                    result_tab     = lt_result_tab[]
               EXCEPTIONS
                    no_plvar_found = 01
                    no_entry_found = 02
                    OTHERS         = 99.
    write 'hi'.
    ======================
    I tried using FMs 'RH_READ_INFTY_1001 and 'RH_STRUC_GET'
    both are retrieving some unrelated data which i dont understand like
    1     CP     00305880
    I dont understand what is 00305880,manager's partner number is 50145725
    please help me how do i get manager partner number using his position, is there any FM or table to get this?
    Thanks
    seema

    Hi All,
    I got the solution
    report 1.
    data: objektid type objektid.
    call function 'BBPU_GET_ORGSTRUCTURE_OF_USER'
    exporting
       username                = sy-uname
    importing
       position_id             = objektid
    exceptions
       no_org_data_found       = 1
       others                  = 2
    if sy-subrc <> 0.
    endif.
    data: hrobject type table of hrobject,
          wa_hrobject type hrobject,
          sobid type hrsobid-sobid.
    move objektid to sobid.
    call function 'RH_GET_LEADING_POSITION'
      exporting
        plvar                   = '01'
        otype                   = 'S'
        sobid                   = sobid
      tables
        leading_pos             = hrobject
    exceptions
       no_lead_pos_found       = 1
       others                  = 2
    if sy-subrc <> 0.
    endif.
    data:   lt_itab1001   type table of p1001,
            wa_p1001 type p1001.
    CALL FUNCTION 'RH_READ_INFTY_1001'
      EXPORTING
        authority              = 'DISP'
        with_stru_auth         = 'X'
        plvar                  = '01'
        OTYPE                  = wa_hrobject-otype
        OBJID                  = wa_hrobject-objid
        istat                  = ' '
        extend                 = 'X'
        subty                  = 'A008'
        begda                  = sy-datum
        endda                  = sy-datum
        condition              = '00000'
        sort                   = 'X'
        with_ev                = ' '
        adata                  = 'X'
        auth_sobid             = ' '
      TABLES
        i1001                  = lt_itab1001
      EXCEPTIONS
        nothing_found          = 1
        wrong_condition        = 2
        wrong_parameters       = 3
        OTHERS                 = 4.
    read table lt_itab1001 into wa_p1001 index 1.
    clear: wa_p1001-otype, wa_p1001-objid.
    move wa_p1001-SCLAS to wa_p1001-otype.
    condense wa_p1001-SOBID.
    move wa_p1001-SOBID to wa_p1001-objid.
    clear lt_itab1001[].
    CALL FUNCTION 'RH_READ_INFTY_1001'
      EXPORTING
        authority              = 'DISP'
        with_stru_auth         = 'X'
        plvar                  = '01'
        OTYPE                  = wa_p1001-otype
        OBJID                  = wa_p1001-objid
        istat                  = ' '
        extend                 = 'X'
        subty                  = 'B207'
        begda                  = sy-datum
        endda                  = sy-datum
        condition              = '00000'
        sort                   = 'X'
        with_ev                = ' '
        adata                  = 'X'
        auth_sobid             = ' '
      TABLES
        i1001                  = lt_itab1001
       objects                = hrobject
      EXCEPTIONS
        nothing_found          = 1
        wrong_condition        = 2
        wrong_parameters       = 3
        OTHERS                 = 4.
    write 'hi'.

  • User exit -BADI for overriding Partner number in Purchase order output type

    Hello All,
    We have a requirement wherein the EDI message type will distribute the Idoc to the partner number determined in the output type of the purchase order. We are maintaining the condition record for a generic partner number in MN04 and we want this partner number with partner role SH from the condition record to be modified to the sales order sold to party partner number. We are using third party processing and hence sales order number can be fetched from account assignment (EKKN) table of the purchase order. Kindly do let me know the user exit /BADI that can be used for achieving this functionality.
    Thanks in advance for your immediate response.
    With regards,
    Joseph Anand B

    Hi,
    check with below link,
    fo this one you will find both user exit and badis
    https://www.sdn.sap.com/irj/scn/wiki?path=/display/abap/find%252bapplication%252bclass%252bwith%252bexits%252band%252bbadis%252bfor%252ba%252btransaction
    Regards,
    Madhu

  • Modify Partner Function from Header level to Item level

    Hello experts,
    A help please!!!
    Scenery:
    I need to have: - When I create a Sales Order, I can have differents Carrier Partner Fuction for each line.
    Currently we have a Partner Function (Carrier) defined at Header Level.
    I need to modify it in order to have a Carrier Partner at Item Header.
    Many Thanks all,
    Barbara

    Hello Barbara,
    Go to SPRO - SD - Basic Functions - Partner Determination - Set Up Partner Determination -
    Select - Set Up Partner Determination for Sales Document Header
    Select TA - Standard Order & select "Partner Functions in Procedure" from left side.
    Go to the Partner Function of Carrer & make sure that there is NO TICK MARK in the "Not Modifiable" check box. (This will let you change the Carrier at Header level also, if required.
    Go to SPRO - SD - Basic Functions - Partner Determination - Set Up Partner Determination -
    Select - Set Up Partner Determination for Sales Document Item
    Select N - Standard Item & Select "Partner Functions in Procedure" from left side.
    Go to New Entries & Enter Carrier Partner Function & make sure that there is NO TICK MARK in the "Not Modifiable" check box. This will let you change the Carrier at Item level.
    Hope this helps.
    Thanks,
    Jignesh Mehta

  • Need to make Partner maintanance mandatory in installed base.

    Dear CRM Folks,
    My requirement is..I need to make partner data mandatory at installed base if not maintained system should give error.
    Currently we can save installed base without Partner data maintained. I have checked all the BADI's given in IMG but dont know how to  use them. Kindly help me to achieve this functionality.
    Regards
    Raju Landge.
    IBM India.

    Hi,
    please check in SPRO the used partner schema.
    Here set for your partner functions the "mandatory" flag.
    Kind regards
    Manfred

  • Custom report. I need to modify canned report

    Hello everyone,
    There is canned report for "All package and program deployments"
    I need to modify it to get the same data but for specific timelines so I can monitor how many software installs are going through SCCM.
    Has anyone completed something like that and could share some info?
    This is the query for canned report.
    SELECT v_Advertisement.AdvertisementName,
    v_Advertisement.PackageID,
    v_Advertisement.CollectionID,
    v_Advertisement.Comment,
    v_Package.Name AS C062,
    ProgramName,
    v_Advertisement.SourceSite,
    CASE WHEN AssignedScheduleEnabled != 0 or
    (AdvertFlags & 0x720) != 0
    THEN '*'
    ELSE ''
    END AS C063,
    v_Collection.Name as C064,
    AdvertisementID
    FROM v_Advertisement
    INNER JOIN v_Package ON v_Advertisement.PackageID = v_Package.PackageID
    INNER JOIN v_Collection ON v_Advertisement.CollectionID = v_Collection.CollectionID
    ORDER BY v_Advertisement.AdvertisementName

    Yes, I know this is an old post, I’m trying to clean them up, Did you figure this out, if so how?
    http://www.enhansoft.com/

  • Need to modify a Header which is in phtml, I need to find the html page

    I don't know much about php, but I need to change a header and add a new link, it should be very easy to do in html, but when I opened the header, the code is all in php.
    How can I find the related html for the header to do these changes?
    Here is the code
    ?>
    <div class="header-container">
        <div class="header">
            <?php if ($this->getIsHomePage()):?>
            <h1 class="logo"><strong><?php echo $this->getLogoAlt() ?></strong><a href="<?php echo $this->getUrl('') ?>" title="<?php echo $this->getLogoAlt() ?>" class="logo"><img src="<?php echo $this->getLogoSrc() ?>" alt="<?php echo $this->getLogoAlt() ?>" /></a></h1>
            <?php else:?>
            <a href="<?php echo $this->getUrl('') ?>" title="<?php echo $this->getLogoAlt() ?>" class="logo"><strong><?php echo $this->getLogoAlt() ?></strong><img src="<?php echo $this->getLogoSrc() ?>" alt="<?php echo $this->getLogoAlt() ?>" /></a>
            <?php endif?>
            <p class="top-promo" title="<?php echo $this->__('Free Shipping on orders over 50$'); ?>"><?php echo $this->__('Free Shipping on orders over 50$'); ?></p>
            <?php echo $this->getChildHtml('topMenu') ?>
        </div>
        <div class="quick-access">
            <?php echo $this->getChildHtml('store_language') ?>
            <p class="welcome-msg"><?php echo $this->getWelcome()?></p>
            <?php echo $this->getChildHtml('topLinks') ?>
        </div>
        <?php echo $this->getChildHtml('topBar') ?>
        <?php echo $this->getChildHtml('topContainer'); ?>
    </div>
    I need to modify the div for quick-access, not the css just the html, I just need to add a new link to it. How can I find this page?
    Thanks

    Take a look at the iCab Mobile browser for the iPad. It allows document uploads if you configure it properly in the settings. iCab Mobile also works with DropBox.
    You may have to download the documents to the iPad and upload from there, but it might be worth a look here.
    https://itunes.apple.com/us/app/icab-mobile-web-browser/id308111628?mt=8
    This is copied from their website.
    How can I upload any file (not only photos) under iOS 6?
    Unlike the web engine of iOS 5.x and older, the web engine of iOS 6 has now basic upload support as well. But it only supports uploading photos and videos from the photo album. And this will only work under iOS 6.
    The upload capability of iCab Mobile works under all iOS releases and supports uploading photos videos and all other file types. It can even scale down photos before uploading to save bandwidth.
    But iCab's own custom upload capability has the disadvantage, that because of several iOS restrictions, it can not work on all web pages. Therefore under iOS 6, iCab Mobile provides a switch in the settings where the user can choose, if iCab should use the upload capability from the iOS (only photos, works with some more web pages) or the capabilities of iCab (photos and all other files, can't work on all web pages).
    So if you need to upload other files than just photos, make sure that you set the option "Upload files via" in the settings to "iCab Mobile".
    This is a link to the FAQ on the site.
    http://www.icab-mobile.de/faq.html

  • Return Current month Data:Help needed in modifying this code of a Procedure

    Hello Folks i have this scenario where i need to modify this code so that it has to return data from the Current month First Day to the previous Day if its a daily report and previous month data if its a monthly report.
    I have no clue how to modify this code below. Currently the code is returning data for Monthly reports for the previous month. Does anyone have any idea how to modify so that the code meets the requirements of both daily and monthly reprts.
    BEGIN
    if v_lowdate is null or v_highdate is null then
    select to_number(to_char(sysdate, 'DD')) into v_cur_day from dual;
    if v_cur_day < 25 then
    -- this is for the previous month run
    Select Add_Months(trunc(sysdate, 'MONTH'), -1)
    INTO V_LOWDATE
    FROM DUAL;
    SELECT Last_Day(ADD_Months(Sysdate, -1)) INTO V_Highdate From Dual;
    else
    -- this is for the current month run
    Select trunc(sysdate, 'MONTH') INTO V_LOWDATE FROM DUAL;
    SELECT Last_Day(Sysdate) INTO V_Highdate From Dual;
    end if;
    end if;
    Thanks
    Edited by: user11961230 on Sep 30, 2009 8:34 PM

    Hi Frank, This is code till the "modifying Code" which we were working. I will post the code after the "modifying Code" in the next reply. Thanks
    CREATE OR REPLACE PROCEDURE "POPULATE_RECOVERY_ACTIVITYHN"(p_lowdate date,
    p_highdate date) IS
    v_lowdate date := p_lowdate;
    v_highdate date := p_highdate;
    v_error_code NUMBER(20);
    v_error_text VARCHAR2(300);
    v_recovery_id Recovery.Recovery_ID%type;
    v_loop_control Number(20);
    v_settlement_id recovery.settlement_id%type;
    V_Event_ID Event.Event_ID%Type;
    V_Event_Case_ID Event_Case.Event_Case_ID%Type;
    V_Recovery_Month Varchar2(100);
    V_Major_Company Major_Client.Major_Client_Name%Type;
    V_Company Client.Client_Name%Type;
    V_Client_Policy_Identifier Varchar2(100);
    V_Lan_ID Varchar2(10) := 'TROVERIS';
    V_Recovery_Account Client.Account_Number%Type;
    V_AccountA Number(2) := 0;
    V_AccountB Number(2) := 0;
    V_Unit Event_Client_Field.Client_Field_Data%Type;
    V_Market Event_Client_Field.Client_Field_Data%Type;
    V_case_open_date Event_case.Open_Date%type;
    V_Employer_Group_Code Employer_Group.Employer_Group_Code%Type;
    V_Unknown1 Number(2) := 0;
    V_Fee_Schedule_Code Event_Case.Fee_Schedule_Code%Type;
    V_Total_Fee_Percent Number(20, 2) := 0.00;
    V_Subrogation_Fee_Percent Number(20, 2) := 0.00;
    V_Unknown2 Number(2) := NULL;
    V_Unknown3 Number(2) := NULL;
    V_TOTAL_MEDICAL Number(20, 2) := 0.00;
    V_Recovery_Amount Number(20, 2) := 0.00;
    V_Total_Tax Number(20, 2) := 0.00;
    V_Administrative_Tax Number(20, 2) := 0.00;
    V_Total_NonCash_Fee Number(20, 2) := 0.00;
    V_Total_NonCash_Positive Number(20, 2) := 0.00;
    V_Total_NonCash_Negative Number(20, 2) := 0.00;
    V_Total_Recovery Number(20, 2) := 0.00;
    V_Total_NonCash_Fee_Positive Number(20, 2) := 0.00;
    V_Total_NonCash_Fee_Negative Number(20, 2) := 0.00;
    V_Total_Admin_Fee Number(20, 2) := 0.00;
    V_Total_Fee Number(20, 2) := 0.00;
    V_Total_NonCash_Tax_Positive Number(20, 2) := 0.00;
    V_Total_NonCash_Tax_Negative Number(20, 2) := 0.00;
    report_type                  Varchar2(2);
    v_gl_num client.gl_num%type; -- *002*
    v_net_billable client.net_billable%type; -- *003*
    vevent_id event.event_id%type; -- *006*
    v_prev_event event.event_id%type; -- *006*
    v_prev_case event_case.event_case_id%type; -- *006*
    v_tot_recovery recovery.amount%type; -- *006*
    v_rec_amount recovery.amount%type; -- *006*
    v_prev_rec_amt recovery.amount%type; -- *006*
    v_prev_rec_month recovery_activity.recovery_month%type; -- *006*
    v_tot_fee recovery_activity.total_fee%type; --*006*
    v_mth_rev unbundled_recoveries.monthly_revenue%type; -- *006*
    v_diff number(18, 2); -- *006*
    v_nc_count number := 0; -- *006*
    v_c_count number := 0; -- *006*
    v_nc_tot recovery.amount%type; -- *006*
    v_used_rev recovery_activity.total_fee%type; -- *006*
    v_use_mth_rev unbundled_recoveries.monthly_revenue%type := 0; -- *006*
    v_use_nc_mth_rev unbundled_recoveries.monthly_revenue%type := 0; -- *006*
    v_prev_netbill client.net_billable%type; -- *006*
    v_event_type event.event_type_code%type;
    v_date_typed event.date_typed%type;
    v_acc_client_id client.acc_client_id%Type;
    v_Recovery_Revenue_GL_Num client.recovery_revenue_gl_num%Type;
    v_Funds_Due_GL_num client.funds_due_gl_num%Type;
    v_lob Varchar2(20);
    v_nc_recovery_id recovery.recovery_id%Type;
    /*Changed the Client_Policy_Identifier to concatenate the Retlation to insured code instead of the description
    which was exceeding the column size in the table. SWL 09/03/02. Checked with the Design Doc.*/
    CURSOR RECOVERY_INFO IS
    SELECT Event.Event_ID,
    Event_Case.Event_Case_ID,
    TO_CHAR(Recovery.Recovery_Date, 'FMMONTHYYYY') As Recovery_Month,
    Major_Client.Major_Client_Name AS Major_Company,
    -- Client.Client_Name AS Company,
    -- nvl(client.legacy_client_id,'DC')||'-'||substr(Client.Client_Name,1,55) AS Company, -- SWL 04/01/04 52653
    substr(nvl(client.legacy_client_id,
    decode(client.client_id, 1, 'DC', client.client_code)) || '-' ||
    Client.Client_Name,
    1,
    60) AS Company,
    Event.Client_Policy_Identifier ||
    Event_Case.Relation_To_Insured_code as Client_Policy_Identifier,
    Client.Account_Number as Recovery_Account,
    Employer_Group.Employer_Group_Code,
    Event_Case.Fee_Schedule_Code,
    Recovery_ID,
    Event_case.Open_Date,
    '(' || recovery.recovery_transaction_internal || ')' ||
    l.recovery_transaction_descripti, --fml 110276
    recovery.settlement_id,
    trim(client.gl_num), -- *002*
    nvl(trim(client.net_billable), 'N'), -- *003*
    recovery.amount, -- *006*,
    event.event_type_code,
    event.date_typed,
    recovery_id,
    Client.ACC_CLIENT_ID,
    Recovery_Revenue_GL_Num,
    Funds_Due_GL_num
    FROM Recovery,
    Settlement,
    Event_Case,
    Event,
    Employer_Group,
    Client,
    Major_Client,
    recovery_transaction_lookup l
    Where to_date(Recovery.Recovery_Date, 'DD-MON-RR') between
    TO_DATE(v_lowdate, 'DD-MON-RR') and
    TO_DATE(v_highdate, 'DD-MON-RR')
    AND Settlement.Settlement_id = Recovery.Settlement_id
    AND Settlement.Event_Case_ID = Event_Case.Event_Case_id
    AND Event_Case.Event_ID = Event.Event_ID
    AND Event.Employer_Group_ID = Employer_Group.Employer_Group_ID(+)
    AND Event.Client_ID = Client.Client_ID
    AND Client.Major_Client_id = Major_Client.Major_Client_ID(+)
    and recovery.settlement_id not in
    (select settlement_id
    from recovery
    where to_date(Recovery.Recovery_Date, 'DD-MON-RR') between
    TO_DATE(v_lowdate, 'DD-MON-RR') and
    TO_DATE(v_highdate, 'DD-MON-RR')
    AND recovery_transaction_internal in
    ('05', '50', '52', '51'))
    --001
    and    client.invoice_flag = 'N'            *005* commenting
    -- SWL 05/03/05 #71231
    and event.event_id in
    (select event_id
    from event_end_user eeu
    where eeu.active_flag = 'Y'
    and eeu.owner_flag = 'Y'
    and eeu.end_user_id in
    (select end_user_id
    from end_user
    where end_user.research_internal_user = 'Y'))
    and recovery.recovery_transaction_internal =
    l.recovery_transaction_internal --fml 110276
    order by event.event_id, recovery.amount; -- *006*
    -- SWL 05/03/05 #71231
    -- end of 001
    -- SWL 11/10/03 # 52743
    -- *006*
    CURSOR get_recovery(vevent_id event.event_id%type) IS
    SELECT sum(r.amount)
    FROM Recovery r
    Where to_date(r.Recovery_Date, 'DD-MON-RR') between
    TO_DATE(v_lowdate, 'DD-MON-RR') and
    TO_DATE(v_highdate, 'DD-MON-RR')
    and r.event_id = vevent_id
    and r.settlement_id not in
    (select settlement_id
    from recovery
    where to_date(Recovery.Recovery_Date, 'DD-MON-RR') between
    TO_DATE(v_lowdate, 'DD-MON-RR') and
    TO_DATE(v_highdate, 'DD-MON-RR')
    AND recovery_transaction_internal in
    ('05', '50', '52', '51'))
    and r.event_id in
    (select event_id
    from event_end_user eeu
    where eeu.active_flag = 'Y'
    and eeu.owner_flag = 'Y'
    and eeu.end_user_id in
    (select end_user_id
    from end_user
    where end_user.research_internal_user = 'Y'));
    CURSOR RECOVERY_INFO_NC IS
    SELECT distinct Event.Event_ID,
    Event_Case.Event_Case_ID,
    TO_CHAR(Recovery.Recovery_Date, 'FMMONTHYYYY') As Recovery_Month,
    Major_Client.Major_Client_Name AS Major_Company,
    -- Client.Client_Name AS Company,
    -- nvl(client.legacy_client_id,'DC')||'-'||substr(Client.Client_Name,1,55) AS Company, /* SWL 04/01/04 52653 */
    substr(nvl(client.legacy_client_id,
    decode(client.client_id,
    1,
    'DC',
    client.client_code)) || '-' ||
    Client.Client_Name,
    1,
    60) AS Company,
    Event.Client_Policy_Identifier ||
    Event_Case.Relation_To_Insured_code as Client_Policy_Identifier,
    Client.Account_Number as Recovery_Account,
    Employer_Group.Employer_Group_Code,
    Event_Case.Fee_Schedule_Code,
    '(' || recovery.recovery_transaction_internal || ')' ||
    l.recovery_transaction_descripti, --fml 110276
    recovery.settlement_id,
    trim(client.gl_num), -- *002*
    nvl(trim(client.net_billable), 'N'), -- *003*
    recovery.amount,-- *006*
    recovery.recovery_id,
    event.event_type_code,
    event.date_typed,
    Client.ACC_CLIENT_ID,
    Recovery_Revenue_GL_Num,
    Funds_Due_GL_num
    FROM Recovery,
    Settlement,
    Event_Case,
    Event,
    Employer_Group,
    Client,
    Major_Client,
    recovery_transaction_lookup l
    Where to_date(Recovery.Recovery_Date, 'DD-MON-RR') between
    TO_DATE(v_lowdate, 'DD-MON-RR') and
    TO_DATE(v_highdate, 'DD-MON-RR')
    AND Settlement.Settlement_id = Recovery.Settlement_id
    AND Settlement.Event_Case_ID = Event_Case.Event_Case_id
    AND Event_Case.Event_ID = Event.Event_ID
    AND Event.Employer_Group_ID = Employer_Group.Employer_Group_ID(+)
    AND Event.Client_ID = Client.Client_ID
    AND Client.Major_Client_id = Major_Client.Major_Client_ID(+)
    and recovery.settlement_id in
    (select settlement_id
    from recovery
    where to_date(Recovery.Recovery_Date, 'DD-MON-RR') between
    TO_DATE(v_lowdate, 'DD-MON-RR') and
    TO_DATE(v_highdate, 'DD-MON-RR')
    --001
    AND recovery.recovery_transaction_internal in
    ('05', '50', '52', '51')
    and    client.invoice_flag = 'N'   *005* commenting
    /* SWL 05/03/05 #71231 */
    and event.event_id in
    (select event_id
    from event_end_user eeu
    where eeu.active_flag = 'Y'
    and eeu.owner_flag = 'Y'
    and eeu.end_user_id in
    (select end_user_id
    from end_user
    where end_user.research_internal_user = 'Y'))
    and recovery.recovery_transaction_internal =
    l.recovery_transaction_internal --fml 110276
    order by event.event_id, recovery.amount; -- *006*
    /* SWL 05/03/05 #71231 */
    --end of 001
    -- *006*
    CURSOR get_recovery_nc(vevent_id event.event_id%type) IS
    SELECT sum(r.amount)
    FROM Recovery r
    Where to_date(r.Recovery_Date, 'DD-MON-RR') between
    TO_DATE(v_lowdate, 'DD-MON-RR') and
    TO_DATE(v_highdate, 'DD-MON-RR')
    AND r.event_id = vevent_id
    and r.settlement_id in
    (select settlement_id
    from recovery
    where to_date(Recovery.Recovery_Date, 'DD-MON-RR') between
    TO_DATE(v_lowdate, 'DD-MON-RR') and
    TO_DATE(v_highdate, 'DD-MON-RR'))
    AND recovery_transaction_internal in ('05', '50', '52', '51')
    and r.event_id in
    (select event_id
    from event_end_user eeu
    where eeu.active_flag = 'Y'
    and eeu.owner_flag = 'Y'
    and eeu.end_user_id in
    (select end_user_id
    from end_user
    where end_user.research_internal_user = 'Y'));
    CURSOR Recovery_Totals_Nc IS
    Select Recovery_Detail.Recovery_Id, /* SWL 07/01/04 59016 */
    max(NVL(Recovery_Detail.Fees_Percent, 0) +
    NVL(Recovery_Detail.Admin_Percent, 0)) as Total_Fee_Percent,
    max(NVL(Recovery_Detail.Fees_Percent, 0)) as Subrogation_Fee_Percent,
    max(NVL(Recovery.Amount, 0)) as Recovery_Amount, /* SWL 04/01/04 52653 */
    Sum(NVL(Recovery_detail.Fees, 0) + NVL(Recovery_Detail.Admin, 0)) as Total_Fee,
    Sum(NVL(Recovery_Detail.Fees_Taxes, 0) +
    NVL(Recovery_Detail.Admin_Taxes, 0)) as Total_Tax,
    Sum(NVL(Recovery_Detail.Admin_Taxes, 0)) as Administrative_tax,
    Sum(NVL(Recovery_Detail.Admin, 0)) as Total_Admin_Fee,
    sum(recovery.retained_by_client) as Non_cash_fee, --fml 110276
    sum(recovery.allocation_check_amount) as cash --fml 110276
    From Settlement, Recovery, Recovery_Detail
    Where Recovery.settlement_id = v_settlement_id
    And recovery.recovery_id = v_recovery_id
    And Settlement.Settlement_id = Recovery.Settlement_id
    And Recovery.Recovery_id = Recovery_detail.Recovery_id(+)
    and to_date(Recovery.Recovery_Date, 'DD-MON-RR') between
    TO_DATE(v_lowdate, 'DD-MON-RR') and
    TO_DATE(v_highdate, 'DD-MON-RR') /*SWL 12/03/04 */
    -- Group by Recovery_Detail.Fees_Percent; /* SWL 04/01/04 52653 */
    Group by Recovery_Detail.recovery_id;
    v_cash_recovery recovery_activity.cash_recovery%type;
    CURSOR Recovery_Totals_Positive_Nc IS
    -- Select Sum(Recovery.Amount) as Total_NonCash_Positive, /* SWL 04/01/04 52653 */
    Select max(Recovery.Amount) as Total_NonCash_Positive,
    Sum(NVL(Recovery_Detail.Fees_Taxes, 0) +
    NVL(Recovery_Detail.Admin_Taxes, 0)) as Total_NonCash_Tax_Positive
    From Settlement, Recovery, Recovery_detail
    Where Recovery.settlement_id = v_settlement_id
    And Settlement.Settlement_id = Recovery.Settlement_id
    and recovery.recovery_id = v_recovery_id /* SWL 07/01/04 59016 */
    And Recovery.Amount >= 0
    And Recovery.Recovery_id = Recovery_detail.Recovery_id(+)
    And Recovery.Recovery_Transaction_Internal in
    ('05', '50', '52', '51')
    -- Group by Recovery_Detail.Fees_Percent; /* SWL 04/01/04 52653 */
    Group by Recovery_Detail.recovery_id;
    CURSOR Recovery_Totals_Negative_Nc IS
    -- Select Sum(Recovery.Amount) as Total_NonCash_Negative, /* SWL 04/01/04 52653 */
    Select max(Recovery.Amount) as Total_NonCash_Negative,
    Sum(NVL(Recovery_Detail.Fees_Taxes, 0) +
    NVL(Recovery_Detail.Admin_Taxes, 0)) as Total_NonCash_Tax_Negative
    From Settlement, Recovery, Recovery_Detail
    Where Recovery.settlement_id = v_settlement_id
    And Settlement.Settlement_id = Recovery.Settlement_id
    and recovery.recovery_id = v_recovery_id /* SWL 07/01/04 59016 */
    And Recovery.Amount < 0
    And Recovery.Recovery_id = Recovery_detail.Recovery_id(+)
    And Recovery.Recovery_Transaction_Internal in
    ('05', '50', '52', '51')
    Group by Recovery_Detail.recovery_id;
    -- Group by Recovery_Detail.Fees_Percent; /* SWL 04/01/04 52653 */
    /* SWL 11/10/03 # 52743 */
    CURSOR Event_Client_Unit IS
    Select e.Client_Field_Data as Unit
    From Event_Client_Field e, recovery r
    Where r.Event_ID = e.Event_ID
    AND r.Recovery_ID = V_Recovery_ID
    AND e.Client_Field_Name = 'UNIT';
    CURSOR Bill_totals IS
    Select mv_billdetail_case_sum.sum_paid as TOTAL_MEDICAL
    From mv_billdetail_case_sum
    where mv_billdetail_case_sum.event_id = V_Event_ID;
    CURSOR NonCash_Fee IS
    Select NVL(Sum(Recovery.Amount), 0) as Total_NonCash_Fee
    From Settlement, Recovery
    Where Recovery.Recovery_ID = V_Recovery_ID
    And Settlement.Settlement_id = Recovery.Settlement_id
    And Recovery.
    Recovery_Transaction_Internal in ('05', '50', '52', '51');
    /* SWL 04/01/04 52653 */
    CURSOR Recovery_Totals IS
    Select round(avg(NVL(Recovery_Detail.Fees_Percent, 0) +
    NVL(Recovery_Detail.Admin_Percent, 0)),
    2) as Total_Fee_Percent,
    round(avg(NVL(Recovery_Detail.Fees_Percent, 0)), 2) as Subrogation_Fee_Percent,
    max(NVL(Recovery.Amount, 0)) as Recovery_Amount,
    Sum(NVL(Recovery_detail.Fees, 0) + NVL(Recovery_Detail.Admin, 0)) as Total_Fee,
    Sum(NVL(Recovery_Detail.Fees_Taxes, 0) +
    NVL(Recovery_Detail.Admin_Taxes, 0)) as Total_Tax,
    Sum(NVL(Recovery_Detail.Admin_Taxes, 0)) as Administrative_tax,
    Sum(NVL(Recovery_Detail.Admin, 0)) as Total_Admin_Fee
    From Settlement, Recovery, Recovery_Detail
    Where Recovery.Recovery_ID = V_Recovery_ID
    And Settlement.Settlement_id = Recovery.Settlement_id
    And Recovery.Recovery_id = Recovery_detail.Recovery_id(+)
    Group by Recovery_Detail.recovery_id;
    CURSOR Recovery_Totals_Positive IS
    /* Select Sum(Recovery.Amount) as Total_NonCash_Positive,
    Sum(NVL(Recovery_Detail.Fees_Taxes,0)+ NVL(Recovery_Detail.Admin_Taxes,0)) as Total_NonCash_Tax_Positive
    */ /* SWL 04/01/04 52653 */
    Select max(Recovery.Amount) as Total_NonCash_Positive,
    Sum(NVL(Recovery_Detail.Fees_Taxes, 0) +
    NVL(Recovery_Detail.Admin_Taxes, 0)) as Total_NonCash_Tax_Positive
    From Settlement, Recovery, Recovery_detail
    Where Recovery.Recovery_ID = V_Recovery_ID
    And Settlement.Settlement_id = Recovery.Settlement_id
    And Recovery.Amount >= 0
    And Recovery.Recovery_id = Recovery_detail.Recovery_id(+)
    And Recovery.Recovery_Transaction_Internal in ('04', '17', '15') /*SWL 10/05/04 #63919*/--*009* added 15
    Group by Recovery_Detail.recovery_id;
    -- Group by Recovery_Detail.Fees_Percent; /* SWL 04/01/04 52653 */
    CURSOR Recovery_NonFEE_Positive IS
    Select Sum(NVL(Recovery_Detail.Fees, 0) + NVL(Recovery_Detail.Admin, 0)) as Total_NonCash_Fee_Positive
    From Settlement, Recovery, Recovery_detail
    Where Recovery.Recovery_ID = V_Recovery_ID
    And Settlement.Settlement_id = Recovery.Settlement_id
    And Recovery.Amount >= 0
    And Recovery.Recovery_id = Recovery_detail.Recovery_id(+)
    And Recovery.Recovery_Transaction_Internal in
    ('05', '50', '52', '51')
    Group by Recovery_Detail.recovery_id;
    -- Group by Recovery_Detail.Fees_Percent; /* SWL 04/01/04 52653 */
    CURSOR Recovery_Totals_Negative IS
    /* Select Sum(Recovery.Amount) as Total_NonCash_Negative,*/ /* SWL 04/01/04 52653 */
    Select max(Recovery.Amount) as Total_NonCash_Negative,
    Sum(NVL(Recovery_Detail.Fees_Taxes, 0) +
    NVL(Recovery_Detail.Admin_Taxes, 0)) as Total_NonCash_Tax_Negative
    From Settlement, Recovery, Recovery_Detail
    Where Recovery.Recovery_ID = V_Recovery_ID
    And Settlement.Settlement_id = Recovery.Settlement_id
    And Recovery.Amount < 0
    And Recovery.Recovery_id = Recovery_detail.Recovery_id(+)
    And Recovery.Recovery_Transaction_Internal in ('04', '17', '15') /*SWL 10/05/04 #63919*/--*009* added 15
    Group by Recovery_Detail.recovery_id;
    -- Group by Recovery_Detail.Fees_Percent; /* SWL 04/01/04 52653 */
    CURSOR Recovery_NonFEE_Negative IS
    Select Sum(NVL(Recovery_Detail.Fees, 0) + NVL(Recovery_Detail.Admin, 0)) as Total_NonCash_Fee_Negative
    From Settlement, Recovery, Recovery_Detail
    Where Recovery.Recovery_ID = V_Recovery_ID
    And Settlement.Settlement_id = Recovery.Settlement_id
    And Recovery.Amount < 0
    And Recovery.Recovery_id = Recovery_detail.Recovery_id(+)
    And Recovery.Recovery_Transaction_Internal in
    ('05', '50', '52', '51')
    Group by Recovery_Detail.recovery_id;
    -- Group by Recovery_Detail.Fees_Percent; /* SWL 04/01/04 52653 */
    --This is a generic cursor which will be used to control the number of rows inserted into the recovery_activity table
    --There has to be 1 row inserted into the recovery_activity table for each detail record in the recovery_detail table.
    --However, if no recovery_detail record exists there will be only 1 insert into the recovery_activity table.
    CURSOR Control_Detail_Loop
    IS
    Select 1
    FROM Recovery,
    Recovery_Detail
    Where Recovery.Recovery_ID = Recovery_Detail.Recovery_ID(+)
    And Recovery.Recovery_ID = V_Recovery_ID;
    /* SWL 04/01/04 Commented since the only time there were more entries in rd for a recovery is when there is a split fees */
    /* accounting does not want this to be displayed in detail. They need this aggregated as a single fee entry so the recovery */
    /* activity table will now have a single entry corresponding to each recovery in the recovery table. (#52653) */
    CURSOR Control_Detail_Loop IS
    Select 1 FROM Recovery where Recovery.Recovery_ID = V_Recovery_ID;
    /* DJ 10/25/04 # 64633 start*/
    CURSOR Event_Client_Market IS
    Select e.Client_Field_Data as Market
    From Event_Client_Field e, recovery r
    Where r.Event_ID = e.Event_ID
    AND r.Recovery_ID = V_Recovery_ID
    AND e.Client_Field_Name = 'MARKET';
    /* DJ 10/25/04 # 64633 end*/
    v_cur_day integer := 0;
    -----dj
    v_vendor_fee_wh number;
    v_total_vendor_fee_wh number;
    v_rec_itc recovery_activity.recovery_transaction_internal%type;
    --v_settlement_id settlement.settlement_id%type;
    --*004* start
    function unbundled_fee(pevent_id event.event_id%type,
    plowdate date,
    phighdate date) return number is
    -- function variables
    v_fee number(18, 2) := 0;
    v_month_revenue unbundled_recoveries.monthly_revenue%type := 0;
    v_cum_revenue unbundled_recoveries.cum_revenue%type := 0;
    v_contract_fee_per unbundled_recoveries.contractual_fee_per%type := 0;
    v_prev_cum_revenue unbundled_recoveries.cum_revenue%type := 0;
    v_cum_ub_rec unbundled_recoveries.cum_ub_recoveries%type := 0;
    v_cum_inv_paid unbundled_recoveries.cum_inv_paid%type := 0;
    v_month_rec unbundled_recoveries.monthly_recoveries%type := 0;
    v_cum_rec unbundled_recoveries.cum_recoveries%type := 0;
    v_event_id event.event_id%type;
    begin
    --v_month_rec and v_cum_inv_paid
    begin
    select event_id,
    (select sum(r.amount)
    from recovery r
    where r.event_id = e.event_id
    and trunc(r.recovery_date) between plowdate and phighdate) as monthly_recoveries,
    -- *006* added cum_rec
    (select nvl(sum(r.amount), 0)
    from recovery r
    where r.event_id = e.event_id
    and trunc(r.recovery_date) <= trunc(phighdate)) as cum_recoveries,
    (select sum(decode(nvl(ex.client_invoice_closed, 'N'),
    'N',
    ex.paid_amount,
    ex.client_invoice_received))
    from expense ex
    where ex.event_id = e.event_id
    and upper(ex.status) = 'PAID'
    and trunc(ex.check_date) <= phighdate
    and trim(ex.orig_client_invoice_date) is not null
    and nvl(ex.client_invoice_dispute, 'Y') = 'N') as cum_invoiced_paid
    into v_event_id, v_month_rec, v_cum_rec, v_cum_inv_paid
    from event e
    where e.event_id = pevent_id;
    exception
    when no_data_found then
    v_event_id := 0;
    v_month_rec := 0;
    v_cum_rec := 0;
    v_cum_inv_paid := 0;
    when others then
    v_event_id := 0;
    v_month_rec := 0;
    v_cum_rec := 0;
    v_cum_inv_paid := 0;
    end;
    -- *007* start
    -- if event previously written to table, get values from table
    begin
    select nvl(ub.cum_revenue, 0)
    into v_prev_cum_revenue
    from unbundled_recoveries ub
    where ub.event_id = pevent_id
    and ub.month_id =
    (select max(a.month_id)
    from unbundled_recoveries a
    where a.event_id = pevent_id
    and a.month_id < to_char(v_lowdate, 'YYYYMM'));
    exception
    when no_data_found then
    v_prev_cum_revenue := 0;
    when others then
    v_prev_cum_revenue := 0;
    end;
    -- *007* end
    --v_contract_fee_per
    begin
    select nvl(max(rd.fees_percent), 0)
    into v_contract_fee_per
    from recovery_detail rd
    where rd.recovery_id in
    (select r.recovery_id
    from recovery r,
    (select a.event_id, max(amount) as amount
    from recovery a
    where a.event_id = pevent_id
    and trunc(a.recovery_date) between plowdate and
    phighdate
    group by a.event_id) max_r
    where r.event_id = max_r.event_id
    and trunc(r.recovery_date) between plowdate and phighdate
    and r.amount = max_r.amount);
    exception
    when no_data_found then
    v_contract_fee_per := 0;
    when others then
    v_contract_fee_per := 0;
    end;
    v_cum_ub_rec := nvl(v_cum_rec, 0) - nvl(v_cum_inv_paid, 0);
    if ((nvl(v_cum_ub_rec, 0) > 0) and (nvl(v_month_rec, 0) <> 0)) then
    -- latest cumulative unbundled recoveries > 0
    v_cum_revenue := round(((v_contract_fee_per / 100) * v_cum_ub_rec),
    2);
    v_month_revenue := v_cum_revenue - v_prev_cum_revenue;
    end if;
    v_fee := v_month_revenue;
    return v_fee;
    exception
    when others then
    raise_application_error(-20106,
    substr('populate_recovery_activity.undebundled_fee: ' ||
    Sqlcode || Sqlerrm,
    1,
    500));
    return v_fee;
    end;

  • Need to modify Standard Purchase Order Stylesheet (PO_STANDARD_XSLFO.xsl)

    Hi
    We need to modify Standard Purchase Order Stylesheet (po_standard_xslfo.xsl) . Current stylesheet generating PO like the following.
    <FOR-EACH>
    ITEM_NUM
    ITEM_DESCRIPTION
    <FOR-EACH>
    SHIP_TO_ADDRESS_LINE1 NEED_BY_DATE QUANTITY
    </FOR-EACH>
    </FOR-EACH>
    Based on this, we are getting the output like this:
    Item Num 1
    Itme Description 1
    Ship To: Needed: Quntity
    1234. A1 Avenue JUL 200
    SomeCity, CA 90706
    1234. A1 Avenue AUG 200
    SomeCity, CA 90706
    4567 B1 Avenue JUL 100
    City2 , CA
    Itme Description 2
    Ship To: Needed: Quntity
    5689. c1 Avenue JUL 200
    SomeCity, CA 90706
    Our requirement is like this:
    Item Num 1
    Itme Description 1
    Ship To: 1234. A1 Avenue, SomeCity, CA 90706
    Month: JUL AUG SEP
    Quantity: 200 200 100
    Ship To: VVV4567 B1 Avenue , SomeCity, CA 90706
    Month: JUL AUG SEP
    Quantity: 100 200 100
    So we need to add ship_to group (ITEM/SHIP_TO) .
    How can we use group by item, ship_to..
    <fo:block> <xsl:value-of select="ITEM_NUM"/> </fo:block>
    <fo:block> <xsl:value-of select="ITEM_DESCRIPTION"/> </fo:block>
    <xsl:for-each select="/PO_DATA/LINES/LINES_ROW/LINE_LOCATIONS/LINE_LOCATIONS_ROW">
    <fo:block> <xsl:value-of select="SHIP_TO_ADDRESS_LINE1"/> </fo:block>
    <fo:block> <xsl:value-of select="substring(NEED_BY_DATE,4,3)"/> </fo:block>
    <fo:block> <xsl:value-of select="QUANTITY"/> </fo:block>
    </xsl:for-each>
    </xsl:for-each>
    In the above code I need split the data by ITEM_NUM/ SHIP_TO_ADDRESS_LINE1.
    I am new to xsl-fo. I tried different ways,but ship_to_address_line1 is generating wiith each quanty and need_by_date.
    Please guide me.
    Thank you
    Raju
    Edited by: subbaraju on May 7, 2009 2:36 PM

    Hi Chandra
    Thank you very much for your suggestion.
    I tried that way, I created some sample xml file, I created sample rtf file and I generated xsl-fo file. I copied the part of code into my PO_STANDARD_PO.XSL. I am getting some error.
    I noticed PO_STANDARD_PO.XSL is xsl version 1.0 and the generated sample data is with xsl version 2.0.
    The generated code is using “for-each_group”, “sum()”, “current-group()” etc. Is these functions will work in xslt 1? Or do we need to code different way?
    We are in Oracle APPS 12.0.4.
    Thank you
    Raju
    Edited by: subbaraju on May 26, 2009 11:56 AM

  • BADI/User Exit suggestion - for determining Partner in PO header

    Hi All,
    I want to be able to automatically populate and determine a manual partner function within the header of a purchase order creation.
    Example, when PO is allocated against account assignment 'P' then go to the WBS element assigned and retrieve the specific partner number for partner function type XX. Then populate this into the relevant header partner function of the PO.
    Any ideas of which BADI/User exit could be used in ME21N?
    Thanks
    Steve

    Hi Steve
    Before going to search the UserExit/BADI, please remember your account assignment will be at item level and the partner will be at Header level.If you have number of line items with different account asssginments or different WBS elements under account assignment P, it is difficult to determine the partner functional at Header level.Please think on how can you build logic? There are number of BADI/Exits available for Purchase order.
    Regards
    Ramakrishna

  • BADI CRM_COPY_BADI for item splitting in Quote - Contract

    Hi all,
    i have this requirement to split the item quantity into 1 per line when a contract gets created from a quotation.
    im new to both CRM and BADI but after doing some research online i figure that my scope should involve creating an implementation of the BADI, configurating the transaction type, and then adding my splitting code in method PRODUCT_I.
    but problem is, i've created my implementation and put a breakpoint in both method COPY and PRODUCT_I... and when i try to create a follow-up from a quote to contract, only the COPY method breakpoint gets caught. however, im quite sure it's the PRODUCT_I method which i should be using as it contains the item level internal table being pass into it. but it doesnt seems to be called in this process (am wondering if it's some config thing which i've missed).
    can someone provide some guidance into BADI, CRM_COPY_BADI and possibly the requirement's approach?
    many thanks in advance.
    cheers,
    Ryan.

    Hi Karthik,
    thanks for the info!
    technically, my understanding is that when u create an implementation, the process should goes through all these methods at relevant point on relevant business transaction. but strangely after putting breakpoints in all the said methods above, it seems to just going through the COPY method everytime a followup is being created (from quotation to contract). btw, i'm processing it through tcode CRMD_BUS2000112-> openning an existing quote-> then creating a follow-up contract.
    or should should i instead be coding these method-calling manually (on ORDERADM_I and SCHEDLIN_I) or is there some config i'm missing?
    lost in badi, was working more on the old exits for MM/SD. any pointers are much appreciated.
    many thanks!
    cheers,
    Ryan.

  • What is the need of creating partner functions for sales document type.

    Hi SAP (SD-GURUS),
    Actually we create partner functions  before creating customer ex: sold to party, ship to party, bill to party, and payer.
    These partner functions are going to be copied into sales order while processing sales order.
    Again what is the need of creating partner functions for sales document type.
    Thanks&Regards
    sreenivas peruru

    There are some Partners you could enter at Sales ORder Level. E.g. Sales Person, Employee Responsible, Forwarding Agent, Broker, etc.
    Thus these partner Determination need to be carried out at Sales Order Level & not at Customer Master level.
    So we have to configure partner Determination for various levels e.g. Customer Master, Sales Order, Delivery level etc...
    Hope this helps...
    THanks,
    Jignesh Mehta

  • Need to modify Sales order Item additional tab B

    Hello all,
    I need to modify Sales order item additional tab B ...by removing the exisitng fields and should add some new fields ....does it have any impact on this screen could be used in any of the other transaction .......i  just wanted if we remove the fields and some new details will have some impact
    Regards,
    KK

    Additional data B is used to add your own fields also known as custom fields in sales order.
    Custom fields can be added to tables VBAK & VBAP (depending on header or item). Similarly you can remove fields if you don't require it anymore.
    In short, your requirement can be met but you have to take help of ABAP consultant since it requires maintenance of user exits and modification of screens.

Maybe you are looking for