创建动态内表
*TYPE-POOLS:slis,
*???????????icon.
*
*DATA:gtd_fieldcat_lvc?TYPE?lvc_t_fcat,"顯示結(jié)構(gòu)內(nèi)表
*????gth_fieldcat_lvc?TYPE?lvc_s_fcat."顯示結(jié)構(gòu)工作區(qū)
*
*DATA:?dy_table?TYPE?REF?TO?data,"定義動態(tài)內(nèi)表
*??????dy_line??TYPE?REF?TO?data."定義動態(tài)內(nèi)表行
*
*
*FIELD-SYMBOLS:<dyn_table>?TYPE?STANDARD?TABLE,"可操作的內(nèi)表
*
*??????????????<dyn_wa>,"可操作的內(nèi)標(biāo)工作區(qū)
*??????????????<dyn_field>."可操作的內(nèi)標(biāo)字段
*DATA:??gs_layout???TYPE?lvc_s_layo."ALV?控制:布局控制
*
**2。創(chuàng)建顯示結(jié)構(gòu)
*
*PERFORM?add_field_lvc?using?'MATNR'?'物料編號'?'9'?'C'?'18'?'0'
*???????????????????????????'X'?''?''?''?''.
*PERFORM?add_field_lvc?using?'MAKTX'?'物料描述'?'8'?'C'?'40'?'0'
*???????????????????????????''?''?''?''?''.
*"其它動態(tài)列,如日期或星期,循環(huán)得到,然后也執(zhí)行"perform.?add_field_lvc
*
*
**&---------------------------------------------------------------------*
**&??????Form??add_field_lvc
**&---------------------------------------------------------------------*
**???????text
**----------------------------------------------------------------------*
**??????-->I_FIELDNAME????text
**??????-->ADD_FIELD_LVC??text
**??????-->I_FIELDNAME????text
**??????-->I_TEXT?????????text
**??????-->I_OUTPUTLEN????text
**??????-->I_INTTYPE??????text
**??????-->I_INTLEN???????text
**??????-->I_DECIMALS?????text
**??????-->I_ZERO?????????text
**??????-->I_FIX_COLUMN???text
**??????-->I_NO_OUT???????text
**??????-->I_EMPHASIZE????text
**??????-->I_DO_SUM???????text
**----------------------------------------------------------------------*
*FORM
*??add_field_lvc?using?i_fieldname?type?slis_fieldname
*????????????????????i_text?type?string
*????????????????????i_outputlen?type?lvc_outlen
*????????????????????i_inttype?type?inttype
*????????????????????i_intlen?type?intlen
*????????????????????i_decimals?type?decimals
*????????????????????i_zero?type?c
*????????????????????i_fix_column?type?c
*????????????????????i_no_out?type?c
*????????????????????i_emphasize?type?lvc_emphsz
*????????????????????i_do_sum.
*??CLEAR?gth_fieldcat_lvc.
*??gth_fieldcat_lvc-fieldname?=?i_fieldname.
*??gth_fieldcat_lvc-colddictxt?=?'L'.
*??gth_fieldcat_lvc-scrtext_l?=?i_text.
*??gth_fieldcat_lvc-outputlen?=?i_outputlen.
*??gth_fieldcat_lvc-inttype?=?i_inttype.
*??gth_fieldcat_lvc-intlen?=?i_intlen.
*??gth_fieldcat_lvc-decimals?=?i_decimals.
*??gth_fieldcat_lvc-no_zero?=?i_zero.
*??gth_fieldcat_lvc-fix_column?=?i_fix_column.
*??gth_fieldcat_lvc-no_out?=?i_no_out.
*??gth_fieldcat_lvc-emphasize?=?i_emphasize.
*??gth_fieldcat_lvc-do_sum?=?i_do_sum.
*??APPEND?gth_fieldcat_lvc?TO?gtd_fieldcat_lvc.
*ENDFORM.????????????????????"ADD_FIELD_LVC
*
**3。創(chuàng)建動態(tài)內(nèi)表?(全部相同)
*CALL?METHOD?cl_alv_table_create=>create_dynamic_table
*??EXPORTING
*????it_fieldcatalog?=?gtd_fieldcat_lvc??"顯示結(jié)構(gòu)內(nèi)表
*??IMPORTING
*????ep_table????????=?dy_table.
*
*
*ASSIGN?dy_table->*?TO?<dyn_table>."將表準(zhǔn)內(nèi)標(biāo)指向系統(tǒng)創(chuàng)建的內(nèi)標(biāo)
*
**下面這句建立了一個<dyn_table>類型的工作區(qū)Work?area
*
*CREATE?DATA?dy_line?LIKE?LINE?OF?<dyn_table>.
*
**同理設(shè)定指針
*ASSIGN?dy_line->*?TO?<dyn_wa>.
**4。填充動態(tài)內(nèi)標(biāo)
*
*DATA?:?lc_dyn_fidld(8)?TYPE?c.
*
*LOOP?AT?i_result.?"要輸出的內(nèi)容i_result
*
*??ASSIGN?COMPONENT??'MATNR'??OF?STRUCTURE?<dyn_wa>??TO
*????<dyn_field>?."要操作的字段
*??<dyn_field>?=?i_result-matnr."填充字段的值
*
*??ASSIGN?COMPONENT??'MAKTX'??OF?STRUCTURE?<dyn_wa>??TO
*????<dyn_field>?.."要操作的字段
*??<dyn_field>?=?i_result-maktx."填充字段的值
*
*??lc_dyn_fidld?=?i_result-day."動態(tài)列值轉(zhuǎn)成C格式,否則結(jié)果不正確,這點非常重要
*
*??ASSIGN?COMPONENT??lc_dyn_fidld??OF?STRUCTURE?<dyn_wa>??TO
*<dyn_field>?.?"要操作的字段
*
*
*??<dyn_field>?=?i_result-menge.."填充字段的值
*
*
*
*
*
*??APPEND?<dyn_wa>?TO?<dyn_table>.
*
*??CLEAR?<dyn_wa>.
*
*ENDLOOP.
*
**5。顯示動態(tài)列。
*
*gs_layout-totals_bef?=?'X'.
*gs_layout-zebra?=?'X'."顏色交替
*gs_layout-no_toolbar?=?''.
*CALL?FUNCTION?'REUSE_ALV_GRID_DISPLAY_LVC'
*?EXPORTING
*???i_callback_program???????=?sy-cprog
**??????i_callback_pf_status_set?=?'SET_PF_STATUS'
*???i_callback_user_command??=?'USER_CALLBACK'
*???is_layout_lvc????????????=?gs_layout
*???it_fieldcat_lvc??????????=?gtd_fieldcat_lvc
*???i_save???????????????????=?'A'
*?TABLES
*???t_outtab?????????????????=?<dyn_table>
*?EXCEPTIONS
*???program_error????????????=?1
*???OTHERS???????????????????=?2.
*???????????icon.
*
*DATA:gtd_fieldcat_lvc?TYPE?lvc_t_fcat,"顯示結(jié)構(gòu)內(nèi)表
*????gth_fieldcat_lvc?TYPE?lvc_s_fcat."顯示結(jié)構(gòu)工作區(qū)
*
*DATA:?dy_table?TYPE?REF?TO?data,"定義動態(tài)內(nèi)表
*??????dy_line??TYPE?REF?TO?data."定義動態(tài)內(nèi)表行
*
*
*FIELD-SYMBOLS:<dyn_table>?TYPE?STANDARD?TABLE,"可操作的內(nèi)表
*
*??????????????<dyn_wa>,"可操作的內(nèi)標(biāo)工作區(qū)
*??????????????<dyn_field>."可操作的內(nèi)標(biāo)字段
*DATA:??gs_layout???TYPE?lvc_s_layo."ALV?控制:布局控制
*
**2。創(chuàng)建顯示結(jié)構(gòu)
*
*PERFORM?add_field_lvc?using?'MATNR'?'物料編號'?'9'?'C'?'18'?'0'
*???????????????????????????'X'?''?''?''?''.
*PERFORM?add_field_lvc?using?'MAKTX'?'物料描述'?'8'?'C'?'40'?'0'
*???????????????????????????''?''?''?''?''.
*"其它動態(tài)列,如日期或星期,循環(huán)得到,然后也執(zhí)行"perform.?add_field_lvc
*
*
**&---------------------------------------------------------------------*
**&??????Form??add_field_lvc
**&---------------------------------------------------------------------*
**???????text
**----------------------------------------------------------------------*
**??????-->I_FIELDNAME????text
**??????-->ADD_FIELD_LVC??text
**??????-->I_FIELDNAME????text
**??????-->I_TEXT?????????text
**??????-->I_OUTPUTLEN????text
**??????-->I_INTTYPE??????text
**??????-->I_INTLEN???????text
**??????-->I_DECIMALS?????text
**??????-->I_ZERO?????????text
**??????-->I_FIX_COLUMN???text
**??????-->I_NO_OUT???????text
**??????-->I_EMPHASIZE????text
**??????-->I_DO_SUM???????text
**----------------------------------------------------------------------*
*FORM
*??add_field_lvc?using?i_fieldname?type?slis_fieldname
*????????????????????i_text?type?string
*????????????????????i_outputlen?type?lvc_outlen
*????????????????????i_inttype?type?inttype
*????????????????????i_intlen?type?intlen
*????????????????????i_decimals?type?decimals
*????????????????????i_zero?type?c
*????????????????????i_fix_column?type?c
*????????????????????i_no_out?type?c
*????????????????????i_emphasize?type?lvc_emphsz
*????????????????????i_do_sum.
*??CLEAR?gth_fieldcat_lvc.
*??gth_fieldcat_lvc-fieldname?=?i_fieldname.
*??gth_fieldcat_lvc-colddictxt?=?'L'.
*??gth_fieldcat_lvc-scrtext_l?=?i_text.
*??gth_fieldcat_lvc-outputlen?=?i_outputlen.
*??gth_fieldcat_lvc-inttype?=?i_inttype.
*??gth_fieldcat_lvc-intlen?=?i_intlen.
*??gth_fieldcat_lvc-decimals?=?i_decimals.
*??gth_fieldcat_lvc-no_zero?=?i_zero.
*??gth_fieldcat_lvc-fix_column?=?i_fix_column.
*??gth_fieldcat_lvc-no_out?=?i_no_out.
*??gth_fieldcat_lvc-emphasize?=?i_emphasize.
*??gth_fieldcat_lvc-do_sum?=?i_do_sum.
*??APPEND?gth_fieldcat_lvc?TO?gtd_fieldcat_lvc.
*ENDFORM.????????????????????"ADD_FIELD_LVC
*
**3。創(chuàng)建動態(tài)內(nèi)表?(全部相同)
*CALL?METHOD?cl_alv_table_create=>create_dynamic_table
*??EXPORTING
*????it_fieldcatalog?=?gtd_fieldcat_lvc??"顯示結(jié)構(gòu)內(nèi)表
*??IMPORTING
*????ep_table????????=?dy_table.
*
*
*ASSIGN?dy_table->*?TO?<dyn_table>."將表準(zhǔn)內(nèi)標(biāo)指向系統(tǒng)創(chuàng)建的內(nèi)標(biāo)
*
**下面這句建立了一個<dyn_table>類型的工作區(qū)Work?area
*
*CREATE?DATA?dy_line?LIKE?LINE?OF?<dyn_table>.
*
**同理設(shè)定指針
*ASSIGN?dy_line->*?TO?<dyn_wa>.
**4。填充動態(tài)內(nèi)標(biāo)
*
*DATA?:?lc_dyn_fidld(8)?TYPE?c.
*
*LOOP?AT?i_result.?"要輸出的內(nèi)容i_result
*
*??ASSIGN?COMPONENT??'MATNR'??OF?STRUCTURE?<dyn_wa>??TO
*????<dyn_field>?."要操作的字段
*??<dyn_field>?=?i_result-matnr."填充字段的值
*
*??ASSIGN?COMPONENT??'MAKTX'??OF?STRUCTURE?<dyn_wa>??TO
*????<dyn_field>?.."要操作的字段
*??<dyn_field>?=?i_result-maktx."填充字段的值
*
*??lc_dyn_fidld?=?i_result-day."動態(tài)列值轉(zhuǎn)成C格式,否則結(jié)果不正確,這點非常重要
*
*??ASSIGN?COMPONENT??lc_dyn_fidld??OF?STRUCTURE?<dyn_wa>??TO
*<dyn_field>?.?"要操作的字段
*
*
*??<dyn_field>?=?i_result-menge.."填充字段的值
*
*
*
*
*
*??APPEND?<dyn_wa>?TO?<dyn_table>.
*
*??CLEAR?<dyn_wa>.
*
*ENDLOOP.
*
**5。顯示動態(tài)列。
*
*gs_layout-totals_bef?=?'X'.
*gs_layout-zebra?=?'X'."顏色交替
*gs_layout-no_toolbar?=?''.
*CALL?FUNCTION?'REUSE_ALV_GRID_DISPLAY_LVC'
*?EXPORTING
*???i_callback_program???????=?sy-cprog
**??????i_callback_pf_status_set?=?'SET_PF_STATUS'
*???i_callback_user_command??=?'USER_CALLBACK'
*???is_layout_lvc????????????=?gs_layout
*???it_fieldcat_lvc??????????=?gtd_fieldcat_lvc
*???i_save???????????????????=?'A'
*?TABLES
*???t_outtab?????????????????=?<dyn_table>
*?EXCEPTIONS
*???program_error????????????=?1
*???OTHERS???????????????????=?2.
總結(jié)
- 上一篇: 【转】MB51搜索字段的设置
- 下一篇: ALV动态列Demo