我想飘啊飘 飘到梦的天堂 那会是什么时候呢

ALV 报表

   其实ALV报表是写的最多的吧,但是据上一个ALV报表也有快有四五个月了,当时弄ALV报表的时候都是边学边做的,弄的很是生涩,现在突然有空了,不得不回来弄明白一下,

反正我也写不出深入的什么技术型的,权且给自己看看。

   这个博客对ALV的透析挺好的:http://blog.csdn.net/trassion/article/details/7383050

   首先说两个参数吧:

data: gt_fieldcat type slis_t_fieldcat_alv.
data: ls_fieldcat type slis_fieldcat_alv
data: gs_layout  type slis_layout_alv.

  

slis_t_fieldcat_alv 和 slis_fieldcat_alv  这两个不要弄错了额,这两个咋一看还蛮像的放在一块比较容易弄晕。先说slis_t_fieldcat_alv这个吧,它是是表内字段的整体,
slis_fieldcat_alv  是某一个字段的内容,将字段的内容写到slis_fieldcat_alv中,然后append到slis_t_fieldcat_alv,后者是整个列表的标题,在显示的时候用到,是不是有点感觉是工作区和表的区别。(这两个参数的详细区别博客:http://blog.csdn.net/liu1241/article/details/1801574
slis_layout_alv 是设置alv报表格式的样式(博客: http://silverw0396.iteye.com/blog/90491

下面是显示一个最简单的ALV报表代码:
 perform fieldcat_init using :
            'SPMON'   '周期'                13 '' '' '' '' '' '' '' '' '', "SPMON 是字段参数这个是你内表中的字段名称(区分大小写的),'周期' 是ALV显示的名称
            'MATNR'   '物料编号'            15 '' '' '' '' '' '' '' '' '',  "13 是设置显示的长度 后面的''也是设置参数的 这里为空
            'POMNG'   '本周采购入库数'       13 '' '' '' '' '' '' '' '' '',
            'PPVTR'   '本周产生的PPV金额'    13 '' '' '' '' '' '' '' '' '',
            'OTHNG'   '本周其它入库数'       13 '' '' '' '' '' '' '' '' '',
            'OUTNG'   '本周出库数'           13 '' '' '' '' '' '' '' '' '',
            'BEPPV'   '期初PPV金额'          13 '' '' '' '' '' '' '' '' '',
            'XPPVR'   '本期消耗PPV金额'      13 '' '' '' '' '' '' '' '' '',
            'EDPPV'   '仍剩PPV金额'          13 '' '' '' '' '' '' '' '' ''.             

  gs_layout-info_fieldname = 'COLOR'.
  call function 'REUSE_ALV_GRID_DISPLAY'
       exporting
            i_callback_program       = sy-repid                "这个是获取当前的程序
*            i_callback_pf_status_set = 'SET_PF_STATUS'           " 设置alv 自定义按钮GUI                 
*            i_callback_user_command  = 'USER_COMMAND'             "设置响应事件
*            i_callback_top_of_page            = 'F_TOP_OF_PAGE2 '   " 这个是设置ALV表头
            it_fieldcat              = gt_fieldcat[]          "这个是填充的字段
            is_layout                = gs_layout              "这个是设置的样式
            i_save                   = 'X'
       tables
            t_outtab                 = gt_028b.                "这个是你要传参的内表(改成自己所需要的)--上面的的'SPMON'就是这个内表中的字段



*&---------------------------------------------------------------------*
*&      Form  fieldcat_init   这个子程序是将参数写进slis_fieldcat_alv 然后在append 到 slis_t_fieldcat_alv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FIELD_NAME         text
*      -->FIELD_TEXT         text
*      -->FIELD_LENTH        text
*      -->FIELD_EDIT         text
*      -->FIELD_TYPE         text
*      -->FIELD_KEY          text
*      -->FIELD_HOTSPOT      text
*      -->FIELD_CHECKBOX     text
*      -->FIELD_NO_ZERO      text
*      -->FIELD_REF_TABNAME  text
*      -->FIELDCAT_DO_SUM    text
*      -->FIELD_EMPHASIZE    text
*----------------------------------------------------------------------*
form fieldcat_init using
  field_name      type c
  field_text      type c
  field_lenth     type i
  field_edit      type c
  field_type      type c
  field_key       type c
  field_hotspot   type c
  field_checkbox  type c
  field_no_zero   type c
  field_ref_tabname type c
  fieldcat_do_sum type c"        总计列值总和
  field_emphasize type c.
  data: ls_fieldcat type slis_fieldcat_alv.
  clear ls_fieldcat.

  ls_fieldcat-fieldname = field_name.
  ls_fieldcat-seltext_l = field_text.
  ls_fieldcat-seltext_m = field_text.
  ls_fieldcat-seltext_s = field_text.
  ls_fieldcat-checkbox  = field_checkbox.
*  LS_FIELDCAT-ROUND = 1.
  ls_fieldcat-edit = field_edit.
  if field_type = 'Q'.
    ls_fieldcat-just     = 'R'.
    ls_fieldcat-datatype = 'QUAN'.
    ls_fieldcat-inttype = 'C'.

  else.
    ls_fieldcat-just = 'L'.
  endif.
  ls_fieldcat-key  = field_key.
  ls_fieldcat-hotspot = field_hotspot .
  ls_fieldcat-outputlen = field_lenth.
  ls_fieldcat-no_zero = field_no_zero.
  ls_fieldcat-ref_tabname = field_ref_tabname.
  ls_fieldcat-do_sum  = fieldcat_do_sum.
  ls_fieldcat-emphasize = field_emphasize .
  append ls_fieldcat to gt_fieldcat.

endform.                    "fieldcat_init






*&---------------------------------------------------------------------*
*&      Form  f_top_of_page2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form f_top_of_page2.
  data: i_header  type slis_t_listheader,
        wa_header type slis_listheader.

  data: l_name type string,
        name_frist like adrp-name_first,
        name_last like adrp-name_last.


  select single adrp~name_first adrp~name_last
  into (name_frist, name_last)
  from adrp
  inner join usr21 on adrp~persnumber = usr21~persnumber
  where usr21~bname = sy-uname.

  if sy-subrc = 0.
    concatenate name_last name_frist into l_name.
  else.
    l_name = sy-uname.
  endif.
  clear name_frist.
  clear name_last.

  data: l_date type string.

  concatenate sy-datum+0(4)'-'
              sy-datum+4(2)'-'
              sy-datum+6(2)'' into l_date.


  wa_header-typ = 'H'.
  if p_kunnr = 'X'.
    wa_header-info = '表头'.
  endif.

  append wa_header to i_header.
  clear wa_header.

  concatenate '制表人:' l_name into l_name.
  concatenate '制表日期:' l_date into l_date.
  wa_header-typ ='S'.
  wa_header-key = l_name.
  wa_header-info = l_date.
  append wa_header to i_header.
  clear wa_header.

  call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
      it_list_commentary       = i_header
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
    i_alv_form               = 'X'.
endform.                    "f_top_of_page2





   

 

 

posted @ 2013-05-23 11:01  charles-xiao  阅读(455)  评论(0)    收藏  举报