動態的實現任意表的ALV顯示01
轉來的程式,動態的實現任意表的ALV顯示[@more@]*&---------------------------------------------------------------------*
*& Report Z_BARRY_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_BARRY_TEST.
TYPE-POOLS : abap.
FIELD-SYMBOLS: TYPE STANDARD TABLE,
,
.
DATA: dy_table TYPE REF TO data,
dy_line TYPE REF TO data,
xfc TYPE lvc_s_fcat,
ifc TYPE lvc_t_fcat.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_table(30) TYPE c DEFAULT 'T001'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_structure.
PERFORM create_dynamic_itab.
PERFORM get_data.
* PERFORM write_out.
PERFORM write_out2.
*---------------------------------------------------------------------*
* FORM get_structure *
*---------------------------------------------------------------------*
FORM get_structure.
DATA : idetails TYPE abap_compdescr_tab,
xdetails TYPE abap_compdescr.
DATA : ref_table_des TYPE REF TO cl_abap_structdescr.
ref_table_des ?=
cl_abap_typedescr=>describe_by_name( p_table ).
idetails[] = ref_table_des->components[].
LOOP AT idetails INTO xdetails.
CLEAR xfc.
xfc-fieldname = xdetails-name .
* xfc-datatype = xdetails-type_kind.
xfc-inttype = xdetails-type_kind.
xfc-intlen = xdetails-length + xdetails-decimals.
xfc-decimals = xdetails-decimals.
APPEND xfc TO ifc.
ENDLOOP.
ENDFORM. "get_structure
*---------------------------------------------------------------------*
* FORM create_dynamic_itab *
*---------------------------------------------------------------------*
FORM create_dynamic_itab.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = ifc
IMPORTING
ep_table = dy_table.
ASSIGN dy_table->* TO.
CREATE DATA dy_line LIKE LINE OF.
ASSIGN dy_line->* TO.
ENDFORM. "create_dynamic_itab
*---------------------------------------------------------------------*
* FORM get_data *
*---------------------------------------------------------------------*
FORM get_data.
DATA: BEGIN OF itab OCCURS 0 .
INCLUDE STRUCTURE spfli.
DATA: END OF itab.
SELECT * INTO TABLE
FROM (p_table) up to 3 rows.
ENDFORM. "get_data
*---------------------------------------------------------------------*
* FORM write_out *
*---------------------------------------------------------------------*
FORM write_out.
LOOP AT INTO .
DO.
ASSIGN COMPONENT sy-index
OF STRUCTURE TO .
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF sy-index = 1.
WRITE:/.
ELSE.
WRITE:.
ENDIF.
ENDDO.
ENDLOOP.
ENDFORM. "write_out
*&---------------------------------------------------------------------*
*& Form write_out2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM write_out2.
*呼叫alv函式來顯示資料
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = p_table
TABLES
T_OUTTAB =
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. "write_out
*& Report Z_BARRY_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_BARRY_TEST.
TYPE-POOLS : abap.
FIELD-SYMBOLS:
DATA: dy_table TYPE REF TO data,
dy_line TYPE REF TO data,
xfc TYPE lvc_s_fcat,
ifc TYPE lvc_t_fcat.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_table(30) TYPE c DEFAULT 'T001'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_structure.
PERFORM create_dynamic_itab.
PERFORM get_data.
* PERFORM write_out.
PERFORM write_out2.
*---------------------------------------------------------------------*
* FORM get_structure *
*---------------------------------------------------------------------*
FORM get_structure.
DATA : idetails TYPE abap_compdescr_tab,
xdetails TYPE abap_compdescr.
DATA : ref_table_des TYPE REF TO cl_abap_structdescr.
ref_table_des ?=
cl_abap_typedescr=>describe_by_name( p_table ).
idetails[] = ref_table_des->components[].
LOOP AT idetails INTO xdetails.
CLEAR xfc.
xfc-fieldname = xdetails-name .
* xfc-datatype = xdetails-type_kind.
xfc-inttype = xdetails-type_kind.
xfc-intlen = xdetails-length + xdetails-decimals.
xfc-decimals = xdetails-decimals.
APPEND xfc TO ifc.
ENDLOOP.
ENDFORM. "get_structure
*---------------------------------------------------------------------*
* FORM create_dynamic_itab *
*---------------------------------------------------------------------*
FORM create_dynamic_itab.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = ifc
IMPORTING
ep_table = dy_table.
ASSIGN dy_table->* TO
CREATE DATA dy_line LIKE LINE OF
ASSIGN dy_line->* TO
ENDFORM. "create_dynamic_itab
*---------------------------------------------------------------------*
* FORM get_data *
*---------------------------------------------------------------------*
FORM get_data.
DATA: BEGIN OF itab OCCURS 0 .
INCLUDE STRUCTURE spfli.
DATA: END OF itab.
SELECT * INTO TABLE
FROM (p_table) up to 3 rows.
ENDFORM. "get_data
*---------------------------------------------------------------------*
* FORM write_out *
*---------------------------------------------------------------------*
FORM write_out.
LOOP AT
DO.
ASSIGN COMPONENT sy-index
OF STRUCTURE
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF sy-index = 1.
WRITE:/
ELSE.
WRITE:
ENDIF.
ENDDO.
ENDLOOP.
ENDFORM. "write_out
*&---------------------------------------------------------------------*
*& Form write_out2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM write_out2.
*呼叫alv函式來顯示資料
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = p_table
TABLES
T_OUTTAB =
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. "write_out
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8356764/viewspace-1023158/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 動態的實現任意表的ALV顯示02
- alv動態顯示列
- 動態內表及動態ALV顯示(轉)
- ALV顯示OO實現(摘)
- SAP ABAP 動態內表實現 ALV橫向按月份動態顯示資料
- QT實現動態顯示系統時間QT
- 【轉載】ALV的Excel方式顯示缺少模板Excel
- ALV1:使用函式顯示ALV格式報表函式
- Element 利用Tooltip提示框實現動態顯示文字提示
- iOS - 實現在有限label上 動態顯示所有文字iOS
- CSS實現限制顯示的字數,超出顯示"..."CSS
- 如何顯示實現動態bean的setXXX/getXXX方法。Bean
- Quartz實現動態定時任務quartz
- 八、Qt Creator實現狀態列顯示QT
- vue中:is的用法,動態顯示需要的元件Vue元件
- 圖表外掛Highcharts的動態化賦值,實現圖表資料的動態化設定顯示賦值
- jQuery 動態數字顯示jQuery
- Tree動態顯示Icon
- JavaScript使網頁顯示動態效果並實現與使用者互動功能。JavaScript網頁
- ExpandableListView實現二級列表的顯示View
- javascript動態設定div的顯示和隱藏JavaScript
- js動態控制表單的顯示和隱藏JS
- 通過滑鼠的移動來實現層的隱藏與顯示
- 動態棧的實現
- 靜態數碼管顯示、動態數碼管顯示、矩陣按鍵矩陣
- 動態改變actionbar的menu選單MenuItem的顯示UI
- 如何在 SAPGUI 的同一個螢幕顯示兩個 ALV listGUI
- Spring 整合 Quartz 實現動態定時任務Springquartz
- 程式介面多模式顯示的實現 (轉)模式
- javaScript動態顯示當前時間JavaScript
- 數碼管顯示動態資料
- 動態顯示資料庫圖片資料庫
- Geoserver + MySQL實現圖層顯示和文字顯示ServerMySql
- 記一個angular在路由配置中管理 Angular Material Dialog(實現動態元件的彈窗顯示)Angular路由元件
- 一段比較好的動態生成alv的例子 (轉)
- openlayers3實現動態圖示gif其他css支援的格式S3CSS
- function模式設定ALV用彈出視窗顯示Function模式
- ALV報表不能正確顯示資料問題