SAP ALV 详细使用方法.docx

上传人:b****5 文档编号:4502839 上传时间:2022-12-01 格式:DOCX 页数:22 大小:393.68KB
下载 相关 举报
SAP ALV 详细使用方法.docx_第1页
第1页 / 共22页
SAP ALV 详细使用方法.docx_第2页
第2页 / 共22页
SAP ALV 详细使用方法.docx_第3页
第3页 / 共22页
SAP ALV 详细使用方法.docx_第4页
第4页 / 共22页
SAP ALV 详细使用方法.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

SAP ALV 详细使用方法.docx

《SAP ALV 详细使用方法.docx》由会员分享,可在线阅读,更多相关《SAP ALV 详细使用方法.docx(22页珍藏版)》请在冰豆网上搜索。

SAP ALV 详细使用方法.docx

SAPALV详细使用方法

ALV学习资料

SAP提供一组ALV(ABAPLISTVIEWER)功能模块,这些功能模块可以修饰报表输出。

这些设置的ALV功能可以提高报表的可读性。

首先呢,我先跟大家说一下ALV是什么东西?

ALV=SAPLISTVIEWER,SAP列表显示器。

就目前ALV技术主要分ALVGRID和ALVTREE。

先跟大家说一下目前本人用的比较多的ALVGRID技术,ALVGRID的效果见图()。

图()

第一步

在使用ALV时,需要定义一个SAP标准TYPE-POOLS,具体语法为:

TYPE-POOLS:

SLIS.

然后需要定义一个LAYOUT式样,和一个FIELDCAT字段格式,具体语法为:

DATA:

LIT_FCATTYPESLIS_T_FIELDCAT_ALV,

LT_LAYOTYPESLIS_LAYOUT_ALV,

GIT_EVENTSTYPESLIS_T_EVENT,

GIT_LISTHEADERTYPESLIS_T_LISTHEADER.,

LIT_EXTABTYPESLIS_T_EXTAB.

第二步(可选)

可以为需要为最初的目录显示选择参数。

在这里需要使用函数‘'REUSE_ALV_VARIANT_DEFAULT_GET’

Samplecode:

CALLFUNCTION'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save=variantsavecondition(A=all,U=user-specific)

CHANGING

cs_variant=internaltablecontainingtheprogramname(andthedefaultvariant---optional)

EXCEPTIONS

not_found=2.

使用者也可以使用现有的变量中选择,使用函数‘REUSE_ALV_VARIANT_F4’。

第三步

调用函数‘REUSE_ALV_EVENTS_GET’达到分屏显示的效果

Samplecode:

CALLFUNCTION'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE=0

IMPORTING

ET_EVENTS=GIT_EVENTS

EXCEPTIONS

LIST_TYPE_WRONG=1

OTHERS=2.

具体效果见图()

也可以为GIT_EVENTS添加许多参数也可以插入图片,需要使用函数‘REUSE_ALV_COMMENTARY_WRITE’

Samplecode:

CALLFUNCTION'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY=GIT_LISTHEADER✍文本抬头

I_LOGO='ENJOYSAP_LOGO'.✍图片

L_LISTHEADER-TYP='H'.

L_LISTHEADER-INFO='TESTALV'.✍文本抬头内容

APPENDL_LISTHEADERTOGIT_LISTHEADER.

具体效果见图()

图()

第四步

调用函数‘REUSE_ALV_FIELDCATALOG_MERGE’获得标准字段

Samplecode:

CALLFUNCTION'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME=SY-REPID

I_STRUCTURE_NAME='MSEG'✍表名

CHANGING

CT_FIELDCAT=LIT_FCAT[]✍字段格式

EXCEPTIONS

INCONSISTENT_INTERFACE=1

PROGRAM_ERROR=2

OTHERS=3

CLEARPS_FCAT.

PS_FCAT-FIELDNAME='MATNR'.✍表中字段名

PS_FCAT-REF_TABNAME='MSEG'.✍表名

PS_FCAT-KEY='X'✍水平移动时固定该列

PS_FCAT-COL_POS='1'.✍列的位数

APPENDPS_FCATTOLIT_FCAT.

具体效果见图()

图()

在这里我们也可以使用自定义字段

Samplecode:

PS_FCAT-FIELDNAME='TEXT'."✍字段名,一定要大写

PS_FCAT-INTTYPE='P'.✍字段类型

PS_FCAT-OUTPUTLEN=20.✍输出长度

PS_FCAT-COL_POS='7'.✍列的位数

PS_FCAT-SELTEXT_L='ADDBYJacky_L'.✍列的抬头文本

PS_FCAT-SELTEXT_M='ADDBYJacky_M'.✍列的抬头文本

PS_FCAT-SELTEXT_S='ADDBYJacky_S'.✍列的抬头文本

PS_FCAT-DDICTXT='M'.✍选择‘M’抬头

PS_FCAT-EDIT='X'.✍该列可编辑

APPENDPS_FCATTOLIT_FCAT.

具体效果见图()

图()

在这里我们也可以自己设定输出的格式

Samplecode:

CLEARPS_FCAT.

PS_FCAT-FIELDNAME='BWART'.✍字段名,一定要大写

PS_FCAT-REF_TABNAME='MSEG'✍表名.

PS_FCAT-OUTPUTLEN=20.✍字段输出长度

PS_FCAT-JUST='C'.✍字段输出居中

PS_FCAT-COL_POS='9'.✍列的位置

PS_FCAT-EMPHASIZE='X'."✍颜色,也可以是‘CXYZ’如'C501'.

PS_FCAT-HOTSPOT='X'.✍激活热点

APPENDPS_FCATTOLIT_FCAT.

具体效果见图()

图()

还可以把输出的字段变成图标:

首先呢,在数据取入内表之后,循环这个内表,把要改变的那个字段进行操作

Samplecode:

LOOPATLIT_OUTTAB.

LIT_OUTTAB-WERKS='@06@'.✍图标的名字

MODIFYLIT_OUTTAB.

ENDLOOP.

然后在定义字段格式的时候

PS_FCAT-FIELDNAME='WERKS'.

PS_FCAT-REF_TABNAME='MSEG'.

PS_FCAT-COL_POS='10'.

PS_FCAT-ICON='X'.✍激活图标

APPENDPS_FCATTOLIT_FCAT.

具体效果见图()

图()

第五步

当你把字段格式都设定完了之后,那么接下来你就需要设定LAYOUT输出的格式了。

在LAYOUT中有几个参数是比较重要和比较常用到的:

LAYOUT-COLWIDTH_OPTIMIZE:

当你把这个参数的值设为‘X’时,ALV中的字段就会自动缩近,也就是说当你把一个字段设为100位长时,而你输入的那个值只有10位长,这个参数就会把字段的长度自动缩进为10位长:

Samplecode:

LT_LAYO-COLWIDTH_OPTIMIZE='X'.✍自动缩进

效果见图()。

图()

LAYOUT-ZEBRA:

当你把这个参数的值设为‘X’时,ALV显示时会隔行颜色相同,

Samplecode:

LT_LAYO-COLWIDTH_OPTIMIZE='X'.✍自动缩进

效果见图()。

图()

LAYOUT-F2CODE:

当你把这个参数设为‘&ETA’时,你双击字段时会触发FUNCTIONCODE

Samplecode:

LT_LAYO-F2CODE='&ETA'✍双击触发

效果见图()。

图()

LAYOUT-EDIT:

当你把这个参数的值设定为‘X’之后,就表示输出的时候ALV所有的列都可以修改,

Samplecode:

LT_LAYO-EDIT='X'✍所有列都可以修改

效果见图()。

图()

第六步

当你把字段格式和LAYOUT格式都设置的差不多了,那么接下来就需要把你要显示的字段和内容取入你的内表,这个我就不多说了,每个人都每个人的需求。

第七步

那么在你做好以上那6个步骤之后,就可以把ALV显示出来了,这里需要调用函数‘REUSE_ALV_GRID_DISPLAY’

Samplecode:

CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM=L_REPID✍返回程序

IS_LAYOUT=LT_LAYO✍输出格式

IT_FIELDCAT=LIT_FCAT[]✍字段输出格式

IT_EVENTS=GIT_EVENTS[]✍分屏显示

I_GRID_TITLE='物料凭证'✍ALV抬头

I_CALLBACK_USER_COMMAND='FRM_UCOMM'

TABLES

T_OUTTAB=LIT_OUTTAB✍输出的内表

EXCEPTIONS

PROGRAM_ERROR=1

OTHERS=2.

例子程序:

*&---------------------------------------------------------------------*

*&ReportZ_TEST_ALV_ZJY

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORTZ_TEST_ALV_ZJY.

TABLES:

MSEG.

TYPE-POOLS:

SLIS.

DATA:

LIT_FCATTYPESLIS_T_FIELDCAT_ALV,

LT_LAYOTYPESLIS_LAYOUT_ALV.

DATABEGINOFLIT_OUTTABOCCURS0.

INCLUDESTRUCTUREMSEG.

DATA:

TEXTTYPEPDECIMALS2,

ROW_COLOR(4),

ENDOFLIT_OUTTAB.

DATA:

GIT_EVENTSTYPESLIS_T_EVENT,",RUNTIME

"ERROR

GIT_LISTHEADERTYPESLIS_T_LISTHEADER.",RUNTIME

"ERROR

DATALIT_EXTABTYPESLIS_T_EXTAB.

*&---------------------------------------------------------------------*

**StartofSelection

*&---------------------------------------------------------------------*

START-OF-SELECTION.

PERFORMFRM_GET_EVENTS.

PERFORMFRM_COMMENT_BUILD.

PERFORMFRM_FLDCAT.

PERFORMFRM_LAYOUT.

PERFORMFRM_ADD_DATA.

PERFORMFRM_EXCLUDING.

PERFORMFRM_OUTPUT.

*&---------------------------------------------------------------------*

*&FormFRM_FLDCAT

*&---------------------------------------------------------------------*

*text

*----------------------------------------------------------------------*

FORMFRM_FLDCAT.

DATALS_FCATTYPESLIS_FIELDCAT_ALV.

*

CLEARLIT_FCAT.

PERFORMFRM_GET_ALL_FIELDUSINGLS_FCAT.

*REF

PERFORMFRM_REF_FIELDUSINGLS_FCAT.

*

PERFORMFRM_REDEFINE_FIELDUSINGLS_FCAT.

*

*PERFORMFRM_SUM_FIELDUSINGLS_FCAT.

*HOTSPOT

PERFORMFRM_COLOR_HOTSPOTUSINGLS_FCAT.

*

PERFORMFRM_FORMAT_FIELDUSINGLS_FCAT.

ENDFORM."FRM_FLDCAT

*&---------------------------------------------------------------------*

*&FormFRM_ADD_DATA

*&---------------------------------------------------------------------*

*text

*----------------------------------------------------------------------*

FORMFRM_ADD_DATA.

SELECT*UPTO10ROWS

INTOCORRESPONDINGFIELDSOFTABLELIT_OUTTAB

FROMMSEG.

*ICON

LOOPATLIT_OUTTAB.

LIT_OUTTAB-WERKS='@06@'.

LIT_OUTTAB-TEXT=''.

LIT_OUTTAB-ROW_COLOR='5'.

MODIFYLIT_OUTTAB.

ENDLOOP.

ENDFORM."FRM_ADD_DATA

*&---------------------------------------------------------------------*

*&FormFRM_LAYOUT

*&---------------------------------------------------------------------*

*text

*----------------------------------------------------------------------*

FORMFRM_LAYOUT.

LT_LAYO-COLWIDTH_OPTIMIZE='X'.

LT_LAYO-ZEBRA='X'."

*LT_LAYO-EDIT='X'."ALV,,

*"

LT_LAYO-INFO_FIELDNAME='ROW_COLOR'."OUTTAB

LT_LAYO-F2CODE='&ETA'."FUNCTIONCODE

*LT_LAYO-TOTALS_ONLY='X'.

*LT_LAYO-DETAIL_POPUP='X'.

ENDFORM."FRM_LAYOUT

*&---------------------------------------------------------------------*

*&FormFRM_OUTPUT

*&---------------------------------------------------------------------*

*text

*----------------------------------------------------------------------*

FORMFRM_OUTPUT.

DATAL_REPIDLIKESY-REPIDVALUESY-REPID.

CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM=L_REPID"SAPSY-REPID

IS_LAYOUT=LT_LAYO

IT_FIELDCAT=LIT_FCAT[]

IT_EVENTS=GIT_EVENTS[]

I_SAVE='X'

I_GRID_TITLE=''

I_CALLBACK_USER_COMMAND='FRM_UCOMM'

IT_EXCLUDING=LIT_EXTAB""SHIFT+F3"

"SAPALVSTATUS

"SAPLSALV

*I_STRUCTURE_NAME='MSEG'"MSEG

TABLES

T_OUTTAB=LIT_OUTTAB

EXCEPTIONS

PROGRAM_ERROR=1

OTHERS=2.

IFSY-SUBRC<>0.

MESSAGEIDSY-MSGIDTYPESY-MSGTYNUMBERSY-MSGNO

WITHSY-MSGV1SY-MSGV2SY-MSGV3SY-MSGV4.

ENDIF.

ENDFORM."FRM_OUTPUT

*&---------------------------------------------------------------------*

*&FormFRM_GET_ALL_FIELD

*&---------------------------------------------------------------------*

*text

*----------------------------------------------------------------------*

*-->p1text

*<--p2text

*----------------------------------------------------------------------*

FORMFRM_GET_ALL_FIELDUSINGPS_FCATTYPESLIS_FIELDCAT_ALV.

CALLFUNCTION'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME=SY-REPID

*I_INTERNAL_TABNAME=

I_STRUCTURE_NAME='MSEG'

*I_CLIENT_NEVER_DISPLAY='X'

*I_INCLNAME=

*I_BYPASSING_BUFFER=

*I_BUFFER_ACTIVE=

CHANGING

CT_FIELDCAT=LIT_FCAT[]

EXCEPTIONS

INCONSISTENT_INTERFACE=1

PROGRAM_ERROR=2

OTHERS=3

.

IFSY-SUBRC<>0.

MESSAGEIDSY-MSGIDTYPESY-MSGTYNUMBERSY-MSGNO

WITHSY-MSGV1SY-MSGV2SY-MSGV3SY-MSGV4.

ENDIF.

LOOPATLIT_FCATINTOPS_FCAT.

IFSY-TABIX>4.

DELETELIT_FCAT.

ENDIF.

ENDLOOP.

ENDFORM."FRM_GET_ALL_FIELD

*&---------------------------------------------------------------------*

*&FormFRM_REF_FIELD

*&---------------------------------------------------------------------*

*text

*----------------------------------------------------------------------*

FORMFRM_REF_FIELDUSINGPS_FCATTYPESLIS_FIELDCAT_ALV.

CLEARPS_FCAT.

PS_FCAT-FIELDNAME='MATNR'.

PS_FCAT-REF_TABNAME='MSEG'.

PS_FCAT-COL_POS='1'.

PS_FCAT-KEY='X'."

APPENDPS_FCATTOLIT_FCAT.

ENDFORM."FRM_REF_FIELD

*&---------------------------------------------------------------------*

*&FormFRM_REDEFINE_FIELD

*&---------------------------------------------------------------------*

*text

*----------------------------------------------------------------------*

FORMFRM_REDEFINE_FIELDUSINGPS_FCATTYPESLIS_FIELDCAT_ALV.

*

CLEARPS_FCAT.

PS_FCAT-FIELDNAME='TEXT'."

PS_FCAT-INTTYPE='P'.

"PS_FCAT-DATATYPE='P'.

PS_FCAT-OUTPUTLEN=20.

PS_FCAT-COL_POS='7'.

*LIT_FCAT-CHECKBOX='X'.

PS_FCAT-SELTEXT_L='ADDBYJacky_L'.

PS_FCAT-SELTEXT_M='ADDBYJacky_M'.

PS_FCAT-SELTEXT_S='ADDBYJacky_S'.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1