展BOM的程序CS_BOM_EXPL_MAT_V2

data: begin of itab_header occurs 0,
      matnr like marc-matnr,
      werks like marc-werks,
      maktx like makt-maktx,
      stlan like mast-stlan,
      stlal like mast-stlal,
      end of itab_header.

 data: itab_item like table of stpox with header line.

 data: begin of itab occurs 0,
         matnr like marc-matnr,
         maktx like makt-maktx,   "raw material desc
         desc  like makt-maktx,   "L5 Desc
         cur   like t001-waers,   "currency
         salk3 like mbew-salk3,   "total value
         lbkum like mbew-lbkum,   "total stock
         price type string,   "price for raw
         base_qty type string,
         level(4) type c.
       include structure stpox.
 data: end of itab.

 data: p_cor type i value 1000.
 selection-screen begin of block blk1 with frame. title text-001.
   parameters: t_werks like marc-werks obligatory default '1000'.
   parameters: t_matnr like  marc-matnr
                  default '1000-4488-1'.
   parameters:  t_usage like mast-stlan default '1',
                t_alt  like mast-stlal default '1'.
    selection-screen end of block blk1.

  initialization.
    if t_matnr = ''.
       message e004(zmm)
         with 'Please enter the halb material for plant' t_werks.
    endif.

 start-of-selection.
   perform. get_data_form.
   perform. trieve_data_form.

*&--------------------------------------------------*
*&      Form  get_data_form
*&--------------------------------------------------*
FORM. get_data_form.
  select marc~werks marc~matnr mast~stlan mast~stlal
        into (itab_header-werks,itab_header-matnr,
              itab_header-stlan,itab_header-stlal)
        from marc
        join mast  on marc~werks = mast~werks
        and  marc~matnr = mast~matnr
        where marc~werks = t_werks
        and   marc~matnr = t_matnr
        and   mast~stlan = t_usage
        and   mast~stlal = t_alt.
        append itab_header.
   endselect.

    if sy-subrc <> 0.
      message e004(zmm)  with 'No data generated for' t_werks.
    endif.

ENDFORM.
*&-------------------------------------------------------*
*&      Form  trieve_data_form
* &     展BOM的程序
*&-------------------------------------------------------*

FORM. trieve_data_form.
   loop at itab_header.
     CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
         EXPORTING
              CAPID                 = 'PP01'
              DATUV                 = SY-DATUM
              MEHRS                 = 'X'
              MTNRV                 = itab_header-MATNR
              WERKS                 = itab_header-WERKS
         TABLES
              STB                   = itab_item
         EXCEPTIONS
              ALT_NOT_FOUND         = 1
              CALL_INVALID          = 2
              MATERIAL_NOT_FOUND    = 3
              MISSING_AUTHORIZATION = 4
              NO_BOM_FOUND          = 5
              NO_PLANT_DATA         = 6
              NO_SUITABLE_BOM_FOUND = 7
              CONVERSION_ERROR      = 8
              OTHERS                = 9.


        if sy-subrc = 0.
           loop at itab_item.

            data:  prce1(5) type c,
                   price2(5) type c.

            move-corresponding itab_item to itab.
               itab-base_qty = itab-menge.
               select single makt~maktx into itab-maktx
                       from makt
                       where makt~matnr = itab-idnrk
                       and  makt~spras  = 'EN'.

                select single mbew~verpr
                            into (itab-verpr)
                       from mbew
                       where mbew~matnr = itab-idnrk
                       and  mbew~BWKEY  = t_werks.

               itab-price = itab-verpr / 10.

                select single makt~maktx into itab-desc
                       from makt
                       where makt~matnr = t_matnr
                       and  makt~spras  = 'EN'.

              if t_werks = '1000'.
                select single   t001~WAERS into itab-cur
                        from t001
                        where t001~BUKRS = 'C100'.
             elseif t_werks = '2000'.
                   select single   t001~WAERS into itab-cur
                        from t001
                        where t001~BUKRS = 'C200'.
             endif.
              append itab.
        endloop.
        modify itab transporting werks matnr where werks = ''.
      endif.
    ENDLOOP.
ENDFORM.

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

转载于:http://blog.itpub.net/15117617/viewspace-551894/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值