Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

SD_SALESDOCUMENT_CREATE Pricing Conditions

Former Member
0 Likes
1,472

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.

3 REPLIES 3
Read only

Former Member
0 Likes
854

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

Read only

madhu_vadlamani
Active Contributor
0 Likes
854

Hi Gavin,

There is a small confusion. Here what is the issue. Elaborate it.

Regards,

Madhu.

Read only

0 Likes
854

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.