SD : 销售信息报表

*&---------------------------------------------------------------------*
*& Report  ZTEST134
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

report  ztest134.
"Define work area
tables:vbak,vbap,mast,stpo,makt,vbep.
"ALV
type-pools: slis.
data: l_alv_filed          type slis_fieldcat_alv.
data: l_alv_filedcat       type slis_t_fieldcat_alv.
data: gt_sort              type slis_t_sortinfo_alv.
data: gt_color             type slis_t_specialcol_alv with header line.
data: i_layout             type slis_layout_alv.
data: i_grid_settings      type lvc_s_glay.
data: pgm                  like sy-repid.
data: col_pos              type value 0.




"Define internal table for data output
data:begin of itab_ord occurs 10,
               vbeln     like vbak-vbeln,
               posnr    like vbap-posnr,
               kunnr    like vbak-kunnr,
               mat_t   type length 10, " Material Type.
               matnr   like vbap-matnr,
               maktx   like makt-maktx,
               potx1    like rc29p-potx1,                   "BOM TEXT 1
               pkg_q    like vbap-kwmeng,"Package Quantity
               kwmeng like vbap-kwmeng,"Delivery quantity
               edatu    like vbep-edatu,"Delivery date
               qty_f    like caufvd-gamng,"Already finished quantity
               qty_w  like caufvd-gamng,
               mtart  like mara-mtart,
               werks  like vbap-werks,
               stlnr   like vbap-stlnr,
               sposn  like vbap-sposn,
               top_matnr like vbap-matnr,
               "Production Order
               aufnr  like afpo-aufnr,
               psmng like afpo-psmng,"ORDER QUANTITY
               wemng like afpo-wemng,"GR QUANTITY
               vrkme like vbap-vrkme,
         end of itab_ord.

"Define screen

selection-screen: begin of block b1 with frame title t1.
select-options: vbtyp for vbak-vbtyp.
select-options: vkorg for vbak-vkorg.
select-options: vtweg for vbak-vtweg.
select-options: spart for vbak-spart.
select-options: vkgrp for vbak-vkgrp.
select-options: vdatu for vbak-vdatu.
select-options: vbeln for vbak-vbeln.
selection-screen: end of block b1.

selection-screen: begin of block b2 with frame title t2.
select-options: matnr for vbap-matnr.
select-options: matkl for vbap-matkl.
select-options: posar for vbap-posar.
select-options: prodh for vbap-prodh.
select-options: werks for vbap-werks.

selection-screen: end of block b2.


initialization.
  t1 '销售表头资料'.
  t2 '销售项目行资料'.


start-of-selection.
  perform get_data.
  perform initial_fields using:
                                                    'VBELN' '销售单号' 'X' 'X' 15,
                                                    'POSNR' '行号' 'X' 'X' 5,
                                                    'KUNNR' '客户编号' 'X' 'X' 10,
                                                    'MAT_T' '物料类型' 'X' '' 10,
                                                    'MATNR' '物料编号' 'X' '' 15,
                                                    'MAKTX' '物料描述' 'X' '' 30,
                                                    'POTX1' '包装方式' 'X' '' 20,
                                                    'PKG_Q' '包装数量' 'X' '' 10,
                                                    'KWMENG' '交货数量' 'X' '' 10,
                                                    'VRKME'   '交货单位' 'X' '' 10,
                                                    'EDATU'    '交货日期' 'X' '' 10,
                                                    'QTY_F'    '完工数量' 'X' '' 10,
                                                    'QTY_W'   '未完工数量' 'X' '' 10.
  perform alv_layout.
  perform alv_data_group using 'VBELN'.
  perform alv_data_group using 'POSNR'.
  perform alv_data_group using 'KUNNR'.
  perform alv_grid.



*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form get_data .
  select
         vbak~vbeln
         vbap~posnr
         vbak~kunnr
         vbap~matnr
         makt~maktx
         vbap~kwmeng
         mara~mtart
         vbap~werks
         vbap~stlnr
         vbap~sposn
         vbap~vrkme
        into corresponding fields of table itab_ord
        from
        vbak
        inner join vbap  on vbak~vbeln vbap~vbeln
        inner join makt on vbap~matnr makt~matnr and makt~spras sy-langu
        inner join mara on vbap~matnr mara~matnr
        where vbak~vbeln in vbeln and
                    vbap~matnr in matnr and
                    vbak~vbtyp in vbtyp and
                    vbak~vkorg in vkorg and
                    vbak~vtweg in vtweg and
                    vbak~spart in spart and
                    vbak~vkgrp in vkgrp and
                    vbak~vdatu in vdatu.
  loop at itab_ord.
    if itab_ord-mtart 'ZBZ'.
      itab_ord-mat_t '包装物'.
      clear:vbap.
      select single potx1 into itab_ord-potx1 from stpo where  stlnr itab_ord-stlnr and posnr itab_ord-sposn.
    else.
      itab_ord-mat_t '产品'.
      select  edatu into itab_ord-edatu from vbep where vbeln itab_ord-vbeln and posnr itab_ord-posnr order by edatu ascending.exit.endselect.
      select single aufnr psmng wemng into (itab_ord-aufnr, itab_ord-psmng, itab_ord-qty_ffrom afpo where  kdauf  itab_ord-vbeln and kdpos  itab_ord-posnr and xloek <> 'X' group by aufnr psmng wemng .

      "ITAB_ORD-QTY_W = ITAB_ORD-PSMNG - ITAB_ORD-QTY_F.

      itab_ord-qty_w itab_ord-kwmeng itab_ord-qty_f.

    endif.

    perform str_trim changing itab_ord-vbeln.
    perform str_trim changing itab_ord-kunnr.
    perform str_trim changing itab_ord-matnr.
    modify itab_ord.
    clear:itab_ord.
  endloop.
  clear:itab_ord.
endform.                    " GET_DATA

*&---------------------------------------------------------------------*
*&      Form  ALV_GRID
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form alv_grid.
  pgm sy-repid.
  call function 'REUSE_ALV_GRID_DISPLAY'
    exporting
      it_fieldcat             l_alv_filedcat
      it_sort                 gt_sort[]
                      "i_callback_top_of_page      = 'USER_TOP_PAGE'
      i_callback_user_command 'USER_CLICK_EVENT'
      is_layout               i_layout
      i_callback_program      pgm
                      "i_grid_title                          = ''
                      "i_grid_settings                       = i_grid_settings
      i_default               'X'
      i_save                  'A'
    tables
      t_outtab                itab_ord[]
    exceptions
      program_error           1
      others                  2.
endform.                    "ALV_GRID

*&---------------------------------------------------------------------*
*&      Form  USER_CLICK_EVENT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
form user_click_event using r_ucomm     like sy-ucomm
                            rs_selfield type slis_selfield.

endform.                    "USER_CLICK_EVENT_so

*&---------------------------------------------------------------------*
*&      Form  INITIAL_FIELDS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FNAME      text
*      -->TEXT       text
*      -->NO_ZERO    text
*      -->KEY        text
*      -->LENGTH     text
*----------------------------------------------------------------------*
form initial_fields using  fname          type c
                                            text            type c
                                            no_zero      type c
                                            key               type c
                                            length         type p.

  l_alv_filed-col_pos   col_pos + 1.
  l_alv_filed-outputlen  length.
  l_alv_filed-fieldname fname.
  l_alv_filed-seltext_m text.
  l_alv_filed-no_zero     no_zero.
  l_alv_filed-key             key.
  append l_alv_filed to l_alv_filedcat.
endform.                    "initial_fields

*&---------------------------------------------------------------------*
*&      Form  ALV_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form alv_layout.
  "i_layout-colwidth_optimize   =  'X'.
  "i_layout-zebra               = 'X'.
  i_layout-no_min_linesize     =  'X'.
  i_layout-group_buttons       'X'.
  i_layout-totals_before_items 'X'.
  i_layout-totals_text         'X'.
  i_layout-subtotals_text      'X'.
  i_layout-group_change_edit 'X'.

endform.                    "ALV_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  ALV_DATA_GROUP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FIELDNAME  text
*----------------------------------------------------------------------*
form alv_data_group using fieldname type c.
  data ls_sort type slis_sortinfo_alv.
  clear ls_sort.
  ls_sort-fieldname fieldname.
  ls_sort-spos      1.
  ls_sort-up        'X'.
  ls_sort-subtot    'X'.
  ls_sort-group     'X'.
  append ls_sort to gt_sort.
endform.                    "ALV_DATA_GROUP

*&---------------------------------------------------------------------*
*&      Form  STR_TRIM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->V_STR      text
*----------------------------------------------------------------------*
form str_trim changing v_str.
  call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
    exporting
      input  v_str
    importing
      output v_str.
  condense v_str.
endform.                    "STR_TRIM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值