Copying STO PO pricing condition to Billing During Billing creation
Hi,
MM and SD pricing conditions are not similar.
And I cant use Copy PO Basic price in billing Document
I was advised to try USEREXIT_PRICING_PREPARE_TKOMP or USEREXIT_PRICING_PREPARE_TKOMK.
How do I copy the Pricing condition from the STO PO to Billing during billing creation?
Is there an FM i can use to extract the pricing condition given the STO PO?
thanks,
NC
Hi
If the option of Raghavendra doesn't work for you (parameters in copy rule for invoice), try with VOFM subroutines (Condition formula for alternative calculation type) in the pricing procedure. Surely it will be slower, but it must work. How? You have in KOMP the values for VGBEL and VGPOS with the delivery number and item. So, seach the PO number in the same way. When you have the PO number, with the value of field KNUMV search the value of condition in table KONV.
I hope this helps you
Regards
Eduardo
PD: I forgot. The userexits that you mention is to populate KOMP/KOMK for customer fields. See SAP Note 531835 - Using field PSTYV in the condition access for futher information.
Edited by: E_Hinojosa on May 16, 2011 9:21 AM
Similar Messages
-
Pricing condition in Billing document (Pricing Date)
Hi Gurus,
I have a sales order which is created on 10.01.2012, the pricing date in the sales order is the same (10.01.2012). The Delivery was created on 22.02.2012 and Actual GI date is also 22.02.2012.
Now when I am creating the billing document, the pricing condition value is showing as '0'. I checked the pricing analysis and found that the validity of the base price condition Z001 was from 10.01.2012 till 14.01.2012 in the sales order.
As the Actual Goods Issue date is taking as the 'Billing date' as well as 'Pricing Date' , the system is not able to find a valid condition type as on 22.02.2012 (GI date). The pricing type in copying control of Delivery to Billing is 'C - Copy manual pricing elements and redetermine the others'.
So I would like to know your opinion on the following.
1) Can I create the billing document using VF01, manually change the pricing date as 10.01.2012 and do the price update using rule C? Will it fetch the price based on the pricing date?
OR
2) Maintain the condition type Z001 for the GI date and do the billing?
Please let me know which is the best way to adopt?
Regards,
SAMHello,
If you have necessary authorization to change the Pricing Date in Invoice, please go ahead.
Change the Pricing date in Invoice, go to Conditions tab & update the Pricing. System will fetch Condition Records as on that date.
Hope this helps,
Thanks,
Jignesh Mehta -
Not allow to change pricing condition in Billing,,,
Hi ,
I want to know the user exit or other solution for following:
System should not allow to change the value of basic pricing condition type in billing.
Ex. In sales order value of condition PR00 is 100, then it should not allow
to change the value of condition type PR00 in billing. If requires to change, it should allow
to change in sales order only.
Thanks & Regards,
SachinFor this no need to use user exit
goto V/06 condition type details
choose which condition type u want to give display view
go to controlling tab or changes can be made , uncheck the value and amount fields. than system should not allow to change the condition type in sales order level also.
(or)
if u want in billing document only
configure copy controls between delivery document to billing document (VTFL)
goto item category, select item category (TAN)> details and add pricing type E.
try this
regards
siva -
How to control the pricing condition in billing document?
Hello Experts,
Greetings!
We are using two pricing condition.One is PR00 another one is VA00.PR00 is a mandetory condition & prices comes from condition record only.Users are not allowed to enter pr00 manually.
Now we have created one more condition VA00 by which user can increase the price for some particular customers.
Now if the user do enter the condition VA00 in sales order & if it beyound credit limit than system gives informative message & blocks for the delivery.
Now the issue is if they do enter the condition in billing documents instead of sales order system does not check the credit limit at billing level.It allows invoice to be generated even beyond the credit limit.
How can we control this? Is it possible that the condition VA00 can only be used for sales order only.It will not allow to enter at billing time?
Plz suggest how can we resolve this issue in order to control the credit limit.
Any help would be highly appriciated.
Best Rgds
NitinHi,
you can use a surcharge condition type which calculates a percentage over the basic price price that is PR00 in your case.
insert it in the pricing procedure just below the PR00
and remember to maintain FROM & TO step no. of PR00, this condition should be manual entry alllowed
and insert one more condtion type in pricing procedure that will add the values of above 2 condtions .
make above condition type w/o account keys and assign account ker erl to this new condtion type,
STEP NO. COUNTER C TYPE DESCRIPTION FROM TO R ACCOUNT KEY
8 0 PR00 BASIC PRICE YES
11 0 ZSUR SURCHARGE 8 8 YES
13 0 ZPR0 Price (Gross) 8 11 YES ERL
in condition type of ZSUR(surcharge)maintain "c"
REVERT IF HELPFUL
Mohit Singh -
Function module to get Pricing conditions of billing document
Hi All,
Please help me getting the pricing condition values for a billing document. I got values from KONV table against perticular Condition type. but i need to get the values against step number maintained in Conditions for my billing item. is there any function module to get all condition data maintained in document with totals and discounts aswell.
Please help me. if required i will give tou full details what i required.
Kumar.Hi Kumar,
Please check below mentioned Function Module for details:
RV_PRICE_PRINT_GET_BUFFER
RV_PRICE_PRINT_GET_MODE
RV_PRICE_PRINT_HEAD (Header)
RV_PRICE_PRINT_HEAD_BUFFER
RV_PRICE_PRINT_ITEM (Item)
RV_PRICE_PRINT_ITEM_BUFFER
RV_PRICE_PRINT_REFRESH
Regards,
Tutun -
Custom Pricing Conditions not working for a PO in SRM
Hi Experts,
We are on SRM 5.0, ECC 6.0 , Extended Classic Scenario.
We configured the pricing conditions in SRM . We defined the our custom pricing condition types as below
Condition type --- Condition Class --- Calculation Type
Frieght(%) --- Prices --- Percentage
Frieght Value --- Prices --- Fixed Amount
We also defined the Calculation Schema.
But when we try to define the pricing conditions in SRM during PO creation\change , the standard pricing condition types work but when we input the above defined custom pricing condition type, the value entered gets cleared. Pricing Overview is not calculating the values of the custom Pricing condition types.
Please assist as where i have gone wrong. Do I need to run any standard report for pricing or do i have to implement any BADI.
Thanks,
Addy.Hi Sanjeev,
I have run SM52 and VMC is active with 4 VM's .
Please suggest.
Thanks,
Addy.
Edited by: Addy1209 on Nov 18, 2010 4:28 PM -
MM - Purchasing Information Record/Pricing Condition
Hello MM world,
I'm taking this opportunity to log an issue I can't find an answer for and I would appreciate to know if someone out there would share his/her knowledge with me.
So here's the question:
I'm trying to determine an additional pricing condition type (discount) during the creation of a purchasing info record (me11). The default PB00 gross price condition type is automatically proposed. Attached to that condition type, you can indicate a pricing schema/procedure that has what they refer to as condition supplements. The condition supplements pricing schema looks like an ordinary pricing procedure, however, SAP has confirmed that condition technique or access sequence determination does not work within the info record due to conflicting validity period between the info record and the additional pricing condition types. So, what I am wanting to do is write both a requirement and alternative condition routine for the ZPIR condition to calculate the discount amount. This will work fine, however we can only hit the routines IF the ZPIR condition supplement is automatically proposed. If the condition type is presented, we can hit the routines without a problem ..the challenge is, we cannot figure out how to automatically propose the condition supplements, in our case ZPIR, without clicking the icon during create.
So, what I am wondering is if it is possible to write something in the requirement or alt condition routine attached to PB00 to programmatically add ZPIR to the info record, which would then invoke the requirement and alt condition routine that would determine the discount value.
Or is there anything else we can do to make this work?
Thanks a lot, I appreciate any input.
MoHi Mo Arabat,
Looks good .Once agarin check up your configuration throug this link.
http://www.sap-img.com/materials/steps-for-mm-pricing-procedures.htm
Cheers
Hareesha k -
User exit to copy Manual pricing conditions with in sales documents
Hi all,
I have a situation where i have to copy the manual pricing conditions from inquiry to quotation.
Problem: From VA21 when I try to do the same using the tab "create with reference" the document is being copied but the manually set pricing condition in the inquiry is not being copied into quotation. This is because in the copy controls the pricing type is set to 'B' which means "carry out new pricing". I can change it to 'C' or 'D' so that it copies manual pricing but i am not allowed to do so because other sales orgs in the company has a problem if i do so. Only our perticular sales org needs this config. I cannot even create another item catogory specific to this plant because it is against the rules of the company. So I am looking for a user exit in which i can change this pricing type during runtime so that i can plug in some code specific to this sales org to copy manual pricing. I have found one from the SAP note 24832 (MV61AFZA). It doesn't work as i think its obsolte. Can anyone suggest me a better way of solving this issue. Any quick response is appreciated.
Thanks,
Giridhar.Hi
The following EXITS may help you
Exit Name Description
SDTRM001 Reschedule schedule lines without a new ATP check
V45A0002 Predefine sold-to party in sales document
V45A0003 Collector for customer function modulpool MV45A
V45A0004 Copy packing proposal
V45E0001 Update the purchase order from the sales order
V45E0002 Data transfer in procurement elements (PRreq., assembly)
V45L0001 SD component supplier processing (customer enhancements)
V45P0001 SD customer function for cross-company code sales
V45S0001 Update sales document from configuration
V45S0003 MRP-relevance for incomplete configuration
V45S0004 Effectivity type in sales order
V45W0001 SD Service Management: Forward Contract Data to Item
V46H0001 SD Customer functions for resource-related billing
V60F0001 SD Billing plan (customer enhancement) diff. to billing plan
V45A0001 Determine alternative materials for product selection
Regards
PRabhu -
Coprying rule-Pricing Condition records
Hi,
When copying the condition records, it gave the message "*Copying is incomplete because no rules have been defined."Can anybody pls. guide as to how to define copying rule for pricing condition.
RegardsPrerequisites for Copying
The following general prerequisites apply to copying condition records:
If the condition tables differ between the source and target condition records, then:
Only one field may differ between the two condition tables
The condition tables must contain the same number of fields
If the condition types differ between the source and target condition records, then each condition type must have the same calculation rule, scale type, condition class, and plus/minus indicator.
Copying Rules
Copying rules determine which condition types and condition tables you can use for copying between source and target condition records. The rules are defined in Customizing for Sales and must meet the prerequisites listed above. The standard R/3 System contains standard copying rules. If required, your system administrator can modify the standard copying rules or add new ones to meet your requirements. During processing, you can select from alternative copying rules, depending on what you are trying to copy.
Examples of Different Copying Scenarios
The following three scenarios describe how you can copy condition records.
Scenario 1: Same condition types/same condition tables
You offer a special discount to a particular price group (a group of customers defined in the customer master record). You want to make this discount available to other price groups by copying pricing details from the existing record. In this type of copying, the condition types (K020) and the condition tables (table 20) are identical for both source and target condition records. The only thing that varies in this case is the value of one of the key fields (the Price group field).
Scenario 2: Same condition types/different condition tables
The access sequences for a particular condition type can be defined in Customizing for Sales so that it accesses more than one condition table. This means condition records with the same condition type can have different keys. You can also copy condition records where the condition type is the same but the condition tables are different. Say you offer a material-specific discount to a particular price group (condition type K032, condition table 32). You can copy this material discount and create a new condition record for a specific customer (condition type K032, condition table 5).
Scenario 3: Different condition types/different condition tables
You can also copy condition records even when both condition types and condition tables are different. Say you offer a special discount to a particular price group (condition type K020, condition table 20) as you did in the first scenario. Here, however, you want to copy this condition record not to another price group but to a new customer-specific discount (condition type K007, condition table 7). In this case, both condition types and condition tables are different.
Copying Process
You can call up the copy function from the Edit menu in any of the following condition record screens:
Creating
Creating with reference
Changing
Overview
There are several typical scenarios for using the copying function. You may want to copy an existing condition record into a number of new condition records. In this case, you use the change condition record function. Alternatively, you may want to create a new condition record and copy it to other records all in one step. In this case, you use the create condition record function. In both cases, you can change the copied data before you save the new condition records.
Note:
If the existing rules not suited to ur requirment , u have to contact Abapers to write the routines for ur requirement.
Hope it is useful
REWARD POINTS IF USEFUL... -
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
MarkusHello 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. -
Copy Pricing Conditions from Sales Order to Billing
Hi,
Is there anyway to copy pricing conditions for item level from Sales Order to Billing Document at the time of creation of Billing Document.
ThanksThis question is not on topic for the Web Dynpro ABAP forum and has been locked.
-
Pricing condition P100 - Intracompany STO
Hi all,
Anyone can shed a light on how the pricing condition type P100 is used for STO plant-to-plant (intracompany) transfer?
thanksPricing and billing is not required in intra company STO.
They are only required in Inter Company STO's
Hence Intra Company STO does not raise any invoice.
Prices are acocunted in Company Code level during balance sheet/ Profit and loss statements. -
Pricing condition determination in billing
I created a pricing condition record which will be determined just in billing document.It is tariff price. Just to determine this pricing condition in the billing document how should I configure the system?
Now for Standard sales order and for billing document types same document pricing procedure is assigned as "A-standard"
Should I?
1) Create a new pricing procedure and add the new pricing condition type in it.
2) Assign a new document pricing procedure to billing document type
3) Assign new pricing procedure to the new document pricing procedure in pricing procedure determination?
I don't want this pricing condition to be determined in sales order. Is there any other way instead of creating a new pricing procedure?
Thanks
Edited by: sevdada on Apr 24, 2009 3:50 PMIs the pricng condition in the sales order as well as billing pricing procedure currently. If this is a new condition type for which you are maintinaing a condition record then with a comibination of a new billing type and new pricing procedure and condition type you can trigger this.
But if the condition type exists in both the sales order and the billing and only condition record is different then you could use perhaps a differentiating feature of this condition.
Is the tariff price different at the time of sales order and billing. IN what way. use this using standard billing copy controls or write a user exit to use this.
For instance if you wnat the system to take the exchange rate on the day of billing and not the sales order you can use the control in the item copy controls from delivery to billing doc as exchange rate on the billing date as the control.
Unless you can elaborate the condition record and your exact problem its difficult to give an exact solution.
regards
Jude -
Copying of freight conditions from billing document to return order
Hi,
I have a scenario of returns with reference to the billing document. In earlier billing documents the conditions like freight, insurance etc., are maintained. While creating the return order with reference to the preceding billing document, system is copying the freight, insurance conditions also, which I donu2019t require in case of returns scenario. Can anyone help me to come out from this problem?
Thanks
SrinivasHi
In VTAF choose your source billing type and target sales type and choose your item category
In that i think in your case D is set
You can define a new pricing procedure for your return order and make the necessary settings in OVKK by leaving out all freight conditions
After this In VTAF choose your source billing type and target sales type and choose your item category
In pricing type you can set it to B so that a new pricing is carried out without the unwanted condition types when you make the return order referencing the billing doc
Alternatively you also try with pricing type H in that pricing type that is freight gets redetermined
Regards
Raja
Edited by: ramanathan raja on Nov 20, 2008 8:57 PM -
Billing Document Error - Mandatory pricing Condition Missing
Dear Gurus,
We created a sales order for job work for service material and it asked the pricing condition job work price (ZJOP), so pricing condition maintained, in VF01 error is coming Mandatory pricing condition missing (ZBPR).
Regards,
VasantHi,
First check the sales order is complete.Click on incompletion log.If its complete then try the following
To check the settings for billing type T code is VOFA. Here you can check the document pricing proc only. If its is showing fine
in sales order and not billing then check your copy control T code VTFL. Check what is the pricing type for item category.
Edited by: scm.sd on May 9, 2011 1:45 PM
Edited by: scm.sd on May 9, 2011 1:50 PM
Maybe you are looking for
-
Adobe acrobat for unix/linux
hello, I can't seem to find any downloadable trial adobe acrobat 3.x for unix/linux in the download page. can anyone provide me the correct link to download it? many thanks! also I need to convert PDF version from 1.2 to 1.4 in Linux environment. Can
-
Trouble with new episodes appearing
My XML - http://www.baseballprospectus.com/feeds/fantasypodcastrss.xml I see the new content in the feed, and Podtrac has picked up the new episode just fine. 10 hours later, iTunes is still not showing the update. This used to happen rather instanta
-
ORA-01017: invalid username/password; logon denied(Please help)
Hi I have read few thread of the above problem..but still i cant figure out where is the problem.. i am installing oracle vm manager 3.0.1 i m following this http://www.oracle-base.com/articles/vm/OVM3Installation.php i have added the following lines
-
Security Manager - Cannot add 877 router
Hi, I have 3.1.1 SP3 security manager. I added IPS 28xx routers but I cant add 877 routers to it. It gives the error message below. Do you know the workaround for this? My 877 router has C870-ADVIPSERVICESK9-M), Version 12.4(22)T Failed to communicat
-
Why are there duplicate contacts in my contact list?
I just edited some names in my contact list like I added a couple phone numbers and emails but after I was done those names I edited duplicated? Why is this?