REUSE_ALV_LIST_DISPLAY - ooxxvv/MySAPnotes GitHub Wiki

PageOutline {{{#!comment -------------------- 以上的部份是固定的,不要變動 ----- --------------------------------------- 在建立連結時,請標明連結的頁面類型,例如:wiki:WikiStart,而不要只用 WikiStart ----- }}}

REUSE_ALV_LIST_DISPLAY

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

}}}

{{{#!comment -------------------- 以下的部份是固定的,不要變動 ----- }}}