ALV相关汇总

原帖地址:http://blog.csdn.net/lijunhai/archive/2007/12/25/1967081.aspx

使用函数显示ALV格式报表

1)定义ALV
type-pools slis. "调用类型组
data: myrepid like sy-repid. "程序为当前程序
data: i_layout type slis_layout_alv. "ALV显示格式内表
data: allfields type slis_t_fieldcat_alv. " ALV显示字段内表
data: i_fieldcat type line of slis_t_fieldcat_alv. "ALV字段信息结构
data: e_status type slis_formname value 'STANDARD_ER01'. "ALV自定义非标准按钮
myrepid = sy-repid.
2)ALV 显示属性
i_layout-colwidth_optimize = 'X'. "自动调整列宽
i_layout-zebra = 'X'. "变换行颜色
2)ALV写法,有两种:
(1)法一,写成块形式
data: pos type i.
define alv_append_field. "定义模块
i_fieldcat-col_pos = pos. "列标志
i_fieldcat-fieldname = &1. "字段名
i_fieldcat-seltext_l = &2. "字段描述
i_fieldcat-no_zero = 'X'. "不显示值为0的数据和前导0
... "其它的fieldcat属性
append i_fieldcat to allfields. "写进显示字段内表
clear i_fieldcat.
pos = pos + 1. "下一列
end-of-definition.
refresh allfields.
pos = 1.
clear i_fieldcat.
alv_append_field 'FLDNAME' 'FLDTXT' .
(2)法二:标准形式
clear i_fieldcat.
i_fieldcat-fieldname = 'FLDNAME'. "字段名
i_fieldcat-seltext_l = 'FLDTXT'. "字段描述
i_fieldcat-no_zero = 'X'.
... "其它fieldcat属性
append i_fieldcat to allfields.
... "循环同上
3)调用ALV显示函数
call function 'REUSE_ALV_GRID_DISPLAY' "statt LIST
exporting
i_callback_program = myrepid
i_callback_pf_status_set = e_status "使用非标准按钮
is_layout = i_layout
i_CALLBACK_USER_COMMAND = 'USER_COMMAND' "非标准按钮动作
it_fieldcat = allfields "显示字段的内表
i_save = 'A' "是否打开保存
tables
t_outtab = itab " 内表名
exceptions
program_error = 1
others = 2. 

注:alv有两种显示格式的function:(1)REUSE_ALV_LIST_DISPLAY(和 write到屏幕一样的样式);(2)REUSE_ALV_GRID_DISPLAY(单 元格样式)。

ALV2:ALV列、行、单元格颜色设置

1 )颜色含义

1 :海蓝;2:浅清;3:黄色;4:浅蓝;5:青色;6:红色;7: 橙色。
(1)首位为主颜色;
(2)次位为辅助颜色;
(3)末位为0时,表示首位数字表为表格的 底色;
末位为1时,则表示以1为底色,首位数字则 表为表格字体的颜色;
末位为其它颜色时,则表示底色为ALV的默 认颜色;
以上三条是本人大概总结出来的规律,本人发 现的现象基本如上,但也不一定全部正确。
其中C200与系统标准ALV底色比较相 似;C410与系统标准关键字颜色比较相似。
2 )列颜色:
设置ALV字 段 fieldcat属性: i_fieldcat-emphasize = &3. " 颜色
fieldcat属性 写入属性内表 allfields:alv_append_field 'WERKS' ' 工厂 ' 'C110'.
C110 :为颜色代码;
3 )行颜色:
(1)在内表itab定义一个字段 line_color来存储颜色;loop内表itab,在需要显示颜色的行其值赋为颜色'C110';
(2)在定义alv显示格式定义:
设置ALV显示layout属 性:i_layout-info_fieldname = 'LINE_COLOR',line_color为内表定义的存储颜色的列名。
4)单元格颜色
单元格颜色属性:LVC_S_SCOL,该 属性为一结构,含三个字段:FNAME(30)、COLOR(颜色结构,含三个字段:col(10)、int(3)、inv(10))、 NOKEYCOL(1)(覆盖码颜色)
ALV 列属性:coltab_fieldname
exa
定义内表itab含字段FLDNAME type LVC_S_SCOL;
定义单元格颜色结构cellcolor type LVC_S_SCOL;
循环内表,当要设置单元格颜色所在的列字段 colname要设置颜色时
fldname-FNAME = COLNAME
fldname-COLOR-col = 2 (颜色代码)
fldname-COLOR-int = 1

fldname-COLOR-inv = 0

ALV3:ALV的html表头

在ALV的function的exporting里添加属性:

I_CALLBACK_HTML_TOP_OF_PAGE = 'HTML_TOP_OF_PAGE
定义form响应上述ALV属性
form html_top_of_page using document type ref to cl_dd_document.
DATA: text TYPE SDYDO_TEXT_ELEMENT.
 text =  titlname
 CALL METHOD DOCUMENT->ADD_TEXT
    EXPORTING
      TEXT      = text
      SAP_STYLE = 'HEADING'.
 "换行写另一标题
 CALL METHOD DOCUMENT->NEW_LINE.
或使用空格
CALL METHOD DOCUMENT->ADD_GAP 
    EXPORTING
      WIDTH = 10. "空格宽10
...

 endform.

ALV4:ALV里显示状态灯

1)在alv引用类型池定义时加入icon,如type-pools: slis, icon.

2)给显示内表itab定义一字段statu存储状态灯;

3)循环内表itab给字段statu值赋:
绿灯:itab-statu = icon_led_green.
红灯:itab-statu = icon_led_red.
4)alv的fieldcat属性i_fieldcat-icon = 'X'.

ALV5:ALV的layout属性

ALV里的显示属性可通过定义i_layout TYPE slis_layout_alv来使用不同的显示风格。可双击“slis_layout_alv”来查看类型组SLIS里的layout属性:

父类
子类
子类
主要属性(部分)
描述
slis_layout_alv
slis_layout_main
 
dummy
 
slis_layout_alv_spec
slis_layout_alv_spec0
no_colhead(1) type c
没有标题
zebra(1) type c
行颜色间隔改变
no_vline(1) type c
没有竖线,由空格代替
no_hline(1) type c
没有横线,由空格代替
cell_merge(1) type c
单元格复制形式
edit(1) type c
可编辑仅为grid
edit_mode(1) type c
编辑模式仅为grid
numc_sum(1) type c
数值型字段汇总
no_input(1) type c
仅输出
no_keyfix(1) type c
不固定关键字列
slis_layout_alv_spec1
Display options 显示属性
 
colwidth_optimize(1) type c
自动调整列宽
no_min_linesize(1) type c
line size = width of the list
min_linesize like sy-linsz
if initial min_linesize = 80
max_linesize like sy-linsz,
Default 250
window_titlebar like sy-title
 
no_uline_hs(1) type c
 
Exceptions 扩展
 
lights_fieldname type slis_fieldname
 
lights_tabname type slis_tabname
 
lights_rollname like dfies-rollname
 
lights_condense(1) type c
 
Sums 合计
 
no_sumchoice(1) type c
不可选择总计
no_totalline(1) type c
没有合计行
no_subchoice(1) type c
不可选择小计
no_subtotals(1) type c
没有小计
no_unit_splitting type c
 
totals_before_items type c
在明细前显示合计
totals_only(1) type c
只显示合计
totals_text(60) type c
合计第一列文本行
subtotals_text(60) type c
小计第一列文本行
Interaction 继承
 
box_fieldname type slis_fieldname
 
box_tabname type slis_tabname
 
box_rollname like dd03p-rollname
 
key_hotspot(1) type c
keys as hotspot
flexible_key(1) type c
key columns movable
group_buttons(1) type c
buttons for COL1 - COL5
get_selinfos(1) type c
read selection screen
group_change_edit(1) type c
Settings by user for new group
no_scrolling(1) type c
no scrolling
Detailed screen 屏幕详细
 
detail_popup(1) type c
弹出显示明细
detail_initial_lines(1) type c
显示初始行
detail_titlebar like sy-title
详细标题栏
Display variants 显示变量
 
header_text(20) type c
标题按钮文本
default_item(1) type c
默认明细
colour 颜色
 
info_fieldname type slis_fieldname
 
coltab_fieldname type slis_fieldname
 
others 其它(略)
 

ALV6:ALV的fieldcat属性

ALV里的字段属性可通过定义i_fieldcat TYPE slis_t_fieldcat_alv来使用字段的属性。可双击“slis_t_fieldcat_alv”来查看类型组SLIS里的fieldcat 属性,slis_t_fieldcat_alv 来自类slis_fieldcat_alv,该类主要包含两个类:slis_fieldcat_main、 slis_fieldcat_alv_spec,主要有以下属性: 

父类
子类
子类
主要属性(部分)
描述
Slis_fieldcat_alv
slis_fieldcat_main
slis_fieldcat_main0
row_pos
输出行
col_pos
列位置
fieldname
 
tabname
标签名称
currency(5)
货币单位
cfieldname
field with currency unit
ctabname
Table with currency unit
ifieldname
initial column
quantity(3)
计量单位
qfieldname
参考计量单位的字段名称
qtabname
Table with quantity unit
round
ROUND 值
exponent(3)
流动表示的指数
key(1)
关键字段
icon(1)
作为图标输出
symbol(1)
输出作为符号
checkbox(1)
作为复选框输出
just(1)
对齐
lzero(1)
输出前导零
no_sign(1)
输出抑制符号
no_zero(1)
为输出隐藏零
no_convext(1)
 
edit_mask
为输出编辑掩码
emphasize(4)
带有颜色的高亮列
fix_column(1)
固定列
do_sum(1)
总计列值
no_out(1)
列没有输出
tech(1)
技术字段
outputlen
列的字符宽度
offset
offset
seltext_l
长文本
seltext_m
中文本
seltext_s
短文本
slis_fieldcat_main1
ref_fieldname
 
ref_tabname
 
roundfieldname
 
roundtabname
 
decimalsfieldn
 
decimalstabnam
 
decimals_out(6)
控制小数点的位数
text_fieldname
 
reptext_ddic
 
ddic_outputlen
 
slis_fieldcat_alv_spec
 
key_sel(1)
field not obligatory
no_sum(1)
do not sum up
sp_group(4)
group specification
reprep(1)
selection for rep/rep
input(1)
input
edit(1)
internal use only
hotspot(1)
hotspot

ALV7:ALV式的弹出窗口

在系统标准程序下,有不少屏幕在检查或过帐时会弹出一个小型的ALV窗口,上面记录着 错误信息,这种ALV弹出式窗口可通过以下方法做成:
(1)定义ALVBOX
data: box_container type ref to cl_gui_dialogbox_container,
     box_alv type ref to cl_gui_alv_grid.
class lcl_event_handler definition.
 public section.
 class-methods:
on_close for event close of cl_gui_dialogbox_container importing sender.
endclass.
class lcl_event_handler implementation.
 method on_close.
    call method sender->free.
    free: box_container, box_alv .
 endmethod.
endclass.
data: ls_fcat type lvc_s_fcat., "ALV的fieldcat属性行
lt_fieldcat type lvc_t_fcat. "ALV的fieldcat属性内表
data: ls_layout type lvc_s_layo. " ALV的layout属性内表
可双击父类lvc_t_fcat、lvc_s_layo来查看所包含的属性
(2)建立ALV对象
    create object box_container
      exporting
        width   = 600      " 窗 口大小
        height = 200
        top     = 120
        left    = 120
        caption = ' 提示信息' "弹 出窗口标题
      exceptions
        others = 1.
set handler lcl_event_handler=>on_close for box_container.
 create object box_alv
    exporting
      i_parent          = box_container
    exceptions
      others           = 1.
(3)输出ALV的fieldcat属性和layout属性
call function 'LVC_FIELDCATALOG_MERGE'
 exporting
   i_structure_name          = 'ZSTAB'   " 输出格式对应的结构
 changing
   ct_fieldcat                = lt_fieldcat "ALV 的fieldcat属性内表
 exceptions
   inconsistent_interface       = 1
   program_error             = 2
   others                    = 3.
注:要事先在se11创建一个和ALV 输出字段一致的结构ZSTAB;
      " 写入fieldcat的属性
loop at lt_fieldcat into ls_fcat.
 ls_fcat- icon = 'X '.
 ...
  modify lt_fieldcat from ls_fcat.
endloop.
"写入layout属性
ls_layout- cwidth_opt = 'X '.
...
(4)调用方法显示ALV窗口
call method box_alv->set_table_for_first_display
 exporting
   i_structure_name              = 'ZBGER' " 输出格式对应的结构
   is_layout                   = ls_layout "layout 属性
   i_default                   = 'X'
 changing
   it_outtab                   = itab " 内表
   it_fieldcatalog               = lt_fieldcat "fieldcat 属性
 exceptions
   others                        = 1.

弹出式窗口另外做法:可使用write到屏幕的办法,如下:

(1)在程序中创建一个screen type 为“方式对话框”的屏幕;
(2)在屏幕输出前,write要输出的数据:
process before output.
 modiule frm_write_out.
(3)在module里写输出到屏幕的代码
module frm_write_out output.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
NEW-PAGE NO-TITLE.
write ...
LEAVE SCREEN.
endmodule.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 ABAP 中,可以通过在 ALV 工具栏上添加按钮来增强 ALV 表的功能。下面是添加 ALV 工具栏按钮的步骤: 1. 创建一个新的 Function Module,例如 Z_ALV_TOOLBAR_BUTTONS。 2. 在 Function Module 中定义一个 TABLES 参数,用于传递 ALV 数据表。 3. 在 Function Module 中定义一个 EVENTS 参数,用于处理 ALV 工具栏按钮事件。 4. 在 Function Module 中使用 FUNCTION MODULE_NAME_ADD_TOOLBAR 添加工具栏按钮。 例如,要添加“汇总”按钮,可以使用以下代码: ``` CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid i_callback_pf_status_set = 'SET_PF_STATUS' it_fieldcat = lt_fieldcat TABLES t_outtab = lt_data EXCEPTIONS program_error = 1 OTHERS = 2. FUNCTION Z_ALV_TOOLBAR_BUTTONS. *"---------------------------------------------------------------------- *"*"Local Interface: *" TABLES *" IT_TOOLBAR STRUCTURE ABAPLIST OPTIONAL *" IT_EVENTS STRUCTURE ABAPLIST OPTIONAL *" IT_LAYOUT STRUCTURE ABAPLIST OPTIONAL *" IT_SORT STRUCTURE ABAPLIST OPTIONAL *" IT_FILTER STRUCTURE ABAPLIST OPTIONAL *" IT_TOTALS STRUCTURE ABAPLIST OPTIONAL *" IT_GROUP STRUCTURE ABAPLIST OPTIONAL *"---------------------------------------------------------------------- DATA: ls_toolbar TYPE stb_button, lt_toolbar TYPE stb_buttonlist. ls_toolbar-function = '&IC1'. APPEND ls_toolbar TO lt_toolbar. CALL FUNCTION 'REUSE_ALV_TOOLBAR_APPEND' EXPORTING i_list_type = 0 TABLES t_toolbar = lt_toolbar. ENDFUNCTION. ``` 在上面的代码中,我们使用 REUSE_ALV_TOOLBAR_APPEND 函数添加一个名为“&IC1”的按钮,并将其添加到工具栏中。 类似地,您可以添加“分类汇总(小计)”,“排序”和“过滤”按钮,以实现相应的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值