下载

0下载券

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 ALV

ALV.doc

ALV

sophsong
2011-10-27 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《ALVdoc》,可适用于IT/计算机领域

一一ALV介绍   TheALVGridControl(ALV=SAPListViewer)是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的应用程序中使用  SAP提示:在SAP的开发项目中,ALVGRID也可以作为修改和创建数据的一种工具,然而,目前这个功能只在实验计划中使用,还没有向客户发布  下面是一个ALVGRID的图片:  它包括大部分,工具栏,标题,用于显示数据的网格控制器如果有必要用户可以隐藏标题和工具栏    ALV家族包含中ALV工具:简易的,两层ALV,分等级连续的列表和树形结构的ALV 二ALVGRIDCONTROL(ALV网格控制器)   ALVGRIDCONTROL使用了控制器技术以实现艺术性的屏幕显示,象所有的控制器一样ALVGRIDCONTROL通过系统中的一个全局的类提供了方法,以响应它的动作  使用了ABAP的对象以后,列表是通过ALV的一个实例(INSTANCE)来显示的,程序员可以使用ABAP对象的事件管理 三ALVGRIDCONTROL实例  ALVGRID实例的定义,参照CLGUIALVGRID类       data ALVGRIDtypereftoclguialvgrid  ALVGRID继承结构:四、ALVGRID相关的几个控制结构   字段目录 Fieldcatalog       字段目录是用来控制ALV显示的网格中每个字段的属性的,比如字段的顺序,对齐方式,可编辑状态,颜色,等等      常用的控制字段如下:(下面的示例将说明这些字段的使用,参考STRUCTURELVCSFCAT)ROWPOSALV控制:输出行(内部使用) COLPOSALV控制:输出列列的位置,第几列,例如,,…FIELDNAMEALV控制:内部表字段的字段名称字段名称TABNAMELVC标签名称表名如果是内表是CURRENCYALV控制:货币单位 CFIELDNAMEALV控制:参考的当前单位的字段名称 QUANTITYALV控制:计量单位 QFIELDNAMEALV控制:参考计量单位的字段名称 IFIELDNAMEALV控制:内部表字段的字段名称 ROUNDALV控制:ROUND值 EXPONENTALV控制:流动表示的指数 KEYALV控制:关键字段关键字段,前面变蓝色KEYSELALV控制:可以被隐藏的关键列可以被隐藏的关键列ICONALV控制:作为图标输出此列作为图标输出SYMBOLALV控制:输出作为符号 CHECKBOXALV控制:作为复选框输出复选框输出JUSTALV控制:对齐对齐方式:'R':rightjustified'L':leftjustified'C':centeredLZEROALV控制:输出前导零X'NOSIGNALV控制:输出抑制符号X',不输出符号NOZEROALV控制:为输出隐藏零X',隐藏NOCONVEXTALV控制:不考虑输出的转换退出 EDITMASKALV控制:为输出编辑掩码格式EMPHASIZEALV控制:带有颜色的高亮列列的颜色FIXCOLUMNALV控制:固定列 DOSUMALV控制:总计列值X',合计NOSUMALV控制:没有总计列值X',没有合计NOOUTALV控制:列没有输出X',隐藏此列TECHALV控制:技术字段X'也是隐藏但是有点不一样OUTPUTLENALV控制:列的字符宽度输出的长度CONVEXIT转换例程 SELTEXTALV控制:对话功能的列标识符 TOOLTIPALV控制:列抬头的工具提示 ROLLNAMEALV控制:F帮助的数据元素 DATATYPEABAP字典中的数据类型ABAP字典中的数据类型INTTYPEABAP数据类型(C,D,N,)ABAP数据类型(C,D,N,)INTLEN以字节计的内部长度内容的长度LOWERCASE允许不允许小写字母X'允许大小写REPTEXT标题 HIERLEVELALV控制:内部使用 REPREPALV控制:价值是补充补充接口的选择标准 DOMNAME定义域名 SPGROUP组代码 HOTSPOTALV控制:单击敏感X',下面出现下划线,响应单击DFIELDNAMEALV控制:数据库中列组的字段名称 COLIDALV控制:列ID FAVAILABL字段有输入帮助吗X'此列有搜索帮助AUTOVALUEALV控制:自动复制值 CHECKTABLE表名 VALEXI固定值存在 WEBFIELDALV控制:内部表字段的字段名称 HREFHNDL自然数热点连接的句柄STYLEALV控制:样式下面有例子会介绍,比如PUSHBUTTIONSTYLEALV控制:样式 STYLEALV控制:样式 STYLEALV控制:样式 DRDNHNDL自然数下拉的句柄DRDNFIELDALV控制:内部表字段的字段名称下拉的字段NOMERGING字符字段长度相同的值不合并HFTYPEALV树控制:功能类型(总计,平均,最大最小,) COLOPT可选列优化的条目 NOINITCH字符字段长度 DRDNALIAS字符字段长度 REFFIELDALV控制:内部表字段的参考字段名称 REFTABLEALV控制:内部表字段的参考表名称 TXTFIELDALV控制:内部表字段的字段名称 ROUNDFIELDALV控制:带有ROUND说明的字段名称 DECIMALSOALV控制:输出小数位的编号 DECMLFIELDALV控制:带有DECIMALS说明的字段名称 DDOUTLENALV控制:输出字符长度 DECIMALS小数点后的位数设置小数的位数COLTEXTALV控制:列标题列标题SCRTEXTL长字段标签 SCRTEXTM中字段标签 SCRTEXTS短字段标签 COLDDICTXTALV控制:确定DDIC文本参考 SELDDICTXTALV控制:确定DDIC文本参考 TIPDDICTXTALV控制:确定DDIC文本参考 EDITALV控制:准备输入输出状态'X'可输入TECHCOLALV控制:内部使用 TECHFORMALV控制:内部使用 TECHCOMPALV控制:内部使用 HIERCPOSALV控制:层次列位置 HCOLKEY树控制:列名称项目名称 HSELECT标识是否可以选择树控制中的列 DDROLL数据元素(语义域) DRAGDROPIDALV控制:拖放处理拖放对象 MAC字符字段长度 INDXFIELD自然数 INDXCFIEL自然数 INDXQFIEL自然数 INDXIFIEL自然数 INDXROUND自然数 INDXDECML自然数 GETSTYLE字符字段长度 MARK字符字段长度 布局控制layout   布局是用来控制整个ALV的一个布局比如ALV的标题,是否可编辑,行颜色,列颜色   参照ALV的控制结构LVCSLAYO,以后的例子我将详细介绍如何设置行颜色和列颜色  详细的结构说明 字段名描述ValuerangeCWIDTHOPT最优化宽度SPACE,'X'SMALLTITLE小标题,如果设置了这个字段则标题与列标题大小一样SPACE,'X'GRIDTITLE标题,在网格和工具条之间最长个字符NOHEADERS如果被设置,列标题隐藏SPACE,'X'NOHGRIDLN隐藏水平线SPACE,'X'NOMERGING禁用单元格合并SPACE,'X'NOROWMARK如果被设置,选择列在选择模式为D和A的时候隐藏SPACE,'X'NOTOOLBAR隐藏工具条SPACE,'X'NOVGRIDLN隐藏垂直线SPACE,'X'SELMODE选择模式SPACE,'A','B','C','D'EXCPCONDS合计例外SPACE,'X'EXCPFNAME字段名称带有例外编码最长个字符EXCPLED例外作为LEDSPACE,'X'EXCPROLLN例外文档的数据元素SPACE,'X'CTABFNAME带有复杂单元格颜色编码的字段名称最长个字符INFOFNAME带有简单行彩色代码的字段名称最长个字符ZEBRA可选行颜色,如果设置了出现了间隔色带SPACE,'X'NOTOTLINE没有总计SPACE,'X'NUMCTOTAL可以对NUMC字段进行合计SPACE,'X'TOTALSBEF总计输出在第一行,小计在新的值之前SPACE,'X'STYLEFNAME设置单元格,比如PUSHBUTTON最长个字符打印和排序,过滤控制   打印的参数控制请参考结构LVCSPRNT  排序的参数控制请参考结构LVCSSORT  过滤的参数控制请参考结构LVCSFILT  这里不再一一解释,进入中文版本,里面应该也有解释的,虽然一些不是很清楚 五编写简单的ALV程序   首先这里就不详细介绍DIALOG的用法了    OO的ALVGRID必须存在于一个容器当中,就是FUNCTION的ALV,其实也是一样的,底层也是使用CLGUIALVGRID这个类的   首先ALV的显示需要有几个先决条件   ,字段目录,这个是必须的,如果没有这个参数,参考一个数据字典也是可以的,就是参数ISTRUCTURENAME   存放数据的内表,最好内表的结构和字段目录是一致的,否则可能会出现一些无法预知的错误,当然你说我非要不一样,那也不一定会出现错误我建议是最好一样的   这个是必须的,布局的话,应该是可以不设置的,使用默认的就可以了  第一步:创建个SCREEN,在屏幕上创建个容器,CONTAINER定义变量 DATA:      WCLCONTAINER TYPE REF TO CLGUICUSTOMCONTAINER,      WCLALV TYPE REF TO CLGUIALVGRID *存放字段目录的内表   DATAgtfieldcatTYPElvctfcat *布局结构   DATAgslayoutTYPElvcslayo *声明需要显示的内表(以SFLIGHT为例)   DATABEGINOFgtlistOCCURS        INCLUDESTRUCTURESFLIGHT   DATAENDOFgtlist 第二步:创建ALV这个对象它的父组件是那个容器      在PBO中写入如下代码:         PROCESSBEFOREOUTPUT            MODULEdisplayalv       创建DISPLAYALV的MODULE后,写下如下代码:            MODULEdisplayalvOUTPUT                PERFORMdisplayalv          ENDMODULE       在FORMDISPLAYALV中,判断ALV实例是否存在,如果不存在,则创建:    IF WCLALVISINITIAL     CREATE OBJECT: WCLCONTAINER       EXPORTING         CONTAINERNAME = 'ALVCON'    CREATE OBJECT WCLALV      EXPORTING        IPARENT = WCLCONTAINER       *准备获取字段目录PERFORMpreparefieldcatalogCHANGINGgtfieldcat      *设置布局PERFORMpreparelayoutCHANGINGgslayout      *显示ALVCALLMETHODgralvgrid>settableforfirstdisplayEXPORTING*IBUFFERACTIVE=*ICONSISTENCYCHECK=*ISTRUCTURENAME=*ISVARIANT=*ISAVE=*IDEFAULT='X'islayout=gslayout*ISPRINT=*ITSPECIALGROUPS=*ITTOOLBAREXCLUDING=*ITHYPERLINK=CHANGINGitouttab=gtlistitfieldcatalog=gtfieldcat*ITSORT=*ITFILTER=EXCEPTIONSinvalidparametercombination=programerror=toomanylines=OTHERS=      ELSE        *刷新ALVCALLMETHODgralvgrid>refreshtabledisplay*EXPORTING*ISSTABLE=*ISOFTREFRESH=EXCEPTIONSfinished=OTHERS=IFsysubrc<>*异常处理ENDIF      ENDIF   方法"settableforfirstdisplay"的参数说明 参数含义IBUFFERACTIVE如果方法调用是静态的,可以设置这个标记,这表示,如果每次显示ALV都是相同的字段目录既然这样那么字段目录会被放到一个特殊的缓存里,这样加速了ALV的显示ISTRUCTURENAME输出数据参考的数据字典的结构名,例如'SFLIGHT'如果指定了这个参数,字段目录会自动生成,下面的参数ITFIELDCATALOG不需要传值ISVARIANT决定布局显示的变式ISAVE决定用户是否可以保存变式:'X'只能保存全局变式'U'只能保存特定变式'A'都可以保存SPACE不可以保存变式IDEFAULT决定用户是否可以定义默认的布局:'X'可以定义默认布局,这个参数是默认的SPACE不可以定义默认布局ISLAYOUT布局参数,传递布局控制的一些信息ISPRINT后台打印属性的参数ITSPECIALGROUPS如果在字段目录中一些字段通过SPGROUP被分组在一起我们就必须为这些组传递一个组的文本内表进去ITTOOLBAREXCLUDING需要隐藏的标准的按钮的内表ITHYPERLINK为每个句柄分配了超连接的内表,LVCSHYPE中的HREF存放了超连接的地址,HANDLE指定了句柄,使用这些句柄你可以在GRID中使用超连接ITALVGRAPHICS比较复杂没有用过,意思好象是可以在图表中显示ALVITOUTTAB输出数据存放的内表,数据都是存放在这个内表里ITFIELDCATALOG字段目录ITSORT排序的标准ITFILTER过滤的标准  方法"REFRESHTABLEDISPLAY"的参数说明 参数含义ISSTABLE刷新的稳定性有个参数一个是行一个是列如果设置了相应的值,那么对应的行或者列在刷新的时候,将会保持稳定就是滚动条保持不动ISOFTREFRESH这个参数只是在异常情况下被使用,如果设置了这个参数,任何创建的合计,任何排序次序,任何为了显示数据而设置的过滤都将保持不变这个是非常有意义的例如:当然你没有修改数据内表里的数据而想刷新ALV,仅仅只是改变一下布局和字段目录第三步,获取要显示数据的字段目录有两种方式      手动创建FORMpreparefieldcatalogCHANGINGptfieldcatTYPElvctfcatDATAlsfcattypelvcsfcatlsfcatfieldname='CARRID'lsfcatinttype='C'lsfcatoutputlen=''lsfcatcoltext='CarrierID'lsfcatseltext='CarrierID'APPENDlsfcattoptfieldcatCLEARlsfcatlsfcatfieldname='CONNID'lsfcatreftable='SFLIGHT'lsfcatreftable='CONNID'lsfcatoutputlen=''lsfcatcoltext='ConnectionID'lsfcatseltext='ConnectionID'APPENDlsfcattoptfieldcatENDFORM   半自动的创建FORMpreparefieldcatalogCHANGINGptfieldcatTYPElvctfcatDATAlsfcattypelvcsfcatCALLFUNCTION'LVCFIELDCATALOGMERGE'EXPORTINGistructurename='SFLIGHT'CHANGINGctfieldcat=ptfieldcatEXCEPTIONSinconsistentinterface=programerror=OTHERS=IFsysubrc<>*ExceptionhandlingENDIFLOOPATptfieldcatINTOlsfcatCASEptfieldcatfieldnameWHEN'CARRID'lsfcatoutpulen=''lsfcatcoltext='AirlineCarrierID'MODIFYptfieldcatFROMlsfcatWHEN'PAYMENTSUM'lsfcatnoout='X'MODIFYptfieldcatFROMlsfcatENDCASEENDLOOPENDFORM第四步,设置布局 FORMpreparelayoutCHANGINGpslayoutTYPElvcslayo   pslayoutzebra='X'   pslayoutgridtitle='Flights'   pslayoutsmalltitle='X'ENDFORM"preparelayout 第五步,排除不需要的标准按钮(可选,这个是第一种方法,还有另外一种在添加自定义的按钮的时候介绍)   在你的ALV上如果你想排除一些你不想要的标准按钮,你可以把需要排除的按钮填入到表UIFUNCTIONS中,然后传给settableforfirstdisplay方法的参数"ITTOOLBAREXCLUDING"这些按钮的功能码一般都可以通过查看类clguialvgrid的常量属性中获取到,或者自己加个断点在afterusercommand事件中    如果你要隐藏全部的工具条,你可以把layout中的notoolbar设置为"X" FORMexcludetbfunctionsCHANGINGptexcludeTYPEuifunctions    DATAlsexcludeTYPEuifunc    lsexclude=clguialvgrid=>mcfcmaximum    APPENDlsexcludeTOptexclude    lsexclude=clguialvgrid=>mcfcminimum    APPENDlsexcludeTOptexclude    lsexclude=clguialvgrid=>mcfcsubtot    APPENDlsexcludeTOptexclude    lsexclude=clguialvgrid=>mcfcsum     APPENDlsexcludeTOptexclude    lsexclude=clguialvgrid=>mcfcaverage     APPENDlsexcludeTOptexclude    lsexclude=clguialvgrid=>mcmbsum     APPENDlsexcludeTOptexclude    lsexclude=clguialvgrid=>mcmbsubtotENDFORM按照上面的步骤,一个ALV的DEMO基本可以创建了下面我们将讲述一些功能 功能一:在第一次显示以后,修改字段目录和布局    在运行的时候,很有可能需要在显示之后,需要设置一个新的布局或者字段目录有下面这些方法去实现   字段目录:   getfrontendfieldcatalog               setfrontendfieldcatalog  布局:        getfrontendlayout               setfrontendlayout   使用这些方法,你在执行的任何时候,可以获取这些内容,然后修改他们 DATAlsfcatTYPElvcsfcatDATAltfcatTYPElvctfcatDATAlslayoutTYPElvcslayoCALLMETHODgralvgrid>getfrontendfieldcatalog IMPORTING   etfieldcatalog=ltfcat LOOPATltfcatINTOlsfcat   IFlsfcatfieldname='PAYMENTSUM'    lsfcatnoout=space    MODIFYltfcatFROMlsfcat  ENDIF ENDLOOPCALLMETHODgralvgrid>setfrontendfieldcatalog  EXPORTING    itfieldcatalog=ltfcat CALLMETHODgralvgrid>getfrontendlayout IMPORTING   eslayout=lslayout  lslayoutgridtitle='Flights(withPaymentSums)'CALLMETHODgralvgrid>setfrontendlayout EXPORTING   islayout=lslayout功能二:设置排序条件   有时候我们需要使用到数据的排序这个可以通过填充参考结构LVCTSORT创建的内表来实现这个内表中包含了排序的标准可以传递给settableforfirstdisplay这个方法的ITSORT参数来初始化一个排序  FORMpreparesorttableCHANGINGptsortTYPElvctsort    DATAlssortTYPElvcssort    lssortspos=''    lssortfieldname='CARRID'    lssortup='X'"AtoZ    lssortdown=space    APPENDlssortTOptsort    lssortspos=''    lssortfieldname='SEATSOCC'    lssortup=space    lssortdown='X'"ZtoA    APPENDlssortTOptsortENDFORM"preparesorttable   这有点特别的说明:     如果这边排序的字段名不存在于字段目录中那将出现DUMP     排序以后,垂直的网格中如果出现相同的内容,就会合并如果要避免,请在布局中设置"nomerging"为"X"     你可以通过使用方法“getsortcriteria”和“setsortcriteria”来获取和设置排序的标准功能三:设置过滤(和排序类似)    ALV的标准按钮中已经有过滤的功能,我们也可以在初始显示的时候就设置过滤条件我们需要把过滤条件填充到参考表类型"LVCTFILT"创建的内表中过滤条件是类似一个RANGES结构的然后把这个内表传递给方法"SETTABLEFORFIRSTDISPLAY"中的参数"ITFILTER" FORMpreparefiltertableCHANGINGptfiltTYPElvctfilt    DATAlsfiltTYPElvcsfilt    lsfiltfieldname='FLDATE'    lsfiltsign='E'    lsfiltoption='BT'    lsfiltlow=''    lsfilthigh=''    APPENDlsfiltTOptfiltENDFORM"preparefiltertable     我们可以使用"getfiltercriteria"和"setfiltercriteria"来获取过滤条件和设置过滤条件功能四:选择方式  有时候我们需要选择一些单元格,行或者列,在布局中有个参数"SELMODE"可以设置我们不同的选择方式下面是参数的介绍和不同的地方 值模式可能的选择注释SPACE等同于B参考B默认设置'A'行和列的选择,无法选择单元格多行多列用户可以使用最左边的选择按钮来选择多行'B'单选,不可以多选行,不可以多选单元格多行多列 'C'多选,可以多选行,不可以多选单元格多行多列 'D'单元格的选择,可以多选单元格多行多列,任何单元格多选用户可以使用最左边的选择按钮来选择多行 注意: 如果你设置了ALV是可编辑的,可能会覆盖你在布局中选择方式的设置的 设置了选择方式以后,我们可以使用很多方法来获取用户的选择比如"GETSELECTEDCELLS","GETSELECTEDCELLSID","GETSELECTEDROWS","GETSELECTEDCOLUMNS" 在执行PAI以后,用户所选择的单元格,行或者列可能丢失你可以在PBO中,使用对应的SET方法来恢复这些选择功能五:颜色设置   有的时候,我们需要在ALV网格上绘上一些颜色可以给特定的行某个特定的列,某个特定的单元格绘制颜色如果某列被设置为关键列,这列的颜色将被自动绘制,而不需要我们额外的指定 先介绍ALV里色码就是颜色编码,位CHAR型                            Cxyz            Color ||   |                    |   : 相反开关                    : 强化开关 其中C是固定的第一位,第二位代表是颜色编码(到),第三位是加强的设置,第四位是相反,个人理解,在强化关闭的情况下,相反的作用是背景和字体的变化 颜色编码: x颜色主要使用在GrayblueheadersLightgrayListbodiesyellowtotalsBluegreenKeycolumnsgreenPositivethresholdvalueredNegativethresholdvalueorangeControllevels  A)设置列的颜色   我们可以通过字段目录的"emphasize"控制字段来控制某列的颜色这个字段同样是位的CHAR型,传入上述的颜色编码例如:          LSFCATEMPHASIZE = 'C' 如果这列被设置为关键列,就是   LSFCATKEY = 'X',那么颜色设置就不会起作用请注意,自动产生的字段目录中KEY的设置是自动获取的 B)设置行的颜色   为某行设置颜色,是有点复杂的,我们需要在要显示的数据内表中增加一个字段,这个字段不需要在字段目录中存在同样,这个字段也是位的CHAR型,符合颜色编码的定义  那我们就需要这样来定义我们的数据内表: DATABEGINOFgtlistOCCURS    INCLUDESTRUCTURESFLIGHT     DATArowcolor()TYPEcDATAENDOFgtlist   很明显填入颜色编码以后,ALV怎么知道它是我们用来设置颜色的呢,在布局中有个控制字段"INFOFNAME",我们可以设置这个字段来告诉ALV,我们的颜色字段是哪个   pslayoutinfofname='ROWCOLOR'  请注意,这个字段随便你起名字,但是记住,一定是数据内表里的字段而且这边设置的时候一定要大写你可以在任何时候设置行的颜色,只需要去修改内表里的这个字段的值,但是记得,一定要刷新以后才起作用 C)设置单元格的颜色       设置单元格和设置行的颜色,本质上没有什么大的区别,但是定位单元格需要个参数我们需要在数据内表中插入一个表类型的字段这样我们的数据内表就变成了DEEP结构了,不过ALV是可以处理的不需要担心插入的这个表类型的类型为"LVCTSCOL"  里面有个参数:    FNAME告诉我们你需要设置的是哪个字段,如果为空然后直接在COLOR中设置颜色,就是整行设置为这个颜色如果具体到某个单元格,必须指定是哪个字段    COLOR字段是用来设置颜色的    NOKEYCOL字段比较关键了设置为关键列的一些字段,我们的颜色设置可能被覆盖通过这个字段的设置,可以避免被关键列覆盖   同样,ALV在布局中有个字段"CTABFNAME"告诉我们,数据内表中哪个字段是用来设置单元格的颜色的 DATABEGINOFgtlistOCCURS   INCLUDESTRUCTURESFLIGHTDATArowcolor()TYPEcDATAcellcolorsTYPElvctscolDATAENDOFgtlistDATAlscellcolorTYPElvcsscol READTABLEgtlistINDEX   lscellcolorfname='SEATSOCC'   lscellcolorcolorcol=''   lscellcolorcolorint=''   APPENDlscellcolorTOgtlistcellcolors MODIFYgtlistINDEX 注意:  颜色设置中有优先级顺序,他们是单元格>行>列功能六:插入超链接    插入超链接是通过一个含有超级链接和句柄的表来实现的这个表类型为"LVCTHYPE",句柄是一个INT类型的字段,我们需要在数据显示的内表中加入这样的字段来告诉ALV,我们的字段指定的句柄,从而找到对应的超级链接在字段目录中,WEBFIELD是用来指定对应的句柄名的   下面举个例子来说明,我们要为字段CARRID,CONNID建立超级链接: 首先,内表定义中我们加入个句柄字段: DATABEGINOFgtlistOCCURS   INCLUDESTRUCTURESFLIGHTDATArowcolor()TYPEcDATAcellcolorsTYPElvctscolDATAcarridhandleTYPEintDATAconnidhandleTYPEintDATAENDOFgtlist 第二:建立一个超级链接内表,里面存放句柄所对应的超级链接创建的时候注意,它参考的表类型,一定是"LVCTHYPE" FORMpreparehyperlinkstableCHANGINGpthypeTYPElvcthypeDATAlshypeTYPElvcshype  lshypehandle=''  lshypehref='http:wwwcompanycomcarridscar'  APPENDlshypeTOpthype  lshypehandle=''  lshypehref='http:wwwcompanycomcarridscar'  APPENDlshypeTOpthype  lshypehandle=''  lshypehref='http:wwwcompanycomcarridscar'  APPENDlshypeTOpthype  lshypehandle=''  lshypehref='http:wwwcompanycomconnidscon'   APPENDlshypeTOpthype  lshypehandle=''  lshypehref='http:wwwcompanycomconnidscon'   APPENDlshypeTOpthypeENDFORM 第三通过字段目录FIELDCATLOG来指定相应的句柄字段    对于CARRID的fieldcatalog      Lsfieldcatwebfield=‘CARRIDHANDLE’   对于CONNID的fieldcatalog      Lsfieldcatwebfield=‘CONNIDHANDLE’ 在方法"SETTABLEFORFIRSTDISPLAY"中把句柄内表传给参数ithyperlink。  第四:在数据显示的内表中指定对应的句柄:   LOOPATgtlist  IFgtlistcarrid=‘XX’ Gtlistcarridhandle=‘’ IFgtlistconnid=‘’  Gtlistconnidhandle=‘’ ENDIF  ENDIF ENDLOOP功能七:把字段设置为下拉    有时候我们可以把一些字段设置为下拉比如一些类型一些字段的值是比较固定的一些值,当然,我们也可以通过搜索帮助来做,这些只是看各自的爱好和需要了  设置为下拉,和上一篇设置超级链接是类似的,也是使用了一个内表存放了句柄和对应的值,这个表类型为"LVCTDROP"不过传递给ALV的方式有点区别超级链接是通过方法"SETTABLEFORFIRSTDISPLAY"的参数来传递的,而下拉的内表传递需要使用方法"SETDROPDOWNTABLE"  如果我们希望把这个列都设置为下拉,那么我们可以在字段目录中把控制字段"DRDNHNDL"指向对应的下拉内表的句柄就可以了例如:      psfcatdrdnhndl='' 如果是某个单元格设置为下拉那我们就需要在数据显示的内表中增加一个句柄字段(如果是有多个不同的字段需要设置下拉,可以增加多个字段),同时得在字段目录里设置"DRDNFIELD"例如:     psfcatdrdnfield='PTYPDDHNDL' 数据显示内表定义为: DATABEGINOFgtlistOCCURSINCLUDESTRUCTURESFLIGHTDATArowcolor()TYPEcDATAcellcolorsTYPElvctscolDATAcarridhandleTYPEintDATAconnidhandleTYPEintDATAptypeddhndlTYPEintDATAENDOFgtlist 定义下拉的句柄内表: FORMpreparedrilldownvaluesDATAltddvalTYPElvctdropDATAlsddvalTYPElvcsdrop  lsddvalhandle=''  lsddvalvalue='JFK'  APPENDlsddvalTOltddval  lsddvalhandle=''  lsddvalvalue='JSF'   APPENDlsddvalTOltddval  lsddvalhandle=''  lsddvalvalue='KMDA'  APPENDlsddvalTOltddval  lsddvalhandle=''  lsddvalvalue='SSON'  APPENDlsddvalTOltddvalCALLMETHODgralvgrid>setdropdowntable  EXPORTING     itdropdown=ltddvalENDFORM"preparedrilldownvalues 准备好内表以后,使用方法setdropdowntable来传递给ALV功能八:基于事件的附加功能     作为使用面向对象的方法开发的一个组件,ALVGRID控制器有很多响应用户交互的事件这些事件经常被用来增强一些用户响应的功能为实现这样的功能我们必须在程序中创建一个类的实例来作为ALVGRID实例的事件处理者    下表列出了一些ALVGRID的事件,后面的HTML列用来说明是否在HTML形式SAPGUI上支持 用户定义文本输出: EventApplicationHTMLPrintendoflistDefineoutputtexttobeprintedattheendoftheentirelist√PrinttopoflistDefineoutputtexttobeprintedatbeginoftheentirelist√PrinttopofpageDefineoutputtexttobeprintedatbeginofeachpage√PrintendofpageDefineoutputtexttobeprintedattheendofeachpage√SubtotaltextDefineselfdefinedsubtotaltexts√ ALVGRID的鼠标动作事件 EventApplicationHTMLButtonclickQueryclickonapushbuttonintheALVGRIDcontrol√DoubleclickQueryadoubleclickonacelloftheALVGRID√HotspotclickQueryahotspotclickoncolumnsdefinedforthispurposeinadvance√OndragCollectinformationwhenelementsoftheALVGRIDControlaredragged×OndropProcessinformationwhenelementsoftheALVGRIDControlaredropped×ondropCompletePerformfinalactionsaftersuccessfuldragdrop×ondropGetFlavorDistinguishbetweenoptionsfordragdropbehavior× 自定义和标准功能实现 EventApplicationHTMLBeforeusercommandQueryselfdefinedandstandardfunctions√UsercommandQueryselfdefinedfunctioncodes√AfterusercommandQueryselfdefinedandstandardfunctionscodes√ 自定义功能的定义(自定义按钮,菜单等等) EventApplicationHTMLToolbarChange,deleteoraddguielementsonalvgrid√MenubuttonDefinemenusformenubuttonsinthetoolbar√ContextmenurequestChangecontextmenu×OnfDefineselfdefinedfhelp√ 下面是一段代码,举例说明如果定义我们的事件处理类 CLASlcleventhandlerDEFINITION PUBLICSECTIONMETHODS:*在ALV的工具条上增加新的按钮HandletoolbarFOREVENTtoolbarOFclguialvgrid   IMPORTINGeobjecteinteractive,*实现用户命令Handleusercommand      FOREVENTusercommandOFclguialvgrid      IMPORTINGeucomm*热点点击控制Handlehotspotclick      FOREVENThotspotclickOFclguialv

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/30

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利