SAP: ZMM029 Material and Customer Material Info

44 篇文章 0 订阅
*&---------------------------------------------------------------------*
*& Progarm      :  ZMMR029                        Author : Jimmy Wong
*& Created      :  05 Nov 2012                    App    : MM
*& Title        :  Material and Customer Material Info
*& Description  :  Material and Customer Material Info
*&---------------------------------------------------------------------*
*&  Version       Author      Date        description
*&                Jimmy       05 Nov 2012 the first version
*& M1             Jimmy       13 Nov 2012 Add Column Lot size Planning calendar & selections:Material Type
*& M2             Jimmy       22 Nov 2012 Enhance material missing
*& M3             Jimmy       29 Nov 2012 Filter Material for Deletion
*& M4             Jimmy       06 Dec 2012 Enhance get data logic
*&  the last update time  2013.01.22 10:00
*&---------------------------------------------------------------------*

report  zmmr029 no standard page heading.
*&---------------------------------------------------------------------*
* database table
*&---------------------------------------------------------------------*
tables : mara,knmt,marc.
data:begin of wa_itab occurs 0,
    werks   like  marc-werks, "plant
    matnr   like  mara-matnr, "Material
    maktx   like  makt-maktx, "desc
    bismt   like  mara-bismt, "Old Material
    brgew   like  mara-brgew, "Gross weight
    ntgew   like  mara-ntgew, "Net weight
    bstmi   like  marc-bstmi, "Minimum Lot size
    bstrf   like  marc-bstrf, "Rounding value
    kunnr   like knmt-kunnr,  "customer
    name1   like kna1-name1,  "Customer name
    kdmat   like knmt-kdmat,  "Customer Matrial
    disls   like marc-disls,  "Lot Size
    mrppp   like marc-mrppp,  "Planning calendar
    plifz   like marc-plifz,  "Planned Deliv. Time
    mfrpn   like mara-mfrpn,  "VTN Ordering P/N
    mfrnr   like mara-mfrnr,  "Manufacturer
    zzcw    like zmmt_info_rec-zzcw,"Can Win
    zzrw    like zmmt_info_rec-zzrw,"Res. Win
    sobsl   like marc-sobsl, " special procurement
    lifnr   like lfa1-lifnr,  "100% vendor code
    name_v   like lfa1-name1,  "vendor name
    end of wa_itab.
data:it_itab like wa_itab occurs with header line.
data:begin of it_matnr occurs 0,
    werks   like  marc-werks, "plant
    matnr   like  mara-matnr, "Material
    end of it_matnr.
data:begin of it_makt occurs 0,
     matnr like makt-matnr,
     maktx like makt-maktx,
    end of it_makt.
data:begin of it_kna1 occurs 0,
    kunnr like kna1-kunnr,
    name1 like kna1-name1,
    end of it_kna1.
data:begin of it_info_rec occurs 0,
      matnr like mara-matnr,
      werks   like marc-werks,
      zzcw like  zmmt_info_rec-zzcw,
      zzrw like  zmmt_info_rec-zzrw ,
     end of it_info_rec.
data:begin of it_lifnr occurs 0,
      matnr   like mara-matnr,
      werks   like marc-werks,
      lifnr  like lfa1-lifnr,
      name1  like lfa1-name1,
      flifn  like eord-flifn,
      autet  like eord-autet,
    end of it_lifnr.
data:begin of it_knmt occurs 0,
      matnr like mara-matnr,
      vkorg like knmt-vkorg,
      kunnr like knmt-kunnr,
      kdmat like knmt-kdmat ,
     end of it_knmt.
type-pools: slis.
data: fc_hier type slis_t_fieldcat_alv,
      wa_hier type slis_fieldcat_alv .
*&---------------------------------------------------------------------*
* parameter & select-options
*&---------------------------------------------------------------------*
selection-screen begin of block with frame title text-010.
select-options: s_werks  for marc-werks default '8101'.  "Plant
select-options: s_matnr  for knmt-matnr.  "sap material code"
select-options: s_kdmat  for knmt-kdmat.  "custmer p/n"
select-options: s_bismt  for mara-bismt . "old material code"
select-options: s_kunnr  for knmt-kunnr . "Customer
select-options: s_mtart for mara-mtart.   "Material Type "M1 add
selection-screen end of block 1.
*&----------------------------------------
*&---------------------------------------------------------------------*
* start of process
*&---------------------------------------------------------------------*
start-of-selection.
  perform get_data.
  if wa_itab[] is initial .
    message 'No Record Found' type 'I'.
    exit.
  endif.
  perform process_data.
  perform display_data.

end-of-selection.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form get_data .
  clear:wa_itab,it_itab.
  refresh:wa_itab,it_itab.
  call function 'SAPGUI_PROGRESS_INDICATOR'
    exporting
      text 'Getting Data........'.
*M4 Modify
  if s_kunnr[] is initial and s_kdmat[] is initial.
    select distinct a~matnr  b~werks
        into corresponding fields of table it_matnr
        from mara as a
        inner join marc as on a~matnr b~matnr
        where a~matnr in s_matnr
          and a~mtart in s_mtart
          and a~bismt in s_bismt
          and b~werks in s_werks
          and a~lvorm space.
  else.
    select distinct a~matnr  b~werks
        into corresponding fields of table it_matnr
        from mara as a
        inner join marc as on a~matnr b~matnr
      inner join knmt as on a~matnr c~matnr and c~vkorg b~werks
        where a~matnr in s_matnr
          and a~mtart in s_mtart
          and a~bismt in s_bismt
          and b~werks in s_werks
          and c~kunnr in s_kunnr
          and c~kdmat in s_kdmat
          and a~lvorm space.
  endif.
  if it_matnr[] is not initial.
    select a~matnr a~bismt a~brgew a~ntgew b~werks b~bstmi b~bstrf
          b~disls b~mrppp b~plifz a~mfrpn a~mfrnr b~sobsl
        into corresponding fields of table wa_itab
        from mara as a
        inner join marc as on a~matnr b~matnr
        for all entries in it_matnr
        where a~matnr it_matnr-matnr
          and b~werks it_matnr-werks
          and a~lvorm space.                              "M3 add
    if wa_itab[] is not initial.
      if s_kunnr[] is initial and s_kdmat[] is initial.     "M4 add
        select c~kunnr c~kdmat  c~matnr c~vkorg
          into corresponding fields of table it_knmt
          from knmt as c
          for all entries in wa_itab
          where vkorg wa_itab-werks
          and vtweg '10'
          and matnr wa_itab-matnr.
      else.
        select c~kunnr c~kdmat  c~matnr c~vkorg
          into corresponding fields of table it_knmt
          from knmt as c
          for all entries in wa_itab
          where vkorg wa_itab-werks
          and vtweg '10'
          and matnr wa_itab-matnr
          and kunnr in s_kunnr
          and kdmat in s_kdmat.
      endif.
      sort it_knmt by matnr vkorg.
    endif.
  endif.
*M4 End
endform.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Form  PROCESS_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form process_data .
  call function 'SAPGUI_PROGRESS_INDICATOR'
    exporting
      text 'Processing Data........'.

  select matnr maktx
    into corresponding fields of table it_makt
    from makt
    for all entries in wa_itab
    where matnr wa_itab-matnr.
  sort it_makt by matnr.

  select kunnr name1
    into corresponding fields of table it_kna1
    from kna1.
  sort it_kna1 by kunnr.

  select matnr werks zzcw zzrw
      into corresponding fields of table it_info_rec
      from zmmt_info_rec
      for all entries in wa_itab
      where matnr wa_itab-matnr
        and werks wa_itab-werks .
  sort it_info_rec by matnr werks.

  select a~matnr a~werks a~lifnr b~name1 a~flifn a~autet
    into corresponding fields of table it_lifnr
      from eord as a inner join lfa1 as on a~lifnr b~lifnr
      for all entries in wa_itab
      where a~matnr wa_itab-matnr
        and a~werks wa_itab-werks.
  sort it_lifnr by matnr werks.

  call function 'SAPGUI_PROGRESS_INDICATOR'
    exporting
      text 'Processing Data........'.
  loop at wa_itab.
    move-corresponding wa_itab to it_itab.

    "desc
    read table it_makt with  key matnr it_itab-matnr binary search.
    if sy-subrc eq 0.
      it_itab-maktx it_makt-maktx.
    endif.

    "cw rw
    read table it_info_rec with key matnr wa_itab-matnr werks it_itab-werks  binary search.
    if sy-subrc eq 0.
      it_itab-zzcw it_info_rec-zzcw.
      it_itab-zzrw it_info_rec-zzrw .
    endif.

    "vendor vendor name
    read table it_lifnr with key matnr it_itab-matnr
                                werks it_itab-werks
                                autet '1'.
    if sy-subrc eq 0.
      it_itab-lifnr it_lifnr-lifnr.
      it_itab-name_v  it_lifnr-name1.
    else.
      read table it_lifnr with key matnr it_itab-matnr
                                  werks it_itab-werks
                                  flifn  'X'.
      if sy-subrc eq 0.
        it_itab-lifnr it_lifnr-lifnr.
        it_itab-name_v  it_lifnr-name1.
      else.
        read table it_lifnr with key matnr it_itab-matnr
                                  werks it_itab-werks.
        if sy-subrc eq 0.
          it_itab-lifnr it_lifnr-lifnr.
          it_itab-name_v it_lifnr-name1.
        endif.
      endif.
    endif.
*M4 Modify
    if it_knmt[] is not initial.                            "M2 add
      "customer customer material
      read table it_knmt with  key matnr it_itab-matnr vkorg it_itab-werks.
      if sy-subrc eq 0.
        loop at it_knmt where  matnr it_itab-matnr and vkorg it_itab-werks.
          it_itab-kunnr it_knmt-kunnr.
          it_itab-kdmat it_knmt-kdmat.
          "customer name
          read table it_kna1 with  key kunnr it_itab-kunnr binary search.
          if sy-subrc eq 0.
            it_itab-name1 it_kna1-name1.
          endif.
          append it_itab.
          clear:it_itab-name1.
        endloop.
      else.
        append it_itab.
      endif.
    else.
      "customer name
      read table it_kna1 with  key kunnr it_itab-kunnr binary search.
      if sy-subrc eq 0.
        it_itab-name1 it_kna1-name1.
      endif.
      append it_itab.
    endif.
*M4 End
    clear it_itab.
  endloop.
  free:it_makt,it_kna1,it_info_rec,it_lifnr.
*  it_itab[] = wa_itab[].
  sort it_itab by werks matnr.
endform.                    " PROCESS_DATA
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form display_data .
  define alv_field.
    clear:wa_hier.
    wa_hier-fieldname &1.
    wa_hier-seltext_m &2.
    wa_hier-seltext_l &3.
    wa_hier-outputlen &4.
    wa_hier-just &5.
    wa_hier-do_sum &6.
    wa_hier-ref_tabname &7 .
    wa_hier-ref_fieldname &8 .
    append wa_hier to fc_hier.
  end-of-definition.
  refresh: fc_hier.
  alv_field  'WERKS' 'Plant' '' '5' 'L' '' '' ''.
  alv_field  'MATNR' 'Material' '' '18' 'L' ''  'MARA' 'MATNR'.
  alv_field  'MAKTX' '' 'Material Desc' '20' 'L' ''  '' ''.
  alv_field  'BISMT' 'Old material' '' '14' 'L' ''  '' ''.
  alv_field  'KDMAT' '' 'Customer material' '16' 'L' ''  '' ''.
  alv_field  'KUNNR' 'Customer' '' '10' 'L' ''  'KNA1' 'KUNNR'.
  alv_field  'NAME1' 'Customer name' '' '20' 'L' ''  '' ''.
  alv_field  'BRGEW' 'Gross weight' '' '10' 'R' ''  '' ''.
  alv_field  'NTGEW' 'Net weight' '' '10' 'R' ''  '' ''.
  alv_field  'BSTMI' '' 'Minimum Lot size' '10' 'R' ''  '' ''.
  alv_field  'BSTRF' 'Rounding value' '' '10' 'R' ''  '' ''.
  alv_field  'DISLS' 'Lot size' '' '6' 'L' ''  '' ''.       "M1 add
  alv_field  'MRPPP' '' 'Planning calendar' '8' 'L' ''  '' ''. "M1 add
  alv_field  'PLIFZ' '' 'Planned Deliv. Time' '8' 'L' ''  '' ''. "add
  alv_field  'MFRPN' '' 'Mfr Part Number' '12' 'L' ''  '' ''. "M1 add
  alv_field  'MFRNR' 'Manufacturer' '' '12' 'L' ''  '' ''.  "M1 add
  alv_field  'ZZCW' 'Can Win' '' '6' 'L' ''  '' ''.         "M1 add
  alv_field  'ZZRW' 'Res. Win ' '' '6' 'L' ''  '' ''.       "M1 add
  alv_field  'LIFNR' '' '100% Vendor code' '10' 'L' ''  'LFA1' 'LIFNR'. "M1 add
  alv_field  'NAME_V' '' 'Vendor Name' '20' 'L' ''  '' ''.  "M1 add
  alv_field  'SOBSL' '' 'Special Procurement' '6' 'L' ''  '' ''. "M1 add

  call function 'REUSE_ALV_GRID_DISPLAY'
    exporting
      it_fieldcat        fc_hier[]
      i_save             'A'
      i_callback_program sy-repid
    tables
      t_outtab           it_itab[]
    exceptions
      program_error      1
      others             2.
endform.                    " DISPLAY_DATA
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值