so PRICE FOR CTO

function zrfc_sd_pce_0085.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(ZCUSTPO) LIKE  VBAK-BSTNK OPTIONAL
*"  EXPORTING
*"     VALUE(ZAMOUNT) LIKE  KONP-KBETR
*"  TABLES
*"      WOCOMPNENT STRUCTURE  ZWOCONPNENT OPTIONAL
*"      WOAMOUT STRUCTURE  ZWOAMOUT OPTIONAL
*"----------------------------------------------------------------------
  data: begin of wo_table occurs 0,
        vbeln like vbak-vbeln,
        posnr like vbep-posnr,
        aufnr like vbep-aufnr,
        rsnum like afko-rsnum,
        end of wo_table.

  data: zkonwa like konp-konwa,
        zkbetr like konp-kbetr,
        zkpein like konp-kpein,
        zaufnr like vbep-aufnr,
        zamount1 like vbap-netpr,
        zso like vbak-vbeln,
        zaufnr1 like vbep-aufnr ,
        or_no like jest-objnr,
        wo_status like bsvx-sttxt.

* Convert Internal SAP value to Currency value
  data:      t_intval like wmto_s-amount.   "Internal Amount
  data:      t_disval  like wmto_s-amount. "Display Amount

  tables:vbak,vbkd,mara.

  if zcustpo is initial.
    exit.
  endif.

****get SO
  select single vbak~vbeln into zso
   from vbak inner join vbuk
  on vbak~vbeln = vbuk~vbeln
  where bstnk = zcustpo
  and abstk <> 'C'. " C is complete reject order,b is partial

  select * into  corresponding fields of table wo_table
  from vbep
  where vbeln = zso.

* delete duplicates data.
  delete adjacent duplicates from wo_table comparing vbeln posnr aufnr.

  if wo_table[] is initial.
    exit.
  endif.

****get wo rsnum
  loop at wo_table.

    select single rsnum into wo_table-rsnum from afko
    where aufnr = wo_table-aufnr.
    modify wo_table.

  endloop.

******get component by wo Where condtion = ''
  loop at wo_table.
    clear: or_no ,wo_status.
    or_no   = 'OR'.
    or_no+2 = wo_table-aufnr.
    call function 'STATUS_TEXT_EDIT'
         exporting
              objnr         = or_no
              only_active   = 'X'
              spras         = 'E'
              bypass_buffer = '1'
         importing
              line          = wo_status.

    if wo_status cs 'REL'.

      select * into  corresponding fields of wocompnent
      from resb
      where rsnum = wo_table-rsnum
      and xloek = ''  " DELETE
      and dumps = ''  " DUMMY
      and bdmng > 0.                                        "20100614
*    AND enmng > 0 .
**    AND KZEAR = 'X'.
        if sy-subrc = 0.
          wocompnent-kdauf = wo_table-vbeln.
          append wocompnent.
        endif.
      endselect .

    endif.
  endloop.

  if wocompnent[] is initial.
    exit.
  endif.

  sort wocompnent by aufnr.
  read table wocompnent index 1.
  zaufnr = wocompnent-aufnr.

  loop at wocompnent.

    if wocompnent-aufnr <> zaufnr . " CACULATE AMOUNT/PER WO.
      woamout-aufnr = zaufnr1.
      woamout-netpr = zamount1.
      append woamout.
      zaufnr = wocompnent-aufnr.
      clear: zamount1,zaufnr1.
    endif.

    select single * from vbak where vbeln = wocompnent-kdauf.
    select single * from vbkd where vbeln = wocompnent-kdauf.
    select single * from mara where matnr = wocompnent-matnr.

****get condition record master
    select single konp~kbetr konp~konwa konp~kpein
    into (zkbetr,zkonwa,zkpein)
    from a957 inner join konp
    on a957~knumh = konp~knumh
    where a957~kschl = 'PR00'
    and a957~vkorg = vbak-vkorg
    and a957~vtweg = vbak-vtweg
    and a957~kunnr =  vbak-kunnr
    and a957~zzkdmat = mara-bismt
    and a957~inco1 =  vbkd-inco1
    and a957~inco2 =  vbkd-inco2
*    AND a957~datab <= vbak-erdat
*    AND a957~datbi >= vbak-erdat.
    and a957~datab <= vbkd-prsdt
    and a957~datbi >= vbkd-prsdt.

    t_intval = zkbetr .

    call function 'CURRENCY_AMOUNT_SAP_TO_DISPLAY'
         exporting
              currency        = zkonwa
              amount_internal = t_intval
         importing
              amount_display  = t_disval
         exceptions
              internal_error  = 1
              others          = 2.

    zkbetr = t_disval.
*** condition record price
    wocompnent-kbetr =  zkbetr / zkpein.
*** component total price
    wocompnent-netpr =  wocompnent-bdmng * wocompnent-kbetr.
    modify wocompnent.
*****************total amount
    zamount = zamount + wocompnent-netpr.
    zamount1 = zamount1 + wocompnent-netpr.
    zaufnr1 = wocompnent-aufnr.
  endloop.
*** FINIAL WO AMOUNT " CACULATE AMOUNT/PER WO.
  woamout-aufnr = zaufnr1.
  woamout-netpr = zamount1.
  append woamout.
  clear: zamount1.

endfunction.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14397246/viewspace-666219/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14397246/viewspace-666219/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值