Pricing Condition
Dear all,
Notice either from Contract or Info record, when select "Condition" button there is a popup window that display a 2 condition types. I need to double click one of the condition type can further define the pricing.
My question is, from SPRO may i know how can i determine the 2 condition types should appear in popup window but not others? Because from the same pricing schema, there are 20 condition types in total but why only these 2 condition types make available for selection but not others. Setting must be somewhere to control it.
Could you please advice?
Hi
I think the pop up is "Overview of Condition Types".
Please check in the pricing schema via M/08 for example for RM0000(which will be standard one),
in the control data have you assigned 2 condition type for "gross price"? e.g. PB00 and P000? If yes, system will pop up the window for you to choose the certain condition.
To check if the condition type is a "gross price" to be proposed in the screen, below
tables are being checked:
T683S
T685
T685A
T682I
You may also debug in the program below, and check the internal table I_T685[]
SAPLMEKO / LMEKOF0H
FORM / KONDITIONSART_SUCHEN
If I_T685[] has entries count > 1, the pop up will be displayed.
Hope the info above helps.
Thanks and regards,
Polly
Edited by: Polly Gan on Apr 11, 2010 3:17 AM
Similar Messages
-
Free Goods with pricing condition (Urgent)
Hi MM Expert,
we have a probleme with free goods. because in PO item of free goods, there is no condition management (no Invoice entry) but we should manage some pricing condition for the item (spécifique condition relative to transport, ...).
so are the any way of managing the expenses annex condition(transport charge, customs clearance charges, ) for the free goods in an item of Purchase Order ??
thank's in advance.
SaidHi,
This is not possible to maintain the condition s for free goods because while creating the PO for free goods by selecting the free goods tad at item level, There is no Condition tab at Item detail .means you are not able to mainatin conditions.
If you want to maintain the conditions ,you have to treat as a Normal scenarios .
Regards
Sanjay L -
How to change pricing Conditions in Sales order in change sales order bapi
Hi Experts,
How to change pricing Conditions in Sales order in change sales order bapi.
I have used the 2 function modules bapi-changesalesorder and sd salesdocument change, But it is creating the new record , instead of changing the existing one, Could please assist regarding the same
Thanks in Advance .
NLNHI NLN
I have just tried on my system and managed to overwrite the existing price by passing the following parameters.
<b>Import Paramters:</b>
SALESDOCUMENT - Sales Document Number
ORDER_HEADER_INX - UPDATEFLAG as <b>'U'</b>.
LOGIC_SWITCH - Import Structure - Pass 'X' to LOGIC_SWITCH-COND_HANDL.
<b>Tables:</b>
CONDITIONS_IN - ITM_NUMBER,
COND_COUNT, -> Condition counter same as KONV-ZAEHK generally it is <b>'01'</b>
COND_TYPE,
COND_VALUE,
CURRENCY.
CONDITIONS_INX - ITM_NUMBER,
COND_COUNT,
COND_TYPE,
UPDATEFLAG as <b>'U'</b>,
CURRENCY.
Hope i have clarified your query.
Kind Regards
Eswar -
How to hide the pricing conditions specified in pricing procedure of sd.
dear friends,
my situation is to hide the conditions specified in the pricing procedure. so that it is not viewed by the some users.can you please tell me how to hide the conditions. so some of the persons, who are having authorization to see the conditions , will be able to see the pricing conditions.
can you please suggest me how to do this.
regards,
g.v.shivakkumarAuthorisation issues viz. Role Impementations
Hide Condition Records Line Item & Header Wise from all the transactions QK / So / P.I. / Enquiry / Invoice etc. for specific user grps. - in CRETATE / AMEND / DISPLAY / REPORTS all
Only Display the fields
regards,
g.v.shivakkumar -
Unable to display the pricing conditions for a product.
Hi All,
I have created a product with help of function modules.The problem is that i am able to populate the pricing conditions data into internal table,but the pricing conditions is not being displayed in the Masterdata->Products-> Maintain Products screen. Can anyone suggest me in this regards.Is there any function module to be used? or any other procedure to be followed for the pricing conditions to be dispalyed? If any sample code also please provide me.Please respond soon it is an Urgent Requirement. Points will be awarded for useful answers.
Thanks in Advance,
Shwetha.Hi,
The pricing in SD and MM is a separate module like thing and is maintained for different products based on the Condition records.
The basic Pricing Procedure consists of Condition Types, Condition Records, Accesss Sequences and condition tables.
Generally with respect to all sales and purchase documents the pricing is maintained in KONV and KONP tables based on the different condition types.
reward points if useful
regards,
ANJI -
Price and Pricing conditions are not copied to PO for a line item !!
Hi
I have created a PO w.r.t a PR which has only one line item.
Now, I add another line item to this existing PO, i get an error message that the Price and Pricing conditions are not copied.
How do i rectify this error !!
Where might be the link for this Price and Pricing conditions to get copied in to this PO ??
MaruthiRamWhat kind of PR and in the PO same material you enter for new line or new material and do you have any funcitonal authorization assigned o your user id
please reply -
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. -
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 youHi,
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 -
How to update pricing condition in sales in batch in the evening
Gurus,
I have a situation where I am supposed to update the freight charge condition type ("ZFR9" in my organization) on a scaled basis, depending on how much the customer (ship-to) has ordered on the same date. Since this changes from time to time, I need to write a program that does the following in the background in the evenings.
1) Accumulate the wt of the material ordered by the same ship-to customer on the same delivery date.
2) Find the scaled freight rate from a central universal freight charge table.
3) Update the ZFR9 by this new frieght rate in all such sales order/line items that have the delivery date in question.
The problem with using BDC is that the condition type ZFR9 appears on different lines depending on presence or absence of other condition types.
Also I could not find any BAPI that does the update on a line item pricing condition.
I am on 4.6C.
Thanks for any help you can offer me.
Regards
RajuGuys,
I am trying to make this work. I am able to add extra pricing conditions to sales order but I can not understand
- how to change the value of an existing condition type OR
- how to delete the condition type from the sales order line item
Here is the sample code that I am using to test this out (most of the information is hard coded so that I can focus on a particular record)
REFRESH RETURN.
CLEAR RETURN.
REFRESH ORDER_ITEM_IN.
CLEAR ORDER_ITEM_IN.
REFRESH ORDER_ITEM_INX.
CLEAR ORDER_ITEM_INX.
REFRESH PARTNERCHANGES.
CLEAR PARTNERCHANGES.
REFRESH CONDITIONS_IN.
CLEAR CONDITIONS_IN.
REFRESH CONDITIONS_INX.
CLEAR CONDITIONS_INX.
CLEAR SALESDOCUMENT.
CLEAR ORDER_HEADER_INX.
Move screen accepted docnumber TO SALESDOCUMENT.
MOVE P_VBELN TO SALESDOCUMENT.
ORDER_HEADER_INX-UPDATEFLAG = 'U'.
APPEND ORDER_HEADER_INX.
Move screen accepted line item
ORDER_ITEM_IN-ITM_NUMBER = P_POSNR.
APPEND ORDER_ITEM_IN.
Move screen accepted line item
ORDER_ITEM_INX-ITM_NUMBER = P_POSNR.
ORDER_ITEM_INX-UPDATEFLAG = 'U'.
APPEND ORDER_ITEM_INX.
Set the condition value
CONDITIONS_IN-ITM_NUMBER = P_POSNR.
CONDITIONS_IN-COND_ST_NO = '230'.
CONDITIONS_IN-COND_COUNT = '01'.
CONDITIONS_IN-COND_TYPE = 'ZSR3'.
CONDITIONS_IN-COND_VALUE = '333.00'.
CONDITIONS_IN-CURRENCY = 'USD'.
CONDITIONS_IN-COND_UNIT = 'LB'.
CONDITIONS_IN-COND_P_UNT = '100'.
APPEND CONDITIONS_IN.
CONDITIONS_INX-ITM_NUMBER = P_POSNR.
CONDITIONS_INX-COND_ST_NO = '230'.
CONDITIONS_INX-COND_COUNT = '01'.
CONDITIONS_INX-COND_TYPE = 'ZSR3'.
CONDITIONS_INX-UPDATEFLAG = 'X'. " update
CONDITIONS_INX-COND_VALUE = 'X'. " update
CONDITIONS_INX-CURRENCY = ''. " no update
CONDITIONS_INX-COND_UNIT = ''. " no update
CONDITIONS_INX-COND_P_UNT = ''. " no update
APPEND CONDITIONS_INX.
WRITE: / 'BAPI Called for', P_VBELN, P_POSNR .
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = SALESDOCUMENT
ORDER_HEADER_IN =
ORDER_HEADER_INX = ORDER_HEADER_INX
SIMULATION =
BEHAVE_WHEN_ERROR = ' '
INT_NUMBER_ASSIGNMENT = ' '
LOGIC_SWITCH =
TABLES
RETURN = RETURN
ORDER_ITEM_IN = ORDER_ITEM_IN
ORDER_ITEM_INX = ORDER_ITEM_INX
PARTNERS =
PARTNERCHANGES = PARTNERCHANGES
PARTNERADDRESSES =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
SCHEDULE_LINES =
SCHEDULE_LINESX =
ORDER_TEXT =
ORDER_KEYS =
CONDITIONS_IN = CONDITIONS_IN
CONDITIONS_INX = CONDITIONS_INX
EXTENSIONIN = .
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
IMPORTING
RETURN =
ELSE.
WRITE: ' BAPI RETURN CODE = ', SY-SUBRC.
ENDIF. -
Purchase Order:Pricing condition report
Hello Experts,
Greetings.
I would like to know that is thair any such report avaible by executing particular pricing condition we may know how many purchase order have been created against that particualr condition.(i.e purchase order list - pricing condition wise)
Any help would be highly appriciated.
Best Rgds
NitinHi
I dont think so there any report which you will give condition against Po
but we can check this in table or develop with help of ABAp consultant
in se16n t-code give table EKKO AND GET CONDITION number field KNUMV and pass this number
Now pass this into table KONV and find condition against PO
Regards
Kailas Ugale -
How to update the pricing conditions in Products.
Hi All,
I have created a Product Using Function Modules. Now i need to update the Pricing Conditions into it. Can anyone suggest me with the exact Function Module and Tables that are used to Update the pricing conditions?Can anyone provide me with a sample report program written to update the pricing conditions.?
Points will be awarded for useful answers.
Thanks In Advance,
Shwetha Korlepara.Hi,
Can you check if these FM's are useful:
CRM_MKTPL_GET_BP_SALES_AREAS
CRM_MKTPL_AL_FILL_PRODUCT
Hope this helps.
Regards,
Anup -
How to read pricing conditions on sales order
Hi
i need to retrive pricing conditions of sales order but before posting sales order
any user exit avialable ...?
also i hv found one user exit in that there is FM EXIT_SAPMV45A_003
But i am not able to read pricing conditions values
also no data is there in konv table coz sales order has yet not been post
so before sales order can i read the pricing conditions values ...
pls guide
if possiple pls provide example also
thanks
TaranHi
The problem is you can't use the KNUMV, because u make sure to get the princing active in the document at run time.
If you want to know the old data you can read the table KONV using field KNUMV, but here you can't know if some modification is done.
U can try to know the field-symbols:
DATA: XKOMV LIKE KOMV.
DATA: FIELDNAME(30) VALUE '(SAPMV45A)XKOMV[]'.
FIELD-SYMBOLS: <TKOMV> TYPE TABLE.
ASSIGN (FIELDNAME) TO <TKOMV>.
LOOP <TKOMV> INTO XKOMV.
ENDLOOP.
Max -
Retrieving Sales Orders from Pricing Conditions
I need to retrieve pricing condition number KSCHL from tables A906, A908, A966, A967 and A997 based on Sales Contracts (VBAP-VGBEL). However all the above tabels do not have a Sales contract reference. Some have while some have MATNR and KUNNR.
Can anyone suggest a FM or a BAPI that can get me the price condition numbers related to a Sales contract.
Thanks in advance.
regards,
SoumyaHi there,
Give us some more feedback what your purpose is ...
Do you want to get information about existing orders or do you want to create new ones based on contracts, etc...
Without knowing your purpose it is quite hard to answer this one ...
Thx
Steven -
Report to check materials list with missing pricing conditions
Hi,
I have two levels in the BOM. Sales material in the top and purchase material in the bottom. I create VK11 pricing (condition type: XP00) for SALES ORG/ MATERIAL and SALES ORG/ MATERIAL/ CUSTOMER level for both materials. Is there any standard SAP report to display materials I missed to enter pricing conditions.
Thanks,
SamDear Sam
I dont know there is such report which fulfills your requirement. but i suggest you to run V/LD and select Material Prices at 15. Give sales organization, distribution channel, condition type and material range from and to. For example i just executed report with
Sales organization 1000
Distribution Channel 60
Material 1900000 1999999
Condition PR00
The system will show you the materials for which you have maintained condition record. Export this report to excel and use VLOOKUP for your requirement.
Update your response. -
SAP report showing sales orders on which pricing conditions have been chang
Is there a SAP report that shows a list of sales orders on which pricing conditions have been changed.
My knowledge is:
Review pricing condition transaction data table (KONV) helps is some way.Hi Ashish,
I don't know any such a report, but I guess you can play arround with table CDPOS.
Change doc. object = VERKBELEG
Table Name = KONVC.
Actually this will take lot of time.
Thanks,
Mandar -
Populating the bapi in retreiving the pricing condition
Hi guys,
given the ff data, how am i going to populate bapi_salesorder_simulate to retrieve the pricing condition?
Condition Table Field SAP Field
ABCD 907 Sales Org LIKP-VKORG
ABCD 907 Customer LIKP-KUNNR ABCD 907 Material LIPS-MATNR XYZW 855 Sales Org LIKP-VKORG
XYZW 855 Price Group KNVV-KONDA
XYZW 855 Material Group MARA-MATKL
XYZW 855 Duty Band MVKE-MVGR3
Thanks a lot!
Regards,
MarkHi Preet,
I am sorry that we are back to square one. I checked OSS and two OSS notes specifically mention that you cannot do anything with condition records if you are in a version lower than 4.7.
That leaves us with the option that I mentioned in your earlier posting which is to make config changes, and then write a small program to do repricing. That way all the sales orders will be repriced and based on the new configuration, the condition should disappear.
You can give points by clicking the yellow star sign at the header of a post. You can give one 10 points for the post solving your issue, two 6 points for very helpful answers and unlimited 2 points for helpful answers.
Regards,
Srinivas
Sorry forgot to mention the OSS notes. They are 593246 and 597970.
Message was edited by: Srinivas Adavi
Maybe you are looking for
-
Error during importation of .mov files
I click import > files and choose a .mov file. Usually it instantly imports it and that's it. But then I tried to import these HD videos converted to HD .mov and the FC opens a box saying it's validating the files. What the **** is that? It then quit
-
EVERY TIME the browser boots it kicks off the plug in check. I understand that this is important but it is currently a pain. Once I update Adobe Acrobat Plug in the browser does not recognize that the plug in has been installed and keeps coming up an
-
Can I safely delete old libraries?
I notice that I have a LOT of old Libraries, e.g. ITUNES Library 2005-9-12, etc. The older ones run from 3,000k+ to the newest at about 8,700k. Are these just old backups? Can I get rid of the earlier ones to free up disk space (I assume I'd keep the
-
Hi, I want to create a custom combobox. if i open the popup menu in the combo box, it should display a jtable in that rendering area of the combo box popup menu. i want to add any types of component in that jtable(Jbutton, label, combobox). Finally i
-
MacBook Pro Retina 2013 very slow shutdown
Sorry - posted this inadvertently in the ML-Section.....OK, here we go again... Hi community, I'm running a (almost) brandnew late 2013 MBPr 15", OSX10.9., 16 GB RAM , 1TB SSD. Startup ist reasonably fast, but the shutdown ist awfully slow. If I pre