CK11N/CK40N 评估价格增强 - 海边星
【原创】 CK11N/CK40N 评估价格增强
栏目:ABAP  作者:在海边看星星  阅读:(90)

当标准评估价格变式无法满足要求,可以在以下增强点写自定义逻辑


  1. 外协件价格增强,只有委外件才会进

MATERIAL_VALUATION_CK->SUBCONTRACTING_VAL_CK->GET_PRICE

  METHOD if_ex_subcontracting_val_ck~get_price.
    DATA: lt_zcdsmm003_t TYPE STANDARD TABLE OF zcds_mm_003,
          ls_zcdsmm003_t TYPE zcds_mm_003,
          lt_konm        TYPE STANDARD TABLE OF konm,
          lt_konm1       TYPE STANDARD TABLE OF konm,
          ls_konm        TYPE konm,
          lv_price(16)   TYPE p DECIMALS 6,
          lv_price1(16)  TYPE p DECIMALS 6.

    IF sy-tcode = 'CK11N' OR sy-tcode = 'CK40N'.

      SELECT *
        INTO TABLE lt_zcdsmm003_t
        FROM zcds_mm_003
        WHERE kappl    =  'M'
          AND matnr    =  im_mack2-matnr
          AND werks    =  im_mack2-bwkey
          AND datbi    >= sy-datum
          AND datab    <= sy-datum
          AND datbi_kh >= sy-datum
          AND datab_kh <= sy-datum.

      IF lt_zcdsmm003_t[] IS NOT INITIAL.
        SELECT * APPENDING TABLE lt_konm
          FROM konm
          FOR ALL ENTRIES IN lt_zcdsmm003_t
          WHERE knumh = lt_zcdsmm003_t-knumh.

        SORT lt_zcdsmm003_t BY kbetr .
        CLEAR: lv_price,lv_price1.
        LOOP AT lt_zcdsmm003_t INTO ls_zcdsmm003_t.
          lt_konm1 = lt_konm.
          DELETE lt_konm1 WHERE knumh <> ls_zcdsmm003_t-knumh.
          IF lt_konm1 IS NOT INITIAL.
            SORT lt_konm1 BY kbetr .
            READ TABLE lt_konm1 INTO ls_konm INDEX 1.
            lv_price = ls_konm-kbetr / ls_zcdsmm003_t-kpein.
          ELSE.
            lv_price = ls_zcdsmm003_t-kbetr / ls_zcdsmm003_t-kpein.
          ENDIF.

          IF lv_price < lv_price1 OR lv_price1 = 0.
            lv_price1 = lv_price.
            ch_price = lv_price.
            ch_price_unit = ls_zcdsmm003_t-kpein.
            ch_price_uom = ls_zcdsmm003_t-kmein.
            ch_lifnr = ls_zcdsmm003_t-lifnr.
*            ch_infnr = ls_zcdsmm003_t-
            ch_ekorg = ls_zcdsmm003_t-ekorg.
          ENDIF.
        ENDLOOP.

        IF ch_lifnr IS NOT INITIAL AND ch_ekorg IS NOT INITIAL.
          SELECT SINGLE infnr INTO ch_infnr
            FROM v_eina
            WHERE ekorg = ch_ekorg
              AND werks = im_mack2-bwkey
              AND matnr = im_mack2-matnr
              AND lifnr = ch_lifnr.

          ch_no_standard_valuation = 'X'.   "后续标准逻辑不执行
        ENDIF.

      ENDIF.

    ENDIF.

  ENDMETHOD.


2.标准件

CMOD:  COPCP005

img_v3_02q7_27680f74-63f8-4df5-9103-cbb68b1be22g.jpg



我的评论
昵称
邮箱
域名
  记住 通知博主
验证码

  联系我们

微信扫一扫

 登录  打赏

  随机文章