REUSE_ALV_LIST_DISPLAY - ooxxvv/MySAPnotes GitHub Wiki
PageOutline {{{#!comment -------------------- 以上的部份是固定的,不要變動 ----- --------------------------------------- 在建立連結時,請標明連結的頁面類型,例如:wiki:WikiStart,而不要只用 WikiStart ----- }}}
REUSE_ALV_LIST_DISPLAY
- REPORT轉成 ALV 格式。
- 較常用 => REUSE_ALV_GRID_DISPLAY 。
- 可參考 ALV。
EXPORTING (Import)
i_callback_program
- PROGRAM NAME
is_layout
- type slis_layout_alv
it_fieldcat
- fieldcat like line of fieldcat
- 可以先用 REUSE_ALV_FIELDCATALOG_MERGE 這個 Function 來取得 DDIC 中的屬性。
- 需要指定值給它,如下例:
- fieldcat_ln-ref_tabname='ZSP25' =>tabname.
- fieldcat_ln-fieldname='ZPGM' =>fieldname.
- fieldcat_ln-sp_group=sp_group.=>是否 Group
- fieldcat_ln-no_sum=no_sum. => 是否SUM
- fieldcat_ln-col_pos=col_pos. =>第幾欄
- fieldcat_ln-no_out=no_out. =>是否一開始就show
- fieldcat_ln-outputlen=outputlen. =>欄位長度
- fieldcat-seltext_m='Location'. => ALV 中顯示的標題
- append fieldcat_ln to fieldcat.
IMPORTING (Export)
TABLES
t_outtab
- 要輸出的inter table
EXCEPTIONS
Attributes
Methods
Code
{{{#!abap
*使用 REUSE_ALV_LIST_DISPLAY 實作 ALV 的簡單範例
REPORT zjoey_test_20061127. *------引用在SAP上預設的 Data Pool,已預先定義好所有ALV所需之變數型態 TYPE-POOLS/ slis. *------宣告變數 DATA/ fieldcat TYPE slis_t_fieldcat_alv, fieldcat_ln LIKE LINE OF fieldcat, sortcat TYPE slis_t_sortinfo_alv, sortcat_ln LIKE LINE OF sortcat. DATA/ col_pos TYPE i. *------宣告要顯示的Internal Table DATA/ BEGIN OF ivbap OCCURS 0, vbeln LIKE vbap-vbeln, matnr LIKE vbap-matnr, matkl LIKE vbap-matkl, END OF ivbap.
*------將資料存入 Internal Table SELECT vbeln posnr matnr matkl kwmeng vrkme INTO CORRESPONDING FIELDS OF TABLE ivbap FROM vbap WHERE vbeln NE space.
*------設定要顯示欄位的相關屬性 ( Field Catalogs ) ADD 1 TO col_pos. *------------在 Dictionary 中所關連的 TABLE 名稱 fieldcat_ln-ref_tabname='VBAP'. *------------在 ALV 中表格的名稱 fieldcat_ln-tabname='IVBAP'. *------------在 ALV 中欄位的名稱 field name fieldcat_ln-fieldname='VBELN'. *------------是否為 key fieldcat_ln-key='X'. *------------是否要計算總合 fieldcat_ln-do_sum=space. *------------欄位排列的順序 fieldcat_ln-col_pos=col_pos. *------------是否要隱藏此欄位 fieldcat_ln-no_out=space. *------------指定此欄位的 quantity (在 Internal Table 中的名稱) fieldcat_ln-qfieldname=space. *------------此欄位是否要改變滑鼠游標 fieldcat_ln-hotspot='X'. APPEND fieldcat_ln TO fieldcat.
ADD 1 TO col_pos. fieldcat_ln-ref_tabname='VBAP'. fieldcat_ln-tabname='IVBAP'. fieldcat_ln-fieldname='MATNR'. fieldcat_ln-key=space. fieldcat_ln-do_sum=space. fieldcat_ln-col_pos=col_pos. fieldcat_ln-no_out=space. fieldcat_ln-qfieldname=space. fieldcat_ln-hotspot=space. APPEND fieldcat_ln TO fieldcat.
ADD 1 TO col_pos. fieldcat_ln-ref_tabname='VBAP'. fieldcat_ln-tabname='IVBAP'. fieldcat_ln-fieldname='MATKL'. fieldcat_ln-key=space. fieldcat_ln-do_sum='X'. fieldcat_ln-col_pos=col_pos. fieldcat_ln-no_out=space. fieldcat_ln-qfieldname=space. fieldcat_ln-hotspot=space. APPEND fieldcat_ln TO fieldcat.
*------設定預設的排序方式 *------------排列的優先順序 sortcat_ln-spos='1'. *------------要排列的欄位(Internal Table) sortcat_ln-fieldname='MATNR'. *------------是否昇冪 sortcat_ln-up='X'. *------------是否降冪 sortcat_ln-down=space. *------------此欄位是否要小計 sortcat_ln-subtot='X'. APPEND sortcat_ln TO sortcat.
*------呼叫ALV Function Module DATA/ pgm LIKE sy-repid. pgm=sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING i_callback_program =pgm i_callback_user_command='USER_COMMAND' it_fieldcat =fieldcat it_sort =sortcat i_save ='A' TABLES t_outtab =ivbap EXCEPTIONS program_error =1 OTHERS =2. IF sy-subrc <> 0.
- MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
-
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*------User按鍵處理事件的程式碼 FORM user_command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield. READ TABLE ivbap INDEX selfield-tabindex. CHECK sy-subrc=0.
CASE ucomm. WHEN '&IC1'. CASE selfield-sel_tab_field. WHEN 'IVBAP-VBELN'. SET PARAMETER ID 'AUN' FIELD ivbap-vbeln. CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN. WHEN 'IVBAP-MATNR'. SET PARAMETER ID 'MAT' FIELD ivbap-matnr. CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN. ENDCASE.
ENDCASE.
ENDFORM. "USER_COMMAND
}}}