alv 的幾種形式 和 函數


•ALV是SAP List Viewer的簡寫,是SAP中常用的經典報表輸出格式。
 
•常用的ALV種類有以下6個:
 

– ALV Grid
 

– ALV simple List
 

– 多表格的ALV List
 

– 層級顯示的ALV List
 

– ALV Tree
 

– ALV OO
 
下面的內容將根據不同的ALV類型分開作簡紹。
 
一、ALV Grid
 
•ALV Grid是最常用的一種Report輸出格式。如圖

–標准功能強大,且外觀上可直接用鼠標拖拽欄位的寬度和順序,一般無特別要求的報表均采用此種格式;
 
–輸出格式與Excel檔案相似,當客戶要求Download Excel檔案時多采用此輸出格式;
 
–ALV GRID每個格只能顯示不多於128個字符;
 
–不能多行顯示1條數據。
 
•實現方式
 
–1.構建Field catalog表——輸出表的表頭欄位;
 
一般采用Function’ REUSE_ALV_FIELDCATALOG_MERGE’ 得到。
 
–2.設置Field catalog表中各欄位的相關屬性,一般需修改顯示名稱,顯示長度,鎖定,是否加總,是否顯示等。
 
–3.輸出報表:Call Function’ REUSE_ALV_GRID_DISPLAY’.
 
二、ALV simple List
 
與ALV Grid相比較,除了表身在顯示上的差別外,其他大致相同。
 
ALV List更接近標准的write list輸出。如下圖

–標准功能同Grid大致相同,欄位寬度已最優化顯示,但不可直接用鼠標拖拽欄位的順序,不符合某些用戶習慣,故使用范圍不如ALV Grid廣泛,但當需要翻頁時,只能采用List而不能用Grid;
 
–輸出格式write類似,一般用於執行事務后返回消息的顯示。
 
–可以多行顯示1條數據;
 
–只能顯示不多於90個字段的表的數據;
 
–排序的列相同的值不能被合並。
 
•實現方式
 
–1.構建Field catalog表——輸出表的表頭欄位;
 
與ALV Grid實現方法相同,一般采用Function
 
’ REUSE_ALV_FIELDCATALOG_MERGE’ 得到。
 
–2.設置Field catalog表中各欄位的相關屬性,一般需修改顯示名稱,顯示長度,鎖定,是否加總,是否顯示等。
 
–3.輸出報表:Call Function’ REUSE_ALV_LIST_DISPLAY’.
 
三、多表格的ALV List
 
•區別於Simple List只有一個表身,該種ALV可在一個畫面上顯示多個表格。如下圖:

–當一個報表包含多個表格時需采用此種輸出方式;
 
–ALV Simple List需要注意的地方此種List同樣需要注意。
 
•實現方式
 
–1.構建Field catalog表,有幾個不同的表要輸出就構建幾次;
 
與ALV Grid實現方法相同,一般采用函數’ REUSE_ALV_FIELDCATALOG_MERGE‘,也可以手動構建。
 
–2.設置Field catalog表中各欄位的相關屬性,一般需修改顯示名稱,顯示長度,鎖定,是否加總,是否顯示等;
 
–3.初始化屏幕:調用函數‘REUSE_ALV_BLOCK_LIST_INIT’ ;
 
–4.添加數據:調用函數‘REUSE_ALV_BLOCK_LIST_APPEND’ ,有幾個表就要調用幾次;
 
–5.輸出報表:調用函數’REUSE_ALV_BLOCK_LIST_DISPLAY’ .
 
四、層級顯示的ALV List
 
•層級顯示的ALV List 在SAP中稱為Hierarchical-Sequential List

–這種形式的list,header和item是由相關的字段聯系起來的,heade和item數據一對多。當然可以把header和item表分成兩個List在同一屏幕顯示,但此種List看起來更直觀。故當輸出的報表數據有header和item的區分時,可以采用此種List。
 
•實現方式一:Call Method
 
–1.捆綁header和item表
 

data: lt_binding type salv_t_hierseq_binding.
 
data: ls_binding type salv_s_hierseq_binding.
 
ls_binding-master = (Header和item相關的字段)
 
ls_binding-slave = (Header和item相關的字段)
 
append ls_binding to lt_binding.
 
–2.得到輸出表:call method cl_salv_hierseq_table=>factory
 

exporting
 
t_binding_level1_level2 = lt_binding
 
importing
 
r_hierseq = gr_table —得到的輸出表
 
changing
 
t_table_level1 = header表
 
t_table_level2 = item表.
 
–3.顯示報表gr_table->display( ).
 
•實現方式二:Call Function1.構建Header和Item的欄位。
 
可以調用函數‘REUSE_ALV_FIELDCATALOG_MERGE’,Header和Item的欄位分別構建后再Append到一個表里。也可以手動構建。
 
–2.顯示數據
 
調用函數‘REUSE_ALV_HIERSEQ_LIST_DISPLAY’,必傳參數如下:
 
EXPORTING
 

it_fieldcat                           t_fieldcat[]
 

i_tabname_header            Header名,引號里大寫
 

i_tabname_item                 Item名,引號里大寫
 

is_keyinfo                            關聯Header和Item的欄位
 
TABLES
 

t_outtab_header                Header表
 

t_outtab_item                     Item表
 
五、ALV Tree
 
•ALVTree可以顯示多個層級,每個層級在相同的欄位
 
名下顯示;而之前的層級List只能顯示兩個層級,而且兩個層級之間要有主鍵去關聯,數據顯示在不同欄位名下。

 

–一般在輸出BOM等層級結構比較明顯的數據時使用;
 
–ALV Tree每格最多支持128個字符;
 
–不支持格合並;
 
–沒有數據的過濾功能;
 
–系統標准不能Download,需要自己寫代碼;
 
–只能顯示1000個節點;
 
–只支持flat table,不支持deep table。
 
•實現方式(簡單的Tree結構,在屏幕的PBO事件中處理):
 
–1.創建並繪制屏幕和容器:
 

容器可以不手動繪制,直接指定
 

cl_gui_container=>screen0 ,可全屏顯示
 
–2.構建欄位名:CALLFUNCTION’LVC_FIELDCATALOG_MERGE’
 
–3.構建sort表,對輸出表進行層級設置
 
–4.實例化對象:CREATEOBJECTcl_gui_alv_tree_simple
 
–5.輸出數據:CALLMETHOD cl_gui_alv_tree_simple
 
SET_TABLE_FOR_FIRST_DISPLAY
 
六、ALV OO
 
•ALV OO是SAP提供的ALV Object Model ,即用面向對象技術對ALV進行封裝,提供相應的工具和方式。

OO的方式 功能更強大更靈活。當用普通的ALV Grid解決不了某些事件的處理時,大部分使用ALV OO就可以解決。
 
•實現方式
 
–1. 在screen上定義一個custom control area
 
CREATE OBJECT: obj_wcl_container
 

EXPORTING container_name = ‘OBJ_WCL_CONTAINER’.
 
–2. 生成一個CL_GUI_CUSTOM_CONTAINER class 實例,在構造器參數中傳入custom area的名稱。
 
CREATE OBJECT obj_wcl_alv
 

EXPORTING i_parent = obj_wcl_container.
 
–3. 構建Field catalog:
 

CALL FUNCTION ‘LVC_FIELDCATALOG_MERGE’
 
EXPORTING  i_structure_name = 傳入Structure
 
CHANGING   ct_fieldcat= it_fieldcat.
 
–4. 顯示報表:CALL METHOD obj_wcl_alv->set_table_for_first_display
 
總結:以上是ALV 類型的簡單介紹,具體每種類型的ALV詳細用法,請參考ALV專題的其他教材(如ALV屬性和ALV EVENT等)。

 

 

 

                                             幾種函數

 

 

 

 

ALV調用的幾個標准函數




  ALV的調用主要由以下幾個標准函數實現,所有函數的輸入輸出參數必須大寫,否則系統會出現異常中止,相關函數如下:
 
  1)REUSE_ALV_FIENDCATALOG_MERGE:根據內表結構返回FIELDCAT字段結構信息,其常用輸入輸出參數如下:
  EXPORTING項:
      1.I_PROGRAM_NAME:程序名稱。
      2.I_INTERNAL_TABNAME:內表名稱,必須為輸出內表所自定義的STRUCTURE名。
      3.I_STRUCTURE_NAME:直接參考數據字典中所定義的透明表名或STRUCTURE名。
      函數定義時I_INTERNAL_TABNAME或I_STRUCTURE_NAME參數只需一項。
     CHANGING項:
   CT_FIELDCAT:導出FIELDCAT內表數據。
 
  2)REUSE_ALV_GRID_DISPLAY/REUSE_ALV_LIST_DISPLAY:輸出ALV報表,定義其為GRID模式還是LIST模式,兩個函數的語法結構一樣,其常用輸入輸出參數如下:
      EXPORT項:
  1.I_CALLBACK_PROGRAM:程序名稱。
  2.IS_LAYOUT:程序所定義的LAYOUT名稱。
  3.I_GRID_TITLE:定義ALV標題名。 
  4.IT_FIELDCAT:定義FIELDCAT數據。
  5.IT_EVENTS:定義ALV輸出事件。
  6.I_CALLBACK_PF_STATUS_SET:定義觸發工具欄定義,通常為一個子程序。
  7.I_CALLBACK_USER_COMMAND:其對應值一般為子程序名,在對ALV操作時觸發所定義子程序(如某表字段的雙擊事件)。
  TABLES項(定義輸入內表數據):
  1.T_OUTTAB:輸入所需顯示的內表數據。


 
  3)LAYOUT為一STRUCTURE,其主要字段定義及屬性如下:
  1.EDIT:設置ALV是否為可編輯模式。
  2.COLWIDTH_OPTIMIZE:將ALV字段寬度設置為最優化,按實際輸出內容寬度自動匹配。
  3.NO_VLINE:輸出ALV表格不顯示垂直格式。
  4.NO_ULINE_HS:輸出ALV表格不顯示水平格線。
  5.INFO_FIELDNAME:設置顏色屬性。
  6.KEY_HOTSPOT:設置關鍵字段熱點。
  7.NO_COLNAME:是否顯示字段名。
  8.ZEBRA:使ALV表格按斑馬線間隔條紋方式顯示,以便顯示效果更有美觀。
  9.BOX_FIELDNAME:設置ALV表格是否顯示選擇按鈕字段。
  10.INFO_FIELDNAME:用於設置ALV輸出報表每一行的顏色,其參數為輸出內表的字段名稱,要注意的是使用該屬性需要同時在內表中定義一個與該參數所定義字段名相同的字段,例如:
  LAYOUT-INFO_FIELDNAME = 'COLOR'.  
  倘若其數據輸出內表名為LT_OUT,則需要在該內表增加一字段“COLOR”,並為其內表每行復制,顏色參數范圍C000~C999,例如:
  LT_OUT-COLOR = 'C012'.
 
  4)FIELDCAT主要屬性介紹
  1.KEY:將定義字段設置為KEY值。
  2.ICON:將定義字段以ICON的形式顯示。
  3.CHECKBOX:將定義字段以CHECKBOX的形式顯示。
  4.JUST:定義字段對齊方式(R)RIGHT、(L)LEFT、(C)CENTER。
  5.IZERO:將定義字段以前導"0"的形式顯示。
  6.NO_SIGN:將定義字段符號設置為不顯示。
  7.NO_ZERO:定義字段是否顯示。
  8.EMPHASIZE:設置字段的顏色。
  9.DO_SUM:對字段進行匯總。
  10.SELTEXT_L/M/S:設置字段名稱描述長/中/短。
  11.DDICTXT:設置字段顯示字符串。
  12.HOTSPOT:設置字段是否有熱點(熱點字段顯示有下划線)。
  13.NO_OUT:隱藏不需要的字段(NO_OUT = 'X')。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM