Material Shortage Report - 缺料清单报表

*&---------------------------------------------------------------------*
*& Report  Z_PP_46
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

report  z_pp_11.

type-pools: slis.

include z_pp_11_inc1.


initialization.

at selection-screen.
  perform input_check.


at selection-screen output.
  loop at screen.
    case screen-group1.
      when 'SE1' or 'SE2' .
        if r_week = 'X' and screen-group1 eq 'SE1'.
          screen-active = '1'.
        elseif r_month = 'X' and ( screen-group1 eq 'SE2' ).
          screen-active = '1'.
        else.
          screen-active = '0'.
        endif.
    endcase.
    modify screen.
  endloop.



at selection-screen on value-request for p_versb.
  perform search_help tables it_versb using '1'
                                            'P_VERSB'
                                            'VERSB'.

start-of-selection.

  call function 'Z_IF_SYS_LOG_WRITE'
    exporting
      im_reportid = sy-repid
      im_user     = sy-uname
      im_date     = sy-datum
      im_time     = sy-uzeit.

  create object lo_obj.
  lo_obj->initial( ).
  perform dny_field_creation.
  perform dny_table_creation.
  lo_obj->get_demand_fc( ).
  lo_obj->extract_data( ).
  lo_obj->prepare_base_data( ).
  lo_obj->fill_data( ).
  perform add_alv_fields.



  if not <t_dyntable>[] is initial.
    lo_obj->show_fullscrn_alv( ).
  else.
    message text-e01 type 'S' display like 'E'.
  endif.
  free  lo_obj.

end-of-selection.


*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form get_data.

endform.                    "GET_DATA
*&---------------------------------------------------------------------*
*&      Form  DNY_FIELD_CREATION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form dny_field_creation.                                    "Step 1

  data: l_rows    type i,
        i         type i value 1,
        n         type i,
        ls_col(2) type n,
        le_col(2) type n,
        l_count   type i,
        l_year(4) type n.
  data: x_flag(1) type c.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'WERKS'.
  wa_it_fieldcat-datatype = 'CHAR'.
  wa_it_fieldcat-intlen = 10.
  append wa_it_fieldcat to l_fieldcat.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'BERID'.
  wa_it_fieldcat-datatype = 'CHAR'.
  wa_it_fieldcat-intlen = 10.
  append wa_it_fieldcat to l_fieldcat.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'IDNRK'.
  wa_it_fieldcat-datatype = 'CHAR'.
  wa_it_fieldcat-intlen = 18.
  append wa_it_fieldcat to l_fieldcat.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'MAKTX'.
  wa_it_fieldcat-datatype = 'CHAR'.
  wa_it_fieldcat-intlen = 40.
  append wa_it_fieldcat to l_fieldcat.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'MFRPN'. "MPN
  wa_it_fieldcat-datatype = 'CHAR'.
  wa_it_fieldcat-intlen = 30.
  append wa_it_fieldcat to l_fieldcat.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'PLIFZ'.
  wa_it_fieldcat-datatype = 'CHAR'.
  wa_it_fieldcat-intlen = 10.
  append wa_it_fieldcat to l_fieldcat.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'OPEN_PO'. "OPEN PO
  wa_it_fieldcat-datatype = 'N'.
  wa_it_fieldcat-no_zero = 'X'.
  wa_it_fieldcat-intlen = 15.
  wa_it_fieldcat-qfieldname = 'MEINS'.
  append wa_it_fieldcat to l_fieldcat.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'RAW_STK'. "On-hand stock
  wa_it_fieldcat-datatype = 'N'.
  wa_it_fieldcat-no_zero = 'X'.
  wa_it_fieldcat-intlen = 15.
  wa_it_fieldcat-qfieldname = 'MEINS'.
  append wa_it_fieldcat to l_fieldcat.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'MEINS'.
  wa_it_fieldcat-datatype = 'CHAR'.
  wa_it_fieldcat-intlen = 10.
  append wa_it_fieldcat to l_fieldcat.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'MATNR'.
  wa_it_fieldcat-datatype = 'CHAR'.
  wa_it_fieldcat-intlen = 18.
  append wa_it_fieldcat to l_fieldcat.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'MAKTX1'.
  wa_it_fieldcat-datatype = 'CHAR'.
  wa_it_fieldcat-intlen = 40.
  append wa_it_fieldcat to l_fieldcat.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'FG_STK'. "On-hand FG stock
  wa_it_fieldcat-datatype = 'N'.
  wa_it_fieldcat-no_zero = 'X'.
  wa_it_fieldcat-intlen = 15.
  wa_it_fieldcat-qfieldname = 'LABST'.
  append wa_it_fieldcat to l_fieldcat.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'USAGE'. "BOM USAGE
  wa_it_fieldcat-datatype = 'N'.
  wa_it_fieldcat-no_zero = 'X'.
  wa_it_fieldcat-intlen = 15.
  wa_it_fieldcat-qfieldname = 'MEINS'.
  append wa_it_fieldcat to l_fieldcat.

  "Create DM Fields
  describe table it_condition lines l_rows.
  while i <= l_rows.
    read table it_condition into ga_it_condition index i.
    if sy-subrc eq 0.
      l_count = ga_it_condition-count.
      ls_col   = ga_it_condition-start_period.
      le_col   = ga_it_condition-end_period.
      l_year  = ga_it_condition-year.

      while ls_col <= le_col.
        clear wa_it_fieldcat.
        move ls_col to wa_colno.
        condense wa_colno.
        concatenate  'DM_' l_year  wa_colno g_period_flag  into wa_flname.
        wa_it_fieldcat-fieldname = wa_flname.
        "        wa_it_fieldcat-SCRTEXT_S = wa_flname.
        wa_it_fieldcat-datatype = 'N'.
        wa_it_fieldcat-no_zero = 'X'.
        wa_it_fieldcat-intlen = 10.
        wa_it_fieldcat-decimals = 0.
        wa_it_fieldcat-qfieldname = 'MEINS'.
        append wa_it_fieldcat to l_fieldcat.
        ls_col = ls_col + 1.
      endwhile.
    endif.
    i = i + 1.
  endwhile.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'DM_TOTAL'. "Total Demand
  wa_it_fieldcat-datatype = 'NUMC'.
  wa_it_fieldcat-no_zero = 'X'.
  wa_it_fieldcat-intlen = 17.
  wa_it_fieldcat-decimals = 0.
  wa_it_fieldcat-qfieldname = 'MEINS'.
  append wa_it_fieldcat to l_fieldcat.

  "Create Shortage Fields
  i = 1.
  describe table it_condition lines l_rows.
  while i <= l_rows.
    read table it_condition into ga_it_condition index i.
    if sy-subrc eq 0.
      l_count = ga_it_condition-count.
      ls_col   = ga_it_condition-start_period.
      le_col   = ga_it_condition-end_period.
      l_year  = ga_it_condition-year.

      while ls_col <= le_col.
        clear wa_it_fieldcat.
        move ls_col to wa_colno.
        condense wa_colno.
        concatenate  'ST_'   l_year wa_colno  g_period_flag  into wa_flname.
        wa_it_fieldcat-fieldname = wa_flname.
        wa_it_fieldcat-datatype = 'N'.
        wa_it_fieldcat-no_zero = 'X'.
        wa_it_fieldcat-intlen = 10.
        wa_it_fieldcat-decimals = 0.
        wa_it_fieldcat-qfieldname = 'MEINS'.
        append wa_it_fieldcat to l_fieldcat.
        ls_col = ls_col + 1.
      endwhile.
    endif.
    i = i + 1.
  endwhile.

  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'ST_TOTAL'. "Total Shortage
  wa_it_fieldcat-datatype = 'NUMC'.
  wa_it_fieldcat-no_zero = 'X'.
  wa_it_fieldcat-intlen = 17.
  wa_it_fieldcat-decimals = 0.
  wa_it_fieldcat-qfieldname = 'MEINS'.
  append wa_it_fieldcat to l_fieldcat.


  clear wa_it_fieldcat.
  wa_it_fieldcat-fieldname = 'CELL_COLOR'.
*  WA_IT_FIELDCAT-DATATYPE = 'lvc_t_scol'.
  wa_it_fieldcat-ref_field = 'COLTAB'.
  wa_it_fieldcat-ref_table = 'CALENDAR_TYPE'.
  append wa_it_fieldcat to l_fieldcat.

endform.                    "Dny_Field_Creation
*&---------------------------------------------------------------------*
*&      Form  ADD_ALV_FIELDS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form add_alv_fields .
  data: l_rows               type i,
        i                    type i value 1,
        n                    type i,
        ls_col(2)            type n,
        le_col(2)            type n,
        l_count              type i,
        l_year(4)            type n,
        l_wa_flname(12)      type c,
        l_wa_flname_text(20) type c.
  data: x_flag type c.

  ga_fieldcat-fieldname = 'WERKS'.
  ga_fieldcat-seltext_l = 'PLANT'.
  ga_fieldcat-seltext_S = 'PLANT'.
  ga_fieldcat-intlen = 10.
  append ga_fieldcat to gt_fieldcat.

  ga_fieldcat-fieldname = 'BERID'.
  ga_fieldcat-seltext_l = 'BU'.
  ga_fieldcat-seltext_S = 'BU'.
  ga_fieldcat-intlen = 15.
  append ga_fieldcat to gt_fieldcat.

  ga_fieldcat-fieldname = 'IDNRK'.
  ga_fieldcat-seltext_l = 'Component'.
  ga_fieldcat-seltext_S = 'COMPONENT'.
  ga_fieldcat-intlen = 18.
  append ga_fieldcat to gt_fieldcat.

  ga_fieldcat-fieldname = 'MAKTX'.
  ga_fieldcat-seltext_l = 'Description'.
  ga_fieldcat-seltext_S = 'DESCRIPTION'.
  ga_fieldcat-intlen = 40.
  append ga_fieldcat to gt_fieldcat.

  ga_fieldcat-fieldname = 'MFNRN'.
  ga_fieldcat-seltext_l = 'MPN'.
  ga_fieldcat-seltext_S = 'MPN'.
  ga_fieldcat-intlen = 30.
  ga_fieldcat-outputlen = '30'.
  append ga_fieldcat to gt_fieldcat.

  ga_fieldcat-fieldname = 'PLIFZ'.
  ga_fieldcat-seltext_l = 'Lead Time'.
ga_fieldcat-seltext_S = 'Lead Time'.
  ga_fieldcat-intlen = 10.
  ga_fieldcat-outputlen = '10'.
  append ga_fieldcat to gt_fieldcat.

  ga_fieldcat-fieldname = 'OPEN_PO'.
  ga_fieldcat-seltext_l = 'OPEN PO'.
  ga_fieldcat-seltext_S = 'OPEN PO'.
  ga_fieldcat-intlen = 15.
  ga_fieldcat-outputlen = '15'.
  append ga_fieldcat to gt_fieldcat.

  ga_fieldcat-fieldname = 'RAW_STK'.
  ga_fieldcat-seltext_l = 'On Hand STOCK'.
  ga_fieldcat-seltext_S = 'On Hand STOCK'.
  ga_fieldcat-intlen = 15.
  ga_fieldcat-outputlen = '15'.
  append ga_fieldcat to gt_fieldcat.

  ga_fieldcat-fieldname = 'MEINS'.
  ga_fieldcat-seltext_l = 'UOM'.
  ga_fieldcat-seltext_S = 'UOM'.
  ga_fieldcat-intlen = 3.
  ga_fieldcat-outputlen = '10'.
  append ga_fieldcat to gt_fieldcat.

  ga_fieldcat-fieldname = 'MATNR'.
  ga_fieldcat-seltext_l = 'FG P/N'.
  ga_fieldcat-seltext_S = 'FG P/N'.
  ga_fieldcat-intlen = 18.
  ga_fieldcat-outputlen = '20'.
  append ga_fieldcat to gt_fieldcat.

  ga_fieldcat-fieldname = 'MAKTX1'.
  ga_fieldcat-seltext_l = 'FG Description'.
  ga_fieldcat-seltext_s = 'FG Description'.
  ga_fieldcat-intlen = 40.
  ga_fieldcat-outputlen = '40'.
  append ga_fieldcat to gt_fieldcat.

  ga_fieldcat-fieldname = 'FG_STK'.
  ga_fieldcat-seltext_l = 'FG Stock'.
  ga_fieldcat-seltext_S = 'FG Stock'.
  ga_fieldcat-intlen = 15.
  ga_fieldcat-outputlen = '15'.
  append ga_fieldcat to gt_fieldcat.

  ga_fieldcat-fieldname = 'USAGE'.
  ga_fieldcat-seltext_l = 'BOM Usage'.
  ga_fieldcat-seltext_S = 'BOM Usage'.
  ga_fieldcat-intlen = 15.
  ga_fieldcat-outputlen = '15'.
  append ga_fieldcat to gt_fieldcat.

  describe table it_condition lines l_rows.
  while i <= l_rows.
    read table it_condition into ga_it_condition index i.
    if sy-subrc eq 0.
      l_count = ga_it_condition-count.
      ls_col   = ga_it_condition-start_period.
      le_col   = ga_it_condition-end_period.
      l_year  = ga_it_condition-year.

      while ls_col <= le_col.
        clear wa_it_fieldcat.
        move ls_col to wa_colno.
        condense wa_colno.

        concatenate  'DM_'  l_year wa_colno g_period_flag  into l_wa_flname.
*    concatenate  PERIOD_FLAG  wa_colno '.' l_Year into L_wa_flname.
        ga_fieldcat-fieldname = l_wa_flname.
        ga_fieldcat-seltext_s = l_wa_flname.
        ga_fieldcat-outputlen = '10'.
        append ga_fieldcat to gt_fieldcat.
        ls_col = ls_col + 1.
      endwhile.
    endif.
    i = i + 1.
  endwhile.


  ga_fieldcat-fieldname = 'DM_TOTAL'.
  ga_fieldcat-seltext_s = 'Total Demand '.
  ga_fieldcat-seltext_l = 'Total Demand'.
  ga_fieldcat-intlen = 17.
  append ga_fieldcat to gt_fieldcat.

  i = 1.
  describe table it_condition lines l_rows.
  while i <= l_rows.
    read table it_condition into ga_it_condition index i.
    if sy-subrc eq 0.
      l_count = ga_it_condition-count.
      ls_col   = ga_it_condition-start_period.
      le_col   = ga_it_condition-end_period.
      l_year  = ga_it_condition-year.

      while ls_col <= le_col.
        clear wa_it_fieldcat.
        move ls_col to wa_colno.
        condense wa_colno.
        concatenate  'ST_' l_year wa_colno  g_period_flag   into l_wa_flname.
        "    concatenate  PERIOD_FLAG  wa_colno '.' l_Year into L_wa_flname.
        ga_fieldcat-fieldname = l_wa_flname.
        ga_fieldcat-seltext_s = l_wa_flname.
        ga_fieldcat-outputlen = '10'.
        append ga_fieldcat to gt

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值