您的位置:首页 > 其它

Abap/4控制ALV表格(5)

2012-05-26 13:19 281 查看
*HelloWorld基本的ALV表格程序

REPORT ZRA00746_002

message-id SU line-size 132 line-count 65 no standard page heading.

*引用类型及模块

type-pools slis.

include <icon>.

include <symbol>.

*宣告所使用的报表

*---------------------------------------------------------------

tables: usr01.

*---------------------------------------------------------------

*定义全局常量

*---------------------------------------------------------------

constants c_tax type c value 'q'.

*---------------------------------------------------------------

*定义内部表

*---------------------------------------------------------------

data: begin of itab_100 occurs 1,

bname like usr01-bname,

spld like usr01-spld,

splg like usr01-splg,

spdb like usr01-spdb,

spda like usr01-spda,

datfm like usr01-datfm,

end of itab_100.

*---------------------------------------------------------------

*定义全局变量

*---------------------------------------------------------------

data: g_repid like sy-repid,

gt_fieldcat type slis_t_fieldcat_alv.

*---------------------------------------------------------------

*选择输入参数

*---------------------------------------------------------------

selection-screen begin of block b2 with frame title text-001.

select-options s_bname for usr01-bname.

selection-screen end of block b2.

*---------------------------------------------------------------

*检查selection-screen输入的值是否正确

*---------------------------------------------------------------

initialization.

g_repid = sy-repid.

perform get_fieldcat using gt_fieldcat.

*---------------------------------------------------------------

*开始主程序

*---------------------------------------------------------------

start-of-selection.

refresh itab_100.

clear itab_100.

perform get_data.

perform sort_data.

perform list_data.

end-of-selection.

*--------------------------------------------------------------

*报表头定义

*---------------------------------------------------------------

top-of-page.

DATA: COMP_POSI TYPE I,

MODUL_POSI TYPE I,

PAGE_POSI TYPE I,

TITL_POSI TYPE I,

L_COMP(20) TYPE C VALUE '江西亚东水泥有限公司',

L_MODUL(20) TYPE C VALUE '供应应商资料表'.

COMP_POSI = ( SY-LINSZ - STRLEN( L_COMP ) ) / 2.

MODUL_POSI = ( SY-LINSZ - STRLEN( L_MODUL ) ) / 2.

TITL_POSI = ( SY-LINSZ - STRLEN( SY-TITLE ) ) / 2.

PAGE_POSI = SY-LINSZ - STRLEN( '印表日期' ) - 10.

WRITE: ' ', AT COMP_POSI L_COMP.

WRITE: AT MODUL_POSI L_MODUL.

WRITE: '程式代号',SY-CPROG,

at PAGE_POSI '页面', SY-PAGNO LEFT-JUSTIFIED.

WRITE: '列印人员:', sy-uname,

at PAGE_POSI '印表日期', SY-DATUM.

ULINE.

WRITE: text-002,

text-003,

text-004,

text-005,

text-006,

text-007.

uline.

*--------------------------------------------------------------

*取得数据Produce

*--------------------------------------------------------------

FORM get_data.

select * from usr01

into corresponding fields of itab_100

where bname in s_bname.

append itab_100.

clear itab_100.

endselect.

ENDFORM. "get_data

*---------------------------------------------------------------

*将数据排序Produce

*---------------------------------------------------------------

FORM sort_data.

sort itab_100 by bname.

ENDFORM. "sort_data

*---------------------------------------------------------------

*输出数据Produce

*---------------------------------------------------------------

FORM list_data.

call function 'REUSE_ALV_LIST_DISPLAY'

exporting

i_callback_program = g_repid

it_fieldcat = gt_fieldcat[]

I_CALLBACK_USER_COMMAND = 'FRM_ALV_USER_COMMAND'

i_save = 'A'

tables

t_outtab = itab_100.

ENDFORM. "list_data

*---------------------------------------------------------------

*&---------------------------------------------------------------------

*& Form get_fieldcat

*&---------------------------------------------------------------------

*构建fieldcat list & output

*----------------------------------------------------------------------

* --P_GT_FIELDCAT text

*----------------------------------------------------------------------

FORM get_fieldcat USING P_GT_FIELDCAT type slis_t_fieldcat_alv.

data ls_fieldcat type slis_fieldcat_alv.

clear ls_fieldcat.

define hout.

l_pos = l_pos + 1.

clear ls_fieldcat.

ls_fieldcat-col_pos = l_pos.

ls_fieldcat-tabname = 'IT_ITBA2'.

ls_fieldcat-fieldname = &1.

ls_fieldcat-seltext_l = &2.

ls_fieldcat-outputlen = &3.

ls_fieldcat-hotspot = &4.

ls_fieldcat-ddictxt = 'L'.

append ls_fieldcat to p_gt_fieldcat.

end-of-definition.

ls_fieldcat-tabname = 'ITAB_100'.

ls_fieldcat-fieldname = 'BNAME'.

ls_fieldcat-seltext_l = '用户名称'.

ls_fieldcat-ddictxt = 'L'.

ls_fieldcat-outputlen = '12'.

append ls_fieldcat to P_GT_FIELDCAT.

ls_fieldcat-tabname = 'ITAB_100'.

ls_fieldcat-fieldname = 'SPLD'.

ls_fieldcat-seltext_l = '输出设备'.

ls_fieldcat-ddictxt = 'L'.

ls_fieldcat-outputlen = '4'.

append ls_fieldcat to P_GT_FIELDCAT.

ls_fieldcat-tabname = 'ITAB_100'.

ls_fieldcat-fieldname = 'SPLG'.

ls_fieldcat-seltext_l = '参数1'.

ls_fieldcat-ddictxt = 'L'.

ls_fieldcat-outputlen = '1'.

append ls_fieldcat to P_GT_FIELDCAT.

ls_fieldcat-tabname = 'ITAB_100'.

ls_fieldcat-fieldname = 'SPDB'.

ls_fieldcat-seltext_l = '参数2'.

ls_fieldcat-ddictxt = 'L'.

ls_fieldcat-outputlen = '1'.

append ls_fieldcat to P_GT_FIELDCAT.

ls_fieldcat-tabname = 'ITAB_100'.

ls_fieldcat-fieldname = 'SPDA'.

ls_fieldcat-seltext_l = '参数3'.

ls_fieldcat-ddictxt = 'L'.

ls_fieldcat-outputlen = '1'.

append ls_fieldcat to P_GT_FIELDCAT.

ls_fieldcat-tabname = 'ITAB_100'.

ls_fieldcat-fieldname = 'DATFM'.

ls_fieldcat-seltext_l = '日期格式'.

ls_fieldcat-ddictxt = 'L'.

ls_fieldcat-outputlen = '1'.

append ls_fieldcat to P_GT_FIELDCAT.

ENDFORM. "get_fieldcat

*---------------------------------------------------------------------*

* FORM FRM_ALV_USER_COMMAND *

*---------------------------------------------------------------------*

* ........ *

*---------------------------------------------------------------------*

* --> R_UCOMM *

* --> RS_SELFIELD *

*---------------------------------------------------------------------*

*form frm_alv_user_command using r_ucomm like sy-ucomm

* rs_selfield type slis_selfield.

* data:l_mm03_start_sicht(15) type c value 'BDEKLPQSVXZA'.

* case r_ucomm.

* when '&IC1'.

* read table it_itab2 index rs_selfield-tabindex.

* case rs_selfield-sel_tab_field.

* when 'IT_ITBA2-VBELN'.

* check it_itab2-vbeln is not initial.

* set parameter id 'AUN' field it_itab2-vbeln.

* call transaction 'VA03' and skip first screen.

* when others.

* ...

* endcase.

* when others.

* ...

* endcase.

* rs_selfield-refresh = 'X'.

*endform. "FRM_ALV_USER_COMMAND
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: