毕业设计--SAP二次开发之销售与分售模块子系统的设计与实现

发布时间:2017-08-04 20:40:32   来源:文档文库   
字号:

销售部门在企业的供需链中处于市场与企业的供应接口位置,实现企业的资金转化并获取利润,是为企业提供生存与发展的动力能源。本系统是要解决SAP系统在进行企业管理时,销售部门拿下订单时数据在企业中的传输,及对不同报表不同填法,将不同部门的单一数据,转化为满足差异化的填单数据进行各模块传输的问题

本论文主要描述SAP二次开发项目过程,开发过程包括两部分:在SAP/R3架构下的程序设计和业务处理。在设计方面,系统使用的是现代企业管理软件领域的领先者SAP R/3系统,并采用了三层架构,即显示层、应用层、数据层。每个业务处理过程分成了三个处理部分:初期处理、主处理和终了处理。在主处理中对数据做不同的处理输出,最终完成系统最初的设计要求;在业务方面,主要对开发方法和特点进行研究,并重点探讨在SAP R/3中,如何从销售分售这方面具体业务知识来满足客户需求,链接起各个同模块,让订单在各自的模块中以不同形式进行传递。

通过利用ABAP/4语言对SD(销售与分销)的业务流程上进行扩展开发发现:SAP R/3标准解决方案能适应各种ERP的特殊问题,满足客户提出的针对自己企业的特定需求,具有良好的移植性和扩展性。

关键词SAPABAP/4SD,主处理。



Abstract

Sales department, in the supply interface between market and enterprises of the enterprise supply chain, conversion funds of enterprises and making profit, provides dynamic energy for enterprise's survival and development. When taking business management on SAP system, this system make sales department transmits data when won the order, converting a single data of different departments to the data which fulfill transmission different modules. That is, making different reports have its own filling methods.

This thesis mainly describes the process of secondary development project of SAP. The development process consists of two parts: the SAP/R3 architecture programming and business processing. At the design respect, the system uses a modern enterprise management software leader SAP R / 3 system, using the three-tier structure, which indicates that layer, application layer and data layer. Each business process is divided into three parts: the initial treatment, primary treatment and the end of treatment. In the main processing data is outputted differently to meet the design requirements in the initial system; on business, it mainly studies the development of methods and characteristics and focus on how to meet customer needs with specific business knowledge of sales and distribution and how to link each module to deliver order with different forms in their respective module in the SAP R / 3.

Through the use of ABAP / 4 language to extend business processes of SD (sales and distribution) ,I found SAP R / 3 standard solutions which can adapt to a variety of special problems of ERP, can meet customer specific needs for their own businesses and have good portability and scalability.

KeywordsSAPABAP/4SDPrimary Treatment



1. 绪论

1.1. 论文背景及目的和意义

销售分售作为一个企业获得利润发展自我的重中之重,是每个有自己的产品或服务的企业希望大力发展的部门。在企业间的商业竞争越来越激烈的今天,如何更好的将自己的产品更快速,更准确,更灵活的销售给客户以取得企业的利润,成为了企业更加关注的方向。于是为了更加能让企业管理高效灵活化,对如销售分售管理、财务管理、生产控制管理、等等的需求,在20世纪90年代初Gartner就提出了对企业管理的发展起重要作用的ERP

ERPEnterprise Resource Planning)──企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。作为知识经济的典型产物ERP可以成为企业信息化建设的核心组成部分,它的优势不仅仅在于帮助企业建立一套信息化管理系统,更重要的是它代表当今世界最先进的现代管理思想和方法,通过它达到业务重组、组织重组和管理重组,尽快改变企业传统管理粗放、落后的局面,进而建立一套符合市场经济体制要求的现代企业管理模式。ERP帮助公司实现全球化的管理,获得成功的管理经验,所以使用ERP已成为现代企业发展的必然趋势。

ERP中将销售放入了后勤系统的大类,但是在其它的模块中也不乏与销售会有一定的联系,总的来说销售分售管理包括有:

()分销管理

销售的管理是从产品的销售计划开始,对其销售产品、销售地区、销售客户各种信息的管理和统计,并可对销售数量、金额、利润、绩效、客户服务做出全面的分析,这样在分销管理模块中大致有三方面的功能。

1、对于客户信息的管理和服务

2、对于销售订单的管理

3、对于销售的统计与分析

()库存控制

用来控制存储物料的数量,以保证稳定的物流支持正常的生产,但又最小限度的占用资本。它是一种相关的、动态的、及真实的库存控制系统。它能够结合、满足相关部门的需求,随时间变化动态地调整库存,精确的反映库存现状。

()采购管理

确定合理的定货量、优秀的供应商和保持最佳的安全储备。能够随时提供定购、验收的信息,跟踪和催促对外购或委外加工的物料,保证货物及时到达。建立供应商的档案,用最新的成本信息来调整库存的成本。

基于以上的背景和SAP中的SD模块能完成和实现的功能,本次论文主要是想通过学习SAP R/3系统,研究如何将卓越的管理思想和计算机技术结合起来完成报表开发的主要技术和方法。



2. 相关知识简介

2.1. SAP 简介

SAP起源于Systems Application Products in DATA processing。它既是公司名称,又是其ERP Enterprise-wide Resource Planning)软件名称。 作为公司它成立于1972年,总部位于德国沃尔多夫市,是全球最大的企业管理软件供应商、第三大独立软件供应商、全球领先的协同电子商务解决方案供应商。然而作为ERP思想的倡导者及解决方案的先驱,它可以为各种行业、不同规模的企业提供全面的解决方案。

SAP发展至今已经推出了很多产品,像早期的RF系统后来被命名为R/1系统,1979年用于大型机的R/2系统,1992年的R/3客户机/服务器系统,1996年最新版R/3系统,以及1999年的mySAP.com协同化电子商务解决方案。在这些产品中,R/3产品是SAP的主打产品用于分布式客户机/服务器环境的标准ERP软件,主要功能模块包括:销售和分销、物料管理、生产计划、质量管理、工厂维修、人力资源、工业方案、办公室和通信、项目系统、资产管理、控制、财务会计。

2.2. SAP R/3 介绍

2.2.1. SAP R/3业务模块

SAP R/3以模块化为思想,分模块管理,它们既可以单独使用,也可以和其它解决方案相结合。在SAP R/3系统中有FICOMMSDPPHR等几个基本模块,大体上分为财会、后勤和人力资源管理三大部分。这些模块既相互独立,又内在联系,互相影响,共享企业内部资源,如下图:

2.1 SAP R/3业务模块图

下面是它们的基本功能:

(1)FI 财务会计

主要完成应收、应付、总帐、合并、投资、基金、现金等功能。

(2)CO管理会计

管理会计就是管理企业的利润及成本中心,产品成本、项目会计、获利分析等。

(3)PP 生产计划控制

企业可以通过工厂数据、生产计划、MRP、能力计划、成本核算等一系列操作获得各种制造类型的全面处理信息。

(4)SD销售与分销

此模块主要完成销售计划、询价报价、定单管理、运输发货、发票等操作。

(5)MM 物料管理

主要完成采购、库房管理、库存管理、MRP、供应商评价等功能。

(6)HR 人力资源管理

主要完成对薪资、差旅、工时、招聘、发展计划、人事成本等方面的管理。

2.2.2. SAP R/3系统特点

模块化:R/3中各模块即可独立存在,也可与其它模块一起给企业带来更好的经济效益。

功能性:R/3的模块化就导致其功能性非常强,其中的模块囊括了全部所需业务功能。

界面友好:统一的图标与图形符号简化了人机交互时的操作与难度。

灵活性:由于R/3系统中方便的裁剪方法,所以R/3相对于同一软件来说更具有灵活的适应性。

高效益低成本:R/3高度集成化的数据处理,使得企业在竞争中占有信息优势。

2.3. SAP开发语言ABAP/4

SAP最初开ABAP/4(高级商业应用程序设计)语言仅为内部使用,为应用程序员提供优化的工作环境 。经过不断的改进和修改以满足商业领域的需要。现在ABAP/4 已成为 SAP 开发所有自己的应用程序的仅有工具。

SAP 客户用ABAP/4 进行其自身开发。这样的开发对R/3 标准解决方案适应特殊问题非常重要。

ABAP/4 开发工作平台包含所有用于创建和 维护ABAP/4 程序的工具 ABAP/4 的可解释特性 使其易于生成、测试并运行程序的中级版本,以便将来生 成最终版本 。此过程也叫做早期原形处理,意味着您不必丢弃中级版本。

ABAP/4 是第四代支持结构化程序设计的语言。它合并了所有通常的控制结构和模块化概念。

2.4. EDI的概念

为在项目中经常看到以EDI为开头的流程命名,不太理解是什么意思最后查询了资料才知道:

EDI是英文Electronic Data Interchange的缩写,中文可译为电子数据互换称作电子资料联通。它是一种在公司之间传输订单、发票等作业文件的电子化手段。它通过计算机通信网络将贸易、运输、保险、银行和海关等行业信息,用一种国际公认的标准格式,实现各有关部门或公司与企业之间的数据交换与处理,并完成以贸易为中心的全部过程,它是20世纪80年代发展起来的一种新颖的电子化贸易工具,是计算机、通信和现代管理技术相结合的产物。国际标准化组织(ISO)将EDI描述成将贸易(商业)或行政事务处理按照一个共认的标准变成结构化的事务处理或信息数据格式,从计算机到计算机的电子传输。而ITU—T(原CCITT)将EDI定义为从计算机到计算机之间的结构化的事务数据互换。又由于使用EDI可以减少甚至消除贸易过程中的纸面文件,因此EDI又被人们通俗地称为无纸贸易



3. SD业务模块分析及其需求

在经过上面对SAP R/3系统整个业务模块进行了全面的概述和了解之下,现在开始着重理解一些关于此次论文所涉及的SD(销售与分销)业务模块的一些知识。这些相关的业务知识是编程中的思想,只有对他们有了一定的认识,编程时遇到的很多困难就会迎刃而解。

3.1. SD 概述

SD(Sales and Distribution)模块,中文名称为销售与分销模块。SD模块处理有关销售、装运、单据开具的任务。它提供的销售支持有:对有关销售线索和竞争者活动的信息进行管理的工具,销售信息系统还能提出关于市场趋势的早期警告。如果顾客发出一份订单,SD模块能够从数据库中抽取顾客地址、销售活动和信用限额等信息。

SD模块提供使用方便的工具来管理潜在客户探访、询价、报价、市场推广、竞争者及他们的产品信息。销售和市场推广人员在任何时候都可以访问这些数据以进行销售活动或直接给客户寄递资料。不仅可以利用销售支持功能更有效地进行销售流程和提高对现有客户地服务水平,还可以用来识别新客户来源。

SD模块还能与物料管理生产计划模块一起,检查原材料是否可以获得,估计出这订单的最早可能交货期。SD向员工提供有关到期应该发货的订单的信息。它和物料管理模块一起,从仓库中提出产成品,并且支持有关包装和生成装运单据的活动。一旦产成品发出,SD便自动开具单据,财务会计与控制模块马上就能获得这个信息。

3.2. SAP SD模块的系统组成部分

SD模块中,其系统架构所含的具体内容有:销售管理、装运管理、开票管理、主数据管理以及销售信息系统。

3.1 SD 模块组成

以下将一一介绍SD模块中的5个组成部分:

3.2.1. 销售管理

任何组织的销售部门都需要开展广泛的销售活动,这些活动从接受客户询价、处理报价申请、开具报价单和销售订单到产品/服务定价、信贷和产品可用性检查等。这些工作中任何一步稍有疏忽都可能造成订单的丧失、公司收入损失、甚至损害与客户的良好关系。

因此,一个好的销售管理体系,应该是各项进展平稳、一个环节和下一个环节有序衔接,彼此信息畅通及时,销售数据的输入减至最少而误差则被彻底消除。SAPSD模块就可以帮助企业做到这一点,尤其是针对大型企业的销售行为,SD模块中的销售管理具备了齐全的功能,多种订单录入方式大大降低了企业销售行为中的原始数据录入工作量和销售信息出错率,先进的信贷管理能力可使企业的销售风险减至最小,而精细的定价又可以保持销售工作的灵活性和竞争性,使用SD模块将有效提高销售工作的效率和对客户的响应速度。

SD模块的销售管理功能支持对客户询价的响应、对报价和销售订单的处理与监控、对产品或服务的可用性检查、拟定交货计划、对产品或服务的多种定价模式的设定以及对客户信用额度的检查、监控和更新等,更重要的是SD还能灵活支持退货、换货等业务需求。

3.2.2. 装运管理

装运是供应链中的基本环节。装运部门的主要任务是确保对用户的服务,将准确的货物、准确的数量在准确的时间内以准确的方式装运和发送,在此过程中发生的装运成本是整个企业后勤成本中的主要部分。所以靠SAP SD模块提供的灵活装运处理,可帮助企业提高总的成本效益且变得更有竞争能力。

  在SD模块的装运处理中,系统可通过跟踪与用户的总协议、跟踪对物料的具体要求,或是根据对每一订单所规定的条件等,事先作出交货过程中的所有决策,从而使整个装运过程更趋合理,且基本实现了全自动化;只有在发生特殊情况下,这些决策才需要一定的人工干预。

  SD模块的装运活动具体包括:计划并监督装运过程每步工作的工作量、监控产品可用性、处理延期订单、处理分拣/包装、打印并传递装运凭证、跟踪并更新出货状态等。

3.2.3. 开票管理

出具发票是整个销售和分销活动中的最后一环。SAPSD模块开票管理支持以下功能:

(1)自动或手工开具发票:根据货物和服务而发出的发票、根据相应的请求而发出的借项和贷项凭单、或开具形式发票等

(2)支持订单、交货与发票之间的一对一、一对多或多对一等多种灵活形式

(3)取消出具发票事务

(4)回扣的发出

(5)传递过帐数据到财务会计(FI)模块

3.2.4. 主数据管理

主数据是SAP系统运行的基础,它的数据结构的定义对系统的管理、条件的区分、产生报表的格式等等有深远的影响,因此在ERP项目中通常都要求极为慎重而小心地对待主数据的设置和维护工作。

SAP SD模块中的主数据主要包括:

对业务伙伴的主数据设置,通常业务伙伴包括:售达方、送达方、出具发票方和付款方等类型

对产品或服务价格主数据的设置,包括净价格、折扣和附加费、运费以及税等

对销售物料主数据的设置,通过对销售的产品或服务、销售品的仓库等方面的数据全面管理销售物料

3.2.5. 销售信息系统(SIS

SAP SD模块中的销售信息系统是对销售数据进行分析、产生报表的工具,属于LISSAP后勤模块信息系统)的一部分,其功能包括:标准分析、可变分析、计划分析等。

销售信息系统允许收集、合并和使用销售与分销活动中任何类型的数据,从客户、产品/服务、分销渠道,针对订货量、退货量、收款等进行性能评估。借助研究实时数据并将它与计划值比较,使现场销售活动更趋于及早决断,随后采取行动解决问题或充分利用开发机遇。用户可以迅速从SD大量数据中筛选出最重要的信息,并且准确地加工出各岗位所需要的信息。

SAPSD模块灵活和完备的功能,赢得了业界的一致好评,曾有专业机构叙述这一SAPSD模块“是世界级的,甚至可以支持最富挑战性的行业”。

3.3. 业务需求

3.3.1. 业务需求流程

每一个模块都不可能是独立于任何其它模块,因为公司是个整体。所以SD 的模块也是和其它ERP业务模块有很大联系的,同样每个程序写出来也是为其它程序服务或者从其它程序得到需要处理的数据。下图就是从业务上这本程序的需求流程:

3.2 整体业务需求流程

3.3.2. 客户需求

在现代的商业多元化时代,每个企业都可能存在多样化的业务,在这些业务中,大部分的业务是普遍的、标准的,在SAP提供功能中能完全将这些业务的流程展现出来,并提供强大的功能来帮助企业快速、简便、安全地完成这些业务。但许多企业也有着一些特殊的业务,这些业务不能用SAP的标准功能来实现,所以需要在SAP中对企业的特殊业务进行程序开发,以满足企业在业务上的需要。所以SAP的二次开发也显得如此重要。

因为项目是整体中连接的部分而且同时客户提出了一些特殊需求:在数据确认可以一用ALV预览数据,如果需要订货单的确认则要讲确认的订单信息写入文件中。

所以这里根据客户的需求概括出一张需求表:

3.1 客户需求信息收集

NO.

客户需求调研问题

客户要求记录

1

程序运行的时间?

1分钟之内完成

续表3.1 客户需求信息收集

NO.

客户需求调研问题

客户要求记录

2

程序运行状态

可在前台输出 批量处理需要在后台完成

3

画面选择的要素?

订货单的处理日期,文件输出的物理文件名,和相对应的逻辑路径;针对不通用户的radio buttons按钮。

4

处理的要件?

数据的显示,数据库的修改

5

数据存在性检查?

数据存在:显示。

不存在: 报出错误信息。

7

操作权限有无要求?

8

最后的结果表示方式?

ALV 一览画面。

文件的输出。

输出文件时:同时显示程序执行时抽出的数据,更新的数据库数目,输出的数目。

失败时: 程序下方显示红色异常终了消息。

9

数据修改失败时,立即停止还是继续操作?

停止,并回滚事务

10

对数据库进行操作时是否需要排他处理。

因为没有和其他用户针对一个表竞争所有不需要排他处理。

4.

总体设计

系统采用模块化的设计思想,各屏幕的变量、结构和子程序都放入对应模块,这样不仅能体现良好的体系结构,更便于维护。系统的设计包括逻辑结构设计和模块功能设计等等。运用软件工程和面向对象思想对该系统进行了建模分析,结合Oracle数据管理系统、ABAP/4screen tableALV等技术,配合数据采集器实现数据采集、实时显示和存储等功能。

本系统数据库涉及到许多系统表和自建表,所以在开发过程中设计了较多的临时数据区,这样使系统运行效率大大加强,但增加了资源占用,对硬件要求提高

4.1. 设计原则

充分考虑计算机的科学性、先进性、实用性、可靠性、安全性和经济性,选用先进的、技术上成熟的设备,建立一个真正发挥作用的网络系统。具有良好的开放性、扩展性、升级能力在设计的整个过程中,还应该注意整体优化的原则,从系统的整体出发,长远的目标出发,进行系统的开发工作;注意各个子系统与功能之间整体上的相互联系;还需要注意用户需求至上的原则,注重用户的需求描述。实用性原则,系统的设计与实施以解决用户的实际需求;另外,注意创新性,工程化、标准化。

4.2. 组件设计

从表中按客户所需要的条件提取数据,运用流控制 BAPIBDC、簇数据库等数据操作后,以本地服务器下载、ALV等形式输出文件数据。其中客户有一个特殊需求,ALV打印的单据可以按照事先定义好的格式显示输出。用户也可以不用立刻打印输出结果,而是以某种格式保存到本地,传送给其他用户。

4.2.1. 程序数据表中数据流向

程序涉及到三个数据表的数据抽出,分别是从表ZCMTO1O、表ZCMT050、表ZSDT550中按客户所需要的条件提取数据:

4.1数据流向

4.3. 数据表设计

浏览数据表数据的事务有四个SE16SE17SM30SM31。可以用SE11进入的本程序需要的数据库订单表。

SAP R/3把逻辑上相关联的部分连接在一起,重复工作和多余数据被完全取消,规程被优化,系统数据表7万余张。由于系统表多,且每张表的字段少者50个,多达200个以上,所以本文在介绍数据库时只涉及了系统表中使用到字段和自建表的部分字段,没有进行ER图的绘制。

程序所处理的订单报表处理模块共涉及到3张主要的表格,它们的表大体结构如下:

4.1 ZCMT050概括

描述: ZCMT050 数据库通用表

字段名

关键字

数据元素

数据类型

长度

短文本

ZZMANDT

MANDT

CLNT

3

客户

ZZSSID

ZESSID

CHAR

2

子系统I D

4.1 ZCMT050概括表

字段名

关键字

数据元素

数据类型

长度

短文本

ZZSYUBETU

ZESYUBETU

CHAR

4

种类区别代码

ZZKEY1

ZEKEY1

CHAR

20

KEY1

ZZKEY2

ZEKEY2

CHAR

20

KEY2

ZZKEY3

ZEKEY3

CHAR

20

KEY3

ZZKEY4

ZEKEY4

CHAR

20

KEY4

ZZKEY5

ZEKEY5

CHAR

20

KEY5

ZZSTDATE

ZSTDATE

DATS

8

有效开始日

ZZENDATE

ZENDATE

DATS

8

有效终了日

ZZVALUEC1

ZEVALUEC1

CHAR

40

取得値①※

ZZVALUEC2

ZEVALUEC2

CHAR

40

取得値②※

ZZVALUEC3

ZEVALUEC3

CHAR

40

取得値③※

……

……

……

……

……

……

这里的取得値在不同的程序中针对key1key2key3可以得到不同的相对应检索数据

4.2 ZCMT010概括

描述: ZCMT010 数据库常数表

字段名

关键字

数据元素

数据类型

长度

短文本

ZZMANDT

MANDT

CLNT

3

客户

ZZSSID

ZESSID

CHAR

2

子系统I D

ZZSYUBETU

ZESYUBETU

CHAR

4

种类区别代码

ZZKEY1

ZEKEY1

CHAR

20

KEY1

ZZKEY2

ZEKEY2

CHAR

20

KEY2

ZZKEY3

ZEKEY3

CHAR

20

KEY3

ZZKEY4

ZEKEY4

CHAR

20

KEY4

ZZKEY5

ZEKEY5

CHAR

20

KEY5

ZZSTDATE

ZSTDATE

DATS

8

有效开始日

ZZENDATE

ZENDATE

DATS

8

有效终了日

ZZVALUEC1

ZEVALUEC1

CHAR

40

取得値①※

ZZVALUEC2

ZEVALUEC2

CHAR

40

取得値②※

ZZVALUEC3

ZEVALUEC3

CHAR

40

取得値③※

……

……

……

……

……

……

这里的取得値在不同的程序中针对key1key2key3可以得到不同的相对应检索定数。

4.3 ZSDT550概括

描述: ZSDT550数据库 EDI订货确认发送表

字段名

关键字

数据元素

数据类型

长度

短文本

ZZMANDT

MANDT

CLNT

3

客户

4.3 ZSDT550概括表

字段名

关键字

数据元素

数据类型

长度

短文本

ZZCHMN_NO

ZESSID

CHAR

2

订货编号

ZZJCH_NO

ZEJCHNO

CHAR

10

接受订货号码

ZZEVENTID

ZEEVENTID

CHAR

15

事件ID

ZZHCKG_CD

ZEHCKGCD

CHAR

6

订购者企业代码

ZZHCBM_CD

ZEHCBMCD

CHAR

6

订购者部门代码

ZZSENDFLG

ZESENDFLG

CHAR

1

发送完成标记

ZZSENDDATE

ZESENDDATE

DATS

8

发送日

ZZSENDTIME

ZESENDTIME

TIMS

6

发送时刻

ZZBSARK

BSARK

CHAR

4

客户订购的类型

.INCLUDE

ZSDS510

STRU

EDI定购数据构造表

ZZDTSYBTU

ZEDTSYBTU

CHAR

4

数据的种类区别

ZZSYRKBN

ZESYRKBN

CHAR

1

处理的种别

……

……

……

……

……

……

这里的ZSDS510实际上也是一个表,应为ABAP中可以用一个表包含另一个表的结构以减少表的冗余,以保证表的重用。所以这里的ZSDS510不能算一个独立的表下面是这个表的大体字段。

4.4 ZSDS510概括

描述: ZSDS510数据库 EDI定购数据构造表

字段名

关键字

数据元素

数据类型

长度

短文本

ZZDTSYBTU

ZEDTSYBTU

CHAR

4

数据的种类区别

ZZSHKGCD

ZESHKGCD

CHAR

6

支持者企业ID

ZZKYKNO

ZKYKNO

CHAR

10

合同编号

ZZORDRKBN

ZEORDRKBN

CHAR

1

订单的区分

ZZRKYHKBN

ZERKYHKBN

CHAR

1

联系区分

……

……

……

……

……

……

其中以上所有的表结构中都只给出了部分程序中需要使用的字段,其余不使用的字段故在此不给出,用省略号表示。

4.4. 用户权限

该程序为了通常日中job30分钟起动、所以并没有面向一般用户的权限设置,系统错误时再实行时候也不能一般用户大敞大开,只有作为用系统管理者权限才能起动。

4.5. 功能概要

从各个对象表中提取数据,编集需要输出的文件。

对输出的特定数据字段进行修改,并以簇方式存储数据对象。

根据特定的要求,设定不同的变式,再使用变式输出数据。

对输出的数据,根据工厂不同合并处理数据字段。

4.2 功能概要图



5. 详细设计

详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。

5.1. 在详细设计过程中的技术要点

5.1.1. 模块化

如果要在多个程序中使用相同的语句序列,则可一次性将其代码编写到包含程序 中。不能与包含程序进行显式数据传递,因为包含程序的目的是模块化源代码。如果想与模块进行数据传递,使用子程序或功能模块。

功能模块:

能模块是存储在中央库内的特殊外部子程序。R/3系统提供大量预定义的功能模块,可以从ABAP/4程序中进行调用,而且可以创建自己的功能模块。

功能模块和一般ABAP/4子程序的显著差异在于一个明确定义的、用于与功能模块进行数据传递的接口。对于功能模块,不能将数据声明为公共部分。对于ABAP/4 词典表格,调用程序和被调用的功能模块都有单独的工作域。

接口有助于输入和输参数的传递并将其标准化。例如,可以给功能 模块的输入值分配缺省值。可以决定通过值还是参考值进行数据传递 (关于进行 数据传递的 详细信息,参见通过参数进行数据传递)。接口也支持例外处理。借助例外,可以处理可能发生的错误。

在功能库中,可以将多个功能模块组合成功能组。因为可以定义功能组中所有功能模块都能访问的全局数据,因此,在一个功能组中包含操作相同数据(如内表)的功能模块比较合理

源代码模块:

如果模块化源代码,程序将更易维护。例如,如果希望避免在程序中多次重复相同的语句,就应使用模块化技术。但是,不应采用这些方法模块化任务和函数。要模块化任务和函数,应使用子程序和功能模块。

5.1 模块化原则

5.1.2. 变式

ABAP/4在选择屏幕上提供特定数据库和特定报表选择的输入字段。要选择某种数据集,必须键入相应的值。如果想在固定间隔时间运行具有相同选择的同一报表程序,则不会每次都去键入相同的值。因此,ABAP/4可以在一个选择设置中组合全部选择所需的值。可以对每个报表程序创建任意多个不同的选择设置,而它们仍只分配给值得怀疑的报表程序。这种选择设置就是变式。

5.1.3. 开发类命名

临时开发类:测试和练习用程序不能传输,用 YTMP类。

正常开发类Z_xxxx m模块缩写xxxx描述)

变量命名

5.1 变量命名规则

开头

描述

IT_

Internal Table

S_

Select option

R_

Range

IW_

Variable work area

L_

Variable locale

5.2. 内表/工作区

ABAP/4 中,主要使用表格。表格是R/3系统中的关键数据结构。长期使用的数据存储在关系数据库表格中。除了数据库表格,还可 以创建仅在程序运行时间内存在的内表。ABAP/4 提供了针对内表的不同操作。例如,可以搜索、附加、插入或删除行。

内表中的行数并不固定。根据需求 ,系统可实时增加内表的大小。例如,如果想将某个数据库表格读入内表,不必事先知道数据库表格的大小。该特征项使得内表使用起来十分方便,同时还支持动态编程。

工作区域对内表的行必须是可转换的。从内表中读取数据时,已定址的表格行内容覆盖工作区域的内容。然后可以在程序中引用工作区域的内容。将数据写入内表时,必须首先在工作区域(从中系统 可以将数据 传输给内表 )中输入数据。

5.2 通过工作区操作内表

5.3. 流程图

在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过程。

一张流程图能够成为解释某个订单的产生到销毁,甚至组织决策制定程序的方式之一。这些过程的各个阶段均用图形块表示,不同图形块之间以箭头相连,代表它们在系统内的流动方向。下一步何去何从,要取决于上一步的结果,典型做法是用Y()N()的逻辑分支加以判断。

5.3 系统流程图

5.4. 具体模块开发

5.4.1. 初期处理

5.4 初期处理流程图

5.4 流程中从选择画面输入数据后,对输入的数据进行检查,例如:输入条件不为空的字段留空,数据类型输入不正确以及数据不存在或数据输入错误则返回错误信息,并保持画面不跳转;当输入正确的信息后,程序依次执行下步的F4帮助和ALV布局获取操作,这两个操作都要进行结果确认,如果失败则保持画面不跳转并返回个警告信息,成功则执行主处理。

(1)选择画面的设定

5.2 选择画面设定

输入项目名称

项目名

类型

长度

帮助

必输

初期值

处理时间

P_DATE

DATS

8

需要

需要

物理文件名

P_FILE

CHAR

20

需要

需要

逻辑路径

P_PATH

CHAR

60

需要

需要

Web订货确认

P_RA1

CHAR

1

X

Web订货取消

P_RA2

CHAR

1

石化協(双日)

P_RA3

CHAR

1

石化協(三菱)订货确认

P_RA4

CHAR

1

续表 5.2 选择画面设定

输入项目名称

项目名

类型

长度

帮助

必输

初期值

石化協(三菱)订货取消

P_RA5

CHAR

1

ALV输出

P_RA6

CHAR

1

X

文件输出

P_RA7

CHAR

1

5.1物理文件名和服务器上的逻辑路径本来是自己写的但考虑到许多程序都要用到这两个输入框并且需要自己写帮助按钮,所以在后期共通组将这两个选择框封装到了独立的一个程序中,其它程序只需要用INCLUDE调用即可。但是因为在前面的时间已经将图做好所以帮助按钮在后面也会介绍。

ABAP语法里要使用户能在选择屏幕中输入数据则必须使用命令PARAMETERS RADIOBUTTON定义上述字段。在这里选择屏幕有必输和初始值的要求,所以可以用PARAMETERS语句定义变量以在选择屏幕上作为输入字段实现必输这个需求。对于RADIOBUTTON的初始值‘X’的定义实际上就是在画面的开始时要有个RADIOBUTTON为默认选中所以只需要DEFAULT参数即可。

使用PARAMETERS定义屏幕字段的基本格式为:

语法: PARAMETERS: <变量名> TYPE <类型>

程序实现:选择画面部分

处理时间定义:PARAMETERS: P_DATE TYPE SY-DATUM OBLIGATORY.

(1)单选按钮定义:

PARAMETERS: P_RA1 RADIOBUTTON GROUP P_RA DEFAULT 'X',

P_RA2 RADIOBUTTON GROUP P_RA,

P_RA3 RADIOBUTTON GROUP P_RA,

P_RA4 RADIOBUTTON GROUP P_RA,

P_RA5 RADIOBUTTON GROUP P_RA

P_R_FI RADIOBUTTON GROUP P DEFAULT 'X' ,

P_R_ALV RADIOBUTTON GROUP P .

物理文件名和逻辑路径定义:INCLUDE ZVVX8021.

(2)F4帮助

程序中的F4帮助用于实现当逻辑路径输入框时,会在逻辑路径输入框后出现一个按钮,单击此按钮会有一个窗口出现,该窗口就是服务器上所以的逻辑路径,它呈一个树型的结构存储着逻辑路径信息,可以直接根据名字来选择哪个逻辑路径,然后在逻辑路径那个选择框中出现的就是逻辑路径,这就是F4帮助的大体功能。

具体实现此功能需要在AT SELECTION-SCREEN ON VALUE-REQUEST事件中执行。在此事件下写一个perform。它里面call function 'RH_TYPE_STRUC_HELP',这个函数的功能主要是根据需求把这些组织都查出来,然后把它赋给需要进行F4帮助的组织选择框,最后显示出来是一个呈树型的组织结构。快速调用这个函数的方法就是点一下ABAP编辑器的应用工具栏上的模式按钮,在函数名处填写RH_TYPE_STRUC_HELP函数就可以。这样系统就自动将该函数的结构加载到程序代码中,开发人员仅需填充函数参数就行。如果是数据库中的数据则需要将数据抽出放入内表中传入即可。

(3)对选择屏幕格式初级的验证

这里验证选择屏幕的值,主要是对选择屏幕进行输入操作后,点击回车进行验证,有一些不是代码反映出来的具体对这些错误进行什么处理,但他会有错误的输出提示在屏幕的左下方,并结束程序等待用户改正后继续进行验证直到输入正确为止验证值的工作才结束。在这一块主要是对输入的期间的一个验证,在用户输入期间后,会对他输入的前后的日期格式或者不是预定的字符类型进行检查,这些大部分是系统自动检查的,也可以人为自己编写,按程序需求为主。

(4)数据初始化

在画面输出后主程序执行前需要对程序中用到的数据进行初始的获得或者初始化。

5.4.2. 主处理

这里的主处理是对针对画面屏幕按下执行按钮的统称。当按下执行后进行的处理流程:

5.5主处理流程图

(1)文件检查

因为程序涉及到文件的输出所以这里需要在文件的路径下对文件的存在进行检查,因为画面是输入的逻辑路径,所以要先找到服务器上逻辑路径对应的物理路径在到其目录下查找文件是否存在。

ABAP/4 语句中为使用文件指定的文件名是物理文件名 。这意味着它们恰好满足运行有SAP系统的操作系统的要求 。按特定文件名和路径从 ABAP/4 程序中创建文件后,在 操作系统级登录后,可发现此文件恰好位于该位置。

在各操作系统之间,因为文件和路径的命名规则不同,除非如下使用工具,否则 ABAP/4 程序就不能从一个操作系统移植到另一个操作系统。要使程序可以移植,SAP 系统提供了逻辑文件名和逻辑路径的概念。逻辑文件和路 径连接到物理文件和路径。在特殊表格中建立这种连接。可以根据需要维护这些表格。在ABAP/4 程序中,请使用功能FILE_GET_NAME 从逻辑文件名中创建物理文件名。

而要将逻辑路径转换为物理路径则需要使‘FILE_GET_NAME_USING_PATH’这个函数。输入文件的名称和逻辑路径,就会输出在服务器上的对应的物理路径。

部分程序实现:

CALL FUNCTION 'FILE_GET_NAME_USING_PATH'

    EXPORTING

      LOGICAL_PATH                    = P_PATH    

      FILE_NAME                        = P_FILE    

   IMPORTING

     FILE_NAME_WITH_PATH              = W_FILE_NAME 

可以用SAP自带FILE检查。

画面上输入的逻辑路径是ZP_SD_TEST. 文件名是:TEST1.DAT

最终通过debug的到函数输出的路径名:G:\usr\sap\ED1\work\300\SD\TEST1.DAT

如下图:

5.6 主画面测试路径

5.7 debug显示取得的路径

得到的逻辑和用SAP查到的物理路径名称完全一致,以后就下载文件,检查文件会去全部用到这个路径。

5.8 SAP中自身的物理路径

(2)数据抽出:

R/3系统中,需长期保存的数据都存储在关系数据库表中。现在,SQL还没有完全标准化。要访问指定的数据库系统 ,必须查阅该系统的文档,以获取可用的 SQL语句及其正确的语法的列表。要在ABAP/4程序中包含这些SQL语句,将使用自身的SQL

为了避免不同的数据库表之间的不兼容性,并使ABAP/4程序能在应用中独立于数据库系统,SAP创建了一套叫作开放式SQL的独立SQL语句。开放式SQL包含了一套标准的SQL语句以及一些专用于SAP的增强语句。使用开放式SQL,可以访问对SAP系统有效的任何数据库表,而不用考虑它的创建者。

系统字段在开放式SQL操作中起着重要的作用:

系统字段SY-SUBRC中的返回代 码值表示在 每个开放式SQL 操作之后该 作是否成 功。如果操 作是成功的,SY-SUBRC 的值就等于 0;如果操 作是失败的,SY-SUBRC 的值就不等于0

系统字段SY-DBCNT 字段中的值表明受该操作影响的行数,或已被处理的行数

5.9 开放式SQL与自身SQL

数据库界面 可将 SAP 的开放式SQL语句翻译成专用于现正使用的数据库的SQL命令。自身的SQL直接访问数据库。

所以在这此的程序中就用到了开放式SQL基本与我们学习的SQL2000 没有太大差别,分为抽出项目,抽出条件,存放区域等部分构成,主要语句如下:

SELECT [SINGLE] 字段名

FROM 数据表

INTO [CORRESPONDING FIELDS OF TABLE] 字段名或表名

WHERE 条件

[ENDSELECT.]

SELECT语句可以抽出单个数据,必须加上SINGLE修饰,如果不加就是循环抽出数据,结尾用ENDSELECT结束,一般在所从事的项目中不使用循环抽取数据,而是一并将数据抽出并存放到内表内。例子如下:

SELECT COL1 COL2

INTO CORRESPONDING FIELDS OF TABLE IT_ITAB

WHERE COL1 = COL2.

但是怎么看抽没抽出数据呢?则可用SY-SUBRC来进行判断 等于0 表示抽出数据。不等于0表示没有数据符合抽出条件,没有抽出数据,总体来说在ABAP的程序中有许多地方用到了SY-SUBRC就有点类似CC++中的return 通过不同的返回值来判断执行的效果。

订购者企业代码数据是由画面中输入的和程序自定义的条件通过OPENSQL抽出的。

抽出条件:

5.3 订购者企业代码数据抽出条件

字段描述

字段名

操作

条件字段

执行部门

ZZSSID

=

固定值‘SD’(销售组)

种类区别代码

ZZSYUBETU 

=

固定值‘0001

有效值3

ZZVALUEC3

 =

画面选择RADIOBUTTON

开始时间

ZZSTDATE

<=

选择画面P_DATE

结束时间

ZZENDATE

>=

选择画面P_DATE

因为由业务可知道订购者企业代码可以抽出多值为了让后期的抽出条件用到多值,这里可以用两种方法:FOR ALL ENTRIES ranges

FOR ALL ENTRIES语法是:

SELECT......FOR ALL ENTRIES IN WHERE .....

在条件 中,可按前 面的叙述将内部字段或字母指定为比较值。也可以将内表 的列或字母用作比较值 。在WHERE条件中,这些列将用作占位符。该SELECT 语句的结果 集是SELECT语句的所有结果集的联合,这些结果集是用中的相应值在每一行上替换占位符的结果。

但是FOR ALL ENTRIES的主要缺点是执行的效率比较低下。

选择表(ranges表)

选择表是一个带表头行的内表。表的作用和多选框的做用是一样的,执行效果较高而且不用除去重复的值,最终我选择了用ranges表。

ranges表的low字段接受抽出来的数据。这里比较要注意的就是如果这个表是空表那么where条件则会取全值,所以特别注意在where in 条件前要确认ranges表不为空。主要代码有:

SELECT ZZKEY1                      

   INTO  CORRESPONDING FIELDS OF TABLE IT_CONST

   FROM  ZCMT050

  WHERE  ZZSSID    = CNS_CM_COMP_SD    “选择条件由表5.2得出

   AND   ZZSYUBETU = CNS_W_SYUBETU1   

   AND   ZZVALUEC3 = W_GETVALUE       

   AND   ZZSTDATE <= P_DATE           

   AND   ZZENDATE >= P_DATE.          

能抽出数据的情况

  IF SY-SUBRC = 0.

    SORT  IT_CONST  BY  ZZKEY1. “先进行排序

    LOOP  AT  IT_CONST  INTO IW_CONST. “在循环内表讲读出的一条条数据放入

     IW_ZZHCKG_CD-SIGN   = CNS_W_I. “工作区

     IW_ZZHCKG_CD-OPTION = CNS_W_EQ.

     IW_ZZHCKG_CD-LOW    = IW_CONST-ZZKEY1.

      APPEND  IW_ZZHCKG_CD  TO  IT_ZZHCKG_CD. “赋值给ranges

      CLEAR : IW_ZZHCKG_CD,

              IW_CONST .

    ENDLOOP.

ENDIF.

(1)订货确认主数据抽出:

画面的按扭选择了石化協(双日)

1)抽出条件:

5.4订货确认主数据抽出条件

字段描述

字段名

操作

条件字段

发送完成标记

ZZSENDFLG

=

SPACE

订购者企业代码

ZZHCKG_CD

IN

订购者企业ranges

删除标记

ZZLOEKZ

=

SPACE

抽出项目:全项目。

数据是后面的文件输出和ALV输出的主要要用到的数据。

(2)订货确认主数据抽出(Ⅱ),

因为当画面的按扭没有选择了石化協(双日)

5.5订货确认主数据抽出条件(Ⅱ)

字段描述

字段名

操作

条件字段

发送完成标记

ZZSENDFLG

=

SPACE

数据类别

ZZDTSYBTU

=

根据画面选择得出

订购者企业代码

ZZHCKG_CD

IN

订购者企业ranges

删除标记

ZZLOEKZ

=

SPACE

抽出项目:全项目。

主要语句如下:

    SELECT *                        "全項目

     INTO CORRESPONDING  FIELDS  OF  TABLE  IT_ZSDT550

     FROM   ZSDT550

     WHERE  ZZSENDFLG =  SPACE             “抽出条件由表5.3 5.4得出

     AND    ZZHCKG_CD IN IT_ZZHCKG_CD     

     AND    ZZLOEKZ   =  SPACE.           

    IF SY-SUBRC <> 0 .

        FLG_CLOSE = CNS_W_X.

      ENDIF.

(3)数据抽出检查

对于抽取订购者企业代码数据如果没有抽到数据那么其面的所以抽表条件都不可用,所以如果这里的SY-SUBRC不等于零那么程序就要异常终了,停止程序的继续执行。这里基本原理为用message表示:

IF sy-subrc <> 0.

MESSAGE '无数据' TYPE 'E'.

Endif

代码如下:

    PERFORM MSG_LOG_OUTPUT_MESSAGE USING CNS_CM_MSGTY_E

                                          CNS_CM_MSGID_CM

                                          CNS_730

                                          CNS_CM_COMP_SD

                                          CNS_W_SYUBETU1

                                          W_GETVALUE

                                          SPACE.

这个调用的MSG_LOG_OUTPUT_MESSAGE 是共同组开发出来的主要功能是方便调用,不需要每个人都自己定义需要输出的汉字,单原理是与message一致。

但是对于数据订货确认数据的抽出,如果没有数据只能代表有订购的厂家但是没有订货所以这里虽然没有数据也需要继续执行,只不过当为0条记录时需要往服务器上传输个空文件。

(4)数据编集

主要利用循环技术从内表中逐步取出数据进行比较并将一致的数据再修改存放到内表中进行汇总。

这里根据客户的需求有两个方向:

第一:文件输出:对以石化協EDIWeb-EDI数据库进行不同的输出,对于石化協EDI根据客户的需要得出的设计书要求做成一个固定数据的输出文件,而对Web-EDI则只需要对每个数据之间用Tab分割就行。但是这两个输出方式都要对没定义满的全角数据进行补齐操作。

第二:ALV输出:将要进行传输的订单数据先预览一下对于坏数据不去送它。

1、填充全角空格

对于数据的编辑首先利用循环技术从内表中逐步取出数据进行比较并将一致的数据再修改存放到内表中进行汇总。接着就要检索没个数据的定义长度并与它 的实际包含字段长度进行比较如果没有达到定义的长度则要将缺少的位置用全角 空格补齐。主要代码实现为:

DESCRIBE FIELD 字段  LENGTH  L_LEN IN CHARACTER MODE .

“检测字段的定义长度

 L_LEN1 = STRLEN( 字段 ). 检测字段的实际长度

    IF L_LEN > L_LEN1. 进行比较 如果实际长度小于定义长度

     L_TIMES  = L_LEN - L_LEN1. 那么算出缺少了多少个字节位

    DO L_TIMES TIMES. 对其添加相应的全角空格

      CONCATENATE  字段

                   CNS_SPACE

              INTO 字段.

     ENDDO.

  ENDIF .

时做项目碰到这个问题比较有波折,应为原来学习的CC++JAVA 都提到一个全角等于两个半角位,但那是非UNIX系统而项目用到的数据库是UNIX系统定义一个char型数据及能放入一个全角也能放入一个半角。所以这里在检查时出了问题,显示输出的字段总是输出了比需要长的长度多一倍的问题,不过后来还是解决了这个问题

2、填充半角空格

对石化協数据传出时需要固定长,所以客户需要半角项目在没有达到定义的长度时要讲缺少的位数用半角空格补齐,但是ABAP对半角空格不敏感,很多语法都是自动去除半角空格,所以这里的 CONCATENATE 语法就不能将半角空格加入。后来通过查阅资料就用到了一个方法

CALL METHOD CL_ABAP_LIST_UTILITIES=>STRUCTURE_TO_DISPLAY

        EXPORTING

          MEMORY_DATA  =  工作区

       IMPORTING

          DISPLAY_DATA =  字符串

 这里CL_ABAP_LIST_UTILITIES类下面封装了很多方法 有将结构转换成字符串的,也有将字符串转化结构的,最终将问题解决。

5.10 CL_ABAP_LIST_UTILITIES函数方法图

(5)更新数据库

因为这本的程序的业务需要是订货单传送,所以当订货单传送出去后,需要在相应的数据库中对传输出的订货单进行标记时间修改,即传出哪些订货单就要更新相对应的数据库中订单数据。

更新数据库要用到update关键字 如果更新成功就进行  COMMIT WORK成功处理,如果出现错误没有更新成功则进行ROLLBACK WORK回滚事物。

部分代码为:

UPDATE 数据库 FROM TABLE 内表。

IF SY-SUBRC <>0.

ROLLBACK  WORK.

ELSE.

COMMIT WORK.

ENDIF.

UPDATE是将内表中与数据库中相同的主键的内容更新为内表中的数据。

(6)文件输出(ALV形式)

文件输出分为两种情况,当用户单击了ALV输出,则将要订货的主要信息显示出来,当用户按选择了文件输出,则进行正常的文件传输和数据库的更新。

ALV:

ALV处理流程

5.11 ALV处理流程图

GUI状态的调用

GUI状态创建好之后,并没有链接到特定的屏幕,需要在程序中进行设定。在一个程序中,可能需要多个屏幕,这些屏幕可能使用相同的GUI状态,也可能屏幕会根据情况设定不同的状态,其语法如下:

SET PF-STATUS stat.

以上设定了状态,还应该为屏幕设定已经在菜单绘制中定义的屏幕标题,

SET TITLEBAR stat

其定义和调用方法与GUI状态类似。

主要代码有:

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = 程序号

i_callback_html_top_of_page = HEAD部分

is_layout = LAYOUT布局信息

it_fieldcat = FIELDCAT字段格式

i_default = 'X'

i_save = 'A'保存

it_events = 事件内表

it_sort = 排序内表

tables

t_outtab = 要输出的内表

最后ALV输出数据,用户可以把ALV输出的数据打印出来,也可以利用ALV的一些自带工具来筛选数据显示,甚至是对数据做一些数学计算,比如进行统计、分组排序都可以。

(7)文件输出(文本形式)

这里的文件输出主要是将传输的数据按一个主键一行的形式传到服务器上,用户可以下载到本地查看,向服务器上写数据主要有:

打开文件

OPEN DATASET 文件名 FOR OUTPUT.

此语句打开文件用于写入。如果文件不存在,则创建文件。如果文件已存在但处于关闭状态则删除其内容。如果文件已存在且已打开(可能为读、写、或追加),则复位到文件的起始位置。如果系统可以打开文件,则SY-SUBRC设置为0,否则SY-SUBRC返回8

代码完成

OPEN DATASET [文件名]FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE

  IF SY-SUBRC <> 0.

     ROLLBACK WORK.

Endif

代码中如果打开失败则前面的更新也需要回滚。因为如果不能发送就更新数据库那么最终结果就会是数据不一致而且户给客户带来麻烦。

写入数据:

TRANSFER to [LENGTH ].

此语句将字段 的值写入文 。可以用 OPEN DATASET 语句指定传输模式。如果不能打开文件以写入 ,则系统将尝试用二进制模式打开文件,或为此文件使用 OPEN DATASET 语句的选项 。但是只用OPEN DATASET语句打开文件是良好的编程风格。

关闭文件:

CLOSE DATASET <文件名>

正是因为有了打开文件如果文件不存在,则创建文件的这个特性,所以在上面检索数据库时如果没有数据抽出则穿一个0件的空文件,所以这里只需要进行OPEN CLOSE一次即可得到一个空文件。

5.4.3. 终了处理

最后的终了处理比较较简单,因为在前面的每次异常终了程序都会立即停止。所以能走到最后的终了的必然是正常终了,所以终了处理只需要将更新成功的数据提交上去,并且将所有的定义的变量和内表都从内存中释放掉以节省空间。



6. 系统测试及项目结论

为了尽可能多的发现软件中的错误。对整个基于计算机的系统进行考验的一系列不同测试,以检查整个系统能否正常地集成到一起为完成分配的功能而工作。同时测试程序对客户的提出的需求是否能够满足。

6.1. 选取测试方案

因为本程序是按照所参与项目的开发规则所进行开发的,所以同时测试也按照了规定的测试方案(PCL)进行测试。由于公司项目安排,本程序由本人亲自测试,但对每个测试点是按照日方客户发来的基准书作为测试标准进行测试。在一个项目开始之前对开发的性能优化做了规定,所以在后期测试中主要是针对代码的bug和功能进行测试。首先对代码进行检查要无bug,同时检查功能是否符合日本客户的要求,如有偏差或疑问应报告给项目经理或与同项目组成员讨论商量后做决定是否进行修改。

6.2. 测试结果表达方式

因为本程序是服务器后台程序,所以它的message都是在最终的message盒中集中显示,为了表示对每个测试点都有覆盖,基本上对每个点都需要有截图证明,所以在后面的各项测试中都会有相对应的程序运行图来表示。

6.3. 测试内容

6.3.1. 代码测试

代码测试是使用SLIN概览得到错误的警告,如果有错误则须解决,能解决的警告,尽量解决,不能解决的警告一般都是在引用外部程序产生或内部某些字段的特殊访问,如函数访问所引起的。测试时,务必做到代码覆盖率100%。尤其是程序中的内表的工作区以及取数逻辑关键代码处设断点,测试工作区中是否取到数据,检查取数逻辑中算法的合理性与正确性,确保取得数据完整并与数据库中一致。

利用ABAP程序扩展语法检查工具对代码进行检查,包括对程序内各个模块及子程序进行检查,并返回报告信息,可以对每个信息进行详细的内容查看,以及定位程序中出错的地方,便用户对程序进行修改和完善。扩展语法检查后结果如下

6.1 代码语法检查结果图

以上截图发现有大量的消息信息。双击进入这些消息信息。发现消息信息产生的原因是由于调用了外部的程序而产生的,只是应为本程序调用了共同组的模块,而这些模块是为了尽量覆盖所有程序而写的,里面会有其它程序需要的代码而这些代码对这本程序来说是冗余代码所以会出现消息信息,它不是错误或警告,可以忽略。

而其中的错误和警告为零,所以对代码的检测可得出,程序没有代码语法之类的错误。

6.3.2. 功能测试

功能测试是对程序的整体功能,客户需求,程序逻辑的一个综合的检查,因此对测试对象的功能测试侧重于所有可直接追踪到用例或业务功能和业务规则的测试需求。这种测试的目标是核实数据的接受、处理和检索是否正确,以及业务规则的实施是否恰当。此类测试基于黑盒技术。而这中的测试点是由其他人完成,也是为了避免程序员对自己的程序检测的一种方法。

因为测试点的(PCL)是由他人完成的,所以是用日语完成的,为了大体能说明测试点,就翻译了些重要的供参考。

6.1 功能测试用例表

测试编号

检查条件

确认内容

UT0040

画面处理日期输入项目输入无效日期

Message显示错误信息[日付が無効です]

UT0110

逻辑路径不存在的场合

Message盒中显示「指定した論理パス &1 は存在しません」&1则是画面输入的找不到的逻辑路径

UT0160

当单选按钮选择WEB订货确认时企业ID取到的情况下

程序继续执行

UT0170

当单选按钮选择WEB订货确认时企业ID取不到的情况下

Message盒中显示「汎用テーブルからの値取得に失敗しました ID : &1 &2 &3 &4」其中&1&2代输入的参数即抽取的条件。

……

……

……

(1)选择屏幕的外观测试

本文来源:https://www.2haoxitong.net/k/doc/b365efbc4bfe04a1b0717fd5360cba1aa8118c28.html

《毕业设计--SAP二次开发之销售与分售模块子系统的设计与实现.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式