




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
密级:密级: 工程硕士专业学位论文(设计)工程硕士专业学位论文(设计) 题题 目:目: SAP 与与 OA 系系统统集成集成 作作 者:者: 栾栾 为为 民民 完成日期:完成日期: 2011-9-26 培养培养单单位:位: 四四 川川 大大 学学 指指导导教教师师: : 张张 蕾蕾 工程工程领领域:域: 软软 件件 工工 程程 授予学位日期:授予学位日期: 年年 月月 日日 SAPSAP 与与 OAOA 系统集成系统集成 软件工程 领域 研究生 栾为民 指导老师 张蕾 童增荣 当前,企业竞争愈发激烈,要求企业内部、合作的企业之间必须快速、实时的传 递、审批诸如生产、销售等商务信息,如果可以共用一套信息系统,必然会带来巨大 的好处;但大多数情况下,我们必须整合各企业原有的、不同的信息系统,实现系统 间的信息交换。SAP 使用 Java Properties: Properties logonProperties = new Properties(); logonProperties.put(jco.client.ashost,1); logonProperties.put(jco.client.client,000); logonProperties.put(jco.client.passwd,minisap); logonProperties.put(jco.client.sysnr,00); logonProperties.put(jco.client.user,DDIC); JCO.Client myConnection = JCO.createClient( logonProperties ) 9. 第一种方式比较简单,所有的参数都直接写在代码中。相比之下,第二种方式使 用 Java Properties,它好处在于,除了硬编码这种方式之外,用户也可以将连接信 息保存在一个单独的.properties 文件中。这样即使连接信息改变也无需改变代码, 只需要修改.properties 文件中的数据即可。关于.properties 文件的用法,请参考 相关的 Java 语言教程。 JCO.Client 提供方法 connect 方法来建立从当前 Java 进程到 SAP 服务器的连接。 this.myConnection.connect(); 可以使用 isAlive 方法来获取一个连接的状态,还可以使用 disconnect 方法来 关闭一个连接: if ( myConnection != null public static final int max_connection = 2; JCO.Pool pool = JCO.getClientPoolManager().getPool(POOL_NAME); if (pool = null) Properties logonProperties = new Properties(); logonProperties.put(jco.client.ashost,1); logonProperties.put(jco.client.client,000); logonProperties.put(jco.client.passwd,minisap); logonProperties.put(jco.client.sysnr,00); logonProperties.put(jco.client.user,DDIC); JCO.addClientPool( POOL_NAME, / pool name max_connection, / max num of connections, logonProperties); / properties 创建好连接池之后,可以通过如下代码来从连接池中获取一个连接: mConnection = JCO.getClient(POOL_NAME); 在连接使用完毕之后,不要忘记使用 releaseClient 方法释放当前连接: JCO.releaseClient( myConnection ). 如果需要移除连接池,则可以使用如下代码: JCO.removeClientPool(POOL_NAME); 移除连接池将导致其中所有的活动连接被强行关闭,所以必须在确保连接池中所 有的连接都不再被使用的时候才能执行该操作。 调用 Function Modules 为了演示如何使用 JCo 库来调用远程的 ABAP 函数,本文示例中使用 NetWeaver ABAP 试用版系统中的一个样例函数 BAPI_FLIGHT_GETLIST。 JCo 库使用 RFC 的方式来调用 ABAP 中的函数,所以被调用的函数必须已经勾选 “Remote-enabled”属性。 调用一个函数之前,需要知道函数的元数据,比如函数名字,输入输出参数等等。 在 JCo 库中,必须通过类 JCO.Repository 来获取所有的 ABAP 函数的元数据,所以第 一步是创建一个 JCO.Repository 类的对象: JCO.Repository myRepository = new JCO.Repository(Repository, myConnection); JCO.Repository 类的构造函数有两个参数,第一个是可以任意指定的名字,第 二个是当前使用的连接。此处也可以直接指定一个连接池的名字,JCo 库将自动从该 连接池中获取连接。 此时,必须保证该连接使用的用户名在目标 SAP 服务器上有足够的权限。 获得 JCO.Repository 类的实例之后,就可以通过该实例来获得函数的信息。如 下代码演示了如何获取函数 BAPI_FLIGHT_GETLIST 的信息以及如何设置简单类型的参 数: String strFunc = BAPI_FLIGHT_GETLIST; IFunctionTemplate ft = myRepository.getFunctionTemplate(strFunc.toUpperCase(); JCO.Function funGetList = ft.getFunction(); / set up scalar parameter JCO.ParameterList input = funGetList.getImportParameterList(); input.setValue(10, MAX_ROWS); JCO.Function 对象提供了对应的方法来获取 ABAP 函数的参数列表。例如,上例 中的 getImportParameterList 方法返回该函数的 Import 参数列表。 在上面的示例代码中,仅仅设置了一个最简单的 int 类型的参数。事实上, setValue 方法有许多重载形式,允许设置各种复杂类型的参数,比如 structure 类 型和 table 类型的参数。而且,除了通过参数名字引用要设置的参数之外,还可以通 过参数的索引来引用一个参数。 在设置 structure 和 table 类型的参数之前,需要通过 JCO.Function 对象的方 法获取相应的 JCO.Structure 和 JCO.Table 对象,然后才可以使用对每个字段进行赋 值。 在我们使用的函数 BAPI_FLIGHT_GETLIST 中,Import 参数中的 DESTINATION_FROM 是一个 structure,其中包含一个 CITY 字段。如下代码演示了如 何将 CITY 字段赋值为“NEW YORK”: / set up structure parameter JCO.Structure sFrom = input.getStructure(DESTINATION_FROM); sFrom.setValue(NEW YORK, CITY); input.setValue(sFrom, DESTINATION_FROM); 类似地,可以使用 JCO.Function 对象的 getTableParameterList 方法拿到 Table 参数列表。下面的代码演示了如何拿到一个名为 DATE_RANGE 的 Table 参数并 且为它创建两行: / set up table parameter JCO.Table tDateRange = funGetList.getTableParameterList() .getTable(DATE_RANGE); tDateRange.appendRow(); tDateRange.setRow(0); tDateRange.setValue(I, SIGN); tDateRange.setValue(EQ, OPTION); tDateRange.setValue(20070606, LOW); tDateRange.appendRow(); tDateRange.setRow(1); tDateRange.setValue(I, SIGN); tDateRange.setValue(EQ, OPTION); tDateRange.setValue(20070704, LOW); 参数设置完毕之后,可以通过 JCO.Client 对象的 execute 方法执行远程调用: myConnection.execute(funGetList); 获得输出参数的方法与输入参数完全一样。下面的代码演示了如何获取一个包含 返回值的 Table 参数,并且输出它的内容: JCO.Table flights = funGetList.getTableParameterList().getTable(FLIGHT_LIST); for (int i = 0; i flights.getNumRows(); i+) flights.setRow(i); System.out.println(Airline + flights.getString(AIRLINE) + from city + flights.getString(CITYFROM) + to city + flights.getString(CITYTO) + , departure time is + flights.getDate(FLIGHTDATE); JCO.Structure 和 JCO.Table 都继承自类 JCO.Record。JCO.Record 对每种类型 的参数都提供了对应的 get 和 set 方法,并且在运行时自动进行 Java 数据类型和 ABAP 数据类型之间的转换。 在使用 JCo 库的过程中,主要有两种类型的异常需要处理: JCO.AbapException 如果 ABAP 函数执行过程中出现异常,则在 Java 进程中会触发该异常。 JCO.ConversionException 当执行参数的 get 和 set 方法时,如果在 Java 类型和 ABAP 类型之间转换失败,则会 触发该异常。 作为一种最佳实践,建议使用 try-catch 封装使用 JCo 库进行参数设置和函数调 用的代码,处理上述两种异常,并且在 finally 代码块中,释放当前所使用的连接。 远程调试 一般的情况下,在 SAP 服务器上通过事务代码 SE37 可以测试 ABAP 函数。在保证 ABAP 函数的正确性之后,Java 客户端只需要检查输入输出参数是否正确即可。这时 可以利用 JCo 库为了方便调试而提供的了一个很强大的功能,把所有继承自 JCO.Record 的类的对象格式化输出到一个指定的 HTML 文档中。通过这种方式,我们 可以检查输入输出参数是否正确。比如如下代码输出前面得到的 FLIGHT_LIST 参数的 内容: JCO.Table flights = funGetList.getTableParameterList().getTable( FLIGHT_LIST); flights.writeHTML(c:flight_list.html); 更进一步地,通过启动 ABAP 的远程调试功能,可以像调试普通程序一样调试远 程调用的 ABAP 函数。 要实现远程调试,首先需要在 Java 代码中,通过调用 JCO.Client 类或者 JCO.Pool 类的 setAbapDebug 方法激活 JCo 的 ABAP 调试功能。如下代码演示了如何 激活一个连接池的 ABAP 调试功能: JCO.Pool pool = JCO.getClientPoolManager().getPool(POOL_NAME); pool.setAbapDebug(true); 如果一个连接池的 ABAP 调试功能被激活,那么其中的所有连接的 ABAP 调试功能 都会被激活。使用这样一个连接来调用 ABAP 函数的时候,SAP 系统会自动弹出一个 调试器窗口。当然,前提是客户端机器上已经安装了 SAPGUI。 这时候调试器仅仅停留在 RFC 调用的入口处,而并未进入所调用的 ABAP 函数。 为了让调试器直接进入 ABAP 函数,需要在事务代码 SE37 中为该函数设置一个外 部断点(External BreakPoint) 。 2.3 Direct Web Remoting(DWR)框架 DWR 简介 DWR(直接 Web 远程控制)项目是在 Apache 许可下的一个开源的解决方案 DWR 是 Joe Walker 和 Mark Goodwin 开发的,并且该项目是在 Apache 许可下 的一个开源的解决方案,它供给那些想要以一种简单的方式使用 Ajax 和 XMLHttpRequest 的开发者12。 它具有一套 Javascript 功能集,它们把从 HTML 页面调用应用服务器上的 Java 对象的方法简化了。它操控不同类型的参数,并同时保持了 HTML 代码的可读性- 它可以允许在 JavaScript 中直接访问服务器端的 JavaBean 中的方法。 使用 DWR 非常像传统的 RPC 机制 由于在 DWR 中采用了一个类似 AJAX 的新方法来动态生成基于 JAVA 类的 JavaScript 代码,这样 WEB 开发人员就可以在 JavaScript 里使用 Java 代码-就 像它们是浏览器的本地代码(客户端代码)一样。 但是 Java 代码运行在 WEB 服务器端而且可以自由访问 WEB 服务器端的各种的资 源。当然,出于安全的原因,WEB 开发者必须适当地配置哪些 Java 类可以安全的被 外部使用。 这个从 JAVA 到 JavaScript 的远程功能方法给 DWR 的用户带来非常像传统的 RPC 机制,就像 RMI 或者 SOAP 一样,而且拥有运行在 WEB 上但是不需要浏览器插件的好 处。 设计 DWR 的目的 它是一个 Java 框架,可以很轻松地将它插入到 Web 应用程序中,以便 JavaScript 代码可以调用服务器端的 JavaBean 组件中的服务-也就是允许直接在 JavaScript 的脚本中对服务器端的 JavaBean 中的方法进行调用。 DWR 真正的巧妙之处是,在用户配置了要向客户机公开的服务之后,它使用反射 来生成 JavaScript 对象,以便 Web 页面能够使用这些对象来访问该服务。然后 Web 页面只需接合到生成的 JavaScript 对象,就像它们是直接使用服务一样;DWR 无缝 地处理所有 有关 Ajax 和请求定位的琐碎细节。 支持的环境 DWR 需要 JDK1.3 以上的版本,一个支持 2.2 标准版本以上的 Servlet 引擎。测 试过的环境包括: Tomcat、Weblogic、Websphere、JBoss、Jetty 、Resin 、Sun ONE 等。 DWR 的工作原理 (1)DWR 的工作原理 由于对象被远程化了-将服务器端的某个 JavaBean 组件(可以为业务组件或 者业务实体组件)转换为 JavaScript 中对象,所以该数据是自动变得对运行在客户 机浏览器上的 JavaScript 代码可用。 在幕后,DWR 通过浏览器提供的 XMLHttpRequest 对象向其自己的运行在 Application Server 上的 Servlet 发出异步调用。 该 Servlet 访问服务器端 Employee 对象,并通过格式化为 JavaScript Object Notation (JSON) 格式的 HTTP 响应发送回所需的数据- DWR 接着处理了 JAVA 和 JavaScript 之间的所有远程信息,包括转换所有的参数和返回需要的值- -因此,DWR 无缝地处理所有有关 Ajax 和请求定位的琐碎细节。 (2)DWR 是一个引擎以帮助我们简化对 AJAX 技术的应用 可以把服务器端 Java 对象的方法公开给 JavaScript 代码-从而可以有效地 从应用程序代码中把 Ajax 的全部请求-响应循环消除掉。 这意味着客户端代码再也不需要直接处理 XMLHttpRequest 对象或者服务器的响 应。不再需要编写对象的序列化代码或者使用第三方工具才能把对象变成 XML。甚至 不再需要编写 Servlet 代码把 Ajax 请求调整成对 Java 域对象的调用。 应用 DWR 技术所带来的主要优点 DWR 是一种 AJAX(Asynchronous JavaScript and XML)的 JAVA 实现,它提供了一 种能在 web 浏览器端采用 JavaScript 语言直接调用后台业务商业组件的解决方案。 同时能够动态生成 JavaScript 代码和隐藏 http 协议的细节。 (1)DWR 通过 JavaScript 直接调用远程组件可以减少 Web 开发的时间 这特别对于那些具有和用户频繁交互的 Web 应用程序-DWR 使得浏览器不用刷 新页面就可以从远程 Web 服务器取得用户需的数据(本质为 AJAX 技术) ,这种无刷新 页面的交互方式大大提高 Web 页面的响应时间。 (2)DWR 采用浏览器端的纯 JavaScript 实现,并且会自动根据浏览器类型采用 最高效率的远程组件调用机制。 (3)彻底分离表现和业务逻辑,减少了 Scriptlets 代码;同时展现页面只需加 载一次,节省网络带宽、提高用户响应响应时间。 使用 DWR 进行开发的步骤 配置 DWR 的 servlet dwr uk.ltd.getahead.dwr.DWRServlet debug true dwr /dwr/* 编写要使用的 java 类 编写 dwr.xml 文件 编写自定义的.js 将所需的.js 加入到网中 2.4 SAP 系统相关开发工具介绍 ABAP 开发语言简介 ABAP 是一种高级企业应用编程语言(Advanced Business Application Programming) ,起源于 20 世纪 80 年代。经过不断的发展,现在的版本为 ABAP/4,SAP R/3 的应用程序就是用 ABAP/4 编写的。ABAP/4 是面向对象语言。它 支持封装性和继承性。封装性是面向对象的基础,而继承性则是建立在封装性基础上 的重要特性。ABAP/4 具有事件驱动的特性。ABAP/4 和 COBOL 具有类似之处。 ABAP/4 适合生成报表。ABAP/4 支持对数据库的操作。SAP 最初开发 ABAP/4(高 级商业应用程序设计)语言仅为内部使用,为应用程序员提供优化的工作环境。经过 不断的改进和修改以满足商业领域的需要。现在,ABAP/4 已成为 SAP 开发所有自己 的应用程序的仅有工具。SAP 客户用 ABAP/4 进行其自身开发。这样的开发对 R/3 标 准解决方案适应特殊问题非常重要。ABAP/4 开发工作平台包含所有用于创建和维护 ABAP/4 程序的工具。ABAP/4 的可解释特性使其易于生成、测试并运行程序的中级 版本,以便将来生成最终版本。此过程也叫做早期原形处理,意味着您不必丢弃中级 版本 ABAP/4 是第四代支持结构化程序设计的语言。它合并了所有通常的控制结构和 模块化概念。在 ABAP/4 开发宝典中文版的第一部分,对 ABAP/4 的基本特性进行了 详细描述13。这些特性包括: - 带有各种类型和结构的声明数据的声明元素 - 数据制作的操作元素 - 控制程序流的控制元素 - 反应外部事件的事件元素 ABAP/4 支持多种语言。文本摘要(例如,标题、页眉和其他文本)将根据程 序代码分别存储。您可以随时在不改变程序代码的情况下更改、转换和维护这些文本 摘要。 ABAP/4 支持商业数据类型和操作。您可以用特殊日期和时间字段进行计算。 系统会自动执行必需的类型转换。 ABAP/4 提供一系列功能处理字符串。 ABAP/4 包含一个叫 OpenSQL 的 SQL 子集。用 OpenSQL,您可以读取和访问 数据库表,与所用的数据库系统无关。 ABAP/4 允许您定义和处理内部表,该表只在运行程序时存在。内部表使其更 容易处理数据表,并帮助使用程序中的复杂数据结构。 ABAP/4 允许您定义和调用子程序。也可以调用其他程序的子程序。参数能够 以各种方式从子程序传递或传递到子程序。 ABAP/4 包含一种特殊子程序,叫做功能模块。您可以在中央库中创建和维护 功能模块。在调用程序和子程序之间功能模块有一个明确定义的数据接口。它们能够 以调用程序的独立模式进行分别测试。 这里有两种主要的 ABAP/4 程序类型: 报表程序 报表程序用于分析数据库表中的数据。这种分析的结果可以显示在屏幕上或发送 到打印机上。逻辑数据库支持报表程序。逻辑数据库是特殊的 ABAP/4 程序,使开发 者不必编码所有的数据库访问。 对话程序 将对话程序组织为包含对话模块的模块池。每个动态程序(由一个屏幕及其流逻 辑组成的“动态程序” )都基于一个 ABAP/4 对话程序。流逻辑包含对 ABAP/4 对话 模块的调用。 BAPI 介绍 BAPI 业务应用程序接口(Business Application Programming Interface,简称 BAPI)是面向对象程序设计方法中的一组程序接口。它允许程序员通过 SAP 将第三 方软件整合成 R/3 专有产品。为了完成一些特殊的商业任务,如上传交易数据等, R/3 系统中内置了 BAPI。 业务应用程序接口 BAPI 是一个标准化的开放接口。有了 BAPI,用户可以通过测 览器、Exchange 电子邮件来使用 ERP 系统,用户可以将这些软件模块与非 ERP 软件 混合匹配使用。 用户可以按需求单独更新某一个模块,而没有必要为了增强某一个功能对系统进 行全面升级。用户用逐个模块更新的办法增强系统的功能,而不必更换整个系统。 BAPI 技术对 ERP 软件的开发商说来是非常重大的进步。从 MRPII 到 ERP,系统 功能越来越多,一个软件公司无论多么强大,也无法独自开发包括企业全部专业的全 部管理功能的软件。在技术上必须有能力把第三方软件接在自己的核心软件上。SAP 的 BAPI 和 Oracle 应用的 30 多个 API 能够使自己的软件具有“无限”的扩展能力。 BAPI 是 SAP 提供的基于业务对象的函数,关键是它们处理的对象是 R/3 的业务 相关 business object) ,比如单据类销售订单,组织:公司等,它们是一系列实体。 RFC 则是一种系统间通讯的方式(Remote Funciton Call) ,一个男人可能同时也是一 个老人,一个 BAPI 函数往往能是一个 RFC 函数。 2.5 OA 系统相关开发框架 extjs 介绍 EXT 概念 1、ExtJS 可以用来开发 RIA 也即富客户端的 AJAX 应用,是一个用 javascript 写的,主要用于创建前端用户界面,是一个与后台技术无关的前端 ajax 框架。因此,可以把 ExtJS 用在.Net、Java、Php 等各种开发语言开发的应用中。 ExtJs 最开始基于 YUI 技术,由开发人员 JackSlocum 开发,通过参考 JavaSwing 等机制来组织可视化组件,无论从 UI 界面上 CSS 样式的应用,到数据解析上的异 常处理,都可算是一款不可多得的 JavaScript 客户端技术的精品14。 2、Ext 的 UI 组件模型和开发理念脱胎、成型于 Yahoo 组件库 YUI 和 Java 平 台上 Swing 两者,并为开发者屏蔽了大量跨浏览器方面的处理。相对来说,EXT 要 比开发者直接针对 DOM、W3C 对象模型开发 UI 组件轻松。 ExtJs UI Engine 简介 ExtJs 初期仅是对 Yahoo! UI 的对话框扩展,后来逐渐有了自己的特色,深受 网友的喜爱。 发展至今, Ext 除 YUI 外还支持 Jquery、Prototype 等的多种 JS 底层库,让大家自由地选择。该框架完全基于纯 Html/CSS+JS 技术,提供丰富的 跨浏览器 UI 组件,灵活采用 JSON/XML 数据源开发,使得服务端表示层的负荷真 正减轻,从而达到客户端的 MVC 应用。 ExtJs 支持多平台下的主流浏览器 Internet Explorer 6+ FireFox 1.5+ (PC, Mac) Safari2+、Opera9+。在使用的厂家包括 IBM、Adobe、Cisco 和更多。 ExtJs 官方网站 Ajax 主流框架与 ExtJS JQuery、 Prototype 和 YUI 都属于非常核心的 JS 库。虽然 YUI,还有最近的 JQuery,都给自己构建了一系列的 UI 器件(Widget) ,不过却没有一个真正的整 合好的和完整的程序开发平台。哪怕是这些低层的核心库已经非常不错了,但当投入 到真正的开发环境中,依然需要开发者做大量的工作去完善很多缺失之处。而 Ext 就是要填补这些缺口。主流开源框架中只有 Dojo 像 Ext 一样,尝试着提供整合的开 发平台。相比 Dojo 这个出色的工具包, Ext 能提供一个粘合度更高的应用程序框 架。Ext 的各个组件在设计之时就要求和其它 Ext 组件组合一起工作是无缝合作的。 这种流畅的互通性,离不开一个紧密合作的团队,还必须时刻强调设计和开发这两方 面目标上的统一,而这点是很多开源项目未能做到的15。 Ext 绝对可以单独使用。实际上,除了有特定的要求,推荐单独使用 Ext,这样 的话文件占位更小,支持和整合也更紧密。Ext 也支持与 jQuery、 YUI 或 Prototype 整合使用,作为低层库的角色出现,以提供处理各种核心的服务,如 DOM 和事件处理,Ajax 连接和动画特效。使用整合方式的一个原因是它们已具备 了一些特定的器件而 Ext 并没有原生支持像 YUI 的 History 控件便是一个典型 的例子。这时,Ext 需要依赖 YUI 这个库的底层来实现 History 控件,这样一来的 话也可免去 Ext 自身底层库,从而减少了整个程序的内存占用。另一个使用整合方 式的原因是,对于许多已在使用其他底层库的程序,你可能希望逐步加入 Ext。总之, 如果已经有了其他库,Ext 可已利用它们。Ext 的宗旨是为用户提供各种可能性和性 能上的优化。而事实是,只要实现了相对应的底层库接口,为任意一个框架添加上适 配器是没有问题的人们可以轻松地将 Dojo、Moo、Ajax.NET,或其它 JS 库转 变为 Ext 的底层。 3 3宁波金田宁波金田 SAP (注:外币借款暂不支持) 4.1.5 机物料不合格审批流程需求 1、机物料不合格后,分公司又因生产等原因可能需要使用,分公司人员提交机 物料不合格让步接收申请并知会原辅料验收科辅料验收班; 2、采购科长提出与供应商的协商结果; 3、如果金额在 20000 元以下,单价在 2000 元以下的,由分子公司生产经理对采 购部的协商结果进行确认,如果金额在 20000(含)-50000 元间或单价在 2000 元 (含)以上,由分子公司生产经理对采购部的协商结果进行确认,然后综合采购部经 理对协商结果进行审批; 4、质量推进部经理对让步接收申请进行核准,审批完后,由验收员对结果进行 SAP 回写; 5、如果金额在 50000(含)元以上的,质量推进部经理审批后,由采购副总监 对协商结果进行审批,再由分管质量总裁助理对让步接收结果进行审批 4.1.6 原料不合格审批流程需求 SAP 自动激活 OA 中的原材料不合格审批流程到验收科长节点,验收科长可选择 结束流程直接到检验员处,调用 SAP 接口,将结果写回 SAP,否则走完审批后将结 果写回 SAP。 4.1.7 销售订单评审流程需求 主要处理订单相关信息下载,并把 OA 处理的结果反馈到 SAP 销售订单,更新 及状态。订单下载时销售订单处于评审状态,无法正常流转,待 OA 处理完毕后把结 果反馈到 OA,销售订单才可以手工操作,参与单据流转。 4.1.8 电子出厂单流程需求 1. 从 SAP 中根据外向交货单号带出库车号,出厂公司、客户名称、装车数量,业 务类型;出库物料规格属性行次等信息。 (对于没有外向交货单号的出厂单可以直接 在 OA 当中进行新建。 ) 2. 走流程审批后,将处理状态回写到 SAP 中。 3 .每一个节点均需要向 SAP 中回写状态; 4.系统自动根据 SAP 的业务类型区分内贸、外贸,有拼车的流程自动转到开票 节点;开票人员收到样品(赠品)和转厂销售(深加工)不管是与国内货物拼车和不 拼车,如果全部是收取现金/支票/欠条流到会计处,会计再流到出纳处;开票人员收 到样品(赠品)和转厂销售(深加工)不管是与国内货物拼车和不拼车,如果是全部 赊销,开票人员流到会计处,会计再流到保安处;除转厂销售外的外贸业务白天都流 到会计处,晚上下班后流到开票处。如果外贸存在分公司之间拼车现象,且保管员先 流到随便哪个子公司会计,子公司再流到另一个子公司的会计,会计最终流到保安处。 ) 5. 会计和开票人员是维护好的,不需要再次指定 6. 根据时间点,自动授权 7. 添加支付方式(现金、远期支票、欠条;全部赊销) 4.1.9 预留单审批流程需求 该流程分两类,一类是直接预留,一类是采购; 1需要将物料编号、物料名称及其他常用属性信息在每天晚上 SAP 和 OA 同步; 2在申请单中可以通过选择窗口检查物料并选择,可以对物料名称和物料编号 等数据信息进行模糊查询; 3选择一个物料后,主申请单带出相关的物料库存信息(只可以查看) ,后续进 行 OA 审批流程; 4. 开放一个 SAP 查询,查看某一个物料的库存信息; 5审批完成生成 SAP 预留单(及预留单号) 6采购类的审批完后生成 SAP 采购申请(及采购申请单号) ; a.仓库保管员审核之前生成预留单(及预留单号); b.申请之前可以查询库存; c.没有库存或低于安全库存时(如果在安全内则显示数据或提醒不需采购)触发 采购申请单,审批完成后在 sap 中生成采购申请单; d.有库存,保管员帐务处理之后在 sap 中生成出库单; e. 采购完成之后,不要归档,回到领用申请人节点,然后到仓库帐务处理; 注:每个审批人员的时间上要设立一个时间限制,如果超过这个时间则默认他审 核过。 4.1.10设备封存报废流程需求 设备部资产主数据抽取出来,输入设备号 报废原因和处理措施手工填写,然后进行 审批,审批完成后,设备状态改变,还需要根据设备号找到固定资产号,修改固定资产状态 (固定资产状态修改这部分经过讨论确认不执行) 设备状态包含投运封存报废 建议不可以直接修改固定资产状态,因为设备资产和固定资产不一一对应,建议模 式在 OA 审批后,增加一个节点,将审批状态告知资产管理员,然后再走固定资产报废流 程; 设备净值=原值-计提折旧 另外封存报废中的设备计提折旧和残值,现在是由固定资产中获得,这个有问题(固 定资产和设备号不是一一对应),需要先到财务确认一下设备计提折旧和残值,(这个是 现有流程中的缺失) 4.1.11检定证书审批流程需求 OA 中流程走完后,生成 word 文件,此 word 的路径挂到 SAP 中; 原有 OA 系统中已实现了改功能,可以借鉴之前的现有程序逻辑和 SAP 端的接 口。 4.2 宁波金田 SAP 2009 年 2 月 13 工程师突击 SAP ABAP 实用程序开发攻略 作者: 唐骏华 机械工业出版社 2011 年月 14 深入浅出 Ext JS 徐会生 (作者) 人民邮电出版社; 第 1 版 (2009 年 3 月 1 日) 15 百度文库. 16 协同商务平台 黄力华 科技经济市场 2009 年 11 期 17 中国的 ERP 实施之路 武 兴兵 管政 2002/02/26 18 中国软件网. 19 赛迪网. 20 百度文库. 作者在读期间科研成果简介作者在读期间科研成果简介 SAP 系统集中监控可对金田投资多万的 SAP ERP 项目系统正常运行起 关键保障作用,可对故障隐患发出早期预警;可对已发生的故障自动即时报警,即时 响应;可对影响系统的关键因素进行快速分析、定位;且完全独立完成;在国内实施 SAP 的公司属于先进水平。 声声 明明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成 果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发 表或撰写过的研究成果,也不包含为获得四川大学或其他教育机构的学位或证书而使 用过的材料。与我一同工作的同志对本研究所作的任何贡献均已在论文中作了明确的 说明并表示谢意。 本学位论文成果是本人在四川大学读书期间在导师指导下取得的,论文成果归四 川大学所有,特此声明。 学位指导老师: 企业指导老师: 学 生: 年 月 日 致致 谢谢 本论文是在张蕾、童增荣老师的悉心指导下完成的,在此谨向张老师、童老师表 示衷心的感谢。论文的完成得益于张老师、童老师的正确指导和严格要求,张老师、 童老师对课题的研究方向给予了高度的重视并倾注了大量的心血,高度关注工程的进 展,给予了我很多的指导。张老师、童老师渊博的学识、严谨的治学态度、对科学研 究的高度热情是对我永远的鞭策,张老师、童老师的精心培养将使我受益终身。 附附 录录 论文的完成得益于张老师、童老师的正确指导和严格要求,张老师、童老师对课 题的研究方向给予了高度的重视并倾注了大量的心血,高度关注工程的进展 相关编程源代码 function zfi_zjzfxx_oa. *- - *Local interface: * IMPORTING * VALUE(ZFKTYPE) TYPE CHAR1 * EXPORTING * VALUE(MESSAGE) TYPE BAPI_MSG * VALUE(STYPE) TYPE BAPI_MTYPE * TABLES * T_JD STRUCTURE ZIFS_DDXX * ITEMS STRUCTURE ZFI_OA_EBELN * T_JD1 STRUCTURE ZFI_ZJZFXX_OA *- - * 说明:此function 只用于原料采购相关的,机物料不在此列 *- * * 说明: 定义内表及变量 * * 抬头表中的GYSYE在此处作为申请金额汇总进行返回 * * 修改时间:2011-01-11 修改人:yuwenxue * * 修改原因:1000005709采购凭证有122冲回时,取值不正确 * * 修改时间:2011-03-24 修改人:yuwenxue * * 修改原因:采购订单有多个不同工厂的情况在使用付款方式3时,反回数据会显示多行的物 料数据* * 要求进行多次支付审请 *- * * 采购订单抬头信息查询 types: begin of g_typ_ddtt, bukrs like ekko-bukrs, 公司代码 ebeln like ekko-ebeln, 采购订单 lifnr like ekko-lifnr, 供应商 zhetong like ekko-zhetong, 合同号 waers like ekko-waers, 贷币码 point_dif like ekko-point_dif, 磅差范围 zmethd_recv like ekko-zmethd_recv, 结算方式 0:按来料数结算 1:按实收数 结算 yfje like bsik-dmbtr, 已付款金额 bsart like ekko-bsart, 采购凭证类型 end of g_typ_ddtt. data g_itb_ddtt type table of g_typ_ddtt. data l_wa_ddtt like line of g_itb_ddtt. data l_jname like rstxt-tdname. 付款条件说明 data l_itb_text like tline occurs 0 with header line. 文本 data g_itb_ddhxm like t_jd1 occurs 0. data l_wa_ddhxm like line of t_jd1. data l_wa_t_jd1 like line of t_jd1. 订单输出的行项目信息 *采购订单的发票信息 types:begin of g_typ_rseg, 凭证项目:收款发票 ebeln like rseg-ebeln, 采购凭证号 ebelp like rseg-ebelp, 采购凭证的项目编号 wrbtr like rseg-wrbtr, 发票行项目金额 mwskz like rseg-mwskz, 销售税代码 menge like rseg-menge, 发票校验数量 knumh like a003-knumh, 条件号 kbetr like konp-kbetr, 税率 kschl like konp-kschl, 条件类型 shkzg like rseg-shkzg, 冲销类型 belnr like rseg-belnr, 凭证 gjahr like rseg-gjahr, 凭证年度 awkey like bkpf-awkey, 字段参考关键 blart like bkpf-blart, 凭证类型 fphsje like rseg-wrbtr, 发票行项目金额(含税)通过计算得到 end of g_typ_rseg. data:g_itb_rseg type g_typ_rseg occurs 0 with header line. *采购订单的发票抬头 types:begin of g_typ_rbkp, 凭证项目:收款发票 belnr like rbkp-belnr, 发票校验凭证 gjahr like rbkp-gjahr, 凭证年度 rmwwr like rbkp-rmwwr, 总金额 wmwst1 like rbkp-wmwst1, 总税额 waers like rbkp-waers, 货币 end of g_typ_rbkp. data:g_itb_rbkp type g_typ_rbkp occurs 0 with header line. data l_wa_rbkp like line of g_itb_rbkp. * TYPES:BEGIN OF g_typ_rseg1, 凭证项目:收款发票 * ebeln LIKE rseg-ebeln, 采购凭证号 * ebelp LIKE rseg-ebelp, 采购凭证的项目编号 * wrbtr LIKE rseg-wrbtr, 凭证货币金额 * mwskz LIKE rseg-mwskz, 销售税代码 * menge LIKE rseg-menge, 订
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 盼考试数学试卷
- 齐河高考数学试卷
- 平邑三年级数学试卷
- 难题填空小学数学试卷
- 盘龙区六下数学试卷
- 钦州市直升初中数学试卷
- 去年最难的中考数学试卷
- 邳州中考高三数学试卷
- 平行线初二数学试卷
- 钱塘小学五年级数学试卷
- 广东省公路服务区管理系统升级及运维项目
- 2025版《中国系统性红斑狼疮诊疗指南》解读 4
- 造林后续管理办法
- 市政施工安全培训课件
- 培训完总结做个课件
- 幼儿园6S管理培训
- 2025年高考江苏卷物理真题(解析版)
- 肇庆辅警考试题库2025(有答案)
- 初中九年级(人教版)语文(上下册)课本全部(40篇)诗词文言文集合
- 医院关于开展整治重复医疗检查检验、违规收费问题工作实施方案的通知
- 中医高热护理常规
评论
0/150
提交评论