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
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
相关文章推荐
- Abap/4控制ALV表格(1)
- Abap/4控制ALV表格(2)
- Abap/4控制ALV表格(3)
- Abap/4控制ALV表格(4)
- ABAP 表格控制(Table Control)和 步循环(STEP-LOOP)
- ABAP--SAP是如何控制REUSE_ALV_GRID_DISPLAY函数嵌套调用的返回控制
- Abap/4控制表格控件(1)
- Abap/4控制表格控件(2)
- Abap/4 控制ALV树(1)
- Abap/4 控制ALV树(2)
- abap报表中(ALV或者普通屏幕的定制控制中)如何让列可以使用求和按钮
- ABAP 表格控制(Table Control)和步循环
- Abap/4 控制ALV树(3)
- ABAP 表格控制(Table Control)和步循环
- ABAP 控制ALV单元格编辑后获取新的数值
- CONTROLS: <> TYPE TABLEVIEW USING SCREEN<>.在 ABAP/4 中声明表格 控制
- ABAP的alv控制输入输出到单元格
- ABAP 表格控制(Table Control)和 步循环(STEP-LOOP) . .
- latex 表格如何精细控制行高,行距,行与行之间的距离
- css控制同一个页面的两个表格,一个显示有边框线,而另一个没边框线