日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【ABAP】OO ALV 概述

發布時間:2025/3/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ABAP】OO ALV 概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?OO ALV,是指通過面向對象(Object-Oriented)的方式實現的ALV輸出

?基本使用原理:

通過界面調用,在界面的Customer Control控件中,輸出ALV

?CLASS ALV優勢

使用面向對象的編程方式

使用容器,可以在一個界面中指定位置進行ALV的輸出

?

?執行步驟

ALV實現相關變量定義

創建本地類的聲明及實現(EVENT HANDLER

創建界面,并創建Customer Control容器

實例化container,關聯Customer Control容器

ALV植入container

ALV格式化(layoutfieldcat的賦值等)

注冊相關事件

執行ALV顯示(CALL METHOD GS_XXX->SET_TABLE_FOR_FIRST_DISPLAY

?

?主要使用的類

?Data for ALV

DATA: gs_alv???????? TYPE REF TO cl_gui_alv_grid,??? “用于表單輸出

?????????? gs_con???????? TYPE REF TO cl_gui_custom_container,? “用于定義容器

?????????? gs_dyndoc_id?? TYPE REF TO cl_dd_document,?? “用于表頭書寫

?????????? gs_splitter??? TYPE REF TO cl_gui_splitter_container.? “用于分割容器

?

?主要使用的方法

第一次輸出表單:SET_TABLE_FOR_FIRST_DISPLAY?

刷新表單內容:REFRESH_TABLE_DISPLAY

?I_SOFT_REFRESH’X’ :只刷新單元格(如果有合計不自動更新)

刷新fieldcat SET_FRONTED_FIELDCATALOG

?如果fieldcat格式有修改,需要刷新格式設置,則調用這個方法

?

?執行步驟

創建REPORT程序,在END-OF-SELECTION中執行輸出,創建界面0100,調用界面

TOP INCLUDE中增加基本定義

在界面中增加customer control控件,例名稱為GS_CON

在界面的PBO部分增加module,用于ALV輸出

設置fieldcatlayout等屬性,通過調用方法執行ALV的初次輸出或刷新

?在使用ALV類之前,需要對其進行創建,并指定ALV輸出時的容器

?步驟

定義,參照類定義ALV及容器

?GS_ALV???????? TYPE REF TO CL_GUI_ALV_GRID,?? “ALV輸出

?GS_CON???????? TYPE REF TO CL_GUI_CUSTOM_CONTAINER,? “ALV容器

在界面中增加Customer Control控件,例名稱為:GC_CON

實例化容器對象,給CONSTRUCTOR構造方法傳值

?CONTAINER_NAME,界面中用戶定義容器名稱

實例化ALV對象,給CONSTRUCTOR構造方法傳值

?I_PARENT,實例化的容器對象

?定義

表:LVC_T_FCAT

結構:LVC_S_FCAT

?執行ALV輸出前,對fieldcat表單進行賦值

?調用ALV輸出方法時,傳值給IT_FIELDCATALOG

字段名

描述

COL_POS

輸出列 列的位置,第幾列,例如1,2,…

FIELDNAME

字段名稱

CURRENCY/CFIELDNAME

貨幣單位/參考的當前單位的字段名稱

QUANTITY/QFIELDNAME

計量單位/參考計量單位的字段名稱

DO_SUM

總計列值 ‘X',合計

FIX_COLUMN

固定列

EMPHASIZE

列的顏色

NO_OUT

列沒有輸出 ‘X' ,隱藏此列

OUTPUTLEN

列的字符寬度

DATATYPE

ABAP 字典中的數據類型

INTTYPE

ABAP 數據類型(C,D,N,...)

HOTSPOT

單擊敏感 ‘X',下面出現下劃線,響應單擊

DECIMALS

設置小數的位數

SCRTEXT_L/M/S

字段標簽長//

?定義:

結構:LVC_S_LAYO

?執行ALV輸出前,layout結構進行賦值

?調用ALV輸出方法時,傳值給IS_LAYOUT

字段名

描述

CWIDTH_OPT

最優化寬度 SPACE, 'X'

GRID_TITLE

標題,在網格和工具條之間 最長70個字符

NO_TOOLBAR

隱藏工具條 SPACE, 'X'

NO_VGRIDLN

隱藏垂直線 SPACE, 'X'

SEL_MODE

選擇模式 SPACE, 'A', 'B', 'C', 'D'

CTAB_FNAME

帶有復雜單元格顏色編碼的字段名稱 最長30個字符

INFO_FNAME

帶有簡單行彩色代碼的字段名稱 最長30個字符

ZEBRA

可選行顏色,如果設置了,出現了間隔色帶 SPACE, 'X'

STYLEFNAME

字段格式

?

?顏色值的設置:C+X(顏色:1~7)X(是否加重:1/0)X(是否反色1/0)

?以列為單位

FIELDCAT中給EMPHASIZE字段賦值

?

?以行為單位

在內表中增加一個字段,類型為CHAR,至少長度為4,例COLOR

給向輸出內表獲取數據時,給COLOR字段賦值

設置LAYOUT,給INFO_FNAME字段賦值顏色字段名稱,例COLOR

?

?

?以單元格為單位

在內表中增加一個字段,類型為LVC_T_SCOL ,例COLOR

在向輸出內表取數據時,通過結構給COLOR字段內表賦值

設置LAYOUT,給CTAB_FNAME字段賦值顏色字段名稱,例COLOR

?

?以表單為單位

設置LAYOUT-EDIT,為X,可修改

?以列為單位

設置FIELDCAT-EDIT,為X,列可修改

?以單元格為單位

在內表中增加一個字段,類型為LVC_T_STYL ,例CELLSTL

在需要設置修改屬性的位置,通過結構給CELLSTL字段內表賦值

?FIELDNAME,需要設置屬性的字段名

?STYLE,可修改屬性

不可修改:CL_GUI_ALV_GRID=>MC_STYLE_DISABLED

可修改:CL_GUI_ALV_GRID=>MC_STYLE_ENALBED

設置LAYOUT,給STYLEFNAME字段賦值修改屬性的字段名,例CELLSTL

特別,如果將某一列中部分字段設置為可修改狀態,一般通過以下方式完成

?FIELDCAT中,設置該列屬性為可修改

?在表單賦值時,將不應為可修改狀態的字段,設置為不可修改

?***不是將需要修改的單元格設置為可修改,防止可修改屬性設置與靜態屬性設置沖突

?排序

定義:內表:LVC_T_SORT,結構:LVC_S_SORT

CHANGING參數IT_SORT進行傳值

?篩選

定義:內表: LVC_T_FILT ,結構: LVC_S_FILT

CHANGING參數IT_FILTER進行傳值

?布局設置

EXPORTING參數I_SAVE傳值

EXPORTING參數IS_VARIANT傳值

可以在界面中增加布局保存相關按鈕

?選擇布局

?修改布局

?保存布局

?維護布局

?ALV,若想保存布局,要添加I_SAVE參數

I_SAVE定義為C數據類型,值如下:

? = 不能保存布局

?X’ = 布局只能被保存為標準布局,不能夠指定用戶

?U’ = 只能指定用戶布局

?‘A’ = 既能選擇標準布局,也可選擇指定用戶布局

?為了進一步管理布局,則需要加入IS_VARIANT參數

數據結構參考DISVARIANT

設置字段

?REPORT = SY-REPID? “程序名稱

?VARIANT為布局保存格式

三個有用函數供調用保存的格式布局,分別

?REUSE_ALV_VARIANT_DEFAULT_GET?? 讀取默認的布局

?REUSE_ALV_VARIANT_EXISTENCE???????? 檢測指定布局是否存在

?REUSE_ALV_VARIANT_F4???????????????????????? 顯示布局格式選擇對話

?優先級

當排序、篩選等也設置時以布局管理參數設置優先

當用戶設置布局參數默認值時,以布局參數傳值優先

?基本原理:

OO ALV輸出過程中,默認輸出按鈕欄,包含標準按鈕

如果標準按鈕中有部分不需要的按鈕,通過隱藏實現

?定義及傳值參數

定義內表G_TOOLBAR,參照UI_FUNCTIONS,作為隱藏按鈕內表

EXPORTING參數IT_TOOLBAR_EXCLUDING傳隱藏按鈕內表

?G_TOOLBAR傳值,通過傳CL_GUI_ALV_GRID=>MC_FC_*等靜態屬性實現

增加的值:隱藏的按鈕

注釋的/未增加的值:顯示的按鈕

?REFRESH:?G_TOOLBAR.

??PERFORM?APPEND_ALV_EXCLUDE_FUNCTIONS?TABLES?G_TOOLBAR
????USING:???CL_GUI_ALV_GRID=>MC_FC_REPREP????????????,

??????????????CL_GUI_ALV_GRID=>MC_FC_CHECK?????????,

??????????????CL_GUI_ALV_GRID=>MC_MB_EXPORT????????????,

??????????????CL_GUI_ALV_GRID=>MC_FC_DETAIL????????????,

??????????????CL_GUI_ALV_GRID=>MC_FC_REFRESH???????????,

??????????????CL_GUI_ALV_GRID=>MC_FC_GRAPH?????????????,

??????????????CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO??????????,

??????????????CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW????,

??????????????CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW????,

??????????????CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW??????,

??????????????CL_GUI_ALV_GRID=>MC_FC_LOC_CUT???????????,

??????????????CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW????,

??????????????CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW?,

??????????????CL_GUI_ALV_GRID=>MC_FC_INFO??????????????,

??????????????CL_GUI_ALV_GRID=>MC_FC_LOC_COPY??????????,

??????????????CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE?????????,

??????????????CL_GUI_ALV_GRID=>MC_FC_PRINT?????????????,

??????????????CL_GUI_ALV_GRID=>MC_MB_SUM???????????????,

??????????????CL_GUI_ALV_GRID=>MC_MB_VIEW??????????????,

??????????????CL_GUI_ALV_GRID=>MC_FC_CURRENT_VARIANT???,

??????????????CL_GUI_ALV_GRID=>MC_FC_SAVE_VARIANT??????,

??????????????CL_GUI_ALV_GRID=>MC_FC_LOAD_VARIANT??????,

??????????????CL_GUI_ALV_GRID=>MC_FC_MAINTAIN_VARIANT??.

?

?FORM?APPEND_ALV_EXCLUDE_FUNCTIONS?TABLES?PT_EXCLUDE?TYPE?UI_FUNCTIONS

???????????????????????????????????? USING??P_VALUE????TYPE?UI_FUNC.

???APPEND?P_VALUE?TO?PT_EXCLUDE.

?ENDFORM.????????????????????"?APPEND_ALV_EXCLUDE_FUNCTIONS

?基本原理

ALV類中,提供定義好的事件

創建本地類(event handler),對事件創建方法執行相關處理

?步驟

相關定義

創建本地類(event handler

根據event,增加方法定義及實現

注冊事件

?聲明

可以在TOP中直接使用DEFINITION DEFERRED語句,先推遲聲明一個類

?后續會對這個類進行實際的定義,這里先使用這個類

參照類聲明對象

?類的創建

CLS INCLUDE

?實例化及注冊事件

?操作ALV事件:TOOLBAR

?主要操作E_OBJECT對象

通過結構向MT_TOOLBAR賦值

?參數講解:

?

字段

功能

FUNCTION

功能代碼

ICON

圖標

QUICKINFO

鼠標懸停時簡要信息說明

DISABLED

按鈕狀態為不可用

TEXT

顯示文本

CHECKED

設置為選中時的狀態

BUTN_TYPE

按鈕類型(長度1位)

0????? 正常按鈕,默認值

1菜單和缺省按鈕

2菜單

3分隔符

4單選按鈕

5復選框

6菜單項

?注冊事件

?操作ALV事件USER_COMMAND

一般針對在TOOLBAR事件中增加的按鈕進行功能處理

如果是與表單內容相關的按鈕,例如單行打印、部分下載、選中行可修改等,在此部分設置

如果是針對整個界面的按鈕,例如后退、退出等,則在界面0100中,使用SET PF-STATUS設置,功能寫在界面PAI部分

?主要操作對象

判斷UCOMM(按鈕功能)

注意:

?需要時捕獲選中行信息

?需要時調用刷新ALV顯示方法

?注冊事件

?操作ALV事件:TOP_OF_PAGE

?基本原理

在本地類中增加方法,處理事件

表頭內容寫入到表頭內容的類中

將表頭內容與表頭輸出的類關聯

ALV顯示容器分割成兩部分

獲取上半部分用于表頭輸出

獲取下半部分用于表體輸出

ALV輸出后,將表頭輸出

?基本定義

?注冊事件

?操作ALV事件:HOTSPOT_CLICK

?基本原理:

FIELDCAT中設置過HOTSPOT的字段

點擊時通過方法獲取到當前行//單元格信息

執行相應操作

?主要操作對象

E_ROW_ID:行信息

E_COLUMN_ID:列信息

?注冊事件

?選中物料代碼,跳轉至MM03界面

通過E_COLUMN_ID-FIELDNAME判斷字段名稱

通過方法GET_CURRENT_CELL,獲取當前單元格的值

如果需要的話可以根據E_ROW_ID-INDEX值讀取表中行

如果需要的話可以創建和表單相同的結構用于數據處理

?操作ALV事件:DOUBLE_CLICK

?主要操作對象:

E_ROW:雙擊單元格的行信息

E_COLUMN:雙擊單元格的列信息

ES_ROW_NO:行編號

?注冊事件

?操作ALV事件:DATA_CHANGED

?基本原理:

當數據修改時,可以觸發這個事件

可以進行數據檢查或修改等功能

?觸發方式

?注冊事件

?注意:如果界面中有保存按鈕等功能,注意是否需要在功能語句中增加調用DATA_CHANGED的語句

CALL METHOD gs_alv->check_changed_data.

效果:這樣在點擊保存按鈕的時候,可以觸發data changed事件

?效果:點選復選框的同時,即自動修改至內表中

?DOCK CONTAINER

customer container的區別:不需要創建customer control控件

?ALV LIST

可以用來實現多層次顯示,用+展開

上面是抬頭或合計,下面有詳細信息

?

?SALV

調用類CL_SALV_TABLE

總結

以上是生活随笔為你收集整理的【ABAP】OO ALV 概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。