记录一个PO增加最新采购价格和采购数量的需求

来源:互联网 发布:网站下载器 mac 编辑:程序博客网 时间:2024/05/18 04:58

目的对于同一物料下,需要获取相应供应商的最新采购价格和汇总采购数量 

但有时会出现同一物料会从多个供应商去采购 ,所以会有多个供应商的最新价格

此时 考虑对于同一物料号的具有多个供应商时 将最新采购价格用" / “分开 作为一个最新价格展示


    select      ekko~ebeln      ekpo~ebelp      ekpo~matnr      ekko~lifnr      ekko~aedat      ekpo~netpr      ekpo~menge      into corresponding fields of table lt_ebeln      from ( ( ekpo                    inner join ztprice on ekpo~matnr = ztprice~matnr )                    inner join ekes on ekpo~ebeln = ekes~ebeln                                    and ekpo~ebelp = ekes~ebelp  )                    inner join ekko on ekpo~ebeln = ekko~ebeln      where ztprice~matnr in s_matnr      and ekes~erdat in s_podate      and ekpo~loekz <> 'L'      and ekpo~retpo <> 'X'      and ( ekko~pro_status = 'G' or ekko~pro_status = 'H' or ekko~pro_status = 'I' or ekko~pro_status = 'J' or ekko~pro_status = 'K' ).    sort lt_ebeln by ebeln ebelp.    delete adjacent duplicates from lt_ebeln.    loop at lt_ebeln into lw_ebeln.      move-corresponding lw_ebeln to lw_ebeln_nm.      append lw_ebeln_nm to lt_ebeln_nm.    endloop.*   lt_ebeln_pr = lt_ebeln.*根据日期降序取得最近日期的采购 再根据供应商排序*这样可以获取不同供应商之间的所有采购价    sort lt_ebeln_nm by matnr lifnr aedat descending.*排除同一物料号下 相同供应商的数据 以此取得 同一个物料号所对应不同供应商所对应最新日期的价格 LT_EBELN_PR2    lt_ebeln_pr2 = lt_ebeln_nm.    delete adjacent duplicates from lt_ebeln_pr2 comparing matnr lifnr.*根据排除相同的供应商后的数据 再根据日期进行降序处理 得到不同供应商中找到最近最新日期的采购价格    sort lt_ebeln_pr2 by matnr aedat descending.
删除存在相同物料号的数据 根据该条数据作为主数据 去取存在多物料号对应不同供应商时的最新采购价格 放在主数据PO价里用‘/’拆分    lt_ebeln_pr3 = lt_ebeln_pr2.    delete adjacent duplicates from lt_ebeln_pr3 comparing matnr.    clear:lw_ebeln_pr2,lw_ebeln_pr3,lv_index2.    loop at lt_ebeln_pr3 into lw_ebeln_pr3.*      lv_index = sy-tabix.*      CLEAR sy-tabix.      loop at lt_ebeln_pr2 into lw_ebeln_pr2 where matnr = lw_ebeln_pr3-matnr.        lv_index2 = lv_index2 + 1.        if lv_index2 <> 1.          lv_str2 =  lw_ebeln_pr2-netpr.          condense lv_str2 no-gaps.          concatenate lv_str1 '/' lv_str2 into lv_string.          condense lv_string no-gaps.          lv_str1 = lv_string.        elseif lv_index2 = 1..          lv_str1 = lw_ebeln_pr2-netpr.          condense lv_str1 no-gaps.          lv_string = lv_str1.        endif.      endloop.      clear lv_index2.      lw_ebeln_pr3-netpr = lv_string.      modify lt_ebeln_pr3 from lw_ebeln_pr3.    endloop.    clear: lw_ebeln_pr3,lw_tab.    sort lt_ebeln_pr3 by matnr.    loop at gt_tab into lw_tab.      read table lt_ebeln_pr3 into lw_ebeln_pr3 with key matnr = lw_tab-matnr binary search.      if sy-subrc = 0.        lw_tab-netpr = lw_ebeln_pr3-netpr.        lw_tab-startdate = s_podate-low.        lw_tab-enddate = s_podate-high.        modify gt_tab from lw_tab.      endif.    endloop.    clear: lw_ebeln_pr2,lw_tab,lv_menge.    loop at gt_tab into lw_tab.      loop at lt_ebeln_nm into lw_ebeln_nm where matnr = lw_tab-matnr.        lv_menge = lv_menge + lw_ebeln_nm-menge.      endloop.      lw_tab-menge = lv_menge.      clear lv_menge.      modify gt_tab from lw_tab.    endloop.



原创粉丝点击