Pricing condition deleted in PO

Hi Experts,
I created a PO and added Freight condtion to the PO. After creating the PO i realized that the plant in the PO is a wrong one. So i changed the plant in the PO .
But after changing the plant i see that the freight condition is deleted in the PO. Could some one explain the reason for it ?
Does it have something to do with valuation area maintained at Plant level ?
Regards
Pavan

Hi,
I created a PO and added Freight condtion to the PO. After creating the PO i realized that the plant in the PO is a wrong one. So i changed the plant in the PO .
see first thing for wrong plant you give condition in po  manually or it come automatically
If plant change info record change in  po  and check info record ,check last Po number in info record
Regards
Kailas Ugale

Similar Messages

  • Pricing condition deletion in CRM

    Hello!
    We're trying to delete pricing condition using CRMXIF_CONDITION_SEL_DELETE, but we are able to delete only a number of condition records at once.
    I've read the documentation  for this FM, but  i still can't understand how to delete particulary one pricing condition from condition table.
    Can anybody help me?
    Tnank you!

    Hi,
    I used function module 'CRMXIF_CONDITION_SEL_DELETE' to delete condition records. Below is the sample code,
    Data:  ls_data           TYPE bapi_ct_sel_opt_msg,
           lt_range          TYPE TABLE OF bapi_ct_cond_rec_sel_range,
           ls_range          TYPE bapi_ct_cond_rec_sel_range,
           lt_return         TYPE bapirets,
           lt_ret            TYPE bapiret2.
        ls_data-object_representation   = 'E'.
        ls_data-sel_opt-ct_application  = 'CRM'.
        ls_data-sel_opt-object_task     = 'D'.
          ls_range-fieldname    = 'ZZOPPORTUNITY_GUID'.
          ls_range-r_sign       = 'I'.
          ls_range-r_option     = 'EQ'.
          ls_range-r_value_low  = lv_guid.   
          APPEND ls_range TO lt_range.
          ls_range-fieldname    = 'KSCHL'.
          ls_range-r_sign       = 'I'.
          ls_range-r_option     = 'EQ'.
          ls_range-r_value_low  = 'ZZNE'.    "cond type
          APPEND ls_range TO lt_range.
          ls_data-sel_opt-range = lt_range.
    CALL FUNCTION 'CRMXIF_CONDITION_SEL_DELETE'
          EXPORTING
            data   = ls_data
          IMPORTING
            return = lt_return.
    * Committing the transaction
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          IMPORTING
            return = lt_ret.
    Regards,
    Arun

  • Delete Pricing Condition IN Sales Order

    Hello Forum,
    Does anyone know how to delete a specific pricing condition in a Sales Order.
    In a sales order for each line item there are multiple pricing conditions. I need to delete a specific price condition 'ZZZZ' for instance then how do I go about it?
    This is what I have been able to find out so far.
    1. Does NOT seem to be possible by BDC because there is no way to position the cursor on the particular condition record I require.
    2. Although there is BAPI_SALESORDER_CHANGE, SAP via an OSS note specifies that this BAPI CANNOT be used to delete  condition records.
    3. None of the PRICING function modules seems to work for deletion. I did find out a function module PRICING_DELETE_LINE but this seems to rely on being called via SAP Standard function.
    I have tried searching for some means to do this and I hope that someone on this forum can give me some help on the same.
    Regards,

    Hi Peter,
    Your reference to OSS Note 593246 saved me from hitting my head to the wall, I had almost given up. Thanks a lot.
    Here is the code, in case any one needs to add or change a condition type on the sales order.
    REPORT ytest.
    DATA:lt_conditions_in TYPE STANDARD TABLE OF bapicond,
         lt_conditions_inx TYPE STANDARD TABLE OF bapicondx,
         lt_return TYPE STANDARD TABLE OF bapiret2,
         ls_logic_switch TYPE bapisdls,
         ls_order_header_inx TYPE bapisdh1x,
         ls_conditions_in TYPE bapicond,
         ls_conditions_inx TYPE bapicondx.
    ls_order_header_inx-updateflag = 'U'.
    ls_logic_switch-cond_handl = 'X'.
    ls_conditions_in-itm_number = '000010'.
    ls_conditions_in-cond_type = 'PR00'.
    ls_conditions_in-cond_value = '21.11'.
    ls_conditions_in-currency = 'USD'.
    APPEND ls_conditions_in TO lt_conditions_in.
    ls_conditions_inx-itm_number = '000010'.
    ls_conditions_inx-cond_type = 'PR00'.
    ls_conditions_inx-updateflag = ' '.
    ls_conditions_inx-cond_value = 'X'.
    ls_conditions_inx-currency = 'X'.
    APPEND ls_conditions_inx TO lt_conditions_inx.
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
    EXPORTING
       salesdocument               = '0000053232'
      ORDER_HEADER_IN             =
       order_header_inx            = ls_order_header_inx
      SIMULATION                  =
      BEHAVE_WHEN_ERROR           = ' '
      INT_NUMBER_ASSIGNMENT       = ' '
       logic_switch                = ls_logic_switch
    TABLES
       return                      = lt_return
      ORDER_ITEM_IN               =
      ORDER_ITEM_INX              =
      PARTNERS                    =
      PARTNERCHANGES              =
      PARTNERADDRESSES            =
      ORDER_CFGS_REF              =
      ORDER_CFGS_INST             =
      ORDER_CFGS_PART_OF          =
      ORDER_CFGS_VALUE            =
      ORDER_CFGS_BLOB             =
      ORDER_CFGS_VK               =
      ORDER_CFGS_REFINST          =
      SCHEDULE_LINES              =
      SCHEDULE_LINESX             =
      ORDER_TEXT                  =
      ORDER_KEYS                  =
      conditions_in               =  lt_conditions_in
      conditions_inx              =  lt_conditions_inx
      EXTENSIONIN                 =
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
    wait          = 'X'
          IMPORTING
           return         =
    Regards
    Amit Maole

  • Deletion of bulk pricing condition records

    Hello thr,
    I have thousands of pricing condition records to be deleted. I use condition type ZP01 in VK12 and select the key combination customer/material and then enter the details and then mark the condition record for deletion. To delete the next condition record, I need to go back and do the entire process again. Could someone please let me know if there is a txn that can help me do this in one step.
    Thanks very much for your help.

    Hi Swetha,
    If you want to delete all conditions for ZP01 condition type, you need to create a LSMW batch input from LSMW t-code. you can check and try followings:
    [https://wiki.sdn.sap.com/wiki/display/ABAP/LSMW%20steps%20-Batch%20Input%20Recording]
    [http://www.scmexpertonline.com/downloads/SCM_LSMW_StepsOnWeb.doc]
    You should go to in LSMW t-code, a recording should be created for one record from VK12 t-code and it can be run for all records like same from SM35 t-code.
    Please follow the links above for VK12 condition deletion.
    I hope these will meet your requirement fully.
    Regards,

  • Change/Delete Existing Pricing Condition Type

    Hello
    I have a manu Pricing Condition Type and a rate(obtained from custom source) was inserted pro-grammatically into this line item whenever the new line item was added into the basket using CRM_ISA_BASKET_ITEMS badi.
    When the user changes the Qty for the same line item, I want to delete the existing condition rate(manual) and find the new current rate from the custom source and add that to this Line Item.
    Question: How to change/delete existing Condition Rate ?
    Cheers
    RJ
    Reference: E-Commerce Implementation

    Hello,
    You can use java condition value user exit for this.
    Thanks and Regards
    shanto aloor

  • Can idoc COND_A04 be used to update/delete existing pricing conditions?

    Hi all,
    I am designing an interface from an external pricing system to SAP, and am currently looking at the COND_A04 idoc as a mechanism to load the prices into SAP.  In testing I've found that this idoc creates pricing conditions very nicely, but I'm wondering if the idoc can also be used to change existing pricing conditons or mark existing pricing conditions for deletion.  Has anyone ever done this with COND_A04?
    I tried deleting an existing condition by populating E1KONH-KNUMH with the condtion record number of the existing condition, and populating E1KONP-LOEVM_KO (deletion indicator) with an 'X'.  Instead of marking the existing condition with the deletion flag, what this did was create a new condition record (same validity period and price) that is marked for deletion.  While functionally this does in fact delete the price (the previous condition is 'overlapped' by the new condition and therefore ignored going forward), it doesn't seem like a clean solution and the resulting change history is very confusing.
    Are there are fields on the idoc that can be set to perform a true change or deletion, vs. simply creating a new condition record???  Any ideas will be most appreciated!
    Thanks,
    Allison

    There could be numerous reasons for the IDoc failure because the message that you are getting is too generic. Btw, Is this the only message you get, check if there are more than 1 status 51 in your IDoc to get some more information.
    Also see the longtext of the message by double clicking on the status message, probably you will get a more comprehensive reason for the failure.
    If nothing of the above helps, try to see the message number and class and see where it is used in the posting program and put a break point at the spot where this message is triggered.
    regards,
    Advait

  • T code/ report to list all material sales pricing condition with deletion i

    I create sales org/ material level pricing conditions in VK11. Some unwanted material pricing conditions are with Deletion indicator active. Iu2019m looking for a report to list all material sales pricing condition with deletion indicator active.
    Please advice me on this.

    Hi Goto v/ld and select 16 which stands for individual prices, and then populate sales organization, distribution channel, customer ,material numbers,etc...and tick "Cond.marked for deletion" check box in "list screen" tab which is the most important, execute you will be able to see all material pricing condition even though it had been deleted.

  • Deleting pricing conditions using FM /AFS/VBAK_SALESDOCUMENT_CHANGE

    Hi all,
    following the instructions in oss note 593246 I have succesfully implemented code to delete a discount condition from a sales order using FM /AFS/VBAK_SALESDOCUMENT_CHANGE. But now I also want to delete a condition from a sales order position which has an item which has the AFS 'price by size' characteristic (an item with a shirt for example,  with 10 pieces, which are divided in 3 smalls, 4 mediums and 3 large).
    Using the same code that was succesful earlier, it deletes the discount condition, but also all standard pricing conditions, making the pricing in the order invalid obviously.
    Has anyone else had this problem? And more importantly: has anyone found a way to do this succesfully?
    Thanks in advance
    Arjan

    update:
    setting the condition to value zero is possible I found... so at least I have that option. But deleting would be the tidy solution, so any help is still aprreciated.
    If there is anyone also struggleing with this AFS module and pricing, I can share the code I am using to update to zero or delete (when the material is not price by size-ed.

  • Mass delete pricing condition type

    Hi experts,
    I have a requirement to delete a pricing condition type e.g. ZA01 (manual input) which was entered twice by users to all sales orders not billed about 1000 and 3000 item lines. What is the best way to delete without incurring errors later during billing?  It's very easy to identify i.e. to delete all ZA01 without any amount entered.
    Thanks.
    Regards
    PSK

    Hi,
    I can think of this: get a program built to do this activity.
    build it flexible to delete any such CType for any S-Org--so it can be r-used later.
    Not sure if t-code MASS can help here?
    Regards,
    Raghu.

  • Table for Deleted Pricing Condition

    Dear SD Guru's,
    Good Day.
    I would like to ask what is the table i can use to show all the pricing condition that is flagged for deletion? and with the deletion date.
    Currently I am using KONP, but there is no deletion date field there?
    Any ideas?
    Hoping for your positive feed backs.
    Thank you.

    Hi Tina,
    Check this if it useful
    Enter transaction: OY18 ? Then choose the option: Evaluate Logs.
    Enter table: NACH,then Specify the time interval for which you want to run the analysis. Choose the option: "Tables" in the Evaluate for - area.
    If you get the message "No logs found for selected period" and you know for a fact that there were changes, execute /nsu53.
    Regards,
    Madhu.

  • Delete pricing condition using FM crm_order_maintain

    Hi experts
    I need to delete an order pricing condition using the FM crm_order_maintain but i can't do it....
    somebody can help me with the code for do this?
    Thanks in advance
    Marco

    Do one thing,,,
    Go to CRMD_ORDER
    Open the transaction in change mode
    Go to the Pricing condition tab
    put /H in transaction code box
    delete the pricing condition manually from the transaction
    Put break point on CRM_ORDER_MAINTAIN function module...
    debugger will stop at the function module...
    check the data in all tables at this time and try to pass the same...it should work..

  • Delete pricing conditions line using BAPI_SALESORDER_CHANGE

    Hi experts.
    I've read the forum and OSS about this topic and don't have clear if it's possible to delete a price condition position (using BAPI). Using tx. VA02 I can delete pricing conditions, that's why I think should be possible.
    We have a sales order created, and depending on the sold-to-party we have some discounts: RA00 (% discount) or RB00 (absolute discounts).
    In some cases we need to insert/update or delete these pricing conditions. For insert/update, we don't have any problem using
    BAPI_SALESORDER_CHANGE and setting the appropiate updateflag.
    But... what would be the procedure to delete a discount, for example, RA00 fixed on a sales order? Has the logic_switch be informed specially?
            wa_cond-itm_number = lt_cond-itm_number.
            wa_cond-cond_type  = lt_cond-cond_type.
            APPEND wa_cond TO i_cond.
            wa_condx-itm_number = lt_cond-itm_number.
            wa_condx-cond_type  = lt_cond-cond_type.
            wa_condx-updateflag = 'D'.
            APPEND wa_condx TO i_condx.
    Lots of thanks.
    Javier

    I am not positive on being able to delete a pricing condition through program.
    Online when you try to change the pricing, SAP suggests us to redetermines the Pricing rather than just changing the values. And also the pricing condition config also plays a role... I think there was a setting which says Pricing condition to be manual which means you can add or delete the conditoin.

  • Change Pricing Condition for an item with CRM_ORDER_MAINTAIN

    Hi community,
    I try to change an existing condition with the function module crm_order_maintain.
    Everything looks fine, no error no dump, but no success
    The condition stays the same!
    Can anybody find a solution for this?
    Heres my report so far:
    *& Report  ZTEST_PRICING2
    REPORT  ztest_pricing2.
    DATA: lt_guid      TYPE crmt_object_guid_tab,
          lt_item      TYPE crmt_object_guid_tab,
          lt_saved     TYPE crmt_return_objects,
          lt_pridoc    TYPE crmt_pric_cond_t,
          ls_pridoc    TYPE crmt_pric_cond,
          lt_pricom    TYPE crmt_pridoc_comt,
          ls_pricom    TYPE crmt_pridoc_com,
          lt_header    TYPE crmt_orderadm_h_comt,
          lt_input     TYPE crmt_input_field_tab,
          ls_input     TYPE crmt_input_field,
          ls_input_fn  TYPE CRMT_INPUT_FIELD_NAMES,
          ls_cond_chg  TYPE prct_cond_external_change,
          ls_cond      TYPE PRCT_COND_DU,
          lt_pricing_i TYPE CRMT_PRICING_I_WRKT.
    PARAMETERS: lv_head TYPE crmt_object_guid DEFAULT 'C4C61C4E35DDF306E10000000A024089'.
    PARAMETERS: lv_item TYPE crmt_object_guid DEFAULT '09C71C4E35DDF306E10000000A024089'.
    PARAMETERS: lv_kbetr TYPE prct_cond_rate DEFAULT '100'.
    INSERT lv_head INTO TABLE lt_guid.
    INSERT lv_item INTO TABLE lt_item.
    CALL FUNCTION 'CRM_ORDER_READ'
      EXPORTING
        it_header_guid                    = lt_guid
        it_item_guid                      = lt_item
    *   IV_MODE                           =
    *   IV_ONLY_SPEC_ITEMS                =
    *   IT_REQUESTED_OBJECTS              =
    *   IV_NO_AUTH_CHECK                  =
    *   IT_ITEM_USAGE_RANGE               =
    *   IV_SUBITEM_DEPTH                  = -1
    *   IT_OBJECT_FILTER                  =
    *   IV_ONLY_CHANGED_OBJ               = FALSE
    *   IV_STATUS_H_CHECK_RELEVANCE       = FALSE
      IMPORTING
        et_pridoc                         = lt_pridoc
        et_pricing_i                      = lt_pricing_i
    * CHANGING
    *   CV_LOG_HANDLE                     =
    EXCEPTIONS
       document_not_found                = 1
       error_occurred                    = 2
       document_locked                   = 3
       no_change_authority               = 4
       no_display_authority              = 5
       no_change_allowed                 = 6
       OTHERS                            = 7.
    IF sy-subrc <> 0 AND lt_pridoc IS NOT INITIAL.
      WRITE: / 'ERROR'.
      EXIT.
    ENDIF.
    READ TABLE lt_pridoc INDEX 1 INTO ls_pridoc.
    IF sy-subrc <> 0.
      WRITE: / 'ERROR'.
      EXIT.
    ENDIF.
    READ TABLE ls_pridoc-pric_cond INTO ls_cond WITH KEY kschl = 'PB00'.
    IF sy-subrc <> 0.
      WRITE: / 'ERROR'.
      EXIT.
    ENDIF.
    ls_input-ref_guid   = lv_head.
    ls_input-ref_kind   = 'A'.
    ls_input-objectname = 'PRIDOC'.
    ls_input_fn-fieldname = 'WAERS'.
    INSERT ls_input_fn INTO TABLE ls_input-field_names.
    ls_input_fn-fieldname = 'KBETR'.
    INSERT ls_input_fn INTO TABLE ls_input-field_names.
    INSERT ls_input INTO TABLE lt_input.
    ls_pricom-ref_guid   = lv_head.
    ls_pricom-ref_kind   = 'A'.
    *ls_pricom-PRICING_TYPE  = 'B'.
    *ls_pricom-pricing_procedure = 'ZZMTA'.
    ls_pricom-pric_cond[] = ls_pridoc-pric_cond[].
    MOVE-CORRESPONDING ls_cond TO ls_cond_chg.
    ls_cond_chg-waers = 'EUR'.
    ls_cond_chg-kbetr = lv_kbetr.
    INSERT ls_cond_chg INTO TABLE ls_pricom-cond_change.
    APPEND ls_pricom TO lt_pricom.
    CALL FUNCTION 'CRM_ORDER_MAINTAIN'
      EXPORTING
        it_pridoc         = lt_pricom
      CHANGING
    *    ct_orderadm_h     = lt_header
        ct_input_fields   = lt_input
      EXCEPTIONS
        error_occurred    = 1
        document_locked   = 2
        no_change_allowed = 3
        no_authority      = 4
        OTHERS            = 5.
    IF sy-subrc <> 0.
      EXIT.
    ENDIF.
    CALL FUNCTION 'CRM_ORDER_SAVE'
      EXPORTING
        it_objects_to_save         = lt_guid
      IMPORTING
        et_saved_objects           = lt_saved
    *   ET_EXCEPTION               =
    *   ET_OBJECTS_NOT_SAVED       =
    EXCEPTIONS
       document_not_saved         = 1
       OTHERS                     = 2.
    IF sy-subrc EQ 0.
      COMMIT WORK AND WAIT.
    ELSE.
      ROLLBACK WORK.
    ENDIF.
    regards
    Markus

    Hello Jordi,
    The example below is whereby i was trying to copy all the pricing condition on one document to another and deleting what's not present on the source document.
    You can used this piece of code to adapt your requirement.
    CALL FUNCTION 'ZCRC_FM_COPY_PRICE_COND_ALL'
              EXPORTING
    id_object_guid_src    = <fs_el_con_guid>
    id_object_guid_dest = <fs_el_so_guid>
    id_commit                  = abap_false
              EXCEPTIONS
    not_allowed         = 1
    error_occured     = 2
    OTHERS                 = 3.
      PERFORM f_recup_donnees USING     id_object_guid_src
                                                              id_object_guid_dest.
    PERFORM f_modif_condition_prix USING id_object_guid_src
                                                                                      id_object_guid_dest.
    PERFORM f_header_copy_pricing using id_object_guid_src
                                                                            id_object_guid_dest.
    FORM f_recup_donnees   USING      pd_object_guid_src TYPE crmt_object_guid
                                                                           pd_object_guid_dest TYPE crmt_object_guid.
      DATA:
         lt_header_guid        TYPE crmt_object_guid_tab.
      INSERT pd_object_guid_src  INTO TABLE lt_header_guid.
      INSERT pd_object_guid_dest INTO TABLE  lt_header_guid.
      CLEAR: gt_orderadm_i, gt_doc_flow.
      CALL FUNCTION 'CRM_ORDER_READ'
        EXPORTING
          it_header_guid       = lt_header_guid
        IMPORTING
          et_doc_flow          = gt_doc_flow            
          et_orderadm_i        = gt_orderadm_i
        EXCEPTIONS
          document_not_found   = 1
          error_occurred       = 2
          document_locked      = 3
          no_change_authority  = 4
          no_display_authority = 5
          no_change_allowed    = 6
          OTHERS               = 7.
      IF sy-subrc NE 0.
        RAISE error_occured.
      ENDIF.
    " F_RECUP_DONNEES
    FORM f_modif_condition_prix USING pd_guid_src TYPE crmt_object_guid
                                      pd_guid_dest TYPE crmt_object_guid.
      DATA : ld_pd_handle_src     TYPE prct_handle,
              ld_pd_handle_dest    TYPE prct_handle,
              lt_komv_print_src    TYPE prct_cond_print_t,
    lt_komv_print_dest   TYPE prct_cond_print_t,
              ls_komv_print_dest   LIKE LINE OF lt_komv_print_dest,
              ls_komv_print_src    LIKE LINE OF lt_komv_print_src,
              lt_cond_chg          TYPE prct_cond_print_t,
              lt_cond_chg_insert   TYPE prct_cond_print_t,
              ls_cond_chg          TYPE prct_cond_print,
              ls_cond_chg_tmp      TYPE prct_cond_print,
              ls_input_fields      TYPE crmt_input_field,
              lt_input_fields      TYPE crmt_input_field_tab.
      DATA : bal_log         TYPE balloghndl,
             lt_item_ret     TYPE prct_item_ret_t,
             lt_cond_ret     TYPE prct_cond_print_t,
             ld_data_changed TYPE xfeld,
             gv_decimal      TYPE usdefaults-dcpfm,
             ld_lines        TYPE i,
             ld_ajout_cond   TYPE abap_bool.
      FIELD-SYMBOLS : <fs_orderadm_i_dest>  TYPE crmt_orderadm_i_wrk,
    <fs_orderadm_i_src>   TYPE crmt_orderadm_i_wrk,
                      <fs_cond_chg>         TYPE prct_cond_print,
    <fs_cond_chg_insert>  TYPE prct_cond_print.
    * Début Ajout CD1K904313-001.
      DATA: ld_guid_src  TYPE crmt_object_guid.
      FIELD-SYMBOLS: <fs_doc_flow>  TYPE crmt_doc_flow_wrk.
    * Début Ajout CD1K904313-001.
    * Verrouillage des documents source et destinataire
      PERFORM f_lock_document USING pd_guid_src.
      PERFORM f_lock_document USING pd_guid_dest.
    *Récupérer le pricing handle des documents
    * Document source
      CALL FUNCTION 'CRM_PRIDOC_GET_HANDLE_OW'
        EXPORTING
    iv_header_guid             = pd_guid_src
        IMPORTING
    ev_pd_handle               = ld_pd_handle_src
        EXCEPTIONS
    error_occurred             = 1
    handle_determination_error = 2
          orgdata_error              = 3
          OTHERS                     = 4.
      IF sy-subrc <> 0.
        RETURN.
      ENDIF.
    * Document destinataire
      CALL FUNCTION 'CRM_PRIDOC_GET_HANDLE_OW'
        EXPORTING
          iv_header_guid             = pd_guid_dest
        IMPORTING
          ev_pd_handle               = ld_pd_handle_dest
        EXCEPTIONS
          error_occurred             = 1
          handle_determination_error = 2
          orgdata_error              = 3
          OTHERS                     = 4.
      IF sy-subrc <> 0.
        RETURN.
      ENDIF.
    * A ne pas traiter les postes de type ZPDF
      DELETE  gt_orderadm_i WHERE itm_type = 'ZPDF'.
      LOOP AT gt_orderadm_i ASSIGNING <fs_orderadm_i_dest> WHERE header = pd_guid_dest.
        REFRESH : lt_komv_print_src,
                  lt_komv_print_dest,
    lt_cond_chg,
    lt_cond_chg_insert.
    * Début Modif CD1K904313-001.
    * Récupérer le guid de l'item liée au item destinataire.
        READ TABLE gt_doc_flow ASSIGNING <fs_doc_flow> WITH KEY objkey_b = <fs_orderadm_i_dest>-guid.
        CHECK sy-subrc EQ 0.
        ld_guid_src = <fs_doc_flow>-objkey_a.
    *    READ TABLE gt_orderadm_i ASSIGNING <fs_orderadm_i_src> WITH KEY header = pd_guid_src
    * number_int = <fs_orderadm_i_dest>-number_int.
    * Fin Modif CD1K904313-001.
    * Récupérer les pricing document
        IF sy-subrc EQ 0.
    *     Document source
          CALL FUNCTION 'PRC_PD_ITEM_SHOW'
            EXPORTING
              iv_pd_handle        = ld_pd_handle_src
    *         iv_item_no          = <fs_orderadm_i_src>-guid    "Supression CD1K904313-001
              iv_item_no          = ld_guid_src                 "Addition CD1K904313-001
            IMPORTING
              et_komv_print       = lt_komv_print_src
            EXCEPTIONS
              non_existing_handle = 1
              non_existing_item   = 2
              ipc_error           = 3
              OTHERS              = 4.
        ENDIF.
    *   Document destinataire
        CALL FUNCTION 'PRC_PD_ITEM_SHOW'
          EXPORTING
            iv_pd_handle        = ld_pd_handle_dest
            iv_item_no          = <fs_orderadm_i_dest>-guid
          IMPORTING
    et_komv_print       = lt_komv_print_dest
          EXCEPTIONS
            non_existing_handle = 1
            non_existing_item   = 2
            ipc_error           = 3
            OTHERS              = 4.
    * Modification et Suppression des conditions de prix
        LOOP AT lt_komv_print_dest INTO ls_komv_print_dest .
          CLEAR: ls_cond_chg,
                 ls_komv_print_src.
          MOVE-CORRESPONDING ls_komv_print_dest TO ls_cond_chg.
    * Rechercher la condition sur le document source
          READ TABLE lt_komv_print_src INTO ls_komv_print_src WITH KEY kschl = ls_komv_print_dest-kschl
    zaehk = ls_komv_print_dest-zaehk. "CD1K904313
          IF sy-subrc EQ 0.
            ls_cond_chg-kbetr_prt = ls_komv_print_src-kbetr_prt.
            ls_cond_chg-kwert     = ls_komv_print_src-kwert.
            ls_cond_chg-kinak     = ls_komv_print_src-kinak.
          ELSEIF ls_cond_chg-kschl IS NOT INITIAL.
            CLEAR ls_cond_chg.
            CONTINUE.
          ENDIF.
    *     Format décimal
          CASE gv_decimal.
            WHEN space.       "format N.NNN,NN
              REPLACE ALL OCCURRENCES OF '.' IN ls_cond_chg-kbetr_prt WITH ','.
            WHEN 'Y'.         "format N NNN NNN,NN
              REPLACE ALL OCCURRENCES OF '.' IN ls_cond_chg-kbetr_prt WITH ','.
          ENDCASE.
          INSERT ls_cond_chg INTO TABLE lt_cond_chg.
          CLEAR ls_cond_chg.
        ENDLOOP.
    * Ajout des conditions de prix
        LOOP AT lt_komv_print_src INTO ls_komv_print_src WHERE kschl IS NOT INITIAL.
          CLEAR: ls_cond_chg, ld_lines, ls_komv_print_dest, ls_cond_chg_tmp, ld_ajout_cond.
    * Vérifier la présence de la condition sur le document destinataire
          READ TABLE lt_komv_print_dest INTO ls_komv_print_dest WITH KEY kschl = ls_komv_print_src-kschl
    zaehk = ls_komv_print_src-zaehk. "CD1K904313.
          IF sy-subrc EQ 0.
            CLEAR: ls_cond_chg, ls_komv_print_dest.
            CONTINUE.
          ELSE.
            DESCRIBE TABLE lt_cond_chg LINES ld_lines.
            READ TABLE lt_cond_chg INTO ls_cond_chg_tmp INDEX ld_lines.
            IF sy-subrc EQ 0.
              ld_ajout_cond = abap_true.
              MOVE-CORRESPONDING ls_komv_print_src TO ls_cond_chg.
              ls_cond_chg-knumv     = ls_cond_chg_tmp-knumv.
              ls_cond_chg-kposn     = ls_cond_chg_tmp-kposn.
              ls_cond_chg-stunr     = ls_cond_chg_tmp-stunr + 10.
            ELSE.
              CLEAR: ls_cond_chg, ld_lines, ls_komv_print_dest, ls_cond_chg_tmp.
              CONTINUE.
            ENDIF.
          ENDIF.
    *     Format décimal
          CASE gv_decimal.
            WHEN space.             "format N.NNN,NN
              REPLACE ALL OCCURRENCES OF '.' IN ls_cond_chg-kbetr_prt WITH ','.
            WHEN 'Y'.               "format N NNN NNN,NN
              REPLACE ALL OCCURRENCES OF '.' IN ls_cond_chg-kbetr_prt WITH ','.
          ENDCASE.
    * Récupérer les nouvelles conditions qui seront ajouté au document destinataire
          IF ld_ajout_cond EQ abap_true.
            INSERT ls_cond_chg INTO TABLE lt_cond_chg_insert.
          ENDIF.
          INSERT ls_cond_chg INTO TABLE lt_cond_chg.
          CLEAR ls_cond_chg.
        ENDLOOP.
        CALL FUNCTION 'PRC_INT_ITEM_INPUT'
          EXPORTING
            iv_pd_handle        = ld_pd_handle_dest
            iv_item_no          = <fs_orderadm_i_dest>-guid
            it_cond_prt         = lt_cond_chg
            iv_bal_log          = bal_log
            iv_req_ret          = abap_true
            iv_req_cond_prt     = abap_true
          IMPORTING
            et_item_ret         = lt_item_ret
            et_cond_prt         = lt_cond_ret
            ev_data_changed     = ld_data_changed
          EXCEPTIONS
            non_existing_handle = 1
            non_existing_item   = 2
            ipc_error           = 3.
        IF sy-subrc = 0.
    *     En cas d'ajout de nouvelles conditions de prix, appeler le MF PRC_INT_ITEM_INPUT
    *     avec les montants
          IF lt_cond_chg_insert IS NOT INITIAL.
            REFRESH lt_cond_chg[].
            lt_cond_chg[] = lt_cond_ret[].
            LOOP AT lt_cond_chg_insert ASSIGNING <fs_cond_chg_insert>.
              READ TABLE lt_cond_chg ASSIGNING <fs_cond_chg> WITH KEY kschl = <fs_cond_chg_insert>-kschl.
              IF sy-subrc EQ 0.
                <fs_cond_chg>-kwert     = <fs_cond_chg_insert>-kwert.
                <fs_cond_chg>-kbetr_prt = <fs_cond_chg_insert>-kbetr_prt.
              ENDIF.
            ENDLOOP.
            REFRESH lt_cond_ret[].
            CALL FUNCTION 'PRC_INT_ITEM_INPUT'
              EXPORTING
                iv_pd_handle        = ld_pd_handle_dest
                iv_item_no          = <fs_orderadm_i_dest>-guid
                it_cond_prt         = lt_cond_chg
                iv_bal_log          = bal_log
                iv_req_ret          = abap_true
                iv_req_cond_prt     = abap_true
              IMPORTING
                et_item_ret         = lt_item_ret
                et_cond_prt         = lt_cond_ret
                ev_data_changed     = ld_data_changed
              EXCEPTIONS
                non_existing_handle = 1
                non_existing_item   = 2
                ipc_error           = 3.
          ENDIF.
    *   Publish event afin de sauvegarder les conditions de prix
          CALL FUNCTION 'CRM_EVENT_PUBLISH_OW'
            EXPORTING
              iv_obj_name = 'PRIDOC'
              iv_guid_hi  = pd_guid_dest
              iv_kind_hi  = 'A'
              iv_event    = 'SAVE'
            EXCEPTIONS
              OTHERS      = 1.
    *   As no order_maintain will follow implicitly and therefore no
    *   exec times for the events will be set, call CRM_ORDER_MAINTAIN
    *   without any parameters
    *   Then the exec time 'end of document' will be set and with the
    *   group logic also all exec times before
    *   But at least one object is needed in input_fields
    *   --> use PRIDOC
          ls_input_fields-ref_guid   = <fs_orderadm_i_dest>-guid.
          ls_input_fields-ref_kind   = 'B'.
          ls_input_fields-objectname = 'PRIDOC'.
          INSERT ls_input_fields INTO TABLE lt_input_fields.
          CLEAR ls_input_fields.
          CALL FUNCTION 'CRM_ORDER_MAINTAIN'
            CHANGING
              ct_input_fields   = lt_input_fields
            EXCEPTIONS
              error_occurred    = 1
              document_locked   = 2
              no_change_allowed = 3
              no_authority      = 4
              OTHERS            = 5.
        ENDIF.
      ENDLOOP.
    " F_MODIF_CONDITION_PRIX
    *& Form  F_LOCK_DOCUMENT
    * Verrouillage d'un document
    FORM f_lock_document  USING pd_guid TYPE crmt_object_guid.
      CONSTANTS : lc_orderadm_h TYPE  crmt_object_name  VALUE 'ORDERADM_H',
                  lc_orderadm_i TYPE  crmt_object_name  VALUE 'ORDERADM_I'.
      DATA: lv_process_mode      TYPE crmt_mode,
            lv_order_initialized TYPE crmt_boolean,
            lv_process_type      TYPE crmt_process_type,
            lv_already_locked    TYPE abap_bool.
      DATA: ls_admin_ui_status  TYPE crmt_admin_ui_status,
            ls_item_usage_range TYPE crmt_item_usage_range.
      DATA: lt_objects_to_read   TYPE crmt_object_guid_tab,
            lt_requested_objects TYPE crmt_object_name_tab,
            lt_item_usage_range  TYPE crmt_item_usage_range_tab,
            lt_locked_contract   TYPE crmt_object_guid_tab.
      INSERT pd_guid INTO TABLE lt_objects_to_read.
      INSERT lc_orderadm_h INTO TABLE lt_requested_objects.
      INSERT lc_orderadm_i INTO TABLE lt_requested_objects.
      ls_item_usage_range-sign  = 'E'.
      ls_item_usage_range-value = '02'.
      INSERT ls_item_usage_range INTO TABLE lt_item_usage_range.
    * LAM: Financing Options should be viewed in a separate screen:
      ls_item_usage_range-sign  = 'E'.
      ls_item_usage_range-value = '05'.   "Financing options
      INSERT ls_item_usage_range INTO TABLE lt_item_usage_range.
    *-> read document in change mode
      CALL FUNCTION 'CRM_ORDER_READ'
        EXPORTING
          it_header_guid       = lt_objects_to_read
          iv_mode              = 'B'
          it_requested_objects = lt_requested_objects
          it_item_usage_range  = lt_item_usage_range
        EXCEPTIONS
          document_not_found   = 1
          error_occurred       = 2
          document_locked      = 3
          no_change_authority  = 4
          no_display_authority = 5
          OTHERS               = 6.
      PERFORM enqueue_order IN PROGRAM saplcrm_order_ow IF FOUND
        USING pd_guid
              abap_false
              abap_false
              abap_false
    CHANGING sy-subrc
              lv_already_locked
              lt_locked_contract.
    " F_LOCK_DOCUMENT
    * Fin Ajout CD1K904074-001
    FORM f_header_copy_pricing  USING   pd_guid_src
    pd_guid_dest.
      DATA : ld_pd_handle_src     TYPE prct_handle,
              ld_pd_handle_dest    TYPE prct_handle,
              lt_komv_print_src    TYPE prct_cond_print_t,
    lt_komv_print_dest   TYPE prct_cond_print_t,
              ls_komv_print_dest   LIKE LINE OF lt_komv_print_dest,
              ls_komv_print_src    LIKE LINE OF lt_komv_print_src,
              lt_cond_chg          TYPE prct_cond_print_t,
              ls_cond_chg          TYPE prct_cond_print,
              ls_input_fields      TYPE crmt_input_field,
              lt_input_fields      TYPE crmt_input_field_tab.
      DATA : bal_log         TYPE balloghndl,
             lt_cond_ret     TYPE prct_cond_print_t,
             ld_data_changed TYPE xfeld,
             gv_decimal      TYPE usdefaults-dcpfm.
    * Verrouillage des documents source et destinataire
      PERFORM f_lock_document USING pd_guid_src.
      PERFORM f_lock_document USING pd_guid_dest.
    *  Récupérer le pricing handle des documents
    * Document source
      CALL FUNCTION 'CRM_PRIDOC_GET_HANDLE_OW'
        EXPORTING
          iv_header_guid             = pd_guid_src
        IMPORTING
          ev_pd_handle               = ld_pd_handle_src
        EXCEPTIONS
          error_occurred             = 1
          handle_determination_error = 2
          orgdata_error              = 3
          OTHERS                     = 4.
      IF sy-subrc <> 0.
        RETURN.
      ENDIF.
    * Document destinataire
      CALL FUNCTION 'CRM_PRIDOC_GET_HANDLE_OW'
        EXPORTING
          iv_header_guid             = pd_guid_dest
        IMPORTING
          ev_pd_handle               = ld_pd_handle_dest
        EXCEPTIONS
          error_occurred             = 1
          handle_determination_error = 2
          orgdata_error              = 3
          OTHERS                     = 4.
      IF sy-subrc <> 0.
        RETURN.
      ENDIF.
    *  * Récupérer les pricing document
    *  Document Source
      CALL FUNCTION 'PRC_PD_HEAD_SHOW'
        EXPORTING
          iv_pd_handle        = ld_pd_handle_src
        IMPORTING
          et_komv_print       = lt_komv_print_src
        EXCEPTIONS
          non_existing_handle = 1
          ipc_error           = 2
          OTHERS              = 3.
      CHECK sy-subrc EQ 0.
    *  Document Destinataire
      CALL FUNCTION 'PRC_PD_HEAD_SHOW'
        EXPORTING
          iv_pd_handle        = ld_pd_handle_dest
        IMPORTING
    et_komv_print       = lt_komv_print_dest
        EXCEPTIONS
          non_existing_handle = 1
          ipc_error           = 2
          OTHERS              = 3.
      CHECK sy-subrc EQ 0.
    *  * Modification et Suppression des conditions de prix
      LOOP AT lt_komv_print_src INTO ls_komv_print_src .
        CLEAR: ls_cond_chg,
               ls_komv_print_dest.
        MOVE-CORRESPONDING ls_komv_print_src TO ls_cond_chg.
    * Rechercher la condition sur le document source
        READ TABLE lt_komv_print_dest INTO ls_komv_print_dest WITH KEY kschl = ls_komv_print_src-kschl
    zaehk = ls_komv_print_src-zaehk.
        IF sy-subrc EQ 0.
          IF ls_komv_print_src-kbetr NE ls_komv_print_dest-kbetr.
            ls_cond_chg-kbetr_prt = ls_komv_print_src-kbetr_prt.
            ls_cond_chg-kwert     = ls_komv_print_src-kwert.
            ls_cond_chg-kinak     = ls_komv_print_src-kinak.
            CASE gv_decimal.
              WHEN space.       "format N.NNN,NN
                REPLACE ALL OCCURRENCES OF '.' IN ls_cond_chg-kbetr_prt WITH ','.
              WHEN 'Y'.         "format N NNN NNN,NN
                REPLACE ALL OCCURRENCES OF '.' IN ls_cond_chg-kbetr_prt WITH ','.
            ENDCASE.
          ENDIF.
        ENDIF.
        CLEAR ls_cond_chg-krech.
        INSERT ls_cond_chg INTO TABLE lt_cond_chg.
        CLEAR ls_cond_chg.
      ENDLOOP.
      CALL FUNCTION 'PRC_INT_HEAD_INPUT'
        EXPORTING
          iv_pd_handle        = ld_pd_handle_dest
          iv_bal_log          = bal_log
          it_cond_prt         = lt_cond_chg
          iv_req_ret          = abap_true
          iv_req_cond_prt     = abap_true
        IMPORTING
          et_cond_prt         = lt_cond_ret
          ev_data_changed     = ld_data_changed
        EXCEPTIONS
          non_existing_handle = 1
          ipc_error           = 2
          not_allowed         = 3
          OTHERS              = 4.
      CHECK sy-subrc EQ 0.
    *    *   Publish event afin de sauvegarder les conditions de prix
      CALL FUNCTION 'CRM_EVENT_PUBLISH_OW'
        EXPORTING
          iv_obj_name = 'PRIDOC'
          iv_guid_hi  = pd_guid_dest
          iv_kind_hi  = 'A'
          iv_event    = 'SAVE'
        EXCEPTIONS
          OTHERS      = 1.
    *   As no order_maintain will follow implicitly and therefore no
    *   exec times for the events will be set, call CRM_ORDER_MAINTAIN
    *   without any parameters
    *   Then the exec time 'end of document' will be set and with the
    *   group logic also all exec times before
    *   But at least one object is needed in input_fields
    *   --> use PRIDOC
      ls_input_fields-ref_guid   = pd_guid_dest.
      ls_input_fields-ref_kind   = 'A'.
      ls_input_fields-objectname = 'PRIDOC'.
      INSERT ls_input_fields INTO TABLE lt_input_fields.
      CLEAR ls_input_fields.
      CALL FUNCTION 'CRM_ORDER_MAINTAIN'
        CHANGING
          ct_input_fields   = lt_input_fields
        EXCEPTIONS
          error_occurred    = 1
          document_locked   = 2
          no_change_allowed = 3
          no_authority      = 4
          OTHERS            = 5.
    ENDFORM.
    FORM f_header_copy_pricing  USING   pd_guid_src
    pd_guid_dest.
      DATA : ld_pd_handle_src     TYPE prct_handle,
              ld_pd_handle_dest    TYPE prct_handle,
              lt_komv_print_src    TYPE prct_cond_print_t,
    lt_komv_print_dest   TYPE prct_cond_print_t,
              ls_komv_print_dest   LIKE LINE OF lt_komv_print_dest,
              ls_komv_print_src    LIKE LINE OF lt_komv_print_src,
              lt_cond_chg          TYPE prct_cond_print_t,
              ls_cond_chg          TYPE prct_cond_print,
              ls_input_fields      TYPE crmt_input_field,
              lt_input_fields      TYPE crmt_input_field_tab.
      DATA : bal_log         TYPE balloghndl,
             lt_cond_ret     TYPE prct_cond_print_t,
             ld_data_changed TYPE xfeld,
             gv_decimal      TYPE usdefaults-dcpfm.
      PERFORM f_lock_document USING pd_guid_src.
      PERFORM f_lock_document USING pd_guid_dest.
    *  Récupérer le pricing handle des documents
    * Document source
      CALL FUNCTION 'CRM_PRIDOC_GET_HANDLE_OW'
        EXPORTING
          iv_header_guid             = pd_guid_src
        IMPORTING
          ev_pd_handle               = ld_pd_handle_src
        EXCEPTIONS
          error_occurred             = 1
          handle_determination_error = 2
          orgdata_error              = 3
          OTHERS                     = 4.
      IF sy-subrc <> 0.
        RETURN.
      ENDIF.
    * Document destinataire
      CALL FUNCTION 'CRM_PRIDOC_GET_HANDLE_OW'
        EXPORTING
          iv_header_guid             = pd_guid_dest
        IMPORTING
          ev_pd_handle               = ld_pd_handle_dest
        EXCEPTIONS
          error_occurred             = 1
          handle_determination_error = 2
          orgdata_error              = 3
          OTHERS                     = 4.
      IF sy-subrc <> 0.
        RETURN.
      ENDIF.
    *  * Récupérer les pricing document
    *  Document Source
      CALL FUNCTION 'PRC_PD_HEAD_SHOW'
        EXPORTING
          iv_pd_handle        = ld_pd_handle_src
        IMPORTING
          et_komv_print       = lt_komv_print_src
        EXCEPTIONS
          non_existing_handle = 1
          ipc_error           = 2
          OTHERS              = 3.
      CHECK sy-subrc EQ 0.
    *  Document Destinataire
      CALL FUNCTION 'PRC_PD_HEAD_SHOW'
        EXPORTING
          iv_pd_handle        = ld_pd_handle_dest
        IMPORTING
    et_komv_print       = lt_komv_print_dest
        EXCEPTIONS
          non_existing_handle = 1
          ipc_error           = 2
          OTHERS              = 3.
      CHECK sy-subrc EQ 0.
    *  * Modification et Suppression des conditions de prix
      LOOP AT lt_komv_print_src INTO ls_komv_print_src .
        CLEAR: ls_cond_chg,
               ls_komv_print_dest.
        MOVE-CORRESPONDING ls_komv_print_src TO ls_cond_chg.
    * Rechercher la condition sur le document source
        READ TABLE lt_komv_print_dest INTO ls_komv_print_dest WITH KEY kschl = ls_komv_print_src-kschl
    zaehk = ls_komv_print_src-zaehk.
        IF sy-subrc EQ 0.
          IF ls_komv_print_src-kbetr NE ls_komv_print_dest-kbetr.
            ls_cond_chg-kbetr_prt = ls_komv_print_src-kbetr_prt.
            ls_cond_chg-kwert     = ls_komv_print_src-kwert.
            ls_cond_chg-kinak     = ls_komv_print_src-kinak.
            CASE gv_decimal.
              WHEN space.       "format N.NNN,NN
                REPLACE ALL OCCURRENCES OF '.' IN ls_cond_chg-kbetr_prt WITH ','.
              WHEN 'Y'.         "format N NNN NNN,NN
                REPLACE ALL OCCURRENCES OF '.' IN ls_cond_chg-kbetr_prt WITH ','.
            ENDCASE.
          ENDIF.
        ENDIF.
        CLEAR ls_cond_chg-krech.
        INSERT ls_cond_chg INTO TABLE lt_cond_chg.
        CLEAR ls_cond_chg.
      ENDLOOP.
      CALL FUNCTION 'PRC_INT_HEAD_INPUT'
        EXPORTING
          iv_pd_handle        = ld_pd_handle_dest
          iv_bal_log          = bal_log
          it_cond_prt         = lt_cond_chg
          iv_req_ret          = abap_true
          iv_req_cond_prt     = abap_true
        IMPORTING
          et_cond_prt         = lt_cond_ret
          ev_data_changed     = ld_data_changed
        EXCEPTIONS
          non_existing_handle = 1
          ipc_error           = 2
          not_allowed         = 3
          OTHERS              = 4.
      CHECK sy-subrc EQ 0.
      CALL FUNCTION 'CRM_EVENT_PUBLISH_OW'
        EXPORTING
          iv_obj_name = 'PRIDOC'
          iv_guid_hi  = pd_guid_dest
          iv_kind_hi  = 'A'
          iv_event    = 'SAVE'
        EXCEPTIONS
          OTHERS      = 1.
      ls_input_fields-ref_guid   = pd_guid_dest.
      ls_input_fields-ref_kind   = 'A'.
      ls_input_fields-objectname = 'PRIDOC'.
      INSERT ls_input_fields INTO TABLE lt_input_fields.
      CLEAR ls_input_fields.
      CALL FUNCTION 'CRM_ORDER_MAINTAIN'
        CHANGING
          ct_input_fields   = lt_input_fields
        EXCEPTIONS
          error_occurred    = 1
          document_locked   = 2
          no_change_allowed = 3
          no_authority      = 4
          OTHERS            = 5.

  • How to update pricing condition in sales in batch in the evening

    Gurus,
    I have a situation where I am supposed to update the freight charge condition type ("ZFR9" in my organization) on a scaled basis, depending on how much the customer (ship-to) has ordered on the same date. Since this changes from time to time, I need to write a program that does the following in the background in the evenings.
    1) Accumulate the wt of the material ordered by the same ship-to customer on the same delivery date.
    2) Find the scaled freight rate from a central universal freight charge table.
    3) Update the ZFR9 by this new frieght rate in all such sales order/line items that have the delivery date in question.
    The problem with using BDC is that the condition type ZFR9 appears on different lines depending on presence or absence of other condition types.
    Also I could not find any BAPI that does the update on a line item pricing condition.
    I am on 4.6C.
    Thanks for any help you can offer me.
    Regards
    Raju

    Guys,
    I am trying to make this work. I am able to add extra pricing conditions to sales order but I can not understand
    - how to change the value of an existing condition type OR
    - how to delete the condition type from the sales order line item
    Here is the sample code that I am using to test this out (most of the information is hard coded so that I can focus on a particular record)
    REFRESH RETURN.
        CLEAR   RETURN.
        REFRESH ORDER_ITEM_IN.
        CLEAR   ORDER_ITEM_IN.
        REFRESH ORDER_ITEM_INX.
        CLEAR   ORDER_ITEM_INX.
        REFRESH PARTNERCHANGES.
        CLEAR   PARTNERCHANGES.
        REFRESH CONDITIONS_IN.
        CLEAR   CONDITIONS_IN.
        REFRESH CONDITIONS_INX.
        CLEAR   CONDITIONS_INX.
        CLEAR SALESDOCUMENT.
        CLEAR ORDER_HEADER_INX.
    Move screen accepted docnumber TO SALESDOCUMENT.
        MOVE P_VBELN       TO SALESDOCUMENT.
        ORDER_HEADER_INX-UPDATEFLAG = 'U'.
        APPEND ORDER_HEADER_INX.
    Move screen accepted line item
        ORDER_ITEM_IN-ITM_NUMBER = P_POSNR.
        APPEND ORDER_ITEM_IN.
    Move screen accepted line item
        ORDER_ITEM_INX-ITM_NUMBER = P_POSNR.
        ORDER_ITEM_INX-UPDATEFLAG = 'U'.
        APPEND ORDER_ITEM_INX.
    Set the condition value
        CONDITIONS_IN-ITM_NUMBER      = P_POSNR.
        CONDITIONS_IN-COND_ST_NO      = '230'.
        CONDITIONS_IN-COND_COUNT      = '01'.
        CONDITIONS_IN-COND_TYPE       = 'ZSR3'.
        CONDITIONS_IN-COND_VALUE      = '333.00'.
        CONDITIONS_IN-CURRENCY        = 'USD'.
        CONDITIONS_IN-COND_UNIT       = 'LB'.
        CONDITIONS_IN-COND_P_UNT      = '100'.
        APPEND CONDITIONS_IN.
        CONDITIONS_INX-ITM_NUMBER     = P_POSNR.
        CONDITIONS_INX-COND_ST_NO     = '230'.
        CONDITIONS_INX-COND_COUNT     = '01'.
        CONDITIONS_INX-COND_TYPE      = 'ZSR3'.
        CONDITIONS_INX-UPDATEFLAG     = 'X'.  " update
        CONDITIONS_INX-COND_VALUE     = 'X'.  " update
        CONDITIONS_INX-CURRENCY       = ''.   " no update
        CONDITIONS_INX-COND_UNIT      = ''.   " no update
        CONDITIONS_INX-COND_P_UNT     = ''.   " no update
        APPEND CONDITIONS_INX.
        WRITE: / 'BAPI Called for', P_VBELN, P_POSNR .     
        CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
          EXPORTING
            SALESDOCUMENT               = SALESDOCUMENT
      ORDER_HEADER_IN             =
            ORDER_HEADER_INX            = ORDER_HEADER_INX
      SIMULATION                  =
      BEHAVE_WHEN_ERROR           = ' '
      INT_NUMBER_ASSIGNMENT       = ' '
      LOGIC_SWITCH                =
          TABLES
        RETURN                      = RETURN
       ORDER_ITEM_IN               = ORDER_ITEM_IN
       ORDER_ITEM_INX              = ORDER_ITEM_INX
      PARTNERS                    =
      PARTNERCHANGES              = PARTNERCHANGES
      PARTNERADDRESSES            =
      ORDER_CFGS_REF              =
      ORDER_CFGS_INST             =
      ORDER_CFGS_PART_OF          =
      ORDER_CFGS_VALUE            =
      ORDER_CFGS_BLOB             =
      ORDER_CFGS_VK               =
      ORDER_CFGS_REFINST          =
      SCHEDULE_LINES              =
      SCHEDULE_LINESX             =
      ORDER_TEXT                  =
      ORDER_KEYS                  =
         CONDITIONS_IN               = CONDITIONS_IN
         CONDITIONS_INX              = CONDITIONS_INX
      EXTENSIONIN                 =    .
        IF sy-subrc = 0.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
               EXPORTING
                    WAIT = 'X'.
    IMPORTING
      RETURN        =
        ELSE.                                           
         WRITE: ' BAPI RETURN CODE = ', SY-SUBRC.              
        ENDIF.

  • Pricing Condition is Duplicating on Changing the Variants in Quotation !

    Hi,
    I have a requirement, where the Pricing Condition (Custom Pricing Condition Specific to the Variant Pricing) is duplicating on changing the Variants in Quotation to be stopped or deleted.  I suppose, the variant pricing condition should not be newly added to the pricing table each time, there is a change in the material variants as chosen by the business/user with the Quotation.  Instead, I assume, the existing cost for the variant pricing condition should update each time, when the variant material is changed by the user. I am not sure, whether this issue can be controlled in the configuration? or Can I control the occurrence of the duplicate pricing condition inside any user exit by deleting the duplicate condition, but retaining the newly added ( Recently  added pricing table entry for that condition)? I am not sure, what are the possibilities to fix this issue? Appreciate if you could provide me with a suitable solution.
    Thanks for your time.
    Thanks,
    Kannan

    Hello Kannan.
    I have the Same Problem. do you have a solution for the same?
    i have written a pricing condition at the characteristic level using pricing Factors. however when i change the characteristic. it is duplicating the condition instead of refreshing it.

Maybe you are looking for

  • Ipod Nano - USB Device Not Recognized

    I have read all the help sections. I have tried connecting on two different PCs after I have installed the software that came with my Nano. For the life of me, I cannot get this **** thing recognized. Ive seen numerous posts from people with similar

  • Consumption of Water & Power

    Dear PM GURUS, First of all i thanks to all the PM gurus for giving the good solutions for my questions.  I hope in future also i will get the same response from you people for my questions. In my business scenario, Maintenance people note down the p

  • Tree list icons

    hi apex users, Edited by: mang jose on Sep 1, 2010 5:20 PM

  • Scrolling a movie clip

    Hi, I know that there are a number of threads on similar issues, but these are all confusing me quite a bit so I thought I should start a new thread to get an answer I'll hopefully understand. I have made my sight with specific diameters.  I've got a

  • Error message while launching certsrv.msc (certificate services)

    Hi All, I am getting the below error message frequently whenever launching the Windows 2008 certificate services.  I had closed and loged off from all the available user profiles and tried to launch after sometime, still no joy.  I am restarting the