SAP报表编辑器(Report Painter)
Report painter 制作费用报表
Report painter 制作费用报表
GR21创建报表库
图1
报表库就是限制了从哪个表中读取数据,SAP有很多自带的报表库,如GRR3显示所有的REPORT PAINTER报表,可以看到成本中心报表库1VK(图2)。
在1VK下面我们可以看到报表1SIP-001(图3),这就是成本中心报表S_ALR_87013611. 实施上CO 中大部分标准报表都是用REPORT PAINTER做的。
创建完报表库后就可以用GRR1创建报表,选择相应的报表库及给新建的报表命名
图
3
图4
以下截图是制作完成后的费用报表. 图5为报表列选择条件,值类型4指实际数据如果需要修改列数值格式,在菜单中选择格式化->列。
图5 图6是行项目的选择条件
图6
如果选中行然后点击展开(图7),可以按特性如成本要素展开报表(图8),因成本要素在行项目作为变量,这样是要某成本要素有值,就会按成本要素展现在报表中。
图7
图8
定义报表的行与列之后,可以在菜单上选择编辑->一般数据选择定义报表的选择条件(进入报表的选择屏幕),如图9
图9
报表制作完成后,保存时会提示输入报告组,可以选择一个已有的报告组或者输入新报告组名称,系统自动生产报告组,创建报告组用GR51。
GRR3运行报表
图10
图11 Report painter 报表运行时报错误
The system issues error message GR 235 with
F98_S_ACELL_WRITE_TO_STRING_LF, ILLEGAL_SIGN_FORMAT. 执行程序 RGRRCORR_T801W后用GR55重新生存报表组。
SAP painter屠夫和方丈
[转帖]Report painter------屠夫我们肯定用过系统提供的CO各模块信息系统中的各种报表比如成本中心报表,下面介绍如何使用Report painter自己建立报表.一天俺跟一个CW顾问探讨如何做Report painter,他说report painter非常简单,我就决定忽优他一下.老屠:你不是说你就是传说中的Report painter杀手吗?你知道如何自定义report painter table,编写report painter增强,指标和关键指标是什么? 四种Set类型怎么用,Set是如何保存的,成本中心组,利润中心组是如何保存的为什么可以作为set,Report painter程序是如何自动产生的……CW:你可怜可怜我,别说了,你比唐僧还能絮叨,我只不过想画两张报表而已,不想被烦死.老屠:那怎么行?为了你将来能挑起中国企业报表制作的重任, 俺一定要仔细说,你一定得认真听.(一).基本概念.首先明白Report painter的几个基本概念,在SPL菜单下可以找到Report painter的相关事务码.(1)报表绘制器(Report Painter)和报表编写器(Report Writer)简单理解,Report Painter是Report Writer的升级版.使用Report Painter的GRR1比Report Writer的G r31要简单的多,不信你使用GR31画几个报表出来看看.(2).集(Set)集合包括基本集|单维集|多重集|指标集,集合顾名思义意思就是报表中用到的一些常量或变量的组合.成本中心组利润中心组科目组等建立后也自动建立一个同名的单维集,组类型分别是‖成本中心组‖,‖利润中心组,‖科目组‖等.接下来会更详细描述集的细节.(3).变量(Variable)非常数动态取得的值就是变量,系统提供了三种变量,值变量|集变量|公式变量.(4).关键指标和基本关键指标回顾下成本中心的计划格式(Tcode:KP65-KP67), 说,基本关键指标定义就是报表书写器的报告表中的值字段的技术描述,这些定义通常是由系统交付的,不能对其进行更改。
SAP ReportPainter 应用指南
SAP ReportPainter 应用指南报表绘制器Report Painter(1).基本概念.如图1,在SPL菜单或相关信息系统目录下都可以找到Report painter的相关事务码, 首先明白Report painter的几个基本概念(1)报表绘制器(Report Painter)和报表编写器(Report Writer)简单理解,Report Painter是Report Writer的升级版.使用Report Painter的GRR1制造报表比Report Writer的GR31要简单的多,不信你使用GR31画几个报表出来看看.(2).集(Set)集(合):顾名思义意思就是报表中用到的一些常量或变量的组合.集的种类: 基本集|单维集|多重集|指标集.注:实际上,成本中心组利润中心组科目组等在建立后就会自动产生一个同名的基本集,如果该组下又有子组,则其自动成为单维集,它们的组类型分别是”成本中心组”,”利润中心组,”科目组”等,你可以使用KSH1建立一个成本中心组,然后使用GS03显示出这个基本集,然后再在该成本中心组下挂一个子组,则其又变成了单维集,其子组下面没有孙组,则该子组成了一个基本集,这些集可直接用在绘制报表中. 简单理解,基本集只包括值和值间隔,单维集则包括基本集和其它单维集.接下来还会有更详细描述集的使用.(3).变量(Variable)非常数动态取得的值就是变量,系统提供了三种变量:值变量|集变量|公式变量.(4).关键指标和基本关键指标回顾下成本中心的计划格式(Tcode:KP65-KP67), 说,基本关键指标定义就是报表书写器的报告表中的值字段的技术描述,这些定义通常是由系统交付的,不能对其进行更改。
但可用附加选择条件把基本关键指标汇总到关键指标。
通常我们并不需要自定义关键指标和基本关键指标,如果你是首次接触Report painter,对这些概念还很陌生,可以先耐心等待一下,在接下来的自定义库时会有更详细描述,将一个比较难懂的技术问题。
SAP简单报表生成工具
SAP简单报表生成工具使用这两个工具只需要少量的数据库知识,不需要程序开发的知识。
下面这个图说明了这两个工具生成列表的过程:一、创建QuickView1、运行TCode: SQVI (路径:工具-ABAP工作台-有用程序-SQVl-快速查看)。
屏幕如下:Qjick Viewer: Initial Screen输入欲创建的QUiCkVieW名称。
比如我想创建“固定资产列表”,则输入名称“FA LIST w,点击u Create w按钮。
2、系统会弹出一个创建对话框。
屏幕如下:输入关于这一张报表的描述,DataSOUrCe有四个选择:表、表连接、逻辑数据库、SAP Query InfoSet在这里,我们选择表连接(即:从多个关联表中取数)。
点击确认按钮。
o3、下面是QUiCkVieW的设计界面:插入五个数据库表ANLA资产主记录ANLB折旧条件ANLC资产值ANLH主资描述ANLZ时间有关资产分配这五个表是有关固定资产的基本表,系统已经设置完整的外键,因此,系统会自动设定表之间的关系。
但是,系统自动增加的表之间的关系是根据插入表的先后顺序而定,这种关系往往是错误的,我们需要对表的链接做出调整。
在本例中,ANLH、ANLZ、ANLB都与ANLA左外链,而ANLC与ANLB内联。
关联表加入完成后,点击返回按钮。
4、下面是QUiCkVieW的主界面3 La/out mode ∣ ◎执行RR 陶右i数据宇段号段信士QjizkView FUlS 7▽ 」表迁接D曲资产主记录段1›用折旧条件O此喀严依字段D Bfl筋产号O Iffl时间楣工资产分14 57 O O2rtle Mustof 尸XASSetSCwninents j List tf Ftx AssetsExpert as ;ABAΓ 隼单至看⅜8 _ 电.Li$t fid. select, l Sort sequence Sdcction fields l Ddto Souicci -T1∣71ΠMSu i ck V i ewer-F i e 1 d -selectionUhoosc the fields youWant to display in thelistTo select, click on the entry inthe Ial∣] e uUnIIUl un Iheright and choose « ."Availables Fields"包含了上一步选择的数据库表中的所有字段。
SAP技术名词
1.MIGO(事务代码)---是物料移动,收货,消耗等的集成例如MB1A(输入发货)、MB1C(输入其他收货)、MB31(按订单收货)的功能;可以做采购入库、入库取消、退货、后续调整(如委外加工等)2.Dynpro程序开发:SAP 为Web Dynpro提供两种开发语言:ABAP和Java,于是就有了Web Dynpro for ABAP 和Web Dynpro for Java。
Web Dynpro采用了一种高级的MVC / Data Binding 架构模式,并且提供非常友好的编程界面。
Web 界面可以使用拖拉的形式进行开发。
由于Web Dynpro运行于SAP NetWeaver平台,该平台在传统Dynpro开发上的优势也被使用的淋漓尽致。
使用Web Dynpro可以非常迅速的开发出企业级的应用程序,开发者只需要关注其业务流程,关于版本管理、质量控制、发布、性能等内容仍然由NetWeaver平台帮助完成。
SAP WEB Dynpro的实例包:Package:SWDP_TEST 里面有很多实例,可供学习。
3.Report(报表)---报表程序的主要作用是从数据库中抓取数据通过整理陈列出来,给企业高层或具有相关需求的人员查看。
如无特殊需求,此类程序一般不需客制screen、menu、title。
报表主要有一下几类:A、ABAP LIST(最简单的一种报表程序,显示在屏幕上的数据及格式都通过ABAP中的WRITE语句实现,开发工具:SE38)B、ALV REPORT(属于报表的一种高级形式,显示出来的报表整洁美观,具有很大的交互功能,屏幕上的数据及格式主要通过系统的FUNCTION实现,开发工具:SE38)C、SAPSCRIPT(属于商务报表,主要应用于商业用途或对外的报表设计,开发工具:SE38、SE71)D、SMARTFORM (属于商务报表,主要应用于商业用途或对外的报表设计,是SAPSCRIPT的升级版,包含了SAPSCRIPT的绝大多数功能,但开发起来比SAPSCRIPT更方便,快捷。
SAPReportPainter报表编制用户操作手册
用户操作手册-FI分卷目录1.前言 .................................................................................................... 错误!未定义书签。
2.操作说明............................................................................................... 错误!未定义书签。
3.主数据维护部分....................................................................................... 错误!未定义书签。
.创建报表库.................................................................................... 错误!未定义书签。
.更改报表库.................................................................................... 错误!未定义书签。
.显示库 ......................................................................................... 错误!未定义书签。
.创建报表....................................................................................... 错误!未定义书签。
.修改报表格式 ................................................................................. 错误!未定义书签。
使用report painter绘制利润报告_91SAP
使用report painter 繪製利潤報告客戶希望使用SAP 直接輸出如下圖所展示的P&L 報告。
因為客戶希望報告中,可以將金額按月分列展示,而以筆者所知,SAP 標準功能暫不支持輸出這樣的格式。
那怎麼辦呢?難道又得麻煩ABAP 幫手?不必,咱FICO 顧問用Report Painter ,輕鬆解決這個問題。
閑話少絮,切入正題。
第一步第一步,,事務碼事務碼::FGI4創建新表單創建新表單。
(FGI5更改更改,,FGI6查看查看))。
FORM TYPE 中,共有三個選項,第一個用于創建基於GL 科目的報告,第二與第三個,分別作用于創建基於AR 與基於AP 的報告。
本例中,我們企圖創建利益報告,於是便選擇第一個,Report for table FAGLFLEXT 。
眾所周知,FAGLFLEXT 是新總賬下的表格。
下面的Structure 則通常選擇Two axes ,暨我們常見的具有column 與row 的表格形態。
SAP_加肥猫 91SAP 赛跑网SAP_加肥猫 91SAP 赛跑网點選CREATE 創建之後,便可看到如上畫面。
在實際操作中,右側的表單應該全部為空白。
首先,點選如圖中所展示的位置,表示對整張表單的全局篩選控制內容:在出現的該畫面中,根據實際的情況,將右邊一些必要的參數,選擇并移到至左邊欄,并對參數作相應的設置。
通常,如圖中黑線框中Record type 必须要,通常设置为0表示实际发生金额。
設置完成,則點擊右下角confirm 以示完成。
SAP_加肥猫 91SAP 赛跑网SAP_加肥猫 91SAP 赛跑网回到初始畫面,雙擊列標題。
讀者諸君在操作時,此時列標題應該亦是空白的。
這時出現的對話框,選擇第一項,表示普通的帶特徵的值。
聽上去很深奧,無需想太多,照做便可。
最上方的 Key Figure ,可以選擇period balance。
裏面還有其他一些選項,或可從字面意思SAP_加肥猫 91SAP 赛跑网SAP_加肥猫 91SAP 赛跑网SAP_加肥猫 91SAP 赛跑网理解,亦可由閣下自行嘗試。
SAP_Report_Painter报表制作权威教程
• 报表制作/绘制器英文为Report Painter,是SAP提供给用 户自定义报表的工具 • Report Painter无需编程基础,简单方便 • Report Painter编制的报表相对比较简单,一般是只是对 从科目中取发生额、余额的报表才使用
表
• ZJM---科目余额和发生额(常用) • GLPCT - EC-PCA---利润中心总表 • CCSS --– 费用(成本中心,、内部订单、项目) • 报表编写器只能从一个表中取数
To attach the transaction to a particular portion in the menu we need to go to Area Menus SE43
F000 is Fin. Acct Info System
After clicking on Change mode click on EXTEND
步骤11—定义报表组
定义报表标题
步骤11—定义报表组
选择该报表组中所包括的报表 一个报表组中可以有多张报表,同样,一张报表也可以分配到 多个报表组中
步骤11—分配报表组
也可以在编制报表时分配到已存在的报表组中,或新建报表组 进入路径见上图
步骤11—定义报表组
如该报表已指定报表组,则可以分配其他报表组,如没有分配报 表组,则在这里输入报表组代码,系统新创建一个报表组 该例是已分配过报表组
步骤10—定义报表抬头
必须在报表保存后才可以定义报表的抬头信息 进入路径见图
步骤10—定义报表抬头
输入报表名称、编制单位、日期等报表抬头信息 如果是日期等可以选择变量或参数来定义
步骤11—定义报表组
进入报表组定义路径
步骤11—定义报表组
SAP Report开发知识转移
确定Change Request号。
创建一支Report程序 程序 创建一支
创建Report(一)。
ABAP程序注释
整行注释
该行第一个字符是*,该行的所有内容都是注释。 例如:* 定义MARA结构的Internal table
半行注释
是以”开始,”之后的内容全部是注释 例如:L_ITAB_A[] = L_ITAB_B[]. “将B中内容赋给A
NEW-PAGE时,可以分页执行TOP-OF-PAGE内容。但 NEW-PAGE将不触发END-OF-PAGE事件。
创建一支Report程序 程序 创建一支
创建Report(三)。
定义程序事件--- END-OF-PAGE事件 END-OF-PAGE. 在定义报表LINE-COUNT时,本事件生效。 根据LINE-COUNT定义的页脚行数,决定是否执行END-OFPAGE事件,每次换页均执行END-OF-PAGE事件。
3代表开始位置,15代表长度是15 。单位是字符,起始 是从1开始。
创建一支Report程序 程序 创建一支
创建Report(二)。
查询条件画面的文本设置---选择文本设置
创建一支Report程序 程序 创建一支
创建Report(二)。
设置查询条件版面
SELECTION-SCREEN BEGIN OF BLOCK …… SELECTION-SCREEN END OF BLOCK. 设置画面区域。 SELECTION-SCREEN BEGIN OF LINE …… SELECTION-SCREEN END OF LINE. 设置画面条件行显示。
创建一支Report程序 程序 创建一支
创建Report(二)。
写sap fs的详细过程
写sap fs的详细过程
SAP FS(SAP Functional Specification)是SAP项目中常用的功能开发说明书,描述了报表的设计和开发,包括字段、排序、筛选、计算等功能。
编写SAP FS的详细过程如下:
1. 确定报表需求和目的,包括报表的内容、格式、展示方式等。
财务报表需要满足财务法规和公司内部要求的标准。
2. 获取SAP系统中的相关数据。
这一步需要对SAP系统的数据结构和表结构有一定的了解,可以使用SAP Query等工具来获取数据,也可以通过ABAP程序编写来实现。
3. 对获取到的数据进行处理和分析,根据需求进行汇总、筛选、排序等操作。
财务报表需要对数据进行分类、计算、比较等操作。
4. 设计报表的样式和格式,包括表格、图表、文本等元素的排版和布局。
设计报表时要考虑其可读性和易理解性,并符合财务报表的标准。
5. 利用SAP提供的报表工具(如SAP Report Painter、SAP Report Writer等)进行报表的设计和生成。
这些工具提供了丰富的报表设计和生成功能,可以帮助开发人员快速、准确地实现各种报表需求。
6. 对报表进行测试和优化,确保其输出结果正确、完整、可读性强。
7. 最后,将报表发布到SAP系统中,供相关人员查看和使用。
需要注意的是,编写SAP FS需要对财务报表的标准和要求有一定的了解,同时需要掌握SAP系统的数据结构和表结构,以及SAP报表工具的使用方法。
建议有经验的SAP开发人员进行开发。
SAP程序编辑常用命令
SAP程序编辑常用命令
在“简单作业选择”界面中可以填写需要查看的作业名称以及作业创建人,然后单击“每鞴”按钮,即可查看作业运行状态二或者在“Job status”栏中选择作业的状态,例如Released(已释放状态j、Readv(准备状态)等也可以通过选择作业的创建时间来查询相应的作业内容,单击“搿执行”按钮,即可进入“作业总览”界面,如图4-38所示。
图4-38”作业总览”界面
在“作业总览”界面中,选择完后台作业后,可以单击“净棒地”按钮释放此作业;或者单击“面”按钮,停止此作业;还可以单击“酋”按钮,删除此作业。
另外,单击“'Cb制£西矗”按钮,可以查看作业的日志;对于已经完成的作业(状态为Complete),可以单击钮进入“输出控制器”界面,从中查看输出的清单,如图4-39所示。
在此界面中选择要查询的假脱机号,然后单击“静”按钮即可。
“输出控制器”界面
程序编辑属于SAP系统开发的一个重要组成部分,SAP系统本身带有ABAP语言编辑器,
可以提供强大的白开发程序功能。
本节介绍程序编辑通常使用的相关命令,一般来说,程序编辑
常用到的命令有以下3个、
(1)程序编辑器命令:SE38。
(2)甬数编辑器命令:SE37:
(31对象浏览器命令:SE80。
4.3.1 程序编辑器命令
程序编辑器是ABAP语言开发的重要工具。
使用此命令开发程序的操作步骤如下。
在命令栏输入SE38命令,进入“程序编辑嚣”操作界面,如图4-40所示。
SAP Report Painter Training
GRR1
GRR2 GRR3 GR34
创建报表
修改报表 显示报表 删除报表
请参考以上事务代码的“业务流程操作文档”(Business Process Procedures - BPP)。
报表制作器
单元总结
您现在应该能够
掌握报表的制作过程
理解报表制作器的适用范围 参考标准报表定义所需报表
报表制作器
基本关键指标
数值型字段。它是报表所需评估的数据。比如:成本、作业数量等。
报表组
同一个库的相似的报表的集合。报表组的所有报表有相同的选择屏幕,并且同时 运行,这样你就有机会在不同的报表间切换。
报表制作器
单元二:流程演示
课程单元 1。主要概念介绍 时间 20分钟
2。流程演示
6。课程总结
50分钟
20分钟
报表制作器
单元目标
在此单元结束时,您将能够:
制作自定义报表
报表制作器
功能概述
为报表选定所需的库
定义报表
1. 2.
定义列 定义行
3.
4.
修改行和列的格式
定义一般数据选择标准
分配报表到报表组 产生报表组 执行报表组
报表制作器
报表制作器
报表制作器
相关的 SAP R/3 事务
事务代码 事务名称
SAP R/3
SAP R/3 v4.7 最终用户培训
报表制作器
报表制作器
课程目标
在此课程结束时,您将能够:
制作自定义报表
报表制作器
课程日程表
课程单元
1。主要概念介绍 2。流程演示 6。课程总结
SAP方丈-RP-报表工具Rport Painter
Report Painter 简要介绍方丈的头发最近是越来月少,回头想想,可是让这些小和尚折磨死了,天天的报表报表。
今天就简要的玩玩SAP的标准工具Report Painter。
也少让我再掉些头发。
一、Report Painter介绍报表编辑器和报表制作器,哎~~~~搞了两个东东,不知道的还以为是个啥子喽~~~~其实很简单,GRR1更像是GR31的升级版本,不信大家就做做实验下。
Oh,god,nnd一看就晕什么集,变量、指标、库。
晕~~~~~~不过我们能用到的最主要的是我们可以通过Tcode:GRCT来自定义库。
不过费那么大力气还如走走捷径~~~~~东北老爷们都“来点干的”。
yeah~二、Report Painter实用招数要说来干的还是得在财务的角度来说,讲来将去的嘛高深的都没有哈(天津人语),不就是一个科目余额的汇总工具吗,啥子,你那画图的东西老子也搞过煞~~~~那WINDWOS 的画图老子都搞出地图来了,你这小画图还有啥子。
哎~~~现在当和尚不好当~~想做FZ那就更别提了。
好了,我们看看这个小画笔到底能做啥。
OFL---科目余额和发生额(常用)GLPCT - EC-PCA---利润中心总表CCSS --–费用(成本中心,、内部订单、项目)报表编写器只能从一个表中取数哇晒~~~~~小图不错哈。
特征就是指我们可以选择一些参数和特性,比如说公司代码,期间,年度等等。
公式是指我们可以通过四则运算,但是现在只能是简单的+-*/。
呵呵~~~~~不过对于对于财务来说已经够用了。
记得上学的时候老师曾经说过认识0-9是个数字吗?我糊涂的答道:认识,老师说行,你可以做会计了。
看来想我也能做会计了,哈哈哈,更何况我还会用四则运算。
强调一下,方向+—就是说100,选上后他就显示-100喽~~~~~~哎,想起我亲爱的老师,上学时候怎么不教我这个,害的我要掉很多的头发。
三、Report Painter报表成果展示本人用这个小图做出来了,资产负债表BS 损益表PL 和现金流量表,费用财务销售费用一大堆表。
SAPReportPainter详解
SAPReportPainter详解SAP Report Painter关于Report Painter,最近又做了些报表。
总是觉得,似乎还有很可观的挖掘空间。
对于格式及一些技巧性的东西,感觉已经比较成熟了。
想想也有些可总结的内容了。
1、格式。
有SAP的标准格式,但如果所用的格式与标准格式有一定的差别,而且用的比较多,不仿拷贝标准格式,在此基础上做些修改,建立自己的格式。
这样做起报表来也方便许多,不需要每次都去修改同一个地方的设置。
2、符号。
原则上,在SAP默认的数据中,借方就是正的,贷方就是负的。
而在中国报表的习惯中,不管借方贷方,正常值就是正的,与正常余额相反的,才是负的。
这样就使财务的报表经常要对符号进行重新设置。
在Report Painter中,可统一设置为无符号,也可在某一单独行设置为与实际值相反的符号。
但列就不能单独设,所有列的符号必须统一。
为了达到某种特殊要求,不得不采用其他办法。
比如,用公式,将某列设为“0-原始值”。
3、隐藏。
有时不需要显示某行或列时,可设为隐藏。
隐藏的行或列与位置无关,当需要显示的时候,可随意将隐藏的行或列插入任意位置。
合计值使用隐藏。
Report Painter的公式项有数量限制,具体数字我记不清楚了。
总之,当要合计的项目太多的时候,一个公式就不能满足要求。
这时可将部分项目用公式设为小计,而小计在报表中如果是不需要的,可以隐藏起来。
这是一个比较折衷的做法。
4、报表格。
中国人喜欢报表有格子,Report Painter默认的报表是没有格子的。
如果一定要加格子,而且要随心所欲地加在任意地方,就在该行加上、下划线。
竖线当然没有问题,每项之间都有格子的。
但如果你想在文本中也加竖格,那就加一个字符“|”。
这个字符在键盘上直接有,加进去后,系统就默认为这是一个竖格。
5、变量。
如果所需报表的要素是变量而不是一个固定的值,需要将该要素的名称也写成变量的时候,可以使用&。
sap水晶报表制作
格式化编辑器-字体
在代码中无法直接更改字体属性,必 须使用ApplyFont()方法; System.Drawing.Font newFont; System.Drawing.FontStyle newFontStyle = System.Drawing.FontStyle.Regular; newFontStyle = newFontStyle | System.Drawing.FontStyle.Bold; newFont = new System.Drawing.Font(obj_FieldObj , obj_FieldObject.Font.Size, newFontStyle); obj_FieldObject.ApplyFont(newFont);
this.CrystalReportViewer1.S electionFormula = "{Hr_Staff.Sex} = '男'";
排序记录
1.使用记录排序专家 2.使用代码排序
//定义排序字段 FieldDefinition FieldDef0 = this.CrystalReportSource1.Rep ortDocument.Database.Tables[" Hr_Staff"].Fields["Age"]; //设置排序字段 this.CrystalReportSource1.Rep ortDocument.DataDefinition.Sor tFields[0].Field = FieldDef0; //设置排序方式 this.CrystalReportSource1.Rep ortDocument.DataDefinition.Sor tFields[0].SortDirection = CrystalDecisions.Shared.SortDi rection.AscendingOrder;
SAP ALV报表编辑
ALV_GRID介绍 (2010-07-08 21:35)分类:ABAP技术ALV_GRID介绍一.ALV介绍The ALV Grid Control (ALV = SAP List Viewer)是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的应用程序中使用.SAP提示: 在SAP的开发项目中,ALV GRID也可以作为修改和创建数据的一种工具,然而,目前这个功能只在实验计划中使用,还没有向客户发布.下面是一个ALV GRID的图片:它包括3大部分,工具栏,标题,用于显示数据的网格控制器.如果有必要,用户可以隐藏标题和工具栏.ALV家族包含3中ALV工具:简易的,两层ALV,分等级连续的列表和树形结构的ALV.二.ALV GRID CONTROL (ALV网格控制器)ALV GRID CONTROL使用了控制器技术以实现艺术性的屏幕显示,象所有的控制器一样,ALV GRID CONTROL通过系统中的一个全局的类提供了方法,以响应它的动作.使用了ABAP的对象以后,列表是通过ALV的一个实例(INSTANCE)来显示的,程序员可以使用ABAP对象的事件管理.三.ALV GRID CONTROL 实例ALV GRID实例的定义,参照CL_GUI_ALV_GRID类data ALV_GRID1 type ref to cl_gui_alv_grid.ALV GRID继承结构:ALV_GRID介绍二(1)四、ALV GRID相关的几个控制结构1.字段目录 [Field catalog]字段目录是用来控制ALV显示的网格中每个字段的属性的,比如字段的顺序,对齐方式,可编辑状态,颜色,等等.常用的控制字段如下:(下面的示例将说明这些字段的使用,参考STRUCTURE LVC_S_FCAT)2 ROW_POS ALV 控制: 输出行 (内部使用)3 COL_POS ALV 控制: 输出列列的位置,第几列,例如1,2,…..4 FIELDNAME ALV 控制: 内部表字段的字段名称字段名称5 TABNAME LVC 标签名称表名,如果是内表,是16 CURRENCY ALV 控制: 货币单位7 CFIELDNAME ALV 控制: 参考的当前单位的字段名称8 QUANTITY ALV 控制: 计量单位9 QFIELDNAME ALV 控制: 参考计量单位的字段名称10 IFIELDNAME ALV 控制: 内部表字段的字段名称11 ROUND ALV 控制: ROUND 值12 EXPONENT ALV 控制:流动表示的指数13 KEY ALV 控制: 关键字段关键字段,前面变蓝色14 KEY_SEL ALV 控制: 可以被隐藏的关键列可以被隐藏的关键列15 ICON ALV 控制: 作为图标输出此列作为图标输出16 SYMBOL ALV 控制: 输出作为符号17 CHECKBOX ALV 控制: 作为复选框输出复选框输出18 JUST ALV 控制: 对齐对齐方式:'R': right justified'L': left justified'C': centered19 LZERO ALV 控制: 输出前导零 X'20 NO_SIGN ALV 控制:输出抑制符号 X',不输出符号21 NO_ZERO ALV 控制: 为输出隐藏零 X',隐藏022 NO_CONVEXT ALV 控制: 不考虑输出的转换退出23 EDIT_MASK ALV 控制: 为输出编辑掩码格式24 EMPHASIZE ALV 控制: 带有颜色的高亮列列的颜色25 FIX_COLUMN ALV 控制: 固定列26 DO_SUM ALV 控制: 总计列值 X',合计ALV_GRID介绍二(2)27 NO_SUM ALV 控制: 没有总计列值 X' ,没有合计28 NO_OUT ALV 控制: 列没有输出 X' ,隐藏此列29 TECH ALV 控制: 技术字段 X'.也是隐藏,但是有点不一样30 OUTPUTLEN ALV 控制: 列的字符宽度输出的长度31 CONVEXIT 转换例程32 SELTEXT ALV 控制: 对话功能的列标识符33 TOOLTIP ALV 控制: 列抬头的工具提示34 ROLLNAME ALV 控制: F1 帮助的数据元素35 DATATYPE ABAP 字典中的数据类型 ABAP 字典中的数据类型36 INTTYPE ABAP 数据类型(C,D,N,...) ABAP 数据类型(C,D,N,...)37 INTLEN 以字节计的内部长度内容的长度38 LOWERCASE 允许/不允许小写字母 X' 允许大小写39 REPTEXT 标题40 HIER_LEVEL ALV 控制: 内部使用41 REPREP ALV 控制: 价值是补充/补充接口的选择标准42 DOMNAME 定义域名43 SP_GROUP 组代码44 HOTSPOT ALV 控制: 单击敏感 X',下面出现下划线,响应单击45 DFIELDNAME ALV 控制: 数据库中列组的字段名称46 COL_ID ALV 控制: 列 ID47 F4AVAILABL 字段有输入帮助吗 X'.此列有搜索帮助48 AUTO_VALUE ALV 控制: 自动复制值49 CHECKTABLE 表名50 VALEXI 固定值存在51 WEB_FIELD ALV 控制: 内部表字段的字段名称52 HREF_HNDL 自然数热点连接的句柄53 STYLE ALV 控制: 样式下面有例子会介绍,比如PUSHBUTTION54 STYLE2 ALV 控制: 样式55 STYLE3 ALV 控制: 样式56 STYLE4 ALV 控制: 样式57 DRDN_HNDL 自然数下拉的句柄58 DRDN_FIELD ALV 控制: 内部表字段的字段名称下拉的字段59 NO_MERGING 字符字段长度 1 相同的值不合并60 H_FTYPE ALV 树控制: 功能类型 (总计,平均,最大.最小, ...)61 COL_OPT 可选列优化的条目62 NO_INIT_CH 字符字段长度 163 DRDN_ALIAS 字符字段长度 164 REF_FIELD ALV 控制: 内部表字段的参考字段名称65 REF_TABLE ALV 控制: 内部表字段的参考表名称66 TXT_FIELD ALV 控制: 内部表字段的字段名称67 ROUNDFIELD ALV 控制: 带有 ROUND 说明的字段名称68 DECIMALS_O ALV 控制: 输出小数位的编号69 DECMLFIELD ALV 控制: 带有 DECIMALS 说明的字段名称70 DD_OUTLEN ALV 控制: 输出字符长度71 DECIMALS 小数点后的位数设置小数的位数72 COLTEXT ALV 控制: 列标题列标题73 SCRTEXT_L 长字段标签74 SCRTEXT_M 中字段标签75 SCRTEXT_S 短字段标签76 COLDDICTXT ALV 控制: 确定 DDIC 文本参考77 SELDDICTXT ALV 控制: 确定 DDIC 文本参考78 TIPDDICTXT ALV 控制: 确定 DDIC 文本参考79 EDIT ALV 控制: 准备输入输出状态.'X'可输入80 TECH_COL ALV 控制: 内部使用81 TECH_FORM ALV 控制: 内部使用82 TECH_COMP ALV 控制: 内部使用83 HIER_CPOS ALV 控制: 层次列位置84 H_COL_KEY 树控制: 列名称/项目名称85 H_SELECT 标识是否可以选择树控制中的列86 DD_ROLL 数据元素 (语义域)87 DRAGDROPID ALV 控制: 拖&放处理拖放对象88 MAC 字符字段长度 189 INDX_FIELD 自然数90 INDX_CFIEL 自然数91 INDX_QFIEL 自然数92 INDX_IFIEL 自然数93 INDX_ROUND 自然数94 INDX_DECML 自然数95 GET_STYLE 字符字段长度 196 MARK 字符字段长度 1ALV_GRID介绍二(3)2.布局控制[layout]布局是用来控制整个ALV的一个布局,比如ALV的标题,是否可编辑,行颜色,列颜色.参照ALV的控制结构[LVC_S_LAYO],以后的例子我将详细介绍如何设置行颜色和列颜色.详细的结构说明字段名描述 Value rangeCWIDTH_OPT 最优化宽度 SPACE, 'X'SMALLTITLE 小标题,如果设置了这个字段,则标题与列标题大小一样 SPACE, 'X'GRID_TITLE 标题,在网格和工具条之间最长70个字符NO_HEADERS 如果被设置,列标题隐藏 SPACE, 'X'NO_HGRIDLN 隐藏水平线 SPACE, 'X'NO_MERGING 禁用单元格合并 SPACE, 'X'NO_ROWMARK 如果被设置,选择列在选择模式为D和A的时候隐藏 SPACE, 'X'NO_TOOLBAR 隐藏工具条 SPACE, 'X'NO_VGRIDLN 隐藏垂直线 SPACE, 'X'SEL_MODE 选择模式 SPACE, 'A', 'B', 'C', 'D'EXCP_CONDS 合计例外 SPACE, 'X'EXCP_FNAME 字段名称带有例外编码最长30个字符EXCP_LED 例外作为 LED SPACE, 'X'EXCP_ROLLN 例外文档的数据元素 SPACE, 'X'CTAB_FNAME 带有复杂单元格颜色编码的字段名称最长30个字符INFO_FNAME 带有简单行彩色代码的字段名称最长30个字符ZEBRA 可选行颜色,如果设置了,出现了间隔色带 SPACE, 'X'NO_TOTLINE 没有总计 SPACE, 'X'NUMC_TOTAL 可以对NUMC字段进行合计 SPACE, 'X'TOTALS_BEF 总计输出在第一行,小计在新的值之前 SPACE, 'X' STYLEFNAME 设置单元格,比如PUSHBUTTON 最长30个字符ALV_GRID介绍二(4)3.打印和排序,过滤控制打印的参数控制请参考结构 [LVC_S_PRNT]排序的参数控制请参考结构[LVC_S_SORT]过滤的参数控制请参考结构[LVC_S_FILT]这里不再一一解释,进入中文版本,里面应该也有解释的,虽然一些不是很清楚.五.编写简单的ALV程序.首先这里就不详细介绍DIALOG的用法了.OO的ALV GRID必须存在于一个容器当中,就是FUNCTION的ALV,其实也是一样的,底层也是使用CL_GUI_ALV_GRID这个类的.首先ALV的显示需要有几个先决条件.1,字段目录,这个是必须的,如果没有这个参数,参考一个数据字典也是可以的,就是参数I_STRUCTURE_NAME.2.存放数据的内表,最好内表的结构和字段目录是一致的,否则可能会出现一些无法预知的错误,当然你说我非要不一样,那也不一定会出现错误.我建议是最好一样的.这2个是必须的,布局的话,应该是可以不设置的,使用默认的就可以了.第一步:创建个SCREEN,在屏幕上创建个容器,CONTAINER.定义变量.DATA:WCL_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,WCL_ALV TYPE REF TO CL_GUI_ALV_GRID .*--- 存放字段目录的内表DATA gt_fieldcat TYPE lvc_t_fcat .*--- 布局结构DATA gs_layout TYPE lvc_s_layo .*----声明需要显示的内表(以SFLIGHT为例)DATA BEGIN OF gt_list OCCURS 0 .INCLUDE STRUCTURE SFLIGHT .DATA END OF gt_list .第二步: 创建ALV这个对象,它的父组件是那个容器.在PBO中写入如下代码:PROCESS BEFORE OUTPUT .MODULE display_alv .创建DISPLAY_ALV的MODULE后,写下如下代码:MODULE display_alv OUTPUT .PERFORM display_alv .ENDMODULE .在FORM DISPLAY_ALV中,判断ALV实例是否存在,如果不存在,则创建:IF WCL_ALV IS INITIAL .CREATE OBJECT: WCL_CONTAINEREXPORTINGCONTAINER_NAME = 'ALV_CON'.CREATE OBJECT WCL_ALVEXPORTINGI_PARENT = WCL_CONTAINER.*-----准备获取字段目录PERFORM prepare_field_catalog CHANGING gt_fieldcat . *-----设置布局PERFORM prepare_layout CHANGING gs_layout .*-----显示ALVCALL METHOD gr_alvgrid->set_table_for_first_display EXPORTING* I_BUFFER_ACTIVE =* I_CONSISTENCY_CHECK =* I_STRUCTURE_NAME =* IS_VARIANT =* I_SAVE =* I_DEFAULT = 'X'is_layout = gs_layout* IS_PRINT =* IT_SPECIAL_GROUPS =* IT_TOOLBAR_EXCLUDING =* IT_HYPERLINK =CHANGINGit_outtab = gt_list[]it_fieldcatalog = gt_fieldcat* IT_SORT =* IT_FILTER =EXCEPTIONSinvalid_parameter_combination = 1program_error = 2too_many_lines = 3OTHERS = 4 .ELSE .*----刷新ALVCALL METHOD gr_alvgrid->refresh_table_display* EXPORTING* IS_STABLE =* I_SOFT_REFRESH =EXCEPTIONSfinished = 1OTHERS = 2 .IF sy-subrc <> 0.*--异常处理ENDIF.ENDIF .方法"set_table_for_first_display"的参数说明参数含义I_BUFFER_ACTIVE 如果方法调用是静态的,可以设置这个标记,这表示,如果每次显示ALV都是相同的字段目录.既然这样,那么字段目录会被放到一个特殊的缓存里,这样加速了ALV的显示I_STRUCTURE_NAME 输出数据参考的数据字典的结构名,例如'SFLIGHT'.如果指定了这个参数,字段目录会自动生成,下面的参数IT_FIELDCATALOG不需要传值.IS_VARIANT 决定布局显示的变式I_SAVE 决定用户是否可以保存变式:'X' 只能保存全局变式'U' 只能保存特定变式'A' 都可以保存SPACE 不可以保存变式I_DEFAULT 决定用户是否可以定义默认的布局:'X' 可以定义默认布局,这个参数是默认的SPACE 不可以定义默认布局IS_LAYOUT 布局参数,传递布局控制的一些信息IS_PRINT 后台打印属性的参数IT_SPECIAL_GROUPS 如果在字段目录中,一些字段通过SP_GROUP被分组在一起.我们就必须为这些组传递一个组的文本内表进去IT_TOOLBAR_EXCLUDING 需要隐藏的标准的按钮的内表IT_HYPERLINK 为每个句柄分配了超连接的内表,LVC_S_HYPE中的HREF存放了超连接的地址,HANDLE指定了句柄,使用这些句柄,你可以在GRID中使用超连接IT_ALV_GRAPHICS 比较复杂,没有用过,意思好象是可以在图表中显示ALV.IT_OUTTAB 输出数据存放的内表,数据都是存放在这个内表里IT_FIELDCATALOG 字段目录IT_SORT 排序的标准IT_FILTER 过滤的标准方法"REFRESH_TABLE_DISPLAY"的参数说明参数含义IS_STABLE 刷新的稳定性,有2个参数,一个是行,一个是列.如果设置了相应的值,那么对应的行,或者列,在刷新的时候,将会保持稳定,就是滚动条保持不动. I_SOFT_REFRESH 这个参数只是在异常情况下被使用,如果设置了这个参数,任何创建的合计,任何排序次序,任何为了显示数据而设置的过滤都将保持不变.这个是非常有意义的.例如:当然你没有修改数据内表里的数据而想刷新ALV,仅仅只是改变一下布局和字段目录.ALV_GRID介绍二(5)第三步,获取要显示数据的字段目录.有两种方式.1.手动创建FORM prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat . DATA ls_fcat type lvc_s_fcat .ls_fcat-fieldname = 'CARRID' .ls_fcat-inttype = 'C' .ls_fcat-outputlen = '3' .ls_fcat-coltext = 'Carrier ID' .ls_fcat-seltext = 'Carrier ID' .APPEND ls_fcat to pt_fieldcat .CLEAR ls_fcat .ls_fcat-fieldname = 'CONNID' .ls_fcat-ref_table = 'SFLIGHT' .ls_fcat-ref_table = 'CONNID' .ls_fcat-outputlen = '3' .ls_fcat-coltext = 'Connection ID' .ls_fcat-seltext = 'Connection ID' .APPEND ls_fcat to pt_fieldcat .ENDFORM .2.半自动的创建FORM prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat . DATA ls_fcat type lvc_s_fcat .CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'EXPORTINGi_structure_name = 'SFLIGHT'CHANGINGct_fieldcat = pt_fieldcat[]EXCEPTIONSinconsistent_interface = 1program_error = 2OTHERS = 3.IF sy-subrc <> 0.*--Exception handlingENDIF.LOOP AT pt_fieldcat INTO ls_fcat .CASE pt_fieldcat-fieldname .WHEN 'CARRID' .ls_fcat-outpulen = '10' .ls_fcat-coltext = 'Airline Carrier ID' .MODIFY pt_fieldcat FROM ls_fcat .WHEN 'PAYMENTSUM' .ls_fcat-no_out = 'X' .MODIFY pt_fieldcat FROM ls_fcat .ENDCASE .ENDLOOP .ENDFORM .ALV_GRID介绍二(6)第四步,设置布局FORM prepare_layout CHANGING ps_layout TYPE lvc_s_layo.ps_layout-zebra = 'X' .ps_layout-grid_title = 'Flights' .ps_layout-smalltitle = 'X' .ENDFORM. " prepare_layout第五步,排除不需要的标准按钮(可选,这个是第一种方法,还有另外一种,在添加自定义的按钮的时候介绍)在你的ALV上,如果你想排除一些你不想要的标准按钮,你可以把需要排除的按钮填入到表UI_FUNCTIONS中,然后传给 set_table_for_first_display方法的参数"IT_TOOLBAR_EXCLUDING".这些按钮的功能码一般都可以通过查看类cl_gui_alv_grid的常量属性中获取到,或者自己加个断点,在after_user_command事件中.如果你要隐藏全部的工具条,你可以把layout中的no_toolbar设置为"X".FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions . DATA ls_exclude TYPE ui_func.ls_exclude = cl_gui_alv_grid=>mc_fc_maximum .APPEND ls_exclude TO pt_exclude.ls_exclude = cl_gui_alv_grid=>mc_fc_minimum .APPEND ls_exclude TO pt_exclude.ls_exclude = cl_gui_alv_grid=>mc_fc_subtot .APPEND ls_exclude TO pt_exclude.ls_exclude = cl_gui_alv_grid=>mc_fc_sum .APPEND ls_exclude TO pt_exclude.ls_exclude = cl_gui_alv_grid=>mc_fc_average .APPEND ls_exclude TO pt_exclude.ls_exclude = cl_gui_alv_grid=>mc_mb_sum .APPEND ls_exclude TO pt_exclude.ls_exclude = cl_gui_alv_grid=>mc_mb_subtot .ENDFORM .ALV_GRID介绍二(7)按照上面的步骤,一个ALV的DEMO基本可以创建了.下面我们将讲述一些功能.功能一:在第一次显示以后,修改字段目录和布局.在运行的时候,很有可能需要在显示之后,需要设置一个新的布局或者字段目录.有下面这些方法去实现.字段目录 : get_frontend_fieldcatalogset_frontend_fieldcatalog布局: get_frontend_layoutset_frontend_layout使用这些方法,你在执行的任何时候,可以获取这些内容,然后修改他们.DATA ls_fcat TYPE lvc_s_fcat .DATA lt_fcat TYPE lvc_t_fcat .DATA ls_layout TYPE lvc_s_layo .CALL METHOD gr_alvgrid->get_frontend_fieldcatalogIMPORTINGet_fieldcatalog = lt_fcat[] .LOOP AT lt_fcat INTO ls_fcat .IF ls_fcat-fieldname = 'PAYMENTSUM' .ls_fcat-no_out = space .MODIFY lt_fcat FROM ls_fcat .ENDIF .ENDLOOP .CALL METHOD gr_alvgrid->set_frontend_fieldcatalogEXPORTINGit_fieldcatalog = lt_fcat[] .CALL METHOD gr_alvgrid->get_frontend_layoutIMPORTINGes_layout = ls_layout .ls_layout-grid_title = 'Flights (with Payment Sums)' .CALL METHOD gr_alvgrid->set_frontend_layoutEXPORTINGis_layout = ls_layout .ALV_GRID介绍二(8)功能二:设置排序条件有时候我们需要使用到数据的排序.这个可以通过填充参考结构LVC_T_SORT创建的内表来实现,这个内表中包含了排序的标准.可以传递给set_table_for_first_display这个方法的IT_SORT参数来初始化一个排序.FORM prepare_sort_table CHANGING pt_sort TYPE lvc_t_sort .DATA ls_sort TYPE lvc_s_sort .ls_sort-spos = '1' .ls_sort-fieldname = 'CARRID' .ls_sort-up = 'X' . "A to Zls_sort-down = space .APPEND ls_sort TO pt_sort .ls_sort-spos = '2' .ls_sort-fieldname = 'SEATSOCC' .ls_sort-up = space .ls_sort-down = 'X' . "Z to AAPPEND ls_sort TO pt_sort .ENDFORM. " prepare_sort_table这有2点特别的说明:1.如果这边排序的字段名,不存在于字段目录中,那将出现DUMP.2.排序以后,垂直的网格中,如果出现相同的内容,就会合并,如果要避免,请在布局中设置"no_merging"为"X" .你可以通过使用方法“get_sort_criteria” 和“set_sort_criteria”来获取和设置排序的标准.ALV_GRID介绍二(9)功能三:设置过滤(和排序类似)ALV的标准按钮中已经有过滤的功能,我们也可以在初始显示的时候就设置过滤条件.我们需要把过滤条件填充到参考表类型"LVC_T_FILT"创建的内表中.过滤条件是类似一个RANGES结构的.然后把这个内表传递给方法"SET_TABLE_FOR_FIRST_DISPLAY"中的参数"IT_FILTER"FORM prepare_filter_table CHANGING pt_filt TYPE lvc_t_filt .DATA ls_filt TYPE lvc_s_filt .ls_filt-fieldname = 'FLDATE' .ls_filt-sign = 'E' .ls_filt-option = 'BT' .ls_filt-low = '20030101' .ls_filt-high = '20031231' .APPEND ls_filt TO pt_filt .ENDFORM. " preparefiltertable我们可以使用"get_filter_criteria" 和"set_filter_criteria"来获取过滤条件和设置过滤条件.ALV_GRID介绍二(10)功能四:选择方式有时候,我们需要选择一些单元格,行或者列,在布局中,有个参数"SEL_MODE"可以设置我们不同的选择方式.下面是参数的介绍.和不同的地方.值模式可能的选择注释SPACE 等同于B 参考B 默认设置'A' 行和列的选择,无法选择单元格多行,多列用户可以使用最左边的选择按钮来选择多行'B' 单选,不可以多选行,不可以多选单元格多行,多列'C' 多选,可以多选行,不可以多选单元格多行,多列'D' 单元格的选择,可以多选单元格多行,多列,任何单元格多选用户可以使用最左边的选择按钮来选择多行注意:1.如果你设置了ALV是可编辑的,可能会覆盖你在布局中选择方式的设置的.2.设置了选择方式以后,我们可以使用很多方法来获取用户的选择.比如"GET_SELECTED_CELLS","GET_SELECTED_CELLS_ID","GET_SELECTED_ROWS","GET _SELECTED_COLUMNS"3.在执行PAI以后,用户所选择的单元格,行或者列可能丢失.你可以在PBO中,使用对应的SET方法来恢复这些选择.ALV_GRID介绍二(11)功能五:颜色设置有的时候,我们需要在ALV网格上绘上一些颜色.可以给特定的行,某个特定的列,某个特定的单元格绘制颜色.如果某列被设置为关键列,这列的颜色将被自动绘制,而不需要我们额外的指定.先介绍ALV里色码.就是颜色编码,4位CHAR型.Cxyz---Color || || 1/0: 相反开/关1/0: 强化开/关其中C是固定的第一位,第二位代表是颜色编码(1到7),第三位是加强的设置,第四位是相反,个人理解,在强化关闭的情况下,相反的作用是背景和字体的变化.颜色编码:x 颜色主要使用在1 Gray-blue headers2 Light gray List bodies3 yellow totals4 Blue-green Key columns5 green Positive threshold value6 red Negative threshold value7 orange Control levelsA)设置列的颜色.我们可以通过字段目录的"emphasize"控制字段来控制某列的颜色.这个字段同样是4位的CHAR型,传入上述的颜色编码.例如:LS_FCAT-EMPHASIZE = 'C701'.如果这列被设置为关键列,就是 LS_FCAT-KEY = 'X' ,那么颜色设置就不会起作用.请注意,自动产生的字段目录中,KEY的设置是自动获取的.B)设置行的颜色为某行设置颜色,是有点复杂的,我们需要在要显示的数据内表中增加一个字段,这个字段不需要在字段目录中存在.同样,这个字段也是4位的CHAR型,符合颜色编码的定义.那我们就需要这样来定义我们的数据内表:DATA BEGIN OF gt_list OCCURS 0 .INCLUDE STRUCTURE SFLIGHT .DATA rowcolor(4) TYPE c .DATA END OF gt_list .很明显,填入颜色编码以后,ALV怎么知道它是我们用来设置颜色的呢,在布局中,有个控制字段"INFO_FNAME",我们可以设置这个字段来告诉ALV,我们的颜色字段是哪个.ps_layout-info_fname = 'ROWCOLOR'.请注意,这个字段随便你起名字,但是记住,一定是数据内表里的字段,而且这边设置的时候一定要大写.你可以在任何时候设置行的颜色,只需要去修改内表里的这个字段的值,但是记得,一定要刷新以后才起作用.C)设置单元格的颜色设置单元格和设置行的颜色,本质上没有什么大的区别,但是定位单元格需要2个参数.我们需要在数据内表中插入一个表类型的字段,这样我们的数据内表就变成了DEEP结构了,不过ALV是可以处理的.不需要担心.插入的这个表类型的类型为"LVC_T_SCOL".里面有3个参数:FNAME告诉我们你需要设置的是哪个字段,如果为空,然后直接在COLOR中设置颜色,就是整行设置为这个颜色.如果具体到某个单元格,必须指定是哪个字段. COLOR字段是用来设置颜色的.NOKEYCOL字段比较关键了.设置为关键列的一些字段,我们的颜色设置可能被覆盖.通过这个字段的设置,可以避免被关键列覆盖.同样,ALV在布局中有个字段"CTAB_FNAME"告诉我们,数据内表中,哪个字段是用来设置单元格的颜色的.DATA BEGIN OF gt_list OCCURS 0 .INCLUDE STRUCTURE SFLIGHT .DATA rowcolor(4) TYPE c .DATA cellcolors TYPE lvc_t_scol .DATA END OF gt_list .DATA ls_cellcolor TYPE lvc_s_scol ....READ TABLE gt_list INDEX 5 .ls_cellcolor-fname = 'SEATSOCC' .ls_cellcolor-color-col = '7' .ls_cellcolor-color-int = '1' .APPEND ls_cellcolor TO gt_list-cellcolors .MODIFY gt_list INDEX 5 .注意:颜色设置中有优先级顺序,他们是单元格--->行--->列.ALV_GRID介绍二(12)功能六:插入超链接插入超链接是通过一个含有超级链接和句柄的表来实现的.这个表类型为"LVC_T_HYPE" ,句柄是一个INT4类型的字段,我们需要在数据显示的内表中,加入这样的字段,来告诉ALV,我们的字段指定的句柄,从而找到对应的超级链接.在字段目录中,WEB_FIELD是用来指定对应的句柄名的.下面举个例子来说明,我们要为字段CARRID,CONNID建立超级链接:首先,内表定义中,我们加入2个句柄字段:DATA BEGIN OF gt_list OCCURS 0 .INCLUDE STRUCTURE SFLIGHT .DATA rowcolor(4) TYPE c .DATA cellcolors TYPE lvc_t_scol .DATA carrid_handle TYPE int4 .DATA connid_handle TYPE int4 .DATA END OF gt_list .第二: 建立一个超级链接内表,里面存放句柄所对应的超级链接.创建的时候注意,它参考的表类型,一定是"LVC_T_HYPE".FORM prepare_hyperlinks_table CHANGING pt_hype TYPE lvc_t_hype . DATA ls_hype TYPE lvc_s_hype .ls_hype-handle = '1' .ls_hype-href = '/carrids/car1' .APPEND ls_hype TO pt_hype .ls_hype-handle = '2' .ls_hype-href = '/carrids/car1' .APPEND ls_hype TO pt_hype .ls_hype-handle = '3' .ls_hype-href = '/carrids/car1' .APPEND ls_hype TO pt_hype .ls_hype-handle = '4' .ls_hype-href = '/connids/con11' .APPEND ls_hype TO pt_hype .ls_hype-handle = '5' .ls_hype-href = '/connids/con12'APPEND ls_hype TO pt_hype ... ..ENDFORM .第三.通过字段目录FIELDCATLOG来指定相应的句柄字段.对于CARRID的field catalogLs_fieldcat-web_field = ‘CARRID_HANDLE’.对于CONNID的field catalogLs_fieldcat-web_field = ‘CONNID_HANDLE’.在方法"SET_TABLE_FOR_FIRST_DISPLAY"中把句柄内表传给参数it_hyperlink。
SAP_ReportPainter_应用指南
SAP ReportPainter 应用指南报表绘制器Report Painter(1).基本概念.如图1,在SPL菜单或相关信息系统目录下都可以找到Report painter的相关事务码, 首先明白Report painter的几个基本概念(1)报表绘制器(Report Painter)和报表编写器(Report Writer)简单理解,Report Painter是Report Writer的升级版.使用Report Painter的GRR1制造报表比Report Writer的GR31要简单的多,不信你使用GR31画几个报表出来看看.(2).集(Set)集(合):顾名思义意思就是报表中用到的一些常量或变量的组合.集的种类: 基本集|单维集|多重集|指标集.注:实际上,成本中心组利润中心组科目组等在建立后就会自动产生一个同名的基本集,如果该组下又有子组,则其自动成为单维集,它们的组类型分别是”成本中心组”,”利润中心组,”科目组”等,你可以使用KSH1建立一个成本中心组,然后使用GS03显示出这个基本集,然后再在该成本中心组下挂一个子组,则其又变成了单维集,其子组下面没有孙组,则该子组成了一个基本集,这些集可直接用在绘制报表中. 简单理解,基本集只包括值和值间隔,单维集则包括基本集和其它单维集.接下来还会有更详细描述集的使用.(3).变量(Variable)非常数动态取得的值就是变量,系统提供了三种变量:值变量|集变量|公式变量.(4).关键指标和基本关键指标回顾下成本中心的计划格式(Tcode:KP65-KP67), 说,基本关键指标定义就是报表书写器的报告表中的值字段的技术描述,这些定义通常是由系统交付的,不能对其进行更改。
但可用附加选择条件把基本关键指标汇总到关键指标。
通常我们并不需要自定义关键指标和基本关键指标,如果你是首次接触Report painter,对这些概念还很陌生,可以先耐心等待一下,在接下来的自定义库时会有更详细描述,将一个比较难懂的技术问题。
SAP图形编辑器(SE51)无法正常显示
SAP图形编辑器(SE51)无法正常显示SAP图形编辑器(SE51)无法正常显示2012-03-17 13:40:10| 分类:BASIS | 标签:屏幕制作器 se51 |字号大中小订阅大家都知道SAP自带了一个图形编辑器(SE51)对屏幕编程很方便,可以在屏幕上对图形控件进行拖拉,再进行相关编程很容易就可以编写出交互式程序。
好了言归正传。
最近我在使用该功能进行屏幕设置时,在屏幕上显示了一串乱码并显示如下错误:Screen painter error:EU_SCRP_WN32 : timeout during allocate / CPIC-CALL ,无法进行屏幕编程。
下面把解决过程记录下来,供大家参考:第一步:说时候,百度有时候真的很给力。
百度虽然不是万能的,但是在现在的生活学习中没有百度真的是万万不能的,有点夸张,但是没百度有时候确实很不方便。
好了先在百度上搜索。
以下是我搜到的解决方案:1、没有安装SAP相关组件develop, 其实在SAP7.10版本该组件已经集成到SAP gui中去了,所以你的版本如果是SAP7.10以上可以肯定不是这个原因2、重新安装sap gui 我试了N遍,卸载-重装;卸载-重启-重装。
都没能解决该问题。
3、有人建议重装系统,我纠结了半天,最终没有试,还好没有重装系统,因为后来的事实证明重装系统是解决不了问题的4、还有人说是在se38中的菜单实用程序SCREEN PAIN TER下的图形格式编辑器打上勾,当然这个勾是必须要打上的。
但是打上勾还是没解决。
下面这个博客对解决问题起了至关重要的作用:/doc/ed4737765.html,/ultraluck/article/de tails/6910553sap gui 编辑屏幕时遇到Screen painter error: EU_SCRP_WN32 :timeout dur ing allocate / CPIC-CALL到SE51去编辑还是出现这个问题,查notes说计算机名字不合法,修改计算机名字后重新启动,问题依旧。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SAP报表编辑器->Report Painter
Concept of Report Painter->概念
这里所指的Report Painter是SAP ECC产品中的一个报表开发工具,中文名为报表绘制器。
经常与Report Painter一同提出的Report Writer是其前身,原应用于SAP R/3产品中,后升级为Report Painter。
Application Scope for Report Painter->适用范围
主要用于财务模块(FICO Module)报表的开发,也可用于少量SD/MM/PP模块的主数据类报表的开发。
使用该工具开发报表,每次需基于系统已有的一个数据库表,因此开发出的报表数据是在一个模块内的,如可开发资产负债表、费用明细报表。
Features of Report Painter->特点
•不需要编程,报表取数逻辑简单,工具使用技巧易于掌握,适用于SAP模块顾问,特别是财务顾问使用。
•取数来源明确。
用于取数的数据库表是已知的。
下表为可用于报表开发的数据库表:
•
•有专业知识要求。
对于主要的应用,财务报表的开发,如开发资产负债表,需具备会计知识的同时需结合企业的会计科目设置情况,进行报表开发。
Major Element of Report Painter->主要元素
•报表(Tcode:GRR1~GRR3/GR34),即开发的对象,主要开发工作在这里完成,如报表行、列各栏位的内容、取数,报表格式等。
•方式(Tcode: GRR4~GRR6),分别定制报表行和列的栏位内容、格式等。
•实用程序,分为目录和传送两部分:
目录(Tcode:GR3L/GR5L),可通过报表或报表组运行开发的报表;
传送(Tcode:GR37/GR57/GRR7…),主要是对开发的报表按照报表组、报表、模块的方式将开发技术数据从系统导出或者导入,实现报表不同client间的传输。
•报表编写器,是Report Painter的主要内容,包括集、变量、指标、标准格式、库、报表、报告组。
集(Tcode:GS01~GS04),以数据库表的一个字段为基础,可设置层级、引用变量,作为报表直接取数的一个来源。
通常一个集指代数据表的一个纬度,可自
定义。
变量(Tcode:GS11~GS14),以数据库表的一个字段为基础,作为报表直接取数的一个来源,可较灵活的自定义。
指标(Tcode:GS32/GS33),对于数据库表所设置的(基本)关键指标及对应附加集,可查询、复制指标。
指标是报表直接取数的一个来源,系统有一套定义好的,也可自定义。
标准格式(Tcode:GR11~GR14),定义开发报表的格式,如页面、行、列、数字格式等。
库(Tcode:GR21~GR24),类似开发报表的原始数据源,开发的报表必须指定唯一的库。
数据库表相关的特性、(基本)关键指标在其所在的库定义。
报表(Tcode:GR31~GR34),即开发的对象,处理界面会转到同上“报表”界面。
报告组(Tcode:GR51~GR55),即报表组,每一个Report Painter开发的报表需将其指定到一个唯一的报表组中,一个报表组可包含多个报表。
报表所在的报表组需属于同一个库。
报表组里面可以设置权限。