- 浏览: 173751 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
mahone:
TNS服务是好像是oracle的服务
但是我是使用的 sql ...
如何在两个独立服务器间传输请求内容 -
lyf512616:
您好 我是学生刚开始用SAP,请问转储单是在哪里创建的?
Delivery has not yet been put away / picked (completely) Delivery has not yet be -
mahone:
图挂了
重传吧
Webdynpro ABAP 系列: How to display smartform in WDA -
lovelymangold:
不错,机器配置是?正准备。。。能介绍下吗msn: erp.e ...
SAP NetWeaver 7.01 SR1 SP3 ABAP Developer Edition 安装 -
王三:
ai2ming 写道hints不对不会造成dump的,在ora ...
ABAP 报表程序OpenSQL性能调优
2009-02-23
在PA教程中,对ALV的创建采用了ALV Control Grid的方式, 跟实际开发中的方式有些不同, 经过几周的实际开发,有了些认识,记录下来.
ALV的创建一般有两种方式: 1> 采用function module, 2> OOPS abap
两种创建方式有对应的适用范围,也有一些交集,可以参考下图:
可以看到需要创建ALV list/ hierachical list, Fullscreen grid时可以采用Function module.并且是向后兼容的
而我们创建ALV grid or tree control时则要采用OO的创建方法,在6.4之前也是适用的,但使用OO ALV wrapper to control时,则适用于6.4之后的版本.
NW WAS 与R3 4.6之间还是有较大的改变,整个平台扩展了许多东西, 像web service, OO的大规模使用,而且据说是采用SOA策略的实现,
一 .FM
在使用FM来实现ALV时,对应于fullscreen alv, Type-pool: SLIS非常重要,它定义了FM中的许多参数类型.
1 . ALV是种展现手段,那么它就会涉及到定义数据选择条件,数据获取,数据展现,事件处理等步骤.
1> 在定义选择条件时,可以采用Selection
screen来定义条件,可以定义一个值(PARAMETERS),也可以定义一个范围(SELECTION-OPTIONS),方便的很,如果程序中如
果有动态条件的话,可以考虑采用RANGES来, 并且有个小技巧是采用 ( ) 来动态执行SQL.简单例子如下.
select * into itab
from sflight
where (wheretab)
wheretab 是个行项类型是字符型的内表, 它的每一行就是一个选择条件字符串.
对于这种动态语句尽量避免使用,因为它在运行时才能确定执行语句,并且可以避过编译时的语法检查.
注: SAP标准程序中可以看到这种用法,如FM: SD_PARTNER_READ.
SELECT
* FROM
(object
) INTO
TABLE
l_vbpa WHERE
vbeln = f_vbeln. 它是将选取的数据表动态化了.
2> 数据选取
这里一般对程序性能影响最大,关注点在于对数据库表的访问,内表的操作等方面.
3> 数据展现
field catalog:它是一个内表,对应于每一列的显示选项的技术性信息或额外的信息,像hotspot的定义,这一列显示不显示等.
layout structure: layout for grid,可以定义一些GRID的配置,像求总选项,
4> 事件处理
对于双击事件,hotspot的处理, TOP-OF-PAGE, END-OF-LIST等.
2.相关的FM.
REUSE_ALV_VARIANT_DEFAULT_GET
REUSE_ALV_VARIANT_F4
REUSE_ALV_VARIANT_EXISTENCE
REUSE_ALV_EVENTS_GET: 包含事件名称与事件处理form名称的内表
REUSE_ALV_COMMENTARY_WRITE
REUSE_ALV_FIELDCATALOG_MERGE: 根据ABAP Dictionary中的Transparent table , Structure, View等生成一个field catalog
REUSE_ALV_LIST_DISPLAY: 以list形式显示结果
REUSE_ALV_GRID_DISPLAY: 以Grid形式显示结果
REUSE_ALV_POPUP_TO_SELECT
粗线标识的是最经常使用的.
3. field catalog
1>它是对输出表的字段的描述,定义了字段的输出属性.
比如:
col_pos
字段在表中第几列,
fieldname
输出的字段名,如果此字段是CURR(currency field) ,QUAN(Quantity field) 需要指定相应的CUKY, UNIT字段.设置,Cfieldname
Ctabname
和Qfieldname
Qtabname
no_out
隐藏此列,不输出,但注意用户可以change layout来显示出此列.
hotspot
设置此列的所有cell为热点, 单击即可触发相应function.
do_sum
此列求总
no_zero
只输出有意义的值,空值不输出.
edit_mask
对字段像WRITE般设置格式化.
just
R L 调整对齐方式
调整输出列抬头的文本:文本可以随着用户调整列的宽度而变化,其文本即是在对应data element中定义的,如果需要定制,则可以指定以下字段
seltext_l
(long field label)
seltext_m
(medium field label)
seltext_s
(short field label)
reptext_ddic
(header) Analogous to the Data element main header
Ddictxt
(specify text): You can specify with values 'L', 'M', and 'S',直接指定文本显示长文本,中,短文本, 指定这个字段后则会固定下来,不会随着用户的宽度调整变化.
2> 如何构建
A. 手工构建
创建SLIS_T_FIELD_ALV类型的内表, 行项类型为SLIS_FIELD_ALV 对每个字段的相应属性进行设置后,加入内表.
CLEAR X_FIELDCAT.
X_FIELDCAT-COL_POS = 12.
X_FIELDCAT-FIELDNAME = 'DMBTR'.
X_FIELDCAT-TABNAME = 'I_TAB'.
X_FIELDCAT-SELTEXT_M = 'Local curr'.
X_FIELDCAT-OUTPUTLEN = 12.
X_FIELDCAT-INTTYPE = 'P'.
X_FIELDCAT-JUST = 'R'.
X_FIELDCAT-DO_SUM = 'X'.
APPEND X_FIELDCAT TO I_FIELDCAT.
B. 半自动
调用FM: REUSE_FIELD_CATALOG_MERGE ,传入DDIC中的transparent table, view ,structure的名称,输出field catalog内表.
CALL
FUNCTION
'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
* I_PROGRAM_NAME =
* I_INTERNAL_TABNAME =
i_structure_name = c_alv_structure_name
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_INCLNAME =
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = gt_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS
= 3
如果要对抬头,hotspot等属性进行调整, 可以循环field catalog内表,修改其对应属性.如:
LOOP
AT
gt_fieldcat ASSIGNING
<l_fcat>.
CASE <l_fcat>-fieldname.
WHEN 'flname'.
"修改属性.
ENDCASE.
ENDLOOP.
4. field layout
注意属性 GET_SELINFOS ,它对于REUSE_ALV_GRID_DISPLAY 的输入IS_SEL_HIDE有用,但在WAS 7.0中已不再支持.
5. 事件
ALV触发的事件可用FM: REUSE_ALV_EVENTS_GET 来获得, 输出一个内表,类型是slis_t_event , 行项为slis_alv_event,包含两个字段,一个事件名,另一个是事件处理的FORM名.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = I_EVENTS.
常用事件有:
列表抬头处理: Slis_ev_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
双击,单击 : Slis_ev_user_command TYPE slis_formname VALUE 'USER_COMMAND'
subtotal文本:
Slis_ev_subtotal_text TYPE slis_formname VALUE
'SUBTOTAL_TEXT'.
参考
https://www.sdn.sap.com/irj/scn/wiki?path=/display/Snippets/Display%252bsubtotal%252btext%252bin%252bALV%252bgrid
https://www.sdn.sap.com/irj/scn/thread?threadID=1033110&tstart=0
注意: 如果必须修改subtotal对应的字段的field_catalog属性no_out为X才可以触发这个事件.
6.开发时一般的需求:
一般都会涉及到REUSE_ALV_GRID_DISPLAY 的输入属性
1> ALV variant 保存
is_default
is_save
is_variant
2> 小计, 排序
it_sort属性,可以定义按哪个字段排序并且可以指定按这个字段小计其它可以汇总的字段.
- spos : Sort sequence
- fieldname : Internal output table field name
- tabname : Only relevant for hierarchical-sequential lists. Name of the internal output table.
- up : 'X' = sort in ascending order
- down : 'X' = sort in descending order
- subtot : 'X' = subtotal at group value change
- group : '* ' = new page at group value change ,'UL' = underline at group value change
3> ALV 抬头 页脚
A. 可以采用TOP_OF_PAGE事件触发可以采用方式:
a.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
输出一个内表:
slis_t_listheader 这种方法输出格式固定,不利于对齐
设置输入属性i_logo可输出图片.
b. Grid方式:设置 , 布局容易控制一些.
DATA
: lr_content TYPE
REF
TO
cl_salv_form_element.
DATA
: lr_grid TYPE
REF
TO
cl_salv_form_layout_grid, " top grid definition
lr_flow TYPE
REF
TO
cl_salv_form_layout_flow, " flow for top grid
l_text(500
) TYPE
c
. " showed in top of list
* create a grid
CREATE
OBJECT
lr_grid.
*创建一个单元格
lr_flow = lr_grid->create_flow(
row = 1 "行
column = 1
). "列
* write a blank column
WRITE
(20
) ''
. "可直接输出
plr_flow = plr_grid->create_flow(
row = 1
column = 2 ).
* create text in cell
lr_flow->create_text( text
= pl_text ). "定制cell里的文本
cl_salv_form_content=>set( lr_content ).
B. 设置I_CALLBACK_HTML_TOP_OF_PAGE 属性触发
FORM f_html_top_of_page USING pr_document TYPE REF TO cl_dd_document.
可以加入HTML文本,链接,图片
CALL METHOD pr_document->add_text( text = 'Picture' ).
CALL METHOD pr_document->add_gap( width = 10 ).
CALL METHOD pr_document->add_picture( picture_id = 'ENJOYSAP_LOGO' ).
4> 点击某列,转到另外一个tranaction中,需要设置列字段为hotspot,再在user_command中处理function code: "&IC1
"
it_events属性,传入一个slis_t_event类型的内表.设置相应处理form,如 handle_user_command.
FORM
handle_user_command USING
p_ucomm LIKE
sy-ucomm
ps_selfield TYPE
slis_selfield.
Reference:
https://www.sdn.sap.com/irj/scn/wiki?path=/display/ABAP/ALV+TUTOTIAL+FOR+BEGINERS+WITH+EXAMPLES
这篇文章对FM方式创建ALV讲得非常全面.
发表评论
-
work item 有错不能执行
2011-04-15 22:38 1599在配置好工作流后, 生成的work item 不能执行. ... -
How to record table changes in SAP?
2011-02-28 21:27 1484There are two ways to log the c ... -
Share Object
2010-10-18 22:42 1251支持多用户读,多程序共享数据,并支持锁机制,共享数据存储在 ... -
ALTER TABLE is not possible
2010-05-08 07:51 1985在DDIC中修改某个表的字段的数据类型时出现在此错误, 可以使 ... -
SAP NetWeaver 7.01 SR1 SP3 ABAP Developer Edition 安装
2010-04-25 10:14 2275跟以前的试用版安装一样. 没啥特殊的,只是许可变了. ... -
ICM 的账户问题 SAP ICM login user account
2010-03-18 10:54 2003安装ECC后,点击SAP MMC中的ICM 结点,会弹出一个对 ... -
SWO1: The program "Z00MARA" is not Unicode-compatible, according to its program
2010-03-08 08:14 1546这两天在做SAP Workflow的Demo, 碰到点问 ... -
Error: Die URL enthält keine vollständige Domainangabe
2010-03-01 10:31 2453Error when processing your requ ... -
ABAP 报表程序OpenSQL性能调优
2009-12-28 07:58 3134临上线了,需求还在改,报表也得改,需求满足了,程序性能又不满 ... -
ABAP屏幕编程的一些问题
2009-12-17 11:07 5206简要介绍: 此处的屏幕指的是SAP GUI中的屏幕, 屏 ... -
Smartform小结
2009-12-15 08:12 5952SAP系统中做打印单据用的, 感觉很不好用, 特别是要嵌 ... -
在SAP GUI 中使用Media Player Control
2009-11-30 09:11 2421一种编程语言不可能是万能的,但通过各种接口技术可以集成其它 ... -
Netweaver平台开发web service的一个教程
2009-11-10 19:55 1734Netweaver平台开发web service的一个教程 -
转换例程Conversion Routine
2009-11-04 22:50 1484转换例程Conversion Routine 用于屏幕 ... -
What is the future for ABAPers?
2009-10-30 21:57 1362A client is looking for the fol ... -
关于SAP LUW与Lock Object的一些理解
2009-10-27 22:10 5901为什么会有SAP LUW 与Lock object?SAP系统 ... -
ABAP Object 之 Event
2009-09-08 12:41 1778OO特点是什么,封装,多态,继承. 在当下流行的编程语言中, ... -
wendynpro for abap 配置
2009-08-18 22:41 1119在开发WDA时发现layout editor不能显示出来, 查 ... -
如何在两个独立服务器间传输请求内容
2009-08-10 09:19 2170问题描述: 在一台ECC服务器上做了配置,开发动作后, 想把开 ... -
ABAP动态编程---动态创建数据类型
2009-08-07 09:51 3128代码演示了如何创建stru ...
相关推荐
### SAP ABAP开发中的ALV报表开发教程 #### 一、引言 在SAP ABAP开发中,ALV(Application List Viewer)是一种用于展示数据列表的强大工具,它提供了丰富的功能来满足各种业务需求,例如排序、筛选、分组等。本...
SAP ALV报表开发指南 SAP ALV报表开发指南是SAP系统中一种常见的报表展现形式,可以标准化、简单化R/3系统中的表单,为用户提供一个统一的表单格式以及用户接口。ALV报表既能显示简单表单(SIMPLE LIST),又可以...
### SAP系统中ALV报表详解 #### ALV报表概述 ALV(Application List Viewer)是SAP系统中用于展示列表数据的一种方式,广泛应用于各种报表的设计与开发中。ALV报表能够灵活地处理大量数据,并提供多种显示格式、...
SAP ALV报表开发指南 SAP ALV报表是SAP系统中一种常见的报表展现形式,它可以标准化、简单化R/3系统中的表单,可以为用户提供一个统一的表单格式以及用户接口。ALV既能显示简单表单(SIMPLE LIST),又可以显示有序...
SAP ALV报表是SAP R/3系统中用于数据展示和分析的一种标准工具,全称为ABAP List Viewer。ALV报表的主要目的是提供一个统一、标准化的用户界面,以简化和美化R/3系统中的数据表单。它支持两种类型的报表:简单表单...
通过添加F4增强功能,开发人员可以为ALV报表的各个字段提供下拉列表选项,使得用户可以通过按F4键来选择合适的值,从而增加报表的交互性和数据准确性。 ALV报表F4按钮功能的实现涉及到多个SAP ABAP编程对象和功能,...
ALV报表.abap报表 ALV(Application List Viewer)是一种常用的ABAP报表工具,通过它可以快速生成报表,具有良好的可读性和交互性。本文将通过一个实际的ALV报表示例,详细介绍ALV报表的编写过程和相关技术要点。 ...
ABAP OOALV报表开发,定义变量,选择屏幕定义,创建类,调用函数
### SAP ALV 报表开发模板详解 #### 一、SAP ALV 报表概述 SAP ALV(Application List Viewer)报表是SAP系统中一种常用的报表展示方式,它能够灵活地处理大量数据,并提供多种视图选项来帮助用户更直观地查看和...
### ABAP ALV 报表基础模板(两种) #### 第一种:普通模板 在 SAP 的 ABAP 开发环境中,ALV(Application List Viewer)是一种常用的技术来展示数据列表。本篇文档将详细介绍一种用于创建 ABAP ALV 报表的基础...
abap alv报表实现消消乐小游戏
ALV报表还允许在列表中显示小计和总计,增强了数据分析的能力。 实现ALV报表主要通过调用SAP预定义的函数模块,如`REUSE_ALV_GRID_DISPLAY`和`REUSE_ALV_GRID_DISPLAY_LVC`。开发过程包括以下几个步骤: 1. **定义...
ALV 报表发送邮件升级版1.内表转ALV显示2.内表 转 邮件附件功能齐全 。
ALV报表自动发送邮件程序1.用户选择数据发送邮件2.用户创建JOB自动发送邮件。
在SAP系统中,ABAP List Viewer(ALV)是一个强大的工具,用于简化报表的创建和展示。ALV提供了一种高效的方式,避免了编写大量代码来实现诸如列对齐、排序、过滤、子总计和总计等常见报表功能。通过使用ALV,我们...
ABAP选择屏幕与ALV报表的连接
在SAP系统中,动态树程序Dialog ALV报表是一种用于数据展示和分析的工具,它允许用户以树状结构查看和操作数据。这篇文档可能是关于如何创建和使用一个特定的SAP程序ZFIR_1026,该程序用于生成与财务相关的Dialog ...
ALV 格式的数据是以单元格为单位显示,SAP 提供了一套 ALV 的功能模块,可以对输出报表的样式作修饰,提高报表输出的可读性和功能性。 二、开发 ALV 的基本流程 开发 ALV 的基本流程主要包括:选择屏幕上字段、...
ALV是SAP系统中心的列表标准,可以在ABAP程序中进行报表输出。下面是ABAP-ALV进阶的知识点详解: 一、ALV概要 ALV 全称为 ABAP List Viewer,在 R/3 4.6C 之前,已经正式更名为 SAP List Viewer。ALV 提供给系统...
SAP动态树程序DialogALV报表.docx