SAP 使用BAPI创建sales order产生duplicate conditions

使用BAPI创建sales order的时候系统产生了两个相同的condition type,使用计数器也不起作用,

改变Pricing Type可以达到预期。

 set ls_bapisdls-pricing = 'G'.

    LOOP AT lt_ekpo INTO DATA(ls_ekpo).
      lv_posnr = ls_ekpo-ebelp.
      CLEAR:ls_sales_items,ls_sales_itemsx,ls_sales_schedules_in, ls_sales_schedules_inx,
            ls_sales_conditions_in,ls_sales_conditions_inx.
      ls_sales_items = VALUE #(
                                itm_number = lv_posnr
                                ref_1      = 'POC test'
                                material   = ls_ekpo-matnr
                                target_qty = lv_invoicedquantity
                                target_qu  = ls_ekpo-meins
                                purch_no_c  = ls_ekpo-ebeln
*                                        sd_taxcode = ls_vbap-j_1btxsdc
*                                        PO_ITM_NO = lv_posnr
                                plant  =  ls_ekpo-werks
                               ).
      ls_sales_itemsx = VALUE #(
                                 itm_number = lv_posnr
                                 ref_1      = 'X'
                                 material   = 'X'
                                 target_qty = 'X'
                                 target_qu  = 'X'
                                 purch_no_c  = 'X'
*                                 sd_taxcode = 'X'
*                                 po_itm_no = 'X'
                                 plant      = 'X'
                                ).

      ls_sales_schedules_in-itm_number = lv_posnr.
      ls_sales_schedules_in-sched_line = '0001'.
      ls_sales_schedules_in-req_date   = sy-datum.
      ls_sales_schedules_in-dlv_date   = sy-datum.
      ls_sales_schedules_in-req_qty    = lv_invoicedquantity.
      ls_sales_schedules_inx-itm_number = lv_posnr.
      ls_sales_schedules_inx-sched_line = '0001'.
      ls_sales_schedules_inx-req_date   = abap_true.
      ls_sales_schedules_inx-dlv_date   = abap_true.
      ls_sales_schedules_inx-req_qty    = abap_true.

      "add conditions
      ls_sales_conditions_in-itm_number  = lv_posnr.
      ls_sales_conditions_in-cond_type   = 'PR00'.
      ls_sales_conditions_in-cond_value  = lv_PriceAmount.
      ls_sales_conditions_in-currency    = 'SGD'.
      ls_sales_conditions_in-cond_count  = '01'.
      ls_sales_conditions_in-cond_count_long  = '001'.


      ls_sales_conditions_inx-itm_number = lv_posnr.
      ls_sales_conditions_inx-cond_type  = 'PR00'.
      ls_sales_conditions_inx-currency   = abap_true.
      ls_sales_conditions_inx-cond_value = abap_true.
      ls_sales_conditions_inx-cond_count = '01'.
      ls_sales_conditions_inx-updateflag = 'U'.
      ls_sales_conditions_inx-cond_count_long  = '001'.
*
      APPEND ls_sales_conditions_in  TO lt_sales_conditions_in.
      APPEND ls_sales_conditions_inx TO lt_sales_conditions_inx.
      APPEND ls_sales_schedules_in   TO lt_sales_schedules_in.
      APPEND ls_sales_schedules_inx  TO lt_sales_schedules_inx.
      APPEND ls_sales_items          TO lt_sales_items.
      APPEND ls_sales_itemsx         TO lt_sales_itemsx .

    ENDLOOP.

    ls_bapisdls-pricing = 'G'.
    CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
      EXPORTING
*       SALESDOCUMENT        =
        sales_header_in      = ls_sales_header_in
        sales_header_inx     = ls_sales_header_inx
        logic_switch         = ls_bapisdls
      IMPORTING
        salesdocument_ex     = lv_vbeln
*       SALES_HEADER_OUT     =
*       SALES_HEADER_STATUS  =
      TABLES
        return               = lt_return[]
        sales_items_in       = lt_sales_items[]
        sales_items_inx      = lt_sales_itemsx[]
        sales_partners       = lt_sales_partners[]
        sales_schedules_in   = lt_sales_schedules_in
        sales_schedules_inx  = lt_sales_schedules_inx
        sales_conditions_in  = lt_sales_conditions_in[]
        sales_conditions_inx = lt_sales_conditions_inx[]
        sales_text           = lt_sales_text[]
        partners_ex          = lt_partners_ex[].

    LOOP AT lt_return INTO ls_log_message WHERE type <> 'S'
                                            AND type <> 'W'.
      APPEND ls_log_message TO et_log_message.
    ENDLOOP.
    IF sy-subrc NE 0 .
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
      READ TABLE lt_return INTO ls_log_message WITH KEY type   = 'S'
                                                        id     = 'V1'
                                                        number = '311'.
      APPEND ls_log_message TO et_log_message.

      EV_ACKNOWLEDGED = 'X'.

    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ENDIF.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gong JX

多谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值