自定义屏幕中ALV 双击事件触发单击事件怎样触发屏幕的PAI

博客访问: 120326
博文数量: 45
注册时间:
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: IT综合技术 14:55:28
*&---------------------------------------------------------------------**& Report
**&---------------------------------------------------------------------** &Program
** &Author
: Louis(ZhouCong)
** &CreateDate
: 10/04/2006
** &Change Author
: Louis(ZhouCong)
** &ChangeDate
: 10/04//2006
** &Last ChangeDate : 11/05/2006
** &Code type
** &Description
: ????????
** &--------------------------------------------------------------------*REPORT
NO STANDARD PAGE HEADING LINE-SIZE 255 .**************************************************************************>Include TYPE-POOLS***********************************************************************TYPE-POOLS: slis.CLASS cl_mmim_auth DEFINITION LOAD.**************************************************************************>Include Tables***********************************************************************TABLES: ekko,
"Purchasing Document Header
"Purchasing Document Item
"History per Purchasing Document
"Account Assignment in Purchasing Document
"Vendor Master (General Section)
"Material Group Descriptions
"Company Codes**************************************************************************>Define Intervals tables************************************************************************
working table for the entries of all Po tablesDATA: BEGIN OF wa_line,
ebeln LIKE ekko-ebeln,
lifnr LIKE ekko-lifnr,
waers LIKE ekko-waers,
wkurs LIKE ekko-wkurs,
ebelp LIKE ekpo-ebelp,
"?????????'
matkl LIKE ekpo-matkl,
txz01 LIKE ekpo-txz01,
meins LIKE ekpo-meins,
menge LIKE ekpo-menge,
netwr LIKE ekpo-netwr,
peinh LIKE ekpo-peinh,
netpr LIKE ekpo-netpr,
netps(13) TYPE p DECIMALS 6, "????'
mwskz LIKE ekpo-mwskz,
belnr LIKE ekbe-belnr,
bwart LIKE ekbe-bwart,
"???? (????)'
budat LIKE ekbe-budat,
"????????'
mengs LIKE ekbe-menge,
dmbts LIKE ekbe-dmbtr,
wrbtr LIKE ekbe-wrbtr,
mengi LIKE ekbe-menge,
dmbti LIKE ekbe-dmbtr,
shkzg LIKE ekbe-shkzg,
sakto LIKE ekkn-sakto,
kostl LIKE ekkn-kostl,
wgbez LIKE t023t-wgbez,
name1 LIKE lfa1-name1,
color TYPE slis_t_specialcol_alv,
END OF wa_line,
it_line LIKE TABLE OF wa_line WITH HEADER LINE,
LIKE TABLE OF wa_line WITH HEADER LINE.DATA: BEGIN OF it_ekbe OCCURS 0,
ebeln LIKE ekbe-ebeln,
ebelp LIKE ekbe-ebelp,
"?????????'
zekkn LIKE ekbe-zekkn,
"????????'
vgabe LIKE ekbe-vgabe,
"????/????'
belnr LIKE ekbe-belnr,
buzei LIKE ekbe-buzei,
"????????'
bewtp LIKE ekbe-bewtp,
"????????'
bwart LIKE ekbe-bwart,
"???? (????)'
menge LIKE ekbe-menge,
dmbtr LIKE ekbe-dmbtr,
"????????'
shkzg LIKE ekbe-shkzg,
END OF it_ekbe.DATA: tab_lines
color TYPE slis_t_specialcol_alv WITH HEADER LINE.DATA: g_menge LIKE ekbe-menge,
g_dmbtr LIKE ekbe-dmbtr,
g_mengt LIKE ekbe-menge,
g_dmbtt LIKE ekbe-dmbtr.
"????'***>Uses For ALVDATA: it_fieldcat TYPE slis_t_fieldcat_alv,
TYPE slis_t_event,
TYPE slis_alv_event,
it_listhead TYPE slis_t_listheader,
TYPE slis_t_sortinfo_alv,
sortcat_ln
LIKE LINE OF sortcat,
wa_listhead TYPE slis_listheader,
TYPE slis_layout_alv,
LIKE sy-repid,
g_command_form TYPE slis_formname VALUE 'USER_COMMAND',
gt_list_top_of_page TYPE slis_t_listheader,
g_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.************************************************************>Parameters Selection-screen**********************************************************
Selection Conditions OBLIGATORYSELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.SELECT-OPTIONS: s_ekorg FOR ekko-ekorg,
s_budat FOR ekbe-budat MEMORY ID but,
s_lifnr FOR ekko-lifnr MEMORY ID lif,
s_ebeln FOR ekko-ebeln MEMORY ID ebl,
s_matnr FOR ekpo-matnr MEMORY ID mat,
s_belnr FOR ekbe-belnr MEMORY ID mbl.SELECTION-SCREEN END OF BLOCK b1.**************************************************************INITIALIZATION*************************************************************INITIALIZATION.
wk_repid = sy-repid.AT SELECTION-SCREEN.
CALL FUNCTION 'MMIM_ENTRYCHECK_MAIN'
it_lifnr = s_lifnr
it_ekorg = s_ekorg.***************************************************************START-OF-SELECTION**************************************************************START-OF-SELECTION.
IF ( s_ekorg IS INITIAL ) AND ( s_budat IS INITIAL ) AND
( s_lifnr IS INITIAL ) AND ( s_ebeln IS INITIAL ) AND
( s_matnr IS INITIAL ) AND ( s_belnr IS INITIAL ).
MESSAGE text-inf
TYPE 'S' DISPLAY LIKE 'E'.
PERFORM account_list_01.
CLEAR tab_lines.
DESCRIBE TABLE itab LINES tab_lines.
IF tab_lines EQ 0 OR tab_lines LT 0 .
MESSAGE text-msg
SORT itab BY lifnr ebeln ebelp belnr bwart.
PERFORM comment_build USING gt_list_top_of_page[].
PERFORM alv_field_cat_01.
PERFORM alv_show_01.END-OF-SELECTION.*&--------------------------------------------------------------------**&
account_list_01*&--------------------------------------------------------------------**
text*---------------------------------------------------------------------*FORM
account_list_01 .
REFRESH : it_line, itab, it_ekbe.
SELECT ekko~ebeln ekko~lifnr ekko~waers ekko~wkurs ekpo~ebelp
ekpo~matkl ekpo~txz01 ekpo~meins ekpo~menge ekpo~netwr
ekpo~peinh ekpo~netpr ekpo~mwskz ekbe~belnr ekbe~bwart
ekbe~budat ekbe~menge AS mengs ekbe~dmbtr AS dmbts ekbe~wrbtr
ekbe~shkzg
INTO CORRESPONDING FIELDS OF TABLE it_line
INNER JOIN ekpo ON ekko~ebeln = ekpo~ebeln
INNER JOIN ekbe ON ekpo~ebeln = ekbe~ebeln AND ekpo~ebelp =
ekbe~ebelp
WHERE ekko~ebeln IN s_ebeln AND ekko~bstyp = 'F'
ekko~bsart = 'ZSPO'
AND ekko~loekz = space AND
ekko~lifnr IN s_lifnr AND ekko~ekorg IN s_ekorg AND
ekpo~matnr IN s_matnr AND ekpo~loekz = space AND*
ekbe~zekkn = '00'
AND ekbe~vgabe = '1'
ekbe~belnr IN s_belnr AND ekbe~bewtp = 'E'
ekbe~budat IN s_budat.
IF sy-subrc NE 0.
MESSAGE text-msg
SORT it_line BY ebeln ebelp belnr bwart.
REFRESH itab.
LOOP AT it_line INTO wa_line.
IF wa_line-bwart = '101'.
MOVE-CORRESPONDING wa_line TO itab.
APPEND itab.
wa_line-bwart = '102'.
LOOP AT itab WHERE ebeln = wa_line-ebeln AND ebelp = wa_line-ebelp
itab-mengs = itab-mengs - wa_line-mengs.
itab-dmbts = itab-dmbts - wa_line-dmbts.
itab-wrbtr = itab-wrbtr - wa_line-wrbtr.
MODIFY itab.
IF wa_line-bwart = '122'.
MOVE-CORRESPONDING wa_line TO itab.
APPEND itab.
wa_line-bwart = '123'.
LOOP AT itab WHERE ebeln = wa_line-ebeln AND ebelp = wa_line-ebelp
itab-mengs = itab-mengs - wa_line-mengs.
itab-dmbts = itab-dmbts - wa_line-dmbts.
itab-wrbtr = itab-wrbtr - wa_line-wrbtr.
MODIFY itab.
SELECT ekbe~ebeln ekbe~ebelp ekbe~zekkn ekbe~vgabe ekbe~belnr
ekbe~buzei ekbe~bewtp ekbe~bwart ekbe~menge ekbe~dmbtr
ekbe~shkzg
INTO CORRESPONDING FIELDS OF TABLE it_ekbe
FOR ALL ENTRIES IN itab
WHERE ekbe~ebeln = itab-ebeln AND ekbe~ebelp = itab-ebelp AND
ekbe~zekkn = '01' AND ekbe~vgabe = '2' AND ekbe~bewtp = 'Q'.
SORT it_ekbe BY ebeln ebelp.
LOOP AT itab.*
SELECT SINGLE wgbez INTO itab-wgbez
FROM t023t WHERE spras = sy-langu AND matkl = itab-matkl.*
SELECT SINGLE name1 INTO itab-name1
FROM lfa1 WHERE lifnr = itab-lifnr.*
?????/????'
SELECT SINGLE sakto kostl INTO (itab-sakto,itab-kostl)
WHERE ebeln = itab-ebeln AND ebelp = itab-ebelp AND zekkn = '01'.*
itab-netps = itab-netpr / itab-peinh.
CLEAR: itab-mengi, itab-dmbti.
LOOP AT it_ekbe WHERE ebeln = itab-ebeln AND ebelp = itab-ebelp.*
??????/??????'
IF it_ekbe-zekkn = '01'.
IF it_ekbe-shkzg = 'S'.
itab-mengi = itab-mengi + it_ekbe-menge.
itab-dmbti = itab-dmbti + it_ekbe-dmbtr.
IF it_ekbe-shkzg = 'H'.
itab-mengi = itab-mengi - it_ekbe-menge.
itab-dmbti = itab-dmbti - it_ekbe-dmbtr.
REFRESH color.
IF itab-shkzg = 'H'.
itab-mengs = - itab-mengs.
itab-dmbts = - itab-dmbts.
itab-wrbtr = - itab-wrbtr.*
CLEAR:itab-mengi, itab-dmbti.
color-color-col = '6'.
color-color-col = '5'.
color-fieldname = 'MENGE'. APPEND color.
color-fieldname = 'MEINS'. APPEND color.
color-fieldname = 'NETPS'. APPEND color.
color-fieldname = 'NETWR'. APPEND color.
color-fieldname = 'WAERS'. APPEND color.
color-fieldname = 'WKURS'. APPEND color.
color-fieldname = 'MWSKZ'. APPEND color.
color-fieldname = 'BELNR'. APPEND color.
color-fieldname = 'MENGS'. APPEND color.
color-fieldname = 'DMBTS'. APPEND color.
color-fieldname = 'WRBTR'. APPEND color.
color-fieldname = 'BUDAT'. APPEND color.
color-fieldname = 'MENGI'. APPEND color.
color-fieldname = 'DMBTI'. APPEND color.
itab-color[] = color[].
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
= itab-lifnr
output = itab-lifnr.
MODIFY itab.
ENDLOOP.ENDFORM.
" account_list_01*&--------------------------------------------------------------------**&
comment_build*&--------------------------------------------------------------------**
text*---------------------------------------------------------------------**
-->LT_TOP_OF_Ptext*---------------------------------------------------------------------*FORM comment_build USING lt_top_of_page TYPE
slis_t_listheader.
DATA:g_budat(25) TYPE c,
g_lifnr(25) TYPE c,
ls_line TYPE slis_listheader.
CLEAR ls_line.
ls_line-typ
ls_line-info
= text-h01.
APPEND ls_line TO lt_top_of_page.
CLEAR ls_line.
ls_line-typ
ls_line-key
= text-h02.
IF s_budat IS INITIAL.
g_budat = sy-datum.
CONCATENATE sy-datum+6(2) '.' sy-datum+4(2) '.' sy-datum+0(4)
INTO g_budat.
CONCATENATE s_budat-low+6(2) '.' s_budat-low+4(2) '.'
s_budat-low+0(4) ' To
' INTO g_budat.
CONCATENATE g_budat s_budat-high+6(2) '.' s_budat-high+4(2)
'.' s_budat-high+0(4) INTO g_budat.
WRITE g_budat TO ls_line-info.
APPEND ls_line TO lt_top_of_page.
ls_line-key
= text-h03.
ls_line-info = sy-uname.
APPEND ls_line TO lt_top_of_page.ENDFORM.
" COMMENT_BUILD*&---------------------------------------------------------------------**&
alv_field_cat_01*&---------------------------------------------------------------------**
text*----------------------------------------------------------------------**
text*----------------------------------------------------------------------*FORM alv_field_cat_01 .
DATA:wa_fieldcat TYPE slis_fieldcat_alv.
REFRESH it_fieldcat.
PERFORM field_cat USING 'LIFNR' 'Verdor' '08' '' '' ''.
PERFORM field_cat USING 'NAME1' 'Vendor N' '08' '' '' ''.
PERFORM field_cat USING 'EBELN' 'Po.' '08' '' '' ''.
PERFORM field_cat USING 'EBELP' 'Po.Item' '06' '' '' ''.
PERFORM field_cat USING 'MATKL' 'M.Group' '10' '' '' ''.
PERFORM field_cat USING 'WGBEZ' 'M.Group.D' '20' '' '' ''.
PERFORM field_cat USING 'TXZ01' 'Text' '20' '' '' ''.
PERFORM field_cat USING 'MENGE' 'Qty' '10' 'MEINS' '' ''.
PERFORM field_cat USING 'MEINS' 'Unit' '08' '' '' ''.
PERFORM field_cat USING 'NETPS' 'Price' '08' '' '' ''.
PERFORM field_cat USING 'NETWR' 'PO.Am' '08' 'MEINS' '' ''.
PERFORM field_cat USING 'WAERS' 'Curr' '04' '' '' ''.
PERFORM field_cat USING 'WKURS' 'Rate' '04' '' '' ''.
PERFORM field_cat USING 'MWSKZ' 'Tax' '04' '' '' ''.
PERFORM field_cat USING 'BELNR' 'Gr.No' '08' '' '' ''.
PERFORM field_cat USING 'MENGS' 'Gr.Qty' '10' 'MEINS' 'X' ''.
PERFORM field_cat USING 'DMBTS' 'Gr.Am(L)' '14' 'MEINS' 'X' ''.
PERFORM field_cat USING 'WRBTR' 'Gr.Am(F)' '14' 'MEINS' 'X' ''.
PERFORM field_cat USING 'MENGI' 'Ir.Qty' '10' 'MEINS' '' ''.
PERFORM field_cat USING 'DMBTI' 'Ir.Am' '10' 'MEINS' '' ''.
PERFORM field_cat USING 'SAKTO' 'G/L Ac' '10' '' '' ''.
PERFORM field_cat USING 'KOSTL' 'Cost.C' '08' '' '' ''.ENDFORM.
" alv_field_cat_01*&--------------------------------------------------------------------**&
alv_show_01*&--------------------------------------------------------------------**
text*---------------------------------------------------------------------*FORM alv_show_01 .*
wa_layout-zebra
CLEAR : sortcat, sortcat_ln.
sortcat_ln-spos
sortcat_ln-fieldname
sortcat_ln-fieldname
sortcat_ln-up
sortcat_ln-down
sortcat_ln-subtot
sortcat_ln
wa_layout-coltab_fieldname = 'COLOR'.*
wa_layout-totals_text
= 'Test'.*
wa_layout-subtotals_text
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
i_callback_program
= wk_repid
it_fieldcat
= it_fieldcat
= wa_layout
i_callback_top_of_page
= g_top_of_page
i_callback_user_command = g_command_form
= it_event
EXCEPTIONS
program_error
= 2.ENDFORM.
" alv_show_01*&--------------------------------------------------------------------**&
field_cat*&--------------------------------------------------------------------**
text*---------------------------------------------------------------------**
-->P_FIELD
-->P_MEINS
text*---------------------------------------------------------------------*FORM field_cat
USING p_field
DATA:wa_fieldcat TYPE slis_fieldcat_alv.
wa_layout-colwidth_optimize = 'X'.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
= p_field.
wa_fieldcat-tabname
wa_fieldcat-seltext_l
wa_fieldcat-outputlen
wa_fieldcat-qfieldname = p_meins.
wa_fieldcat-do_sum
wa_fieldcat-fix_column = p_fix.
APPEND wa_fieldcat TO it_fieldcat.ENDFORM.
"field_cat*&--------------------------------------------------------------------**&
top_of_page*&--------------------------------------------------------------------**
text*---------------------------------------------------------------------*FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
it_list_commentary = gt_list_top_of_page.ENDFORM.
" TOP_OF_PAGE*&--------------------------------------------------------------------**&
user_command*&--------------------------------------------------------------------**
text*---------------------------------------------------------------------**
-->R_UCOMM
-->RS_SELFIELDtext*---------------------------------------------------------------------*FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
"doubleclick
READ TABLE itab INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
CASE rs_selfield-fieldname.
WHEN 'BELNR'.
IF itab-belnr IS INITIAL.
SET PARAMETER ID 'MBN' FIELD itab-belnr.
SET PARAMETER ID 'MJA' FIELD ''.
CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.
WHEN 'EBELN'.
IF itab-ebeln IS INITIAL.
SET PARAMETER ID 'BES' FIELD itab-ebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
CLEAR r_ucomm.ENDFORM.
"user_command[@more@]
阅读(2785) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。行选择目前个人只知道两种方法:
&&&W_LAYOUT&&&&&TYPE&SLIS_LAYOUT_ALV,
1. 在输出内标加CHECK BOX 列 类型:C(1)
&*&&W_STR_ALV-FIELDNAME&&&&&=&'CHECK'.&&&&&&&&&&&&&"列名
*&&W_STR_ALV-EDIT&&&&&&&&&&=&'X'.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "可编辑
*&&W_STR_ALV-CHECKBOX&&&&&&=&'X'.&&&&&&&&&&&&&&&&&&&&&& "功能:CHECKBOX&
更新ALV 判断CHECK是否为'x'.
2.在输出内标加CHECK& 列,标识选中。用法同excel.变色即为选中。
&&&W_LAYOUT-BOX_FIELDNAME&=&'CHECK'.
&&W_layout-box_tabname&=&'IT_DATA'.
其他同上。
双击事件:在定义ALV字段处:
&&W_STR_ALV-HOTSPOT&&&&&&&=&'X'.&
则该列响应双击事件。
&&W_LAYOUT-F2CODE&&&&&&&&&&&&=&'DIS'.&&&& "&SY-UCOMM&响应值。&
&&&CALL&FUNCTION&'REUSE_ALV_GRID_DISPLAY'
&&&EXPORTING
&&&&&I_CALLBACK_PROGRAM&&&&&&&&&&&&&&&&=&SY-REPID
&&&&&IT_FIELDCAT&&&&&&&&&&&&&&&&&&&&&&&=&W_IT_ALV
&&&&&IS_LAYOUT&&&&&&&&&&&&&&&&&&&&&&&&&=&W_LAYOUT
&&&&&I_CALLBACK_HTML_TOP_OF_PAGE&&&&&&&=&'ALV_TOP_OF_PAGE&'
&&&&&I_CALLBACK_USER_COMMAND&&&&&&&&&&&=&'USER_COMMAND'
&&&&&I_CALLBACK_PF_STATUS_SET&&&&&&&&&&=&'SET_PF_STATUS'
&&&&TABLES
&&&&&&T_OUTTAB&&&&&&&&&&&&&&&&&&&&&&&&&=&IT_DATA
&&&EXCEPTIONS
&&&&&PROGRAM_ERROR&&&&&&&&&&&&&&&&&&&&&=&1
&&&&&OTHERS&&&&&&&&&&&&&&&&&&&&&&&&&&&&=&2
&&&&&&&&&&&&.
&&IF&SY-SUBRC&&&&0.
&&&&MESSAGE&ID&SY-MSGID&TYPE&SY-MSGTY&NUMBER&SY-MSGNO
&&&&&&&&&&&&WITH&SY-MSGV1&SY-MSGV2&SY-MSGV3&SY-MSGV4.
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.
*&---------------------------------------------------------------------**&&&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&&MATNR&&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*&-------------------------------------------------------------------*&&&&&&--&R_UCOMM&&&&&&text*&&&&&&--&RS_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&&MATNR&&
WITH&KEY&MATNR&=&IT_MATNR-MATNR.&&&&&&&&CHECK&&IT_MATNR-MAKTX&&&&&matnr&-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_PAGE和I_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语言进行格式控制&&m_buff&=&'&html&'.&&CALL&METHOD&cl_dd-&html_insert&&&&EXPORTING&&&&&&contents&=&m_buff&&&&CHANGING&&&&&&position&=&m_p.*m_buff&=&'&left&&H2&配件报废品种汇总表&/H2&&/left&'.m_buff&=&'&H4&配件报废品种汇总&/H4&'.CALL&METHOD&CL_DD-&HTML_INSERTEXPORTING&&CONTENTS&=&m_buffCHANGING&&POSITION&=&m_p.m_buff&=&sy-datum.CALL&METHOD&CL_DD-&HTML_INSERTEXPORTING&&CONTENTS&=&m_buffCHANGING&&POSITION&=&m_p.&&m_buff&=&'&/html&'.&&CALL&METHOD&cl_dd-&html_insert&&&&EXPORTING&&&&&&contents&=&m_buff&&&&CHANGING&&&&&&position&=&m_p.ENDFORM.
*&---------------------------------------------------------------------**&&&&&&&Form&&build_sortcat*&---------------------------------------------------------------------*FORM&build_sortcat&.
&&CLEAR&lt_sort.&"此部分用于排序和分类汇总&&MOVE&1&TO&lt_sort-spos.&&&&&lt_sort-fieldname&=&'MATKL'.&&"表示按照该栏位名来汇总&&lt_sort-up&&&&&&&&=&'X'.&& "表示按照上面栏位升序排列&&lt_sort-subtot&&&&=&'X'.&&APPEND&lt_sort.
&&CLEAR&lt_sort.&&lt_sort-spos&=&1.&&lt_sort-fieldname&=&'MATNR'.&&lt_sort-down&&&&&&&&=&'X'.&&lt_sort-subtot&&&&=&'X'.&&APPEND&lt_sort.ENDFORM.&&&&&&&&&&&&&&&&&&&&"&build_sortcat
*&---------------------------------------------------------------------**&&&&&&&Form&&build_layout*&---------------------------------------------------------------------*FORM&build_layout&.gs_layout-totals_text&=&'totals'.gs_layout-zebra&&&&&&&&&&&&&&&&=&'X'.gs_layout-no_vline&&&&&&&&&&&&&=&'X'.gs_layout-colwidth_optimize&&&&=&'X'."自动设置宽度gs_layout-detail_popup&&&&&&&&&=&'X'.gs_layout-detail_initial_lines&=&'X'.gs_layout-detail_titlebar&&&&&&=&'Detail&Title&Bar'.
gs_layout-box_fieldname&=&'BOX'.&"用来控制输出画面左测的可选择该行,如果选中某行,
则该栏位值为&X&ENDFORM.&&&&&&&&&&&&&&&&&&&&"&build_layout
*&---------------------------------------------------------------------**&&&&&&&Form&&TOP_OF_PAGE*&---------------------------------------------------------------------*FORM&TOP_OF_PAGE.&&DATA:&ls_line&TYPE&slis_listheader.&&CLEAR&pt_top_of_page[].&&CLEAR&ls_line.&&ls_line-typ&&=&'H'.&&SELECT&SINGLE&butxt&INTO&ls_line-info&&&&&FROM&t001&&&&WHERE&bukrs&=&'3000'.&&APPEND&ls_line&TO&pt_top_of_page.&&CLEAR&ls_line.&&ls_line-typ&&=&'S'.&&ls_line-key&&=&'TITLE'.&&ls_line-info&=&sy-title.&&APPEND&ls_line&TO&pt_top_of_page.&&CALL&FUNCTION&'REUSE_ALV_COMMENTARY_WRITE'&&&&EXPORTING&&&&&&it_list_commentary&=&pt_top_of_page.ENDFORM.
*---------------------------------------------------------------------**&&&&&&&FORM&alv_end_of_list&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&**---------------------------------------------------------------------*form&alv_end_of_list.&&data:i_list_comments&TYPE&slis_t_listheader.&&data:w_list_comments&TYPE&slis_listheader.&&clear:&i_list_comments.&&w_list_comments-typ&=&'H'.&"H&=&Header,&S&=&Selection,&A&=&Action&&w_list_comments-key&=&'TITLE'.&&w_list_comments-info&=&'End&of&list'.&&append&w_list_comments&to&i_list_comments.&&call&function&'REUSE_ALV_COMMENTARY_WRITE'&&&&&&&exporting&&&&&&&&&&&&it_list_commentary&=&i_list_comments.endform.*---------------------------------------------------------------------**&&&&&&&FORM&ALV_END_OF_PAGE&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&**---------------------------------------------------------------------*FORM&ALV_END_OF_PAGE.ENDFORM.*&---------------------------------------------------------------------**&&&&&&&Form&&build_eventexit*&---------------------------------------------------------------------*FORM&build_eventexit&.&&DATA&c_refresh&TYPE&syucomm&VALUE&'&REFRESH'.&&CLEAR&ls_event_exit.&&ls_event_exit-ucomm&=&c_refresh.&&&&"&Refresh&&ls_event_exit-after&=&'X'.&&APPEND&ls_event_exit&TO&lt_event_exit.ENDFORM.&&&&&&&&&&&&&&&&&&&&"&build_eventexit
二.关于FUNCTION&'REUSE_ALV_HIERSEQ_LIST_DISPLAY'分层显示常用参数说明及用法REPORT&Z_DAVID_ALVTEST.TABLES&:&ekko,&&&&&&&&&ekpo.SELECT-OPTIONS:&s_ebeln&FOR&ekko-ebeln.TYPE-POOLS:&slis.DATA:&BEGIN&OF&headertab&OCCURS&0,&&&&&&&ebeln&LIKE&ekko-ebeln,&&&&&&&bstyp&LIKE&ekko-bstyp,&&&&&&&bsart&LIKE&ekko-bsart,&&&&&&&statu&LIKE&ekko-statu,&&&&&&&expand&TYPE&xfeld,"用于设置是否可扩展,在这里必须要定义此字段&&&&&&END&OF&headertab.DATA:&BEGIN&OF&itemtab&OCCURS&0,&&&&&&&ebeln&LIKE&ekpo-ebeln,&&&&&&&ebelp&LIKE&ekpo-ebelp,&&&&&&&matnr&LIKE&ekpo-matnr,&&&&&&&werks&LIKE&ekpo-werks,&&&&&&&menge&LIKE&ekpo-menge,&&&&&&&netpr&LIKE&ekpo-netpr,&&&&&&&peinh&LIKE&ekpo-peinh,&&&&&&&netwr&LIKE&ekpo-netwr,&&&&&&END&OF&itemtab.DATA:&ls_fieldcat&&TYPE&slis_t_fieldcat_alv&WITH&HEADER&LINE,&&&&&&ls_sort&&&&&TYPE&slis_t_sortinfo_alv&WITH&HEADER&LINE,&&&&&&ls_keyinfo&&TYPE&slis_keyinfo_alv,&&&&&&ls_layout&&&TYPE&slis_layout_alv.START-OF-SELECTION.PERFORM&readdata.PERFORM&build_fieldcat.PERFORM&build_sortcat.PERFORM&build_layout.PERFORM&build_keyinfo.PERFORM&display_alv.*&---------------------------------------------------------------------**&&&&&&&Form&&readdata*&---------------------------------------------------------------------*FORM&readdata&.&&SELECT&ebeln&bstyp&bsart&statu&&&&&INTO&TABLE&headertab&&&&&FROM&ekko&&&&&WHERE&ebeln&IN&s_ebeln.&&IF&NOT&headertab[]&IS&INITIAL.&&&&SELECT&ebeln&ebelp&matnr&werks&menge&netpr&peinh&netwr&&&&&&&INTO&TABLE&itemtab&&&&&&&FROM&ekpo&&&&&&&FOR&ALL&ENTRIES&IN&headertab&&&&&&&WHERE&ebeln&=&headertab-ebeln.&&ENDIF.ENDFORM.&&&&&&&&&&&&&&&&&&&&"&readdata*&---------------------------------------------------------------------**&&&&&&&Form&&build_fieldcat*&---------------------------------------------------------------------*FORM&build_fieldcat&.&&&&DEFINE&alv_fieldcat.&&&&&&ls_fieldcat-tabname&=&&1.&&&&&&ls_fieldcat-fieldname&=&&2.&&&&&&ls_fieldcat-ref_tabname&=&&3.&&&&&&append&ls_fieldcat.&&&&END-OF-DEFINITION.&&&&alv_fieldcat&'headertab'&'EBELN'&'EKKO'.&&&&alv_fieldcat&'headertab'&'BSTYP'&'EKKO'.&&&&alv_fieldcat&'headertab'&'BSART'&'EKKO'.&&&&alv_fieldcat&'headertab'&'STATU'&'EKKO'.&&&&alv_fieldcat&'itemtab'&'EBELN'&'EKPO'.&&&&alv_fieldcat&'itemtab'&'EBELP'&'EKPO'.&&&&alv_fieldcat&'itemtab'&'MATNR'&'EKPO'.&&&&alv_fieldcat&'itemtab'&'WERKS'&'EKPO'.&&&&alv_fieldcat&'itemtab'&'MENGE'&'EKPO'.&&&&alv_fieldcat&'itemtab'&'NETPR'&'EKPO'.&&&&alv_fieldcat&'itemtab'&'PEINH'&'EKPO'.&&&&alv_fieldcat&'itemtab'&'NETWR'&'EKPO'.ENDFORM.&&&&&&&&&&&&&&&&&&&&"&build_fieldcat*&---------------------------------------------------------------------**&&&&&&&Form&&build_sortcat*&---------------------------------------------------------------------*FORM&build_sortcat&.&&DEFINE&m_sort.&&&&ls_sort-tabname&=&&1.&&&&ls_sort-fieldname&=&&2.&&&&ls_sort-up&&&&&&&&=&&3.&&&&append&ls_sort.&&END-OF-DEFINITION.&&m_sort&'headertab'&'EBELN'&'X'.&&m_sort&'itemtab'&'EBELP'&'X'.ENDFORM.&&&&&&&&&&&&&&&&&&&&"&build_sortcat*&---------------------------------------------------------------------**&&&&&&&Form&&build_keyinfo*&---------------------------------------------------------------------*FORM&build_keyinfo&.&&ls_keyinfo-header01&=&'EBELN'.&&ls_keyinfo-item01&=&'EBELN'.&&ls_keyinfo-item02&=&'EBELP'.ENDFORM.&&&&&&&&&&&&&&&&&&&&"&build_keyinfo*&---------------------------------------------------------------------**&&&&&&&Form&&build_layout*&---------------------------------------------------------------------*FORM&build_layout&.&&ls_layout-group_change_edit&=&'X'.&&ls_layout-colwidth_optimize&=&'X'.&&ls_layout-zebra&&&&&&&&&&&&&=&'X'.&&ls_layout-detail_popup&&&&&&=&'X'.&&ls_layout-get_selinfos&&&&&&=&'X'.&&ls_layout-expand_fieldname&&=&'EXPAND'.ENDFORM.&&&&&&&&&&&&&&&&&&&&"&build_layout*&---------------------------------------------------------------------**&&&&&&&Form&&display_alv*&---------------------------------------------------------------------*FORM&display_alv&.CALL&FUNCTION&'REUSE_ALV_HIERSEQ_LIST_DISPLAY'&&&&EXPORTING&&&&&&i_callback_program&&&&&&=&sy-cprog*&&&&&&i_callback_user_command&=&'USER_COMMAND'&&&&&&is_layout&&&&&&&&&&&&&&&=&ls_layout&&&&&&it_fieldcat&&&&&&&&&&&&&=&ls_fieldcat[]&&&&&&it_sort&&&&&&&&&&&&&&&&&=&ls_sort[]&&&&&&i_tabname_header&&&&&&&&=&'headertab'&&&&&&i_tabname_item&&&&&&&&&&=&'itemtab'&&&&&&is_keyinfo&&&&&&&&&&&&&&=&ls_keyinfo&&&&&&i_save&&&&&&&&&&&&&&&&&&=&'A'&&&&TABLES&&&&&&t_outtab_header&&&&&&&&&=&headertab&&&&&&t_outtab_item&&&&&&&&&&&=&itemtab&&&&EXCEPTIONS&&&&&&program_error&&&&&&&&&&&=&1&&&&&&OTHERS&&&&&&&&&&&&&&&&&&=&2.&&IF&sy-subrc&&&&0.&&&&MESSAGE&ID&sy-msgid&TYPE&sy-msgty&NUMBER&sy-msgno&&&&&&&&&&WITH&sy-msgv1&sy-msgv2&sy-msgv3&sy-msgv4.&&ENDIF.ENDFORM.&&&&&&&&&&&&&&&&&&&&"&display_alv
阅读(...) 评论()

我要回帖

更多关于 双击不触发单击事件 的文章

 

随机推荐