SAP-ALV-詳細(xì)使用方法_第1頁
SAP-ALV-詳細(xì)使用方法_第2頁
SAP-ALV-詳細(xì)使用方法_第3頁
SAP-ALV-詳細(xì)使用方法_第4頁
SAP-ALV-詳細(xì)使用方法_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

ALV學(xué)習(xí)資料SAP提供一組ALV〔ABAPLISTVIEWER〕功能模塊,這些功能模塊可以修飾報表輸出。這些設(shè)置的ALV功能可以提高報表的可讀性。首先呢,我先跟大家說一下ALV是什么東西?ALV=SAPLISTVIEWER,SAP列表顯示器。就目前ALV技術(shù)主要分ALVGRID和ALVTREE。先跟大家說一下目前本人用的比擬多的ALVGRID技術(shù),ALVGRID的效果見圖〔1.1〕。圖〔1.1〕第一步在使用ALV時,需要定義一個SAP標(biāo)準(zhǔn)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_E*TABTYPESLIS_T_E*TAB.第二步〔可選〕可以為需要為最初的目錄顯示選擇參數(shù)。在這里需要使用函數(shù)‘'REUSE_ALV_VARIANT_DEFAULT_GET’Samplecode:CALLFUNCTION'REUSE_ALV_VARIANT_DEFAULT_GET'E*PORTINGi_save=variantsavecondition(A=all,U=user-specific)CHANGINGcs_variant=internaltablecontainingtheprogramname(andthedefaultvariantoptional)E*CEPTIONSnot_found=2.使用者也可以使用現(xiàn)有的變量中選擇,使用函數(shù)‘REUSE_ALV_VARIANT_F4’。第三步調(diào)用函數(shù)‘REUSE_ALV_EVENTS_GET’到達(dá)分屏顯示的效果Samplecode:CALLFUNCTION'REUSE_ALV_EVENTS_GET'E*PORTINGI_LIST_TYPE=0IMPORTINGET_EVENTS=GIT_EVENTSE*CEPTIONSLIST_TYPE_WRONG=1OTHERS=2.具體效果見圖〔3.1〕圖3.1也可以為GIT_EVENTS添加許多參數(shù)也可以插入圖片,需要使用函數(shù)‘REUSE_ALV_MENTARY_WRITE’Samplecode:CALLFUNCTION'REUSE_ALV_MENTARY_WRITE'E*PORTINGIT_LIST_MENTARY=GIT_LISTHEADER文本抬頭I_LOGO='ENJOYSAP_LOGO'.圖片L_LISTHEADER-TYP='H'.L_LISTHEADER-INFO='TESTALV'.文本抬頭容APPENDL_LISTHEADERTOGIT_LISTHEADER.具體效果見圖〔3.2〕圖〔3.2〕第四步調(diào)用函數(shù)‘REUSE_ALV_FIELDCATALOG_MERGE’獲得標(biāo)準(zhǔn)字段Samplecode:CALLFUNCTION'REUSE_ALV_FIELDCATALOG_MERGE'E*PORTINGI_PROGRAM_NAME=SY-REPIDI_STRUCTURE_NAME='MSEG'表名CHANGINGCT_FIELDCAT=LIT_FCAT[]字段格式E*CEPTIONSINCONSISTENT_INTERFACE=1PROGRAM_ERROR=2OTHERS=3CLEARPS_FCAT.PS_FCAT-FIELDNAME='MATNR'.表中字段名PS_FCAT-REF_TABNAME='MSEG'.表名PS_FCAT-KEY='*'水平移動時固定該列PS_FCAT-COL_POS='1'.列的位數(shù)APPENDPS_FCATTOLIT_FCAT.具體效果見圖〔4.1〕圖〔4.1〕在這里我們也可以使用自定義字段Samplecode:PS_FCAT-FIELDNAME='TE*T'."字段名,一定要大寫PS_FCAT-INTTYPE='P'.字段類型PS_FCAT-OUTPUTLEN=20.輸出長度PS_FCAT-COL_POS='7'.列的位數(shù)PS_FCAT-SELTE*T_L='ADDBYJacky_L'.列的抬頭文本PS_FCAT-SELTE*T_M='ADDBYJacky_M'.列的抬頭文本PS_FCAT-SELTE*T_S='ADDBYJacky_S'.列的抬頭文本PS_FCAT-DDICT*T='M'.選擇‘M’抬頭PS_FCAT-EDIT='*'.該列可編輯APPENDPS_FCATTOLIT_FCAT.具體效果見圖〔4.2〕圖〔4.2〕在這里我們也可以自己設(shè)定輸出的格式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='*'."顏色,也可以是‘C*YZ’如'C501'.PS_FCAT-HOTSPOT='*'.激活熱點APPENDPS_FCATTOLIT_FCAT.具體效果見圖〔4.3〕圖〔4.3〕還可以把輸出的字段變成圖標(biāo):首先呢,在數(shù)據(jù)取入表之后,循環(huán)這個表,把要改變的那個字段進(jìn)展操作Samplecode:LOOPATLIT_OUTTAB.LIT_OUTTAB-WERKS='06'.圖標(biāo)的名字MODIFYLIT_OUTTAB.ENDLOOP.然后在定義字段格式的時候PS_FCAT-FIELDNAME='WERKS'.PS_FCAT-REF_TABNAME='MSEG'.PS_FCAT-COL_POS='10'.PS_FCAT-ICON='*'.激活圖標(biāo)APPENDPS_FCATTOLIT_FCAT.具體效果見圖〔4.4〕圖〔4.4〕第五步當(dāng)你把字段格式都設(shè)定完了之后,則接下來你就需要設(shè)定LAYOUT輸出的格式了。在LAYOUT中有幾個參數(shù)是比擬重要和比擬常用到的:LAYOUT-COLWIDTH_OPTIMIZE:當(dāng)你把這個參數(shù)的值設(shè)為‘*’時,ALV中的字段就會自動縮近,也就是說當(dāng)你把一個字段設(shè)為100位長時,而你輸入的那個值只有10位長,這個參數(shù)就會把字段的長度自動縮進(jìn)為10位長:Samplecode:LT_LAYO-COLWIDTH_OPTIMIZE='*'.自動縮進(jìn)效果見圖〔5.1〕。圖〔5.1〕LAYOUT-ZEBRA:當(dāng)你把這個參數(shù)的值設(shè)為‘*’時,ALV顯示時會隔行顏色一樣,Samplecode:LT_LAYO-COLWIDTH_OPTIMIZE='*'.自動縮進(jìn)效果見圖〔5.2〕。圖〔5.2〕LAYOUT-F2CODE:當(dāng)你把這個參數(shù)設(shè)為‘&ETA’時,你雙擊字段時會觸發(fā)FUNCTIONCODESamplecode:LT_LAYO-F2CODE='&ETA'雙擊觸發(fā)效果見圖〔5.3〕。圖〔5.3〕LAYOUT-EDIT:當(dāng)你把這個參數(shù)的值設(shè)定為‘*’之后,就表示輸出的時候ALV所有的列都可以修改,Samplecode:LT_LAYO-EDIT='*'所有列都可以修改效果見圖〔5.4〕。圖〔5.4〕第六步當(dāng)你把字段格式和LAYOUT格式都設(shè)置的差不多了,則接下來就需要把你要顯示的字段和容取入你的表,這個我就不多說了,每個人都每個人的需求。第七步則在你做好以上那6個步驟之后,就可以把ALV顯示出來了,這里需要調(diào)用函數(shù)‘REUSE_ALV_GRID_DISPLAY’Samplecode:CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'E*PORTINGI_CALLBACK_PROGRAM=L_REPID返回程序IS_LAYOUT=LT_LAYO輸出格式IT_FIELDCAT=LIT_FCAT[]字段輸出格式IT_EVENTS=GIT_EVENTS[]分屏顯示I_GRID_TITLE='物料憑證'ALV抬頭I_CALLBACK_USER_MAND='FRM_UM'TABLEST_OUTTAB=LIT_OUTTAB輸出的表E*CEPTIONSPROGRAM_ERROR=1OTHERS=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:TE*TTYPEPDECIMALS2,ROW_COLOR(4),ENDOFLIT_OUTTAB.DATA:GIT_EVENTSTYPESLIS_T_EVENT,"