ALV知识点总结

ALV功能总结

.关于FUNCTION 'REUSE_ALV_GRID_DISPLAY'常用参数说明及用法
REPORT Z_ALV_TEST01
NO STANDARD PAGE HEADING
MESSAGE-ID ZX.
*** Global Data declearINCLUDE Z_ALV_TEST01TOP.
INCLUDE Z_ALV_TEST01F01.
*** initial dataINITIALIZATION.
*** prepare report dataSTART-OF-SELECTION.
perform get_data.
perform alv_show.
*** output reportEND-OF-SELECTION.

[@more@]

*&---------------------------------------------------------------------*
*& Include Z_ALV_TEST01TOP
*&---------------------------------------------------------------------*
TABLES:MARA,MBEW,EKPO,MAKT.
SELECT-OPTIONS:S_MATNR FOR MARA-MATNR.
DATA:BEGIN OF IT_MATNR OCCURS 0,

BOX TYPE C,"用来控制输出画面左测的可选择该行,如果选中某行,则该栏位值为‘X
MATKL LIKE MARA-MATKL,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
MAKTX LIKE MAKT-MAKTX,
MEINS LIKE MARA-MEINS,
MBRSH LIKE MARA-MBRSH,
MENGE LIKE EKPO-MENGE,
END OF IT_MATNR.
TYPES:BEGIN OF WA_MATNR,
MATKL LIKE MARA-MATKL,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
MAKTX LIKE MAKT-MAKTX,
MEINS LIKE MARA-MEINS,
MBRSH LIKE MARA-MBRSH,
MENGE LIKE EKPO-MENGE,
END OF WA_MATNR.
DATA:IT_MATNR_OLD LIKE IT_MATNR OCCURS 0 WITH HEADER LINE.
FIELD-SYMBOLS TYPE WA_MATNR.
TYPE-POOLS: slis.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
lt_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,
it_events TYPE slis_t_event,
lt_event_exit TYPE slis_t_event_exit,
ls_event_exit TYPE slis_event_exit,
pt_top_of_page TYPE slis_t_listheader,
gs_print TYPE slis_print_alv,
gs_layout TYPE slis_layout_alv .

*&-------------------------------------------------------------------
*& Include Z_ALV_TEST01F01
*&-------------------------------------------------------------------
*& Form get_data
*&-------------------------------------------------------------------
FORM get_data .
SELECT *
INTO CORRESPONDING FIELDS OF TABLE IT_MATNR
FROM MARA
WHERE MATNR IN S_MATNR.

LOOP AT IT_MATNR.
SELECT SINGLE MENGE
INTO IT_MATNR-MENGE
FROM EKPO
WHERE MATNR = IT_MATNR-MATNR.

SELECT SINGLE MAKTX
INTO IT_MATNR-MAKTX
FROM MAKT
WHERE MATNR = IT_MATNR-MATNR
AND SPRAS = 'M'.
MODIFY IT_MATNR.
ENDLOOP.
IT_MATNR_OLD[] = IT_MATNR[].
ENDFORM. " get_data
*&-------------------------------------------------------------------
*& Form set_pf_status
*&-------------------------------------------------------------------
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ALV_PF_STATUS'.
ENDFORM. "Set_pf_status

FORM的作用是在标准的ALV工具栏上添加自定义的按钮

该名称必须和FUNCTION 参数I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'对应起来,FORM的名称和变量名称要一样.GUI STATUS 'ALV_PF_STATUS'是自己定义的,因为自定义后会把标准的ALV工具栏覆盖,所以还要把标准工具栏复制过来.

方法如下:

T-CODE :SE90 Program Library-- GUI Status

program name:SAPLKKBL GUI Status:STANDARD_FULLSCREEN 标准的ALV工具栏名称,F8运行,选择菜单栏GUI Status---COPY,最后输入你的程序名以及你自定义的GUI Status,此例即为ALV_PF_STATUS,再添加按钮.


*&-------------------------------------------------------------------
*& Form ALV_USER_COMMAND
*&-------------------------------------------------------------------
* --&gtR_UCOMM text
* --&gtRS_SELFIELD text
*----------------------------------------------------------------------*
form ALV_USER_COMMAND using r_ucomm like sy-ucomm
rs_selfield type slis_selfield. "
响应ALV点击自定义按钮之后的事件
case r_ucomm.
when 'EXIT2'. "
set pf-status '9100'.的屏幕状态里面自定义的按钮名称
LEAVE TO SCREEN 0.

WHEN '&DATA_SAVE'. "修改屏幕字段物料描述MAKTX,此时的&DATA_SAVE是标准GUI的参数,I_CALLBACK_PF_STATUS_SET 不要进行设置
LOOP AT IT_MATNR.
READ TABLE IT_MATNR_OLD ASSIGNING

WITH KEY MATNR = IT_MATNR-MATNR.
CHECK IT_MATNR-MAKTX <> -MAKTX.
UPDATE MAKT SET MAKTX = IT_MATNR-MAKTX WHERE MATNR = IT_MATNR-MATNR
AND SPRAS = 'M'.
ENDLOOP.
WHEN '&IC1'.
"表示双击
CHECK rs_selfield-tabindex > 0.
READ TABLE IT_MATNR INDEX rs_selfield-tabindex.
SET PARAMETER ID : 'MAT' FIELD IT_MATNR-MATNR.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
endcase.
rs_selfield-fieldname
表示双击的字段名,有时候有用.
endform. "ALV_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form alv_show
*&---------------------------------------------------------------------*
FORM alv_show .
PERFORM prepare_alv_field. "设置屏幕输出拦位的描述和格式
PERFORM eventtab_build USING it_events[].

"触发ALV事件,比如TOP_OF_PAGE, ALV_END_OF_LIST, ALV_END_OF_PAGE
PERFORM build_sortcat.
"设置排序和分类汇总
PERFORM build_layout.
"设置输出格式
PERFORM build_eventexit.
"设置ALV按钮增强功能

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
/SY-REPID "程式名称
i_background_id = 'ALV_BACKGROUND'
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'

"如果ALV使用自定义的工具栏,如果使用系统工具栏则忽略该行
I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND'
"自定义工具栏的事件
* I_CALLBACK_TOP_OF_PAGE = GT_LIST_TOP_OF_PAGE[]

I_CALLBACK_HTML_TOP_OF_PAGE = 'ALV_TOP_OF_PAGE'"自定义ALV表头

使用HTML语言对表头的输出格式进行控制,包括输出文字的大小,字体及颜色等,总之在HTML语言中能实现的在这里都能实现.具体实现见FORM ALV_TOP_OF_PAGE

I_CALLBACK_TOP_OF_PAGEI_CALLBACK_HTML_TOP_OF_PAGE同时设置时,只有I_CALLBACK_HTML_TOP_OF_PAGE起作用.it_fieldcat = it_fieldcat[]"必须要设置的参数,设定输出目录
it_events = it_events[]
"如果有事件触发
* i_structure_name = 'it_matnr' i_save = 'A'
"保存样式
is_layout = gs_layout
"对输出样式的设定
is_print = gs_print

it_sort = lt_sort[]
"如果有排序和分类汇总,需要该行
TABLES
t_outtab = it_matnr
"ALV输出的内表
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " alv_show

*&---------------------------------------------------------------------*
*& Form prepare_alv_field
*&---------------------------------------------------------------------*
FORM prepare_alv_field.

DEFINE m_fieldcat.
it_fieldcat-fieldname = &1.
"输出字段名,注意一定要是大写
it_fieldcat-reptext_ddic = &2.
"输出显示的文字说明
* it_fieldcat-col_pos = &3.
"输出的位置,即第几列
* it_fieldcat-outputlen = &4.
"该显示文字所占的字长
it_fieldcat-emphasize = &3.
"设置输出的颜色
it_fieldcat-edit = &4.
"设置为可编辑字段,可进行修改
append it_fieldcat.
END-OF-DEFINITION.
m_fieldcat 'MATKL' '
物料群組' 'C110' ''.
m_fieldcat 'MATNR' '
物料' 'C210' ''.
m_fieldcat 'MTART' '
物料类型' 'C310' ''.
m_fieldcat 'MBRSH' '
行业领域' 'C410' ''.
m_fieldcat 'MEINS' '
基本计量单位' 'C510' ''.
m_fieldcat 'MENGE' '
数量' 'C610' ''.
m_fieldcat 'MAKTX' '
物料描述' '' 'X'.
ENDFORM. " prepare_alv_field

*&---------------------------------------------------------------------*
*& Form ALV_TOP_OF_PAGE
*&---------------------------------------------------------------------*
FORM alv_top_of_page USING cl_dd TYPE REF TO cl_dd_document.
DATA: m_p TYPE i.
DATA: m_buff TYPE string.
*
表头其实完全可以是一个html文件,自己使用html语言进行格式控制

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13565884/viewspace-1009982/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13565884/viewspace-1009982/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值