ALV入门.docx
- 文档编号:26592964
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:25
- 大小:129.30KB
ALV入门.docx
《ALV入门.docx》由会员分享,可在线阅读,更多相关《ALV入门.docx(25页珍藏版)》请在冰豆网上搜索。
ALV入门
ALV知识
一、ALV相关概念
ALV――ABAPLISTVIEWER,这里我姑且称之为ABAP表单浏览器,用它可以标准化,简单化R/3系统中的表单,它可以提供给用户一个统一的表单格式以及用户接口。
ALV即能显示简单表单(SIMPLELIST)又能显示有序表单(SEQUENTIALLIST):
●简单表单(SIMPLELIST)包含一系列不分层次的(NON-HIERARCHICAL),用户自定义的列。
●层次表(即有序表SEQUENTIALLIST)包含列表头以及它的子行,一个列表头的关键行能带出它下面的一些列项目(我们自己理解的时候可以想到BOM表的层次结构)。
●我们还可以在简单表单以及关联表单中显示小计和总计
二、结合一个具体的实例来看ALV的功能
首先我们看下图中的这个ALV的布局(这是一般ALV程序表单的典型布局):
根据上面对ALV的直观形象,下面讲屏幕上的区域划分成几块,分别来解释它的作用:
1.快捷工具栏(如下图)
细节按钮,你首先必须选中列表中的一行,然后点击它的话,就会弹出一个窗口,显示选中行的细节内容。
(另外:
你双击你要选择的行,也可以显示细节)
按升序排列,首先选中一列,然后再点击它,就可以看到该列是按照升序重新排列。
按降序排列,首先选中一列,然后再点击它,就可以看到该列是按照降序重新排列。
设置过滤器,通过设置它可以达到筛选的目的,以列名称作为筛选的筛选标准,填入过滤器相应的标准值,然后就可以筛选出满足自己条件的记录。
打印预览,点击它之后,就可以预览一下将要打印内容的布局情况。
MicrosoftExcel,调用MS的Excel到当前ALV的列表显示区域。
(前提:
必须安装了MS的Excel)
字处理,字处理的相关设置。
本地文件,将当前表单存储到本地机器上,有几种供选择的存储格式。
邮件收件人,给系统内用户发邮件
图形,点击它可以根据表单情况绘制相关图表。
更改布局,点击它可以对表单中的列项目排列次序的互换,删减等。
选择布局,从以及保存的布局中选择自己满意的布局。
保存布局,对于自己满意的布局,可以通过点击它来将布局保存起来。
2.表单标题区
这个区域主要是用来显示一些抬头信息(总揽信息),类似于WORD中的页眉。
我们在使用的时候根据需要来进行相关填写。
3.表单显示区
这个区域主要使用来显示我们通过代码写筛选出来的数据,相关的操作在下面的程序编写部分详细介绍。
三、程序的编写
1.在我们写ALV程序的时候,有一个类型组是肯定要用到的:
TYPE-POOLS:
SLIS.
在这个类型组中有很多ALV的自定义数据类型以及结构化数据类型(通过TYPE来定义的),我们在写ALV表单的时候需要调用的。
我们常用的几个有(蓝色部分):
data:
i_fieldcat_alvtypeslis_t_fieldcat_alvwithheaderline.
“用来存储我们将要在表单显示区域显示出来的表单的列名,每个列名对应的字段名以及列表头其他相关属性信息的数据类型
i_layouttypeslis_layout_alv.“ALV的格式
i_list_commentstypeslis_t_listheader.“用来填充表单标题区域的数据类型
“下面这三个数据类型的使用视情况而定
i_eventstypeslis_t_event,
i_event_exittypeslis_t_event_exit,
i_excludingtypeslis_t_extab.
2.写一个ALV程序的基本流程(主要包括ALV相关的那部分,后面会附上一个ALV源程序的代码):
第一步:
定义将要用到的表,即TALBES定义部分,然后定义TYPE-POOLS:
SLIS.
第二步:
定义“1”中提到的这些数据类型或者内表的实体对象
第三步:
定义一些需要用到的变量,比如我们常定义的有:
Data:
w_repidlikesy-repid,“ABAP程序,我们一般取当前程序//
w_callback_ucommtypeslis_formname,"字符型,功能
w_printtypeslis_print_alv,"类型组
w_layouttypeslis_layout_alv,"类型组
w_html_top_of_pagetypeslis_formname,"字符型
w_fieldcat_alvlikelineofi_fieldcat_alv,“从上面的数据结构类型引用过来的
w_excludinglikelineofi_excluding,“同上
w_eventslikelineofi_events,“同上
w_event_exitlikelineofi_event_exit,“同上
w_list_commentslikelineofi_list_comments.“同上
第四步:
定义自己的选择屏幕
第五步:
定义INITIALIZATION部分,在这个部分往往要指定w_repid的值,
w_repid=sy-repid。
第六步:
start-of-selection部分
用一个子函数完成对ALV表单标题区域的赋值(i_list_comments)。
用一个子函数完成自己所需要数据的抓取
用一个子函数完成要显示列表的列名行(第一行)的相关赋值(i_fieldcat_alv)以及设置
用一个子函数完成输出格式的设置(i_layout),比如双击一条记录是否弹出对话框啊?
是用哪个功能键触发等等
用一个子函数FORMDISPLAY_DATA来显示上面我们已经分别封装好的数据,需要调用两个常用的FUNCTIONMODULE:
FUNCTION'REUSE_ALV_GRID_DISPLAY'“用来显示表单数据
FUNCTION'REUSE_ALV_COMMENTARY_WRITE'“用来显示表单标题
附件:
示例程序源代码
*----------------------------------------------------------------------
*Program:
ZZ_ALV_REPORT_STUB
*Author:
ClaytonMergen
*Date:
*
*Purpose:
ReportusingALVfunction
*
*Notes:
*1)Logos&wallpaperscanbefoundintableBDS_CONN05
*withclass=PICTURES
*
*2)TransactionOAERcanbeusedtocreatePICTURES.
*RuntransactionOAERwithclassname=PICTURES,Classtype=OT,
*andObjectkeywithwhatevernameyouwanttocreate.Inthe
*nextscreen,rightclickingonscreenandimport
*
*----------------------------------------------------------------------
*Revisions
*----------------------------------------------------------------------
*Name:
*Date:
*Comments:
*----------------------------------------------------------------------
reportzflex004
nostandardpageheading
line-size200
line-count65
message-idzz.
*--------------------------------
*Tables
*--------------------------------
tables:
ekpo,
mara,
trdir.
*--------------------------------
*GlobalTypes
*--------------------------------
type-pools:
slis.
*--------------------------------
*GlobalInternalTables
*--------------------------------
data:
i_fieldcat_alvtypeslis_t_fieldcat_alv,
i_eventstypeslis_t_event,
i_event_exittypeslis_t_event_exit,
i_list_commentstypeslis_t_listheader,
i_excludingtypeslis_t_extab.
*Displaydata
data:
beginofi_dataoccurs0,
matnrlikemara-matnr,
mtartlikemara-mtart,
endofi_data.
*--------------------------------
*GlobalVariables
*--------------------------------
data:
w_variantlikedisvariant,"显示变式结构
wx_variantlikedisvariant,
w_variant_save
(1)typec,
w_exit
(1)typec,
w_repidlikesy-repid,"abap程序,当前主程序
w_user_specific
(1)typec,
w_callback_ucommtypeslis_formname,"字符型
w_printtypeslis_print_alv,"类型组
w_layouttypeslis_layout_alv,"类型组
w_html_top_of_pagetypeslis_formname,"字符型
w_fieldcat_alvlikelineofi_fieldcat_alv,
w_excludinglikelineofi_excluding,
w_eventslikelineofi_events,
w_event_exitlikelineofi_event_exit,
w_list_commentslikelineofi_list_comments.
*--------------------------------
*GlobalConstants
*--------------------------------
*constants:
*--------------------------------
*SelectionScreen
*--------------------------------
selection-screenbeginofblockblk_criteriawithframetitletext-f01.
select-options:
s_namefortrdir-name."程序名
selection-screenendofblockblk_criteria.
selection-screenbeginofblockblk_paramswithframetitletext-f02.
parameters:
p_varilikedisvariant-variant."格式
selection-screenskip1.
parameters:
p_gridradiobuttongrouprb01default'X',
p_htmlascheckbox.
selection-screenskip1.
parameters:
p_listradiobuttongrouprb01.
selection-screenendofblockblk_params.
*--------------------------------
*Initialization
*--------------------------------
initialization.
performinit_variant."初始化
performvariant_defaultusingp_vari.
clear:
s_name[].
s_name-sign='I'.
s_name-option='CP'.
s_name-low='Z*'.
appends_name.
*--------------------------------
*AtSelectionScreenPBO
*--------------------------------
atselection-screenoutput.
*----------------------------------
*AtSelectionScreenValueRequest
*----------------------------------
atselection-screenonvalue-requestforp_vari.
performvariant_f4usingp_vari."不管
*--------------------------------
*AtSelectionScreen
*--------------------------------
atselection-screen.
performvariant_fill."不管
*--------------------------------
*StartofSelection
*--------------------------------
start-of-selection.
performget_data."从表mara中取相应字段到i_data
end-of-selection.
performfieldcat_build.
performevent_build.
performevent_exit_build.
performexclude_build.
performprint_build.
performlayout_build.
performdisplay_data.
*--------------------------------
*TopofPage
*--------------------------------
top-of-page.
*--------------------------------
*TopofPageDuringLineSel
*--------------------------------
top-of-pageduringline-selection.
*--------------------------------
*AtUserCommand
*--------------------------------
atuser-command.
*--------------------------------
*AtLineSelection
*--------------------------------
atline-selection.
*--------------------------------
*Macros
*--------------------------------
defineskip_1.
write:
/001sy-vline,
atsy-linszsy-vline.
end-of-definition.
*----------------------------------------------------------------------
*Forms
*----------------------------------------------------------------------
*&---------------------------------------------------------------------*
*&Formvariant_f4
*&---------------------------------------------------------------------*
formvariant_f4usingp_variant.
callfunction'LVC_VARIANT_F4'
exporting
is_variant=w_variant
i_save=w_variant_save
importing
e_exit=w_exit
es_variant=wx_variant
exceptions
not_found=1
program_error=2
others=3.
ifsy-subrc<>0.
messagei000(zz)withtext-g01.
endif.
ifw_exitisinitial.
w_variant-variant=wx_variant-variant.
p_variant=wx_variant-variant.
endif.
endform.
*&---------------------------------------------------------------------*
*&Forminit_variant
*&---------------------------------------------------------------------*
forminit_variant.
clear:
w_variant.
w_repid=sy-repid.
w_variant-report=w_repid.
w_variant-username=sy-uname.
w_variant_save='A'."Alltypes
endform.
*&---------------------------------------------------------------------*
*&Formvariant_default
*&---------------------------------------------------------------------*
formvariant_defaultusingp_variant.
wx_variant=w_variant.
ifnotp_variantisinitial.
wx_variant-variant=p_variant.
endif.
callfunction'LVC_VARIANT_DEFAULT_GET'
exporting
i_save=w_variant_save
changing
cs_variant=wx_variant
exceptions
wrong_input=1
not_found=2
program_error=3
others=4.
casesy-subrc.
when0.
p_variant=wx_variant-variant.
when2.
clear:
p_variant.
endcase.
endform.
*&---------------------------------------------------------------------*
*&Formvariant_fill
*&---------------------------------------------------------------------*
formvariant_fill.
clear:
w_variant.
ifp_variisinitial.
w_variant-variant='STANDARD'.
w_variant-report=w_repid.
else.
w_variant-variant=p_vari.
w_variant-report=w_repid.
callfunction'LVC_VARIANT_EXISTENCE_CHECK'
exporting
i_save=w_variant_save
changing
cs_variant=w_variant
exceptions
others=01.
ifsy-subrcne0.
messagei000(zz)withtext-g02.
endif.
endif.
endform.
*&---------------------------------------------------------------------*
*&Formfieldcat_build
*&---------------------------------------------------------------------*
formfieldcat_build.
callfunction'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name=w_repid
*i_structure_name='TRDIR'
i_internal_tabname='I_DATA'
i_inclname=w_repid
changing
ct_fieldcat=i_fieldc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ALV 入门