




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
小總結(jié)一下函數(shù)方法調(diào)用alv的過程。其實用函數(shù)調(diào)用alv非常簡單,只需要一個REUSE_ALV_GRID_DISPLAY函數(shù)即可(或者 list的方式),但是如果要做的復(fù)雜的話也可以非常復(fù)雜,如我之前的加上異常,單選框,或者加上雙擊命令,加上各種事件。過于復(fù)雜的不講了,以一個平常 項目中夠用的例子講解,還有其他需求直接可以再pack:slis中找到,或者se38中直接輸入*demo*就可以看到一堆例子。下面是使用alv的一 些必備信息。1. 類型池(Type-pools)如果使用函數(shù)調(diào)用ALV必須要用TYPE-POOLS: SLIS.這個類行池里包含了alv所有要用到的類型,當(dāng)有哪些字段名稱忘記的時候可以到這個pool里查找相應(yīng)的字段。2. 字段信息(SLIS_T_FIELDCAT_ALV)如果我們自己寫一個ALV的函數(shù)讓別人調(diào)用,有哪些參數(shù)必不可缺了?字段信息肯定必不可少,字段信息決定了ALV到底輸出哪些信息。通常有兩種方式一是手動,二是自動。2.1 手動生成lt_fieldcat TYPE slis_t_fieldcat_alv. “定義字段表WA_FIELDCAT-TABNAME = IT_EKKO. WA_FIELDCAT-FIELDNAME = EBELN. WA_FIELDCAT-SELTEXT_M = PO NO. APPEND WA_FIELDCAT TO I_FIELDCAT. CLEAR WA_FIELDCAT.這樣就完成了一個字段的定義,不過通常都會用一個宏來完成相應(yīng)的功能。如下:DEFINE init_key. clear &1 . &1-fieldname = &2 . &1-coltext = &4. &1-outputlen = &5. &1-no_zero = X . &1-key = X . 凍結(jié)窗口 append &1 to &3 . end-OF-DEFINITION.這樣定義多個字段就會比較方便。2.2 自動生成自動生成字段信息必須要調(diào)用這個函數(shù):CALL FUNCTION REUSE_ALV_FIELDCATALOG_MERGE * EXPORTING * I_PROGRAM_NAME = * I_INTERNAL_TABNAME = * I_STRUCTURE_NAME = * I_CLIENT_NEVER_DISPLAY = X * I_INCLNAME = * I_BYPASSING_BUFFER = * I_BUFFER_ACTIVE = CHANGING ct_fieldcat = * EXCEPTIONS * INCONSISTENT_INTERFACE = 1 * PROGRAM_ERROR = 2 * OTHERS = 3通常只需要兩個參數(shù),一是changing參數(shù),即輸出的字段信息。二是紅色標(biāo)記的部分,如果是一個內(nèi)表的話就用第一個,有自建表或者系統(tǒng)表的話就用第二個。二者只能填一個,注意使用內(nèi)表作為參數(shù)的話,類型定義只能用like而不能用type。如果還需要增加或刪除一些字段的話只需要修改這個內(nèi)表就可以了。下面是實例:*/增加選擇項 MOVE SELECTED TO ls_fieldcat-fieldname. MOVE X TO ls_fieldcat-edit. MOVE X TO ls_fieldcat-checkbox. INSERT ls_fieldcat INTO ct_fieldcat INDEX 1. */刪除不必要顯示的項 DELETE ct_fieldcat WHERE fieldname EQ INFO_TYPE_CODE OR fieldname EQ INFO_NUMBER OR fieldname EQ STATUS OR fieldname EQ GOODS_LIST_FLAG OR fieldname EQ COMPANY OR fieldname EQ COMPANY_NAME OR fieldname EQ SALES_ORG OR fieldname EQ SALES_ORG_DESC OR fieldname EQ MESSAGE. */隱藏一些字段 LOOP AT ct_fieldcat INTO ls_fieldcat WHERE fieldname EQ NOTICE_NUMBER OR fieldname EQ REVERSE_CODE OR fieldname EQ REVERSE_NUMBER. MOVE X TO ls_fieldcat-no_out. MODIFY ct_fieldcat FROM ls_fieldcat INDEX sy-tabix. ENDLOOP.3. 布局設(shè)置(SLIS_LAYOUT_ALV)布局設(shè)置參數(shù)之多絕對不是一般人能記住,只需要在使用的時候查查,平常使用的參數(shù)也比較少。估計colwidth_optimize這個用的多一些。下面一個簡單的事例完成了設(shè)置布局。DATA: ls_layout TYPE slis_layout_alv,PERFORM frm_build_layout CHANGING ls_layout.FORM frm_build_layout CHANGING cs_layout TYPE slis_layout_alv. CLEAR cs_layout.MOVE X TO cs_layout-detail_popup. MOVE X TO cs_layout-colwidth_optimize. ENDFORM. FRM_BUILD_LAYOUT這樣就完成了布局設(shè)置。4. 事件處理(SLIS_T_EVENT)ALV事件處理有點蹊蹺,SAP有一些默認(rèn)的函數(shù)名作為事件函數(shù),我們也可以修改這些函數(shù)名。不過為什么不把這些事件函數(shù)直接寫到調(diào)用函數(shù)作為參數(shù)了,SAP還有一個類型專門保存這個事件名稱,還有一些常量,暫時還不明白。在SLIS中這些常量都是事件的名稱,如下:* Events slis_ev_item_data_expand type slis_formname value ITEM_DATA_EXPAND, slis_ev_reprep_sel_modify type slis_formname value REPREP_SEL_MODIFY, slis_ev_caller_exit_at_start type slis_formname value CALLER_EXIT, slis_ev_user_command type slis_formname value USER_COMMAND, slis_ev_top_of_page type slis_formname value TOP_OF_PAGE, slis_ev_data_changed type slis_formname value DATA_CHANGED, slis_ev_top_of_coverpage type slis_formname value TOP_OF_COVERPAGE, slis_ev_end_of_coverpage type slis_formname value END_OF_COVERPAGE, slis_ev_foreign_top_of_page type slis_formname value FOREIGN_TOP_OF_PAGE, slis_ev_foreign_end_of_page type slis_formname value FOREIGN_END_OF_PAGE, slis_ev_pf_status_set type slis_formname value PF_STATUS_SET, slis_ev_list_modify type slis_formname value LIST_MODIFY, slis_ev_top_of_list type slis_formname value TOP_OF_LIST, slis_ev_end_of_page type slis_formname value END_OF_PAGE, slis_ev_end_of_list type slis_formname value END_OF_LIST, slis_ev_after_line_output type slis_formname value AFTER_LINE_OUTPUT, slis_ev_before_line_output type slis_formname value BEFORE_LINE_OUTPUT, slis_ev_subtotal_text type slis_formname value SUBTOTAL_TEXT, slis_ev_grouplevel_change type slis_formname value GROUPLEVEL_CHANGE, slis_ev_context_menu type slis_formname value CONTEXT_MENU.要讓SAP調(diào)用自己寫的事件分為兩部,一是注冊這些事件,二是調(diào)用ALV函數(shù)的時候?qū)⒈4媸录膬?nèi)表作為參數(shù)寫入調(diào)用ALV函數(shù)的參數(shù)。4.1.注冊事件下面的代碼注冊了一個TOP_OF_PAGE,和一個GT_EVENTS TYPE SLIS_T_EVENT,PERFORM EVENTTAB_BUILD USING GT_EVENTS.FORM EVENTTAB_BUILD USING RT_EVENTS TYPE SLIS_T_EVENT. *Registration of events to happen during list display DATA: LS_EVENT TYPE SLIS_ALV_EVENT. * CALL FUNCTION REUSE_ALV_EVENTS_GET EXPORTING I_LIST_TYPE = 0 IMPORTING ET_EVENTS = RT_EVENTS. READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE INTO LS_EVENT. IF SY-SUBRC = 0. MOVE TOP_OF_PAGE TO LS_EVENT-FORM. APPEND LS_EVENT TO RT_EVENTS. ENDIF.READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = USER_COMMAND. IF SY-SUBRC EQ 0. WA_EVENT-FORM = USER_COMMAND. MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-NAME. ENDFORM.接著我們只需要寫這兩個函數(shù)就好了,名字命名和上面注冊代碼部分一樣即可。4.2.處理事件處理事件根據(jù)上面的例子有兩個事件,這兩個事件需要兩個相應(yīng)的form,名字就是TOP_OF_PAGE和USER_COMMAND。FORM TOP_OF_PAGE. CALL FUNCTION REUSE_ALV_COMMENTARY_WRITE EXPORTING IT_LIST_COMMENTARY = IT_LISTHEADER * i_logo = * I_END_OF_LIST_GRID = . ENDFORM. TOP_OF_PAGEFORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER. DATA HLINE TYPE SLIS_LISTHEADER. HLINE-INFO = 黃立 header. HLINE-TYP = H. APPEND HLINE TO I_LISTHEADER. ENDFORM. build_listheader上面的函數(shù)完成了在alv中顯示頁頭,效果如下:抬頭字體可以設(shè)置類型,有H,S,A其效果各有不同。方便設(shè)計出內(nèi)容豐富的抬頭。用戶命令事件,用的非常多,尤其以用戶雙擊事件居多。下面的代碼是雙擊事件的例子。FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD. CASE R_UCOMM. WHEN &IC1. READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX. PERFORM BUILD_FIELDCATLOG_EKPO. PERFORM EVENT_CALL_EKPO. PERFORM POPULATE_EVENT_EKPO. PERFORM DATA_RETRIEVAL_EKPO. PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER. PERFORM DISPLAY_ALV_EKPO. ENDCASE. ENDFORM. user_command其中&IC1代表用戶雙擊,很奇怪的一個字符串。雙擊事件我們可以再做一個報表的明細(xì)數(shù)據(jù)用ALV顯示。上面的例子就是這樣的,當(dāng)然也可以做成用戶需要的任何形式。5. 調(diào)用函數(shù)一切完成之后就是最后一步調(diào)用function,把剛才的參數(shù)全部寫進(jìn)一個函數(shù)的參數(shù)中。代碼如下:FORM DISPLAY_ALV_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 版事業(yè)單位員工聘用合同模板
- 2025年度人力資源事務(wù)代理服務(wù)合同
- 廈門海洋職業(yè)技術(shù)學(xué)院《化學(xué)教學(xué)測量與評價》2023-2024學(xué)年第二學(xué)期期末試卷
- 云南省保山市重點達(dá)標(biāo)名校2025屆初三寒假延長作業(yè)數(shù)學(xué)試題含解析
- 閩西職業(yè)技術(shù)學(xué)院《建筑力學(xué)Ⅱ》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)蒙古建筑職業(yè)技術(shù)學(xué)院《風(fēng)景園林建筑設(shè)計1》2023-2024學(xué)年第二學(xué)期期末試卷
- 中小企業(yè)勞動合同終止與解除條款2025
- 天津體育學(xué)院《生物技術(shù)設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 溫州職業(yè)技術(shù)學(xué)院《園藝生物技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 遼寧石化職業(yè)技術(shù)學(xué)院《隨機(jī)過程》2023-2024學(xué)年第一學(xué)期期末試卷
- 醫(yī)院新技術(shù)項目鑒定審批表
- 2024年司法考試刑法真題及答案
- 2024年天津市高考化學(xué)試卷(含答案逐題解析)
- 《工程倫理》練習(xí)題集
- 港航實務(wù) 皮丹丹 教材精講班課件 52-第2章-2.5.3-鋪面面層施工-2.5.4-鋪面連接施工-2.5.5-堆場構(gòu)筑物施工
- 危險品倉儲危險品貯運車輛考核試卷
- 酒店工作安全培訓(xùn)(共60張課件)
- 【沙利文公司】2024年中國銀發(fā)經(jīng)濟(jì)發(fā)展報告
- 航天科工集團(tuán)在線測評題
- 人教版(2024版)七上數(shù)學(xué)第二單元:有理數(shù)的運算大單元教學(xué)設(shè)計
- 5G-Advanced 網(wǎng)絡(luò)技術(shù)演進(jìn)白皮書
評論
0/150
提交評論