ZPPR016 :Pass due report

38 篇文章 2 订阅

*&---------------------------------------------------------------------*
*& Progarm      :  ZPPR016                        Author : Jimmy Wong
*& Created      :  16 Oct 2012                    App    : PP
*& Title        :  Pass due report
*& Description  :  Pass due report
*&---------------------------------------------------------------------*
*&  Version       Author      Date        description
*&                Jimmy       16 Oct 2012 the first version
*&  the last update time  2012.10.16  16:00
*&---------------------------------------------------------------------*

report  zppr016 no standard page heading.
*&---------------------------------------------------------------------*
* database table
*&---------------------------------------------------------------------*
tables : ekpo,ekko.
*&---------------------------------------------------------------------*
* internal table & variables
*&---------------------------------------------------------------------*
data:begin of wa_itab occurs 0,
    posid   like prps-posid ,
    matnr   like ekpo-matnr,
    matnr_c type c length 20,
    mfrpn   like mara-mfrpn,
    mfrnr   like mara-mfrnr,
    ebeln   like ekpo-ebeln,
    ebelp   like ekpo-ebelp,
    lifnr   like ekko-lifnr,
    name1   like lfa1-name1,
    menge   like ekpo-menge,
    wemng   like eket-wemng,
    oadat   like sy-datum,
    vcdat   like sy-datum,
    knttp   like ekpo-knttp,
    end of wa_itab.
data: itab like standard table of wa_itab with header line.
data: begin of it_ekes occurs 0,
      ebtyp   like ekes-ebtyp,
      eindt   like ekes-eindt,
      menge   like ekes-menge,
      end of it_ekes.
type-pools: slis.
data: fc_hier type slis_t_fieldcat_alv,
      wa_hier type slis_fieldcat_alv .
data:it_sort  type slis_t_sortinfo_alv,
     wa_sort  like line of  it_sort,
     wa_layout type slis_layout_alv,
     wa_events type slis_t_event.
define alv_field.
  clear:wa_hier.
  wa_hier-col_pos = &1.
  wa_hier-fieldname = &2.
  wa_hier-seltext_m = &3.
  wa_hier-seltext_l = &4.
  wa_hier-outputlen = &5.
  wa_hier-just = &6.
  wa_hier-do_sum = &7.
*    wa_hier-hotspot       = 'X'.
  append wa_hier to fc_hier.
end-of-definition.
*----------------------------------------------------------------------*
*  Parameter & Select-Options                                          *
*----------------------------------------------------------------------*
selection-screen begin of block 1 with frame title text-001.
select-options : s_werks for ekpo-werks.
select-options : s_ebeln for ekpo-ebeln.
select-options : s_matnr for ekpo-matnr.
select-options : s_lifnr for ekko-lifnr.
parameters:      s_eindt like sy-datum obligatory default sy-datum.
selection-screen end of block 1.
*&---------------------------------------------------------------------*
* start of process
*&---------------------------------------------------------------------*
start-of-selection.
  perform get_data.
  perform process_data.
  if itab[] is initial.
    message 'No Record Found' type 'I'.
    exit.
  endif.
  perform display_data.

end-of-selection.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form get_data .
  clear:itab,itab[],wa_itab,wa_itab[].
  select a~matnr a~mfrpn a~mfrnr a~ebeln a~ebelp b~lifnr a~menge d~name1
         a~knttp
    into corresponding fields of table wa_itab
      from ekpo as a
            inner join ekko as b on a~ebeln = b~ebeln
*              inner join mara as c on a~matnr = c~matnr
            left join  lfa1 as d on b~lifnr = d~lifnr
      where a~ebeln in s_ebeln
        and a~matnr in s_matnr
        and a~werks in s_werks
        and a~loekz eq space
        and b~lifnr in s_lifnr
                              .
endform.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Form  PROCESS_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form process_data .
  data:lv_menge like ekpo-menge.

  loop at wa_itab.
    move-corresponding wa_itab to itab.
    clear:it_ekes,it_ekes[],lv_menge.
    select   sum( wemng ) into itab-wemng
     from eket
     where ebeln = itab-ebeln
         and ebelp = itab-ebelp.

    itab-menge = itab-menge - itab-wemng  .
    check itab-menge > 0.
    lv_menge = itab-menge.

    "OA VC
    select ebtyp eindt menge
        into corresponding fields of table it_ekes
        from ekes
        where ebeln = itab-ebeln
          and ebelp = itab-ebelp
          and ebtyp in ('OA', 'VC').
    sort it_ekes by ebtyp.
    read table it_ekes with key ebtyp = 'OA' binary search.
    if sy-subrc eq 0.
      itab-oadat = it_ekes-eindt.
    else.
      select single eindt into itab-oadat
        from eket
        where ebeln = itab-ebeln
            and ebelp = itab-ebelp.
    endif.
    delete it_ekes where ebtyp = 'OA' .
    "OV
    read table it_ekes with key ebtyp = 'VC' binary search.
    if sy-subrc eq 0.
      sort it_ekes by eindt descending.
      loop at it_ekes.
        check lv_menge > 0.
        if lv_menge > it_ekes-menge.
          itab-menge = it_ekes-menge.
        else.
          itab-menge = lv_menge.
        endif.
        lv_menge = lv_menge - it_ekes-menge.
        if it_ekes-eindt < s_eindt or itab-oadat < s_eindt.
          itab-vcdat = it_ekes-eindt.

          perform tranfer_material   using itab-matnr
                             changing itab-matnr_c.
          if itab-knttp = 'Q'.
            select single b~posid into itab-posid
                from ekkn as a inner join prps as b on a~ps_psp_pnr = b~pspnr
               where a~ebeln = itab-ebeln
                   and a~ebelp = itab-ebelp.
          endif.

          append itab.

        endif.
      endloop.
    endif.
    clear:itab.
  endloop.
endform.                    " PROCESS_DATA
*&---------------------------------------------------------------------*
*&      Form  TRANFER_MATERIAL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_ITAB_MATNR  text
*      <--P_ITAB_MATNR_C  text
*----------------------------------------------------------------------*
form  tranfer_material using    p_old
                       changing p_new  .

  call function 'CONVERSION_EXIT_MATN1_OUTPUT'
    exporting
      input  = p_old
    importing
      output = p_new.
endform.                    "tranfer_material
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form display_data .
  refresh: fc_hier,it_sort.

  alv_field '1' 'POSID' '' 'WBS Element' ''  'L' ''.
  alv_field '2' 'MATNR_C' '' 'Material' '20' 'L' ''.
  alv_field '3' 'MFRNR' '' 'Maufacturer' '20' 'L' ''.
  alv_field '4' 'MFRPN' '' 'Ordering No.' '20' 'L' ''.
  alv_field '5' 'EBELN' 'PO No.' '' '' 'L' ''.
  alv_field '6' 'EBELP' 'Item' '' '' 'R' ''.
  alv_field '7' 'NAME1' '' 'Vendor Name' '' 'L' ''.
  alv_field '8' 'MENGE' 'PO Qty' '' '' 'R' 'X'.
  alv_field '9' 'OADAT' 'OA' '' '10' 'L' ''.
  alv_field '10' 'VCDAT' 'VC' '' '10' 'L' ''.

*    add 1 to wa_sort-spos.
*    wa_sort-fieldname = 'YEAR_MM'.
*    wa_sort-up = 'X'.
*    wa_sort-subtot = 'X'.
*    append wa_sort to it_sort.


  wa_layout-zebra = 'X'.
  wa_layout-f2code = '&ETA'.
  wa_layout-colwidth_optimize = 'X'.


  call function 'REUSE_ALV_GRID_DISPLAY'
    exporting
      it_fieldcat        = fc_hier[]
      i_save             = 'A'
      i_callback_program = sy-repid
      it_sort            = it_sort
      is_layout          = wa_layout
      it_events          = wa_events
    tables
      t_outtab           = 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、付费专栏及课程。

余额充值