SAP报表开发
SAP供应商对账单报表开发说明

供应商对账单报表开发说明
文档控制
⏹版本控制
⏹文档审核
程序类型:❑报表
❑功能性开发❑批处理程序
❑打印表单
❑系统增强
❑用户出口
√接口
❑程序
用到的技术:❑ALV
❑BAPI ❑BDC
❑RFC
❑ALE
❑其他
运行频率:即时每小时每天每周每月其它运行方式:前台手工后台自动
程序名:供应商对账单报表开发说明
TCode:
1概要说明
1.1与此功能开发相关的业务背景
应付会计在进行发票检验前,需要根据对账单报表对已收货的物料数量、价格与供应商进行对账1.2此功能开发的业务需求描述
(1)需要实时获取仓库收货的情况,并允许按照供应商、收货期间等搜索条件进行筛选;
(2)需要对同一订单、同一行项目的同一天收货情况进行合并显示(101、102、122、123移动类型合并;移动类型161、162进行合并)
(3)由于财务的结算周期一般为当月月底结算前一个月的货款,结算依据为上月的收货情况,为了防止当月发生大量退货导致上月货款结算存在多付的风险;因此需要对收货情况进行实时的校验。
2用户通过功能需求详细说明
2.1相关表及字段
2.2选择条件/用户界面
2.3处理逻辑详细描述
供应商对账单报表
开发说明.xlsx
2.4输出界面模板如下
2.5权限要求
说明:分配什么角色:分别按什么字段标准(包括标准或自定义权限对象),控制什么权限。
SAP报表开发指南

SAP报表开发指南目录1选择屏幕 (3)1.1屏幕输入命令 (3)1.2创建元素块 (12)1.3事件及其事件关键字 (15)1.4分页 (19)1.5通过窗口滚动窗口 (19)1.6按页滚动 (20)1.7列表中的颜色 (20)1.8交互式报表 (24)1.9次列表的页眉 (26)1.10列表中的消息 (26)1.11从程序中触发事件 (28)1.12从列表中读取行 (29)1.13在光标位置处读列表 (30)1.14传递列表属性 (30)1.15将光标设置到显示列表行的特定字段 (31)1.16将光标设置到输出窗口中列表的特定行 (31)2报表取数 (31)3数据整理 (32)4WRITE输出 (32)5报表编制的实例 (32)6扩展 (32)6.1屏幕控制 (32)6.2设置下拉框 (33)6.3自制Search Help (34)1 选择屏幕屏幕输入命令在ABAP/4中要自屏幕输入变量数据的内容,使用的命令是 PARAMETERS 及SELECTION-OPTIONSPARAMETER:输入一个变量或字段内容SELECTION-OPTIONS:使用条件筛选画面来输入数据1.1.1 PARAMETERS 语句基本格式可以按照用DATA语句声明字段的方式用PARAMETERS语句声明字段。
用PARAMETERS 语句声明的字段称为参数。
通常,输入字段的所有参数都将出现在选择屏幕上。
系统处理输入屏幕时,报表用户在这些输入字段中键入的值将被分配给相应的参数。
它为基本的输入命令,类似如BASIC的INPUT命令,但无法使用F格式(浮点数)。
1、要声明参数及其数据类型语法:PARAMETERS <p>[(<length>)] <type> [<decimals>].该语句创建参数<p>。
附加项<length>、<type>和 <decimals> 与 DATA 语句相同。
SAP收发存报表开发功能设计说明书

SAP收发存报表开发功能设计说明书SAP收发存报表程序功能详细设计说明书相关的事务代码:MB52 –库存综览显示MB51 –物料凭证清单1.2 自定义表清单及结构定义1.3 输入/输出数据格式定义2输入/输出画面格式设计要求2.1 报表选择屏幕以下是本程序的第一个画面:初始化画面“属性”字段注明: 多选, 单选, 单选钮/, 选框或其他等;2.2 客户化增强功能画面设计(以下是格式化画面设计要求)3程序处理逻辑说明1.生成选择输入画面,用户输入参数;检查权限;2.按用户选择画面参数,选择指定范围的数据,结合如下取数规则,生成报表:3.取数规则:安装项目定义掩码:X-XX NN NN制作项目定义掩码:X-X-XX NN NN4. 如果用户未输入存储位置,则表示是在工厂层次出具报表,取报表记录关键字为:工厂代码/物料编码/WBS元素/商务分类(物料组、物料类型依附于该三个键值),所有数量和金额按此键值汇总;同时对于“收入数量”“收入金额”“发出数量”“发出金额”字段,不统计移动类型311~316;5. 如果用户输入了存储位置,则取值表字段“工厂代码/存储位置/物料编码/WBS元素/商务分类”,相应的取数结果均按物料+工厂+存储位置+WBS元素+商务分类层次累计;对于“收入数量”“收入金额”“发出数量”“发出金额”字段,所统计的移动类型无限制;6. 最终输出方式:如果用户在画面上选择了“输出明细资料”(Y”,则首先按取数规则表的字段格式输出清单;否则不执行明细清单资料的输出;接下来,在同一清单上,再附加如下分类统计表:除了列出上表格式的按料号的明细外,还需要列出如下分类小计报表:附加清单一:按WBS元素分类汇总的收发存明细表(仅对WBS元素非空的记录进行小计并分类汇总输出);附加清单二:按商务分类汇总的收发存明细表(仅列出物料类型为“ZFS1/ZF2”的每一商务分类的小计);附加清单三:按商务分类+项目定义分类汇总的收发存明细表;附加清单四:按评估类分类汇总的收发存明细资料;请依次输出。
sap进销存报表开发逻辑

sap进销存报表开发逻辑SAP进销存报表开发逻辑SAP(Systems, Applications, and Products in Data Processing)是一家德国企业,提供企业资源计划(ERP)软件解决方案。
SAP 的进销存报表是其功能强大的模块之一,它可以帮助企业管理和控制其库存、销售和采购等业务流程。
本文将介绍SAP进销存报表的开发逻辑,以帮助读者更好地理解和应用该模块。
1. 数据采集与整理在SAP系统中,进销存报表的开发首先需要从各个模块中采集必要的数据。
这些数据包括库存数量、销售数量、采购数量、价格和日期等信息。
数据采集完成后,需要进行整理和清洗,确保数据的准确性和完整性。
2. 报表需求分析根据企业的具体需求,需进行进销存报表的需求分析。
这包括确定需要报告的指标、报表的维度(如产品、客户、供应商等)以及报表的时间范围等。
通过对需求的准确分析,可以确保开发出满足企业要求的报表。
3. 报表设计与开发在报表设计阶段,需要确定报表的布局和样式。
可以选择使用表格、图表等形式展示数据,以便于用户理解和分析。
同时,还需确定报表的过滤条件和排序规则,以满足用户对数据的个性化需求。
在SAP系统中,可以通过使用查询功能和报表设计器等工具来进行报表的开发。
通过查询功能,可以从SAP数据库中提取所需的数据。
报表设计器则可以帮助用户自定义报表的布局、样式和计算公式等。
在开发过程中,需要使用SAP提供的ABAP编程语言进行编码,以实现报表的逻辑和功能。
4. 数据计算与分析在报表开发过程中,可能需要进行一些数据的计算和分析操作。
例如,计算销售额、毛利润、库存周转率等指标。
通过对数据的计算和分析,可以帮助企业更好地了解和掌握其进销存情况,为决策提供有效的依据。
5. 报表发布与使用开发完成后,报表可以通过SAP系统进行发布和使用。
用户可以根据权限和需求,访问相应的报表,并进行数据的查询、筛选和导出等操作。
报表的发布和使用需要确保数据的安全性和可靠性,同时也需要保证报表的及时更新和准确性。
SAP QUERY开发报表步骤

前提是查找相应的表:ST05跟踪(最地道),还有就是简单的查看技术信息SQUERY 开发报表步骤:SQ03:创建用户组分配给用户SQ02:选择表,字段,生成功能区,选择用户组SQ01:在用户组下创建查询,选择输出字段,选择字段,基本清单维护,生成程序TCD CODE: SQ03.修改查询范围:菜单:环境->查询区域,选择标准区域(客户特定)进入后输入用户组:点击创建,出现如下窗口,输入用户组描述,点击保存.出现如下画面后点击’分配用户和功能区:输入TCD SQ02,输入名称,在按基础表的表连接栏,填入一个透明表名,点击继续.出现如下画面,点击Insert table,插入其他相关透明表.可以更改表之间的关键字的链接.点击后退出现如下画面,删除字段组02 凭证部分:商品;03 商品评估.双击字段可看到字段名,用来核对是不是透明表中的相应字段.保存,退出,跳出如下窗口:点击’是’点击用户组分配选择用户组,点击保存退出,输入TCD SQ01, 输入查询名,点击创建.检查查询范围:标准区(集团特定)检查用户组:标题会显示如果不是当前用户组,点击“其他用户组”按钮切换用户组选择功能区,点击选择输入标题,点击下一屏幕选择字段组,点击下一页,然后再点击下一屏幕.选择字段,点击下一页,再点击下一屏幕.保存,退出点击基本列表把数据字段加到右边栏中.可以在左下脚修改栏的长度,也可在栏中拖动字段以调整顺序.保存,点击测试.出现查询界面出现最终查询出的数据,点击更改可以隐藏一些字段.以上完成了一个QUERY的创建,用户组内的用户使用SQ01即可访问该QUERY。
如果需要分配一个事务码以供用户使用,还需要进行以下步骤:后退到如下界面查询---其他功能---显示报表名.输入TCD: SE93输入事务代码(自建),点击创建.选择’参数和选择屏幕(报表事务)’,点击继续.点击保存点击保存输入传输请求号,点击继续保存,退出输入事务代码,测试一下,恭喜你,大功告成!。
SAP收发存报表开发功能设计说明书

SAP收发存报表开发功能设计说明书SAP收发存报表程序功能详细设计说明书相关的事务代码:MB52 –库存综览显示MB51 –物料凭证清单1.2 自定义表清单及结构定义1.3 输入/输出数据格式定义2输入/输出画面格式设计要求2.1 报表选择屏幕以下是本程序的第一个画面:初始化画面“属性”字段注明: 多选, 单选, 单选钮/, 选框或其他等;2.2 客户化增强功能画面设计(以下是格式化画面设计要求)3程序处理逻辑说明1.生成选择输入画面,用户输入参数;检查权限;2.按用户选择画面参数,选择指定范围的数据,结合如下取数规则,生成报表:3.取数规则:安装项目定义掩码:X-XX NN NN制作项目定义掩码:X-X-XX NN NN4. 如果用户未输入存储位置,则表示是在工厂层次出具报表,取报表记录关键字为:工厂代码/物料编码/WBS元素/商务分类(物料组、物料类型依附于该三个键值),所有数量和金额按此键值汇总;同时对于“收入数量”“收入金额”“发出数量”“发出金额”字段,不统计移动类型311~316;5. 如果用户输入了存储位置,则取值表字段“工厂代码/存储位置/物料编码/WBS元素/商务分类”,相应的取数结果均按物料+工厂+存储位置+WBS元素+商务分类层次累计;对于“收入数量”“收入金额”“发出数量”“发出金额”字段,所统计的移动类型无限制;6. 最终输出方式:如果用户在画面上选择了“输出明细资料”(Y”,则首先按取数规则表的字段格式输出清单;否则不执行明细清单资料的输出;接下来,在同一清单上,再附加如下分类统计表:除了列出上表格式的按料号的明细外,还需要列出如下分类小计报表:附加清单一:按WBS元素分类汇总的收发存明细表(仅对WBS元素非空的记录进行小计并分类汇总输出);附加清单二:按商务分类汇总的收发存明细表(仅列出物料类型为“ZFS1/ZF2”的每一商务分类的小计);附加清单三:按商务分类+项目定义分类汇总的收发存明细表;附加清单四:按评估类分类汇总的收发存明细资料;请依次输出。
SAP HR模块报表开发

SAP HR模块报表开发目录1. 概述 (3)2. HR开发介绍 (3)2.1 逻辑数据库介绍 (3)2.2 HR相关逻辑数据库 (4)2.2.1 PNP (4)2.2.2 PCH (5)2.3 逻辑数据库的选择屏幕 (6)2.3.1 PNP的选择屏幕 (6)2.3.2 PCH的选择屏幕 (10)3. HR报表开发 (12)3.1 HR相关数据库表 (12)3.2 常用函数和宏 (12)3.2.1 宏RP_PROVIDE_FROM_FRST和RP_PROVIDE_FROM_LAST (13)3.2.2 函数RH_STRUC_GET (13)3.2.3 函数HR_READ_FOREIGN_OBJECT_TEXT (14)3.2.4 函数PYXX_READ_PAYROLL_RESULT (15)4. 其他 (16)4.1 PNP和PCH里的变量 (16)4.2 时间交叉 (17)4.3 权限检查 (18)1. 概述本文介绍了SAP HR模块报表开发的相关经验,结合本人参与项目所做的开发工作,汇总整理了一些在HR开发中需要注意的地方,并介绍了有用的小技巧。
相信本文对初级从事HR开发工作的相关人员有一定帮助。
因为笔者相关经验也在积累过程中,也许本文中会出现一些错误,还望见谅指正。
2. HR开发介绍HR 报表开发主要涉及到逻辑数据库的应用,相关的开发工作也主要围绕着逻辑数据库进行。
2.1 逻辑数据库介绍逻辑数据库则提供另一种选择数据的方式,可以代替SQL语句在数据库中提取数据,供程序操作。
因而,可以认为逻辑数据库是一种报表设计程序中的辅助工具,而不能将其误解为一种可进行数据存储的数据库。
SAP中提供多种类型的逻辑数据库,开发人员也可自行定义数据源。
Transaction Code:SE36或SLDB2.2 HR相关逻辑数据库HR报表开发主要是对逻辑数据库PNP( PNPCE)和PCH的应用。
其中PNPCE是PNP的加强。
SAP收发存报表开发功能设计说明书

SAP收发存报表程序功能详细设计说明书相关的事务代码:MB52 –库存综览显示MB51 –物料凭证清单1.2 自定义表清单及结构定义1.3 输入/输出数据格式定义2输入/输出画面格式设计要求2.1 报表选择屏幕以下是本程序的第一个画面:初始化画面“属性”字段注明: 多选, 单选, 单选钮/, 选框或其他等;2.2 客户化增强功能画面设计(以下是格式化画面设计要求)3程序处理逻辑说明1.生成选择输入画面,用户输入参数;检查权限;2.按用户选择画面参数,选择指定范围的数据,结合如下取数规则,生成报表:3.取数规则:安装项目定义掩码:X-XX NN NN4. 如果用户未输入存储位置,则表示是在工厂层次出具报表,取报表记录关键字为:工厂代码/物料编码/WBS元素/商务分类(物料组、物料类型依附于该三个键值),所有数量和金额按此键值汇总;同时对于“收入数量”“收入金额”“发出数量”“发出金额”字段,不统计移动类型311~316;5. 如果用户输入了存储位置,则取值表字段“工厂代码/存储位置/物料编码/WBS元素/商务分类”,相应的取数结果均按物料+工厂+存储位置+WBS元素+商务分类层次累计;对于“收入数量”“收入金额”“发出数量”“发出金额”字段,所统计的移动类型无限制;6. 最终输出方式:如果用户在画面上选择了“输出明细资料”(Y”,则首先按取数规则表的字段格式输出清单;否则不执行明细清单资料的输出;接下来,在同一清单上,再附加如下分类统计表:除了列出上表格式的按料号的明细外,还需要列出如下分类小计报表:附加清单一:按WBS元素分类汇总的收发存明细表(仅对WBS元素非空的记录进行小计并分类汇总输出);附加清单二:按商务分类汇总的收发存明细表(仅列出物料类型为“ZFS1/ZF2”的每一商务分类的小计);附加清单三:按商务分类+项目定义分类汇总的收发存明细表;附加清单四:按评估类分类汇总的收发存明细资料;请依次输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SAP报表开发概述报表开发是指无屏幕的纯报表开发。
一、报表事件对于纯报表程序,SAP 预定义了一系列的报表事件,包括:INITIALZATION 初始化事件。
常用来填充选择屏幕的默认值。
AT SELECTION-SCREEN OUTPUT 选择屏幕的PBO 事件。
显示选择屏幕之前触发。
AT SELECTION-SCREEN 选择屏幕的PAI 事件。
用户在选择屏幕中执行某些功能后触发。
通常用来接收用户输入,并给用户出错提示。
START-OF-SELECTION 选择开始事件。
选择屏幕处理结束后触发(即点击“Execute”按钮之后)。
END-OF-SELECTION 选择结束时间。
通常在该事件中输出报表。
AT-LINE-SELECTION 交互式报表中,用户选择某行时触发。
AT-USER-COMMAND 交互式报表中,用户选择某个功能时触发。
TOP-OF-PAGE 页眉控制,每个新页面开始时触发。
通常输出页眉、报表标题行。
END-OF-PAGE 页脚控制,在当前页结束前触发。
二、事件处理顺序下面是事件处理次序:一个事件的ABAP 代码,开始于事件关键字,结束于下一个事件关键字。
三、报表的通常格式通常,一个报表程序包含如下几部分:1、程序说明。
包括:程序名称、作者、日期等信息。
2、关键字Report。
3、数据定义。
内表、参数都在这里定义。
4、 Include 部分。
指定包含文件。
5、定义选择屏幕。
利用SELECT-OPTIONS 和PARAMETERS 声明多个选择参数,系统会自动产生一个屏幕号为1000 的选择屏幕。
6、 INITIALIZATION 事件。
完成对选择屏幕参数的默认值填充。
7、 AT SELECTION-SCREEN 事件。
对用户的输入参数作校验。
8、 START-OF-SELECTION 事件。
在这里完成数据处理。
9、 END-OF-SELECTION 事件。
在这里定义报表的输出。
10、如果不是采用ALV 的方式输出报表,而是采用WRITE 语句输出,则还有TOP-OF-PAGE 和END-OF-PAGE 事件。
四、关于选择屏幕定义选择屏幕的常用关键字:1、PARAMETERS….<AS CHECKBOX / RADIOBUTTON GROUP rg1>。
用来定义单值参数。
2、 SELECT-OPTIONS。
用来定义单值、多值、范围参数。
3、 SELECTION-SCREEN。
用来格式化选择屏幕。
定义选择屏幕时,我们会用到SELECT-OPTIONS 这个关键字,该参数能够接受单值、多值、范围,实际上,该参数是一个内表,其结构如下:DATA: Begin of seltab OCCURS 0,SIGN(1), OPTION(2), LOW LIKE f, HIGH LIKE f,END OF seltab.Seltab-SIGN:可选值为I 和E。
I 表示包含(Include),E 表示排除(Exclude)。
Seltab-OPTION:可选值为EQ、NE、GT、LE、LT、BT、NB。
EQ 表示等于,NE 表示不等于,GT 表示大于,LE 表示小于或等于,LT 表示小于,BT 表示在..之间,NB 表示不在…之间。
SELECT-OPTIONS 定义的选择参数能够直接用在OPEN SQL 语句中,例如:Where f IN seltab。
大家想想,一条这样的WHERE 语句,如果用T-SQL 需要多少个AND 和OR?这可是个好东西呀。
为了利用OPEN-SQL 的这个特性,有时候,我们会自己定义这样的内表,自己填充数据,然后在OPEN-SQL 语句中使用,即使我们不需要定义选择屏幕。
我们常用的屏幕格式化语句有:1、在选择屏幕上产生空行:SELECTION-SCREEN SKIP.2、定义屏幕块。
SELECTION-SCREEN BEGIN OF BLOCK blk0 WITH FRAME TITLE text-010.SELECTION-SCREEN END OF BLOCK blk0.如果大家对这个屏幕格式还是不满意,那么,请利用屏幕制作器,尽情地修改屏幕1000 吧。
五、选择屏幕上的文本定义完选择屏幕后,测试运行程序。
此时,我们看到的只是各个参数的名称,通常我们要用文本来替换裸露显示的参数名。
点击菜单“转到->文本元素->选择文本”,屏幕如下:在Text 栏中输入我们希望显示的选择文本。
如果参数定义来源于数据字典元素或数据元素,选中“Dictionary ref.”,则Text 栏自动显示数据字典中定义的文本。
下面是“Text symbols”屏幕,它在程序中通过text-010 调用该文本符号(例如:Write text-010)。
如果开发多语言程序,这些text symbols 就必不可少了。
报表实例财务部在实际业务处理时,有时候需要将会计凭证导出到Excel,而SAP 提供的行项目显示在格式方面不能满足要求,在这一章中,我会将这一简单需求作为例子说明报表的写法。
第一步:运用SE38 或SE80 创建一个报表,报表名称Z_FI_16(其实以Y 或Z 开头的名称都可以啦)。
第二步:写代码,本程序代码如下:=============================================================REPORT z_fi_16 .*&---------------------------------------------------------------------** 声明全局变量*&---------------------------------------------------------------------*DATA: BEGIN OF itab OCCURS 0,nd LIKE bkpf-gjahr, qj LIKE bkpf-monat, pzbh LIKE bkpf-belnr,pzlx LIKE bkpf-blart, jzrq LIKE bkpf-budat, cz LIKE bkpf-xblnr,hb LIKE bkpf-waers, hl LIKE bkpf-kursf, ttwb LIKE bkpf-bktxt,yhm LIKE bkpf-usnam, hxm LIKE bseg-buzei, jzdm LIKE bseg-bschl,zhlx LIKE bseg-koart, tbzz LIKE bseg-umskz, jfdf LIKE bseg-shkzg,je LIKE bseg-wrbtr, bwbje LIKE bseg-dmbtr, zzkm LIKE bseg-hkont,kmmc(50) TYPE c, kh LIKE bseg-kunnr, khmc(40) TYPE c,gys LIKE bseg-lifnr, gysmc(40) TYPE c, cbzx LIKE bseg-kostl,cbzxmc(20) TYPE c, xmwb LIKE bseg-sgtxt,END OF itab.DATA: BEGIN OF ipzbh OCCURS 0,sign(1) TYPE c,option(2) TYPE c,low(10) TYPE c,high(10) TYPE c,END OF ipzbh.DATA: i_count TYPE i,c_tmp(50) TYPE c,i_tmp TYPE i.TABLES: bkpf, bseg.INCLUDE zincform.*&---------------------------------------------------------------------* * 选择屏幕*&---------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK blk0 WITH FRAME TITLE text-010. SELECTION-SCREEN SKIP.SELECT-OPTIONS p_year FOR bkpf-gjahr.SELECT-OPTIONS p_period FOR bkpf-monat.SELECT-OPTIONS p_pzbh FOR bkpf-belnr.SELECT-OPTIONS p_pzlx FOR bkpf-blart.SELECT-OPTIONS p_jzrq FOR bkpf-budat.SELECT-OPTIONS p_hb FOR bkpf-waers.SELECT-OPTIONS p_yhm FOR bkpf-usnam.SELECTION-SCREEN SKIP.SELECTION-SCREEN END OF BLOCK blk0.SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-020. SELECTION-SCREEN SKIP.SELECT-OPTIONS p_jzdm FOR bseg-bschl.SELECT-OPTIONS p_zhlx FOR bseg-koart.SELECT-OPTIONS p_zzkm FOR bseg-hkont.SELECT-OPTIONS p_kh FOR bseg-kunnr.SELECT-OPTIONS p_gys FOR bseg-lifnr.SELECTION-SCREEN SKIP.SELECTION-SCREEN END OF BLOCK blk1.*&---------------------------------------------------------------------** 初始化选择屏上的变量*&---------------------------------------------------------------------* INITIALIZATION.*&---------------------------------------------------------------------** 初始化全局变量,检查用户的输入*&---------------------------------------------------------------------*AT SELECTION-SCREEN.REFRESH ipzbh.SELECT belnr AS lowINTO CORRESPONDING FIELDS OF TABLE ipzbhFROM bkpfWHERE gjahr IN p_year AND monat IN p_periodAND belnr IN p_pzbh AND blart IN p_pzlxAND budat IN p_jzrq AND waers IN p_hb AND usnam IN p_yhm.IF sy-dbcnt = 0.MESSAGE e846(so) WITH '没有符合条件的会计凭证!'.ENDIF.IF sy-dbcnt > 2000.MESSAGE e846(so) WITH '超过2000条会计凭证分录,请缩小查寻范围'.ENDIF.LOOP AT ipzbh.ipzbh-sign = 'I'.ipzbh-option = 'EQ'.MODIFY ipzbh.ENDLOOP.*&---------------------------------------------------------------------** 主要数据处理逻辑*&---------------------------------------------------------------------* START-OF-SELECTION.SELECT gjahr AS nd belnr AS pzbh buzei AS hxm bschl AS jzdmkoart AS zhlx umskz AS tbzz shkzg AS jfdf wrbtr AS jedmbtr AS bwbje hkont AS zzkm kunnr AS kh lifnr AS gyskostl AS cbzx sgtxt AS xmwbINTO CORRESPONDING FIELDS OF TABLE itabFROM bsegWHERE belnr IN ipzbh AND gjahr IN p_year AND bschl IN p_jzdmAND koart IN p_zhlx AND hkont IN p_zzkm AND kunnr IN p_khAND lifnr IN p_gys.LOOP AT itab.SELECT SINGLE monat blart budat xblnr waers kursf bktxt usnam INTO (itab-qj, itab-pzlx, itab-jzrq, itab-cz, itab-hb, itab-hl, itab-ttwb, itab-yhm)FROM bkpfWHERE gjahr = itab-nd AND belnr = itab-pzbh.* 下面几个Perform分别用来获得帐户描述、客户描述、供应商描述、成本中心描述PERFORM get_acctname USING itab-zzkm CHANGING itab-kmmc.PERFORM get_custname USING itab-kh CHANGING itab-khmc.PERFORM get_supplyname USING itab-gys CHANGING itab-gysmc.PERFORM get_ccname USING itab-cbzx CHANGING itab-cbzxmc.MODIFY itab.ENDLOOP.PERFORM display_data.*&---------------------------------------------------------------------* * 行选择时的处理*&---------------------------------------------------------------------* AT LINE-SELECTION.*&---------------------------------------------------------------------* * 用自定义命令按钮时的处理*&---------------------------------------------------------------------* AT USER-COMMAND.*&---------------------------------------------------------------------* * 页眉*&---------------------------------------------------------------------* TOP-OF-PAGE.LOAD-OF-PROGRAM*&---------------------------------------------------------------------* * 页脚*&---------------------------------------------------------------------* END-OF-PAGE.*&---------------------------------------------------------------------* *& 显示数据*&---------------------------------------------------------------------* FORM display_data.TYPE-POOLS slis.DATA: ws_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,ws_fieldgroups_tab TYPE slis_t_sp_group_alv,ws_layout TYPE slis_layout_alv,ws_sortfields_tab TYPE slis_t_sortinfo_alv WITH HEADER LINE,ws_events TYPE slis_t_event.DATA: nn TYPE i VALUE 0.DEFINE hout.nn = nn + 1.ws_fieldcat-tabname = 'itab'.ws_fieldcat-fieldname = '&1'.ws_fieldcat-seltext_m = &2.ws_fieldcat-col_pos = nn.ws_fieldcat-outputlen = &3.ws_fieldcat-datatype = '&4'.ws_fieldcat-do_sum = '&5'.ws_fieldcat-lzero = 'X'.ws_fieldcat-no_zero = 'X'.append ws_fieldcat.clear ws_fieldcat.END-OF-DEFINITION.CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'EXPORTINGpercentage = 100text = '正在进行数据处理,请稍等...'.hout nd '年度' 4 numc ''. hout qj '期间' 2 numc ''.hout jzrq '记帐日期' 10 dats ''. hout xmwb '项目文本' 20 char ''.hout kh '客户' 10 char ''. hout khmc '客户名称' 40 char ''.hout gys '供应商' 10 char ''. hout gysmc '供应商名称' 40 char ''.hout cbzx '成本中心' 10 char ''. hout cbzxmc '成本中心名称' 20 char ''. hout pzlx '凭证类型' 2 char ''. hout pzbh '凭证编号' 10 char ''.hout hxm '行项目' 6 numc ''. hout zzkm '总账科目' 10 char ''.hout kmmc '科目名称' 50 char ''. hout hb '货币' 5 char ''.hout hl '汇率' 8 numc ''. hout jfdf '借方/贷方' 5 char ''.hout je '金额' 11 curr ''. hout bwbje '本位币金额' 11 curr ''.hout cz '参照' 10 char ''. hout yhm '用户名' 10 char ''.hout jzdm '记帐代码' 5 char ''. hout zhlx '帐户类型' 5 char ''.hout tbzz '特别总账标识' 5 char ''. hout ttwb '抬头文本' 20 char ''.ws_layout-zebra = 'X'.ws_layout-get_selinfos = 'X'.ws_layout-colwidth_optimize = 'X'.ws_layout-detail_popup = 'X'.ws_layout-no_keyfix = 'X'.ws_layout-no_totalline = 'X'.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGis_layout = ws_layoutit_fieldcat = ws_fieldcat[]it_special_groups = ws_fieldgroups_tab[]it_sort = ws_sortfields_tab[]it_events = ws_events[]i_grid_title = ''TABLESt_outtab = itabEXCEPTIONSprogram_error = 1OTHERS = 2.ENDFORM. "display_data=============================================================第三步:定义选择屏幕文本。