Needs Pricing conditions to be ZEROS .

Hi Friends,
We are using sales order, which triggers PO automatically based on the outline agreement and picks up conditions and these conditions needs to be ZEROS as per the requirement.
but technically i used userexit and routine. but these are not working when creating PO : ME21N through saleorder. means conditions are not going to zeros.
anyone help.
regards,
Sreenu.

Hi Friends,
We are creating third party Sales order -va01 , which triggers PO automatically .
in this situation  when Tax amount in document currency(komp-MWSBP) in PO INVOICE TAB is equal to ZERO then the condition ABC (in Condition tab ) needs to be ZEROS as per the requirement.
anyone help.
regards,
Sreenu.

Similar Messages

  • Value of Manual Pricing Condition is becoming zero while saving.

    My clientu2019s pricing calculation requirement is  complex. Here I am mentioning :-
    We have one pricing condition type YPR4 which is header as well as item condition. Value will come only from condition record . So, we maintained access sequence  in the configuration. Beside this we maintained u2018Manual entries u2018 in the configuration as u2018Not possible to process manuallyu2019. Condition record for this pricing condition type  we maintain for line items.
    We have another  pricing condition type Y255 which is also  Item condition as well as header condition. For this pricing condition  value ( header level) can come from condition records  if record exist , or , if condition record is not there or if user wants, user  can  enter value  in header level of the sales order. For getting this functionality  we maintained access sequence and u2018Manual Entryu2019 in the condition type configuration we have maintained as u2018No Limitationu2019.
    In the line item level Y255 will come only if YPR4 is there for that item. The total value of the Y255 in the header will need to be distributed in the line items accordingly as per existence of YPR4 in the line item.
    Issue:
    Now the issue is that, when  there no condition record for Y255 and when  we are entering the value of Y255 manually in the header, the value of Y255 is becoming zero  when we are moving from one screen to another screen in the same sales order , or when we are saving the sales order..
    Can anybody suggest what we need to do so that manually entered value of   Y255 remains in the sales order after moving to another screen or after saving the sales order ?

    Hi ,
    Please check the pricing routines funcationality which is assigned to both condition types.check the requirement and alt.cal. type routines of Y225 condition , on what basis condition record is updating manully entry as well as picking value from condition  records.

  • Info needed on how to get list price for a given MATNR and pricing Conditi

    Hi All,
    Can some one help me in finding List price for a given MATNR and pricing condition type.
    Basically, i need info regarding the tables that i need to use for this purpose.
    Thanks in advance.
    Regards,
    Udaya.
    PS: All helpful answers will be rewarded.

    Hi,
    I moved your topic to this forum
    Mario

  • Help needed regarding Pricing Conditions in Invoice

    Hi Experts,
    I have added some Z fields to the Tkomp  Pricing table and did the relevant modifications in user exit Pricing Prepare Tkomp in MV45AFZZ.My pricing conditions are being created successfuly for the sales order.
    Now when a Invoice is being created for the Sales Order after the delivery thru VF01 , initially I am able to see my new pricing record under the Item condition tab., but when user clicks on the UPDATE button in the same conditions tab and clicks on 'carry put new pricing' my new condition record vanishes from the scene.
    Do I need to write a seperste code for that?
    If yes, please guide me where?
    Thanks
    vipul

    Hi Aravind,
                             For domestic purchase Vat & CST are applicable. If it is intra state VAT is used & if it is interstate CST is used. These condition types have to be manitained in the TAX procedure.
    JVRD - I/P VAT
    JVCS- I/P CST.
    we have maintained condition records for both these condition types along with the tax code in FV11. In the case of import purchase, you need to maintain seperate pricing procedure for import which will include ,
    JCDB - BASIC CUSTOMS DUTY
    JCV1-CVD
    JECV-EDU CESS
    J1CV- SEC EDU CESS
    JEDB- IMPORT CESS
    JADC- ADDITIONAL CUSTOM DUTY.
    All these conditions will be available in PO item level & you need to maintain % for these conditions. Hope it helps.

  • Pricing : Condition type value need tog get from the lowest of 4 other cond

    Hi,
    I have one requirement in one pricing procedure.
    I need to calculate condition value of one condition type from the lowest value of other 4 condition tyeps. These condition types values are not defined as a subtotal.
    So if I decide to write a formula on condition values, is there
    any way to select these values and choose the lowest of them?
    Please also advice if there is any other way such as condition exclusion
    or so?
    Thanks and regards,
    Anand

    Anand,
    As you have mentioned you can use condition exclusion for such a requirement.
    here is a detailed description of how you can achieve this: use the menu path IMG> Sales & Distribution> Basic Functions> Pricing> Condition Exclusion> Condition exclusion for group of conditions.
    When you execute this IMG acitivity you get a window with three options
    1.Define Condition Exclusion Groups
    2.Assign condition types to the exclusion groups
    3.Maintain condition exclusion for pricing procedures
    We will use these three options one by one, we start with the first
    1. Define an exclusion group, lets say EX01 and give a description
    2 Assign the four condition types that you want to compare to this exclusion group under this option
       lets say EX01 ZK01
                   EX01 ZK02
                   EX01 ZK03
                   EX01 Zk04
    3. under this third step, select the pricing procedure that you are working on and from the left margin click on 'Exclusion'. click on 'New Entries' and make the following entries (example)
             Sno.   Cpr         ExGr1
              10      A            EX01                leave ExGr2 blank, Save your entries
    Check if your purpose has been met or not. Do give your feedback
    Regards,
    PATHIK

  • Need a list with pricing conditions for each customer

    Hi experts,
    I am searching for a function module or BAPI which reads out all the pricing conditions for a certain customer. The FM/ BAPI should provide the pricing conditions in an internal table.
    Now I do this with BAPI_SALESORDER_SIMULATE.
    It returns me all the condition types and condition values for a certain customer and material.
    But this BAPI is very slow.
    Can anybody help me to find a better solution?
    Thanks & best regards, Reiner.

    Hi,
    Welcome to SDN.
    If you are using ECC 5 or 6  then
    BAPI_PRICES_CONDITIONS

  • Needa a Table to see the Pricing Conditions.

    I want to know the Table which should give countries for which a Pricing condition is activated.
    Thanks you very much in advance for the help.

    Hi,
    You can get all the CONDITION RECORDS for pricing in A000 Table.
    Depending on your Access sequence the CONDITION RECORDS tables will vary like A000, A001, A002, A003...
    If you want the Table for the Pricing procedure attached to the SALES AREA then check that in the table T683
    Please check that and revert back.
    regards,
    santosh

  • Pricing condition type not working

    Hi all,
    A pricing condition type is present which is supposed to make the netvalue to zero after the order reason is changed to rejection using va02. But even after the order reason is changed to rejection and we tried to genrate new pricing document, the netvalue is not becoming zero. How can I debug this? The condition type is not determined by using condition records.
    Thanks in advance.

    Hi Smith
    This should be working in the following ways.
    1) Order Reason/Rejection Reason being a field in the Key combination with 100% Discount triggering Zero Net Value
    if this the case, then you should check in Condition Analysis wheather the value has conrrectly flown in the condition table , if not why it has not flown in to the condition table (It could be missing value in the condition record or a prblem in the field catalogue user exit-  you need to take Developer's help as suggested by others)
    2)  Using a Requirement and changing the Net Value Zero without any condition table field.
    If so, put a break point in the requirement and check why this has not been successful in this scenario.
    I hope the replies would help you to some extent in solviing the issue.
    Thanks
    Subbu

  • Downpayment Processing as a Document Pricing Condition

    Hi There,
    Through help.sap.com I was researching new functionality, and found the following documentation on processing Downpayments through pricing conditions.
    http://help.sap.com/erp2005_ehp_02/helpdata/en/46/27dcd449fc14dce10000000a155369/content.htm
    I can't seem to figure out though where this new functionality comes from. Is this new as part of the enhancement pack, or is this new as part of a support pack?
    In particular, it makes note of condition basis formula 48 and condition value formula 49, which are not in our system currently (ECC 6.0, Support Pack 6 - SAPKH60006).
    From the documentation:
    "Ensure that the condition basis formula 48 and the condition value formula 49 are activated in your system. If not, activate them in transaction VOFM."
    Has anyone tried implementing downpayments through pricing conditions yet?
    We are already familiar with traditional down payments through Billing Plans on the sales document, but based on new business requirements, we need to look at this other way of processing down payment requests.
    Thanks,
    Josh

    Yes, I am using Calculation type B.
    The problem is that the price gets spread/adjusted according to the quantity ordered.  For example, if the fixed price is $1.00 and I order 10, then the net price is 10 cents each and that is shown on the item over of the PO.
    If I order 100 with a fixed price of $1.00, then the net price is $0.01.
    My problem is when the fixed price is $1.00 and I want to order 1000.  Then the net price goes to zero and I get an error.

  • Contract with monthly half pricing conditions

    Hi
    Iu2019m trying to use a contract with monthly half pricing conditions.
    When sales orders are created during the first monthly half, I need to use a specific price.
    When sales orders are created during the second monthly half, I need to another specific price.
    Please let me know your comments.
    Regards

    Create two condition types that fetch the specific price for each part of month.
    Then, you can set these two condition types consecutively in the pricing procedure with pricing requirement code that checks for the part of the month and sets SY-SUBRC to zero or not according to the first or later part of the month. This will allow one pricing condition type to trigger the first part of month while the other triggers the later part.

  • How to get xkomv-kwert (condition value) from a pricing condition ZZP1

    Hi experts,
       I have a pricing condition zcust that I need to modify in the sales order.   The calculation of ZCUST is dependent on the condition value in another price condition ZZP1.   The price for ZZP1 is a fixed amount of $6 which is split among line items in the order.    In sapmv45A, when the code hits userexit_save_document_prepare, the value of xkomv-kwert (condition value) exist.   In other user-exits in sapm45A, I was unable to find xkomv-kwert.  My question is:  How can I find the value of xkomv-kwert  as i don't  know how ZZP1 is calculated ??  There is no routine attached to ZZP1.
        THE ZCUST has a routine 993 which is similar to 3.   Here in program saplv61A, i was trying to get xkomv-kwert for ZZP1 but unable to get any data.   Can anyone suggest where i can get the data (xkomv-kwert) for ZZP1 in saplv61a ?
    I looked at userexit_xkomv_bewerten_end in saplv61a but it does not help.
    XKomv-kbetr  always has data.    If i have ZZP1 data, then i can modify ZCUST.
    Many thanks.
    Joyce

    Hi Jelena,
      In VOFM, it is Formula/Condition Base Value for routine 993.   In Pricing Procedure, it falls in column "Base Type" for 993.
    Let's see if i can simplify this: In a sales order with 2 line items:
                   prices                    Amt                      Condition Value (USD)
    Line 10     ZS1   sell price     2.30                                 1150
                     ZPP1 charge        6.36                                 3.40  (note the distribution **)
                     ZL1                      3                                      3
                    ZR1 %                  1.000%                            11.50
                    ZR2                      0.01                                   5
                    Suggested price =  2.35                             1172.90
                      ZCUST               2.34                                1170
                      total price            2.34                               1170  
    Note:  The ZCUST price is wrong.  It is missing the ZPP1 charge which is 3.40.  Zcust should be 1170 + 3.40 = 1173.40
    Line 20     ZS1   sell price     25                                 1000
                     ZPP1 charge        6.36                                 2.96  (note the distribution **)
                     ZL1                      3                                      3
                    ZR1 %                  1.000%                            10
                    ZR2                      0.01                                   0.6
                    Suggested price =  25.41                              1016.56
                      ZCUST                   25.34                           1013.60 (should be 1013.60 + 2.96)
                   Total price                25.34                            1013.60
    You can see the ZCUST is calculated incorrectly.  The routine calculate zcust as $1170 and $1013.60 for each item which did not include the distribution amount of  ZPP1 ($3.40 and $2.96).  
    When i debug the routine, the xkomv-kwert is zero.   I  am trying to get $3.40 and $2.96 so i can add to to zcust in the routine.
    Am trying to determine in saplv61A at which include that i can see #3.40 and $2.96 for both line items in xkomv-kwert.
    Then maybe i can modify the routine or saplv61A so it shows the correct zcust price  after entering the 2 line items in the sales order  create (VA01) ?     Can you pls suggest  ?
    If i make the changes in USEREXIT_SAVE_DOCUMENT_PREPARE, then user cannot see the correct zcust until the order is saved.  This would be too late to know the zcust price ahead of time.
    Pls view in the Edit mode... i see my texts have been compressed.
    Many thanks
    Joyce
    Edited by: Joyce Chan on Jul 9, 2009 10:24 PM
    Edited by: Joyce Chan on Jul 9, 2009 10:25 PM

  • When currency changed from RMB, entry is lost in pricing condition of PO

    Hi all,
    I am facing a strange issue while creating a PO (SRM 5.0). When adding a new pricing condition for a line item, I try to change the currency from RMB to CNY. When this is done, the entire record is lost with all other values set to zero.
    I tried using the function module CONVERT_TO_LOCAL_CURRENCY and this works fine.
    What could be the possible reason as this happens only for this particular currency?
    Where do  I need to check further?
    Edited by: gayu_march on Nov 10, 2010 11:28 AM
    Edited by: gayu_march on Nov 10, 2010 11:29 AM

    Hi
    In the Access sequence maintain the Table sequence as exclusive for the Second access... This will ensure that if the Condition record is found it will adopt that.
    Please check if your PO Qulaifies for the Second access or not.
    Whether it is a third party Sales order & Check the Customer data & Country
    Thanks & Regards
    Kishore

  • Implement pricing conditions GAU1 and GAU2

    Dear All,
    I want to implement pricing procedure for precious metals.
    Anyone who has implemeneted the procedure at their end please guide me towards the same .
    In PO I am getting following error in condition type GAU1 Inactive status as "X" and message as " Inactive via formulae of incorrect "
    Please help
    Thanks
    Garima

    Actually i haven't worked on metal prices...but once i had faced same type of error in my freight condition types...SAP responded with some solutions which i am posting...please see whether these are useful or not:
    (1) Condition row is inactive
    The condition type (group condition or item condition) is listed with or without a pricing result in the condition row on the condition screen for the subitem. However, the condition value is ignored. On the condition details screen (double-click on the condition row), an indicator is set for 'Inactive'.
    (1.1) Inactive indicator 'A  condition exclusion item'
    You have selected an exclusion procedure at subitem level for your freight cost price determination schema. The condition type with inactive status 'A' was excluded using this procedure in favor of another condition type (set as inactive).
    Check: In favor of which condition type or condition exclusion group was the condition type in question excluded?
    => Use Customizing transaction T_32 to determine the condition exclusion group to which the relevant condition type was assigned and use Customizing transaction TOK8 to determine the exclusion procedure assigned to the price determination schema.
    (1.2) 'K - Inactive due to calculation basis/shipping material type'
    An automatically determined or manually created condition type is set as inactive (inactive indicator 'K'), even though a valid condition record was found according to the analysis.
    Check 1: Do all handling units in the subitems belong to a 'material group for packaging materials' that is assigned to this particular packaging material type in Customizing? The calculation base of the condition type refers to handling units (calculation bases C, E or F) and, in Customizing (transaction T_06), a packaging material type (synonym: shipping material type field T685A-VHART) was specified for the condition type?
    => Material numbers are assigned to 'material groups for packaging materials' in the material master (transaction MM02). 'Material groups for packaging materials' are assigned to packaging material types in Customizing: Transaction VHZU or IMG -> Logistics General -> Handling Unit Management -> Basics -> Define Allowed Packaging Materials
    Check 2: Was a valid condition record for this condition type found in all subitems for the calculation base used?
    => Extend the condition pricing data (transaction TK11) so that valid condition records can be found for all subitems. If necessary, use a price 0.
    Check 3: Was the condition type only created manually for individual subitems?
    => Usually, manual conditions must be created for the calculation base in all subitems, with the value 0 if necessary. If changes were also permitted at header level for an item condition (in Customizing transaction T_06), you can automatically create identical entries in all subitems of the calculation base by creating the condition at header level. You can then adjust these templates (with the value 0 if required) at subitem level.
    Notes: For background information and options for 'Inactive K', see also note 318775. For the system response in the case of manual changes to freight conditions, see consulting note 773038.
    (1.3) Inactive 'L - Condition exclusion header or inactive at header level'
    The condition type could not be evaluated as a group condition or was excluded as part of a header exclusion because of another condition type.
    Check 1: Could the condition group be evaluated at all?
    => On the condition screen of the header conditions (enter '=kkon' in the command field), check whether different subgroups have been created for the condition type. If this is the case, several condition rows will be displayed for the same condition type. Also check the Check the scale input values in the individual condition display (double-click on the condition row).
    Since neither the price determination analysis nor the condition record display is available at header level, you must check the price table for the condition type using a subitem: Is there also a valid scale level for each scale input value? The lowest scale level is often missing in from-scales and the highest conceivable scale level is often missing in to-scales. For example, a to-scale of 'to 30 TO' cannot evaluate any shipments with 31 tons. You therefore need to extend this scale to 'to 99999 TO'.
    Check 2: Did you select an exclusion procedure for your freight cost price determination schema at header level?
    => Use Customizing transaction TOK8 to check whether the indicator 'A - header exclusion' was entered in the relevant column for the exclusion procedure that is assigned to the price determination schema. If this is the case, the group condition inactive status 'L' may have been excluded in favor of another group condition type using this exclusion (set as inactive).
    Use Customizing transaction T_32 to determine the condition exclusion group to which the condition type in question was assigned and use Customizing transaction TOK8 to determine the condition type or condition exclusion group in favor of which the group condition type in question could have been excluded.
    Check 3: Are you using your own scale or condition formula for a multi-dimensional group condition?
    => You may try to analyze the import parameter KOMK or KOMP for a group condition in this formula. However, these parameters are not filled in group processing: '...The components komk and komp are initial during processing of group conditions...' ('i - Formulas' button on the 'Scales for Conditions' detailed screen in Customizing transaction T_06).
    The inactive indicator KINAK is set by default to 'T' for group processing (inactive at header level) and is converted to the more general 'L' by the subsequent price determination.
    (1.4) 'X - Inactive via formulae or incorrect'
    If an error occurs during processing of multi-dimensional conditions (for example, during conversion to scale units or in a customer-specific formulas for scale bases), the condition is usually set to inactive status 'X'.
    Check: Are all formulas used in connection with this condition (condition base formula, scale base formula, condition value formula) error-free?
    (1.5) 'Y - Inactive because of subsequent price'
    According to the price determination logic in SD, there can only ever be one valid price in a pricing procedure. All other conditions are surcharges or discounts in some shape or form. Accordingly, the last, valid pricing condition (valid condition record and not equal to zero) always applies. All pricing conditions in the schema with a lower level number are set to inactive status 'Y  inactive because of subsequent price'.
    Check: If the required pricing condition was unintentionally set to inactive status 'Y' by a subsequent pricing condition, you must decide (using an exclusion procedure, if required) which of the pricing conditions is varied. All pricing conditions with inactive indicator 'Y' are included in the exclusion procedure.
    Regards,
    Indranil

  • 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.

  • Sales order: How to add pricing conditions at item level in BDC of VA01

    Hello Experts,
    Am writing BDC for sales order, in this process I need to add ITEM PRICING CONDITIONS, so, am selecting item and pressing the DOLLAR symbol button and am adding the conditions by pressing PLUS button in loop!! but am getting this erorr- Field KOMV-KMEIN (2) is not an input field!! when I execute it in we19-BACK GROUND only!! if I execute the same CODE IN we19-Fore ground, I dont have any issue!!  I checked this SDN (field status in config), Google, but did not helped me!
    Pls. let  me know is there any other way to add conditions at item level in VA01 in BDC code?
    THank you

    Hi,
    It is happening because the second row of the item level data screen is becoming display only. Please check whether In foreground mode you are pressing an extra enter to give data in the second row of the item level data after giving data in the first row and in BDC recording you have not recorded that 'Enter'.
    Regards,
    Gargi

Maybe you are looking for

  • Thought I had it fixed, by iMac is still freezing sometimes on boot up

    In an earlier post, I thought we had my iMac fixed but now it's still freezing up on boot up, occasionally. Sometimes I'll just get a grey screen with no logo after the boot up chime, sometimes it'll take a good minute or two for my iMac to fully boo

  • Creation of workspace in Apex fails

    Hi I installed the apex and able to login with the Admin credentials . But when i try to create a workspace its giving the below error . Please guide me. Error provisioning sample. ORA-20001: Request 2598524574381583 could not be processed. -20987 OR

  • How to lock trash in Yosemite.

    I found a great answer but unfortuntly the article attached was "over" my head so I need to have it a bit more step by step. Here is my issue. I have a computer classroom with about 25 computers including my Macbook pro. I am currently upgrading to Y

  • Entourage 2008, PocketMac Sunc Manager and BB

    I have gone and unchecked all the Reminder buttons in the Entourage Calendar. When I sync using PocketMac Sync Manager to my Blackberry 8830 all the Reminder check boxes get rechecked. When I look at the corresponding dates on my BB there are no remi

  • Can I create a seperate apple id & iTunes account using the same device?

    I want to create a seperate iTunes account for my daughter to use when she borrows my iPad. Is this possible to do without effecting my account I already have linked to it? Thanks, Leanna