2011 Aug 10 6:31 PM
Folks,
I am using the FM SD_SALESDOCUMENT_CREATE to create a ZRKD, which is our custom invoice correction request document. The code below works perfectly in most cases, however, if the original Sales Order item had a discount applied to it, I am not picking up the discount on my new document.
I have tried messing around with the logic switch but with no luck, I was hoping maybe somone might have an idea as to how I can ensure that all my conditions from through from the preceeding document, which is the original Sales Order.
ls_sales_header_in-sd_doc_cat = 'K'.
ls_sales_header_in-doc_type = lt_icr-auart.
ls_sales_header_in-sales_org = lt_icr-vkorg.
ls_sales_header_in-distr_chan = lt_icr-vtweg.
ls_sales_header_in-division = lt_icr-spart.
ls_sales_header_in-ass_number = lt_icr-vbeln_debit.
ls_sales_header_in-refobjtype = 'VBRK'.
ls_sales_header_in-refobjkey = lt_icr-vbeln_b.
ls_sales_header_in-refdoctype = 'M'.
ls_sales_header_in-ref_doc = lt_icr-vbeln_b.
ls_sales_header_in-refdoc_cat = 'M'.
ls_sales_header_in-ref_doc_l = lt_icr-vbeln_b.
ls_sales_header_in-serv_date = lt_icr-fbuda.
ls_sales_header_in-price_date = lt_icr-prsdt.
LOOP AT lt_icr.
CLEAR ls_sales_items_in.
ls_sales_items_in-itm_number = lt_icr-posnr_b.
ls_sales_items_in-material = lt_icr-matnr.
ls_sales_items_in-target_qty = lt_icr-kwmeng_o.
ls_sales_items_in-target_qu = lt_icr-vrkme_o.
ls_sales_items_in-ref_doc = lt_icr-vbeln_b.
ls_sales_items_in-ref_doc_it = lt_icr-posnr_b.
ls_sales_items_in-ref_doc_ca = 'M'.
ls_sales_items_in-refobjtype = 'VBRK'.
ls_sales_items_in-refobjkey = lt_icr-vbeln_b.
ls_sales_items_in-reflogsys = gv_logsys.
ls_sales_items_in-item_categ = 'YG2N'.
ls_sales_items_in-serv_date = lt_icr-fbuda.
ls_sales_items_in-price_date = lt_icr-prsdt.
APPEND ls_sales_items_in TO lt_sales_items_in.
CLEAR ls_sales_items_in.
ls_sales_items_in-itm_number = lv_new_line.
ls_sales_items_in-material = lt_icr-matnr.
ls_sales_items_in-target_qty = lt_icr-kwmeng_o.
ls_sales_items_in-target_qu = lt_icr-vrkme_o.
ls_sales_items_in-item_categ = c_yl2n.
ls_sales_items_in-ref_doc = lt_icr-vbeln_b.
ls_sales_items_in-ref_doc_it = lt_icr-posnr_b.
ls_sales_items_in-ref_doc_ca = 'M'.
ls_sales_items_in-refobjtype = 'VBRK'.
ls_sales_items_in-refobjkey = lt_icr-vbeln_b.
ls_sales_items_in-reflogsys = gv_logsys.
APPEND ls_sales_items_in TO lt_sales_items_in.
CLEAR ls_sales_itm_cond_in.
ls_sales_itm_cond_in-itm_number = ls_sales_items_in-itm_number.
ls_sales_itm_cond_in-cond_type = c_zmp1.
ls_sales_itm_cond_in-cond_value = lt_icr-netpr_r.
ls_sales_itm_cond_in-currency = lt_icr-waerk_r.
ls_sales_itm_cond_in-cond_unit = lt_icr-kmein_r.
ls_sales_itm_cond_in-cond_p_unt = lt_icr-kpein_r.
APPEND ls_sales_itm_cond_in TO lt_sales_itm_cond_in.
ENDLOOP.
ls_sales_partners-partn_role = 'WE'.
ls_sales_partners-partn_numb = lt_icr-kunnr.
APPEND ls_sales_partners TO lt_sales_partners.
ls_sales_partners-partn_role = 'AG'.
APPEND ls_sales_partners TO lt_sales_partners.
CLEAR: lt_return[], ls_return.
CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
EXPORTING
sales_header_in = ls_sales_header_in
IMPORTING
salesdocument_ex = lv_salesdocument_ex
TABLES
return = lt_return
sales_items_in = lt_sales_items_in
sales_conditions_in = lt_sales_itm_cond_in
sales_partners = lt_sales_partners.
Folks,
I am using the FM SD_SALESDOCUMENT_CREATE to create a ZRKD, which is our custom invoice correction request document. The code below works perfectly in most cases, however, if the original Sales Order item had a discount applied to it, I am not picking up the discount on my new document.
I have tried messing around with the logic switch but with no luck, I was hoping maybe somone might have an idea as to how I can ensure that all my conditions from through from the preceeding document, which is the original Sales Order.
ls_sales_header_in-sd_doc_cat = 'K'.
ls_sales_header_in-doc_type = lt_icr-auart.
ls_sales_header_in-sales_org = lt_icr-vkorg.
ls_sales_header_in-distr_chan = lt_icr-vtweg.
ls_sales_header_in-division = lt_icr-spart.
ls_sales_header_in-ass_number = lt_icr-vbeln_debit.
ls_sales_header_in-refobjtype = 'VBRK'.
ls_sales_header_in-refobjkey = lt_icr-vbeln_b.
ls_sales_header_in-refdoctype = 'M'.
ls_sales_header_in-ref_doc = lt_icr-vbeln_b.
ls_sales_header_in-refdoc_cat = 'M'.
ls_sales_header_in-ref_doc_l = lt_icr-vbeln_b.
ls_sales_header_in-serv_date = lt_icr-fbuda.
ls_sales_header_in-price_date = lt_icr-prsdt.
LOOP AT lt_icr.
CLEAR ls_sales_items_in.
ls_sales_items_in-itm_number = lt_icr-posnr_b.
ls_sales_items_in-material = lt_icr-matnr.
ls_sales_items_in-target_qty = lt_icr-kwmeng_o.
ls_sales_items_in-target_qu = lt_icr-vrkme_o.
ls_sales_items_in-ref_doc = lt_icr-vbeln_b.
ls_sales_items_in-ref_doc_it = lt_icr-posnr_b.
ls_sales_items_in-ref_doc_ca = 'M'.
ls_sales_items_in-refobjtype = 'VBRK'.
ls_sales_items_in-refobjkey = lt_icr-vbeln_b.
ls_sales_items_in-reflogsys = gv_logsys.
ls_sales_items_in-item_categ = 'YG2N'.
ls_sales_items_in-serv_date = lt_icr-fbuda.
ls_sales_items_in-price_date = lt_icr-prsdt.
APPEND ls_sales_items_in TO lt_sales_items_in.
CLEAR ls_sales_items_in.
ls_sales_items_in-itm_number = lv_new_line.
ls_sales_items_in-material = lt_icr-matnr.
ls_sales_items_in-target_qty = lt_icr-kwmeng_o.
ls_sales_items_in-target_qu = lt_icr-vrkme_o.
ls_sales_items_in-item_categ = c_yl2n.
ls_sales_items_in-ref_doc = lt_icr-vbeln_b.
ls_sales_items_in-ref_doc_it = lt_icr-posnr_b.
ls_sales_items_in-ref_doc_ca = 'M'.
ls_sales_items_in-refobjtype = 'VBRK'.
ls_sales_items_in-refobjkey = lt_icr-vbeln_b.
ls_sales_items_in-reflogsys = gv_logsys.
APPEND ls_sales_items_in TO lt_sales_items_in.
CLEAR ls_sales_itm_cond_in.
ls_sales_itm_cond_in-itm_number = ls_sales_items_in-itm_number.
ls_sales_itm_cond_in-cond_type = c_zmp1.
ls_sales_itm_cond_in-cond_value = lt_icr-netpr_r.
ls_sales_itm_cond_in-currency = lt_icr-waerk_r.
ls_sales_itm_cond_in-cond_unit = lt_icr-kmein_r.
ls_sales_itm_cond_in-cond_p_unt = lt_icr-kpein_r.
APPEND ls_sales_itm_cond_in TO lt_sales_itm_cond_in.
ENDLOOP.
ls_sales_partners-partn_role = 'WE'.
ls_sales_partners-partn_numb = lt_icr-kunnr.
APPEND ls_sales_partners TO lt_sales_partners.
ls_sales_partners-partn_role = 'AG'.
APPEND ls_sales_partners TO lt_sales_partners.
CLEAR: lt_return[], ls_return.
CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
EXPORTING
sales_header_in = ls_sales_header_in
IMPORTING
salesdocument_ex = lv_salesdocument_ex
TABLES
return = lt_return
sales_items_in = lt_sales_items_in
sales_conditions_in = lt_sales_itm_cond_in
sales_partners = lt_sales_partners.
2011 Aug 10 11:36 PM
Hi,
Is this condition type working when you create Invoice in VF01? If yes, please check if you need a data transfer routine for this.
Regards
Arun
2011 Aug 11 5:04 AM
Hi Gavin,
There is a small confusion. Here what is the issue. Elaborate it.
Regards,
Madhu.
2011 Aug 11 9:51 AM
Sorry for the confusion,
Here is the business process:
Sales Order>Delivery>Billing Document>(Customer complains that they have been over charged)>Custom RK Document Created in VA01 with reference to Billing Document>......
I am trying to automate to creation of the custom RK document.
I have been able to do so successfully using the code I posted above, however, I came across an issue. If the original sales order had discounts applied, when I was creating my Custom RK Document, it wasn't picking up the discounts and therefore we would be giving the customer back more than they were owed.
However, after a number of days of working on this issue I figured out the problem. The discounts that were being applied on the original sales order were as a result of a TPM Trade Promotion, the only way those discounts would be applied to my new document is if I passed in the trade promotion GUID into the ls_sales_items_in-campaign field. I found this value using this code
SELECT SINGLE campaign
FROM cmpb_asgn
INTO ls_sales_items_in-campaign
WHERE vbeln = lt_icr-vbeln_o
AND posnr = lt_icr-posnr_o.
Thank you for your interest and advice. I hope this proves useful to someone in the future.
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |