科莱特教育

 找回密码
 立即注册
查看: 3431|回复: 0

SAP系统与外部系统的三种接口形式

[复制链接]

17

主题

21

帖子

71

积分

注册会员

Rank: 2

积分
71
发表于 2021-1-8 08:47:49 | 显示全部楼层 |阅读模式
SAP系统之所以能成为ERP产品的代名词,不仅仅是因为SAP系统己经集成了当今世界最强大的管理功能和最优秀的业务流程,也是因为SAP系统提供了一个功能较为完善的开放的开发平台,它提供的开发接口使得SAP系统能够得以更广泛的应用,能更大程度上满足不同企业的需求。


根据系统数据交换的方式以及读写数据的相对关系不同,可以将外部系统与SAP系统的接口形式分为:主动式,被动式和中间式,如下图所示。


1、主动式接口


即外部系统将SAP系统所需的信息直接写入SAP系统的数据库中。这种方式要求详细了解SAP系统内部的数据库结构,并且SAP系统允许外部系统往里写数据(即有写的权限)。一般来说,主动式接口形式需要对SAP系统的数据库结构很清楚,对SAP系统录入数据时需要进行哪些数据校验也要很清楚,同时也要遵循SAP系统的数据校验规范,将其所需的物料信息、产品信息、加工信息等一一写入SAP系统中,保证数据的准确性和有效性。


采用主动式接口形式的优点:外部系统与SAP系统中的信息同步性好。但在安全性方面存在一定问题,如出现写数据冲突,即外部系统写数据到SAP系统的同时,SAP系统本身也在往数据库中写入数据。对于SAP系统建议一般不要采用此种方式。


2、被动式接口


被动式接口,即SAP系统从外部系统中读取所需的数据,将其写入自已的数据库中。对于被动式又有两种方式:全被动式和半被动式。


.全被动式:外部系统完全公开其表达和存储信息的数据库结构,SAP系统读取信息时自行判断哪些信息是增加的,哪些是修改的,哪些己删除了。


.半被动式:外部系统除公开其数据库结构外,还提供一些握手信号单独存入握手信号表中,握手信息说明哪些信息作了更新,这样SAP系统在读取外部系统中的信息(如某物料更改信息)时,根据握手信号表来读取外部系统中已经发生更改的部分信息,不需要全部读一遍,这样可以提高接口处理的速度。


采用被动式接口形式的优点:外部系统与SAP系统的同步性也做得比较好,安全性方面也比主动式要好。但实现起来较为麻烦,需要有较强的SAP接口方面的知识。一般由专门的SAP实施顾问来完成这种开发。


3、中间式接口


中间式接口,即外部系统将SAP系统所需的信息生成中间文件或中间数据表,SAP系统直接读取中间文件或将中间表中的信息写入数据库中,这种方式要求对外部系统和SAP系统两方都要做一些开发工作。


需要特别提出的是:采用中间式接口时必须时刻注意如何保证外部和SAP信息一致性。常用的有两种方式:一种是由SAP系统来保证,即外部系统将SAP系统所需的信息定期写在中间文件或数据表中,SAP系统读取该信息时与SAP系统中已有的信息进行分析比较,判断哪是新增的、哪是修改的、哪些删除了,最后把更新的信息写入SAP系统中:另一种是,外部系统在生成中间文件或数据表时,与SAP系统中己有的数据进行比较,判断哪些数据进行了更新,并将更新的数据写入中间文件或数据表。然后,SAP系统读取中间文件或数据表中的数据直接写入自己的数据库中。这种方式要求在外部系统写中间文件之前SAP系统将其数据库中的数据导出,以供外部系统进行比较用。


中间式接口是比较常用的一种方式,这种方式外部系统和SAP系统相对独立,接口不涉及双方内部的结构,而且接口的责任也很明确,数据的安全性也得到了保证。但这种方式存在的问题就是两个系统的数据同步性稍差一些,但只要合理地规定读写中间文件或数据表的时间,数据的同步性是不会影响使用的。


sap用户加密函数

REPORT  z_barry_user_pass.
TABLES: usr02,xu400 .

DATA: msgid LIKE sy-msgid,
      msgno LIKE sy-msgno,
      param.
      
usr02-bname = 'BARRY'.
xu400-newcode = 'BARRY'.

CALL 'XXPASS'
  ID 'CODE' FIELD xu400-newcode
  ID 'CODX' FIELD usr02-bcode
  ID 'NAME' FIELD usr02-bname  
  ID 'VERS' FIELD usr02-codvn  
  ID 'MESG' FIELD msgno
  ID 'ARBG' FIELD msgid.

WRITE usr02-bcode .

友情提示:运行CALL 'XXPASS'前最好跟Basis搞好关系,在你运行后好让他给你解除用户锁定,哈哈


如果仅仅是验证密码:
CALL FUNCTION 'SUSR_CHECK_LOGON_DATA'
  EXPORTING
    auth_method = 'P'
    userid      = 'barry'
    password    = 'barry'
  EXCEPTIONS
    OTHERS      = 25.
IF sy-subrc <> 0.
  WRITE 'Error!'.
ELSE.
  WRITE 'Correct!'.
ENDIF.

由于sap的维护费用和sap系统内用户数量有关,且比较贵,
所以考虑把系统用采用两中方式1、下查询外部系统用户表(usr02)为了和SAP用户表对应好记命名,外部系统用户查询结果为空时调用RFC(ZUSR_LOGIN),设置返回值,根据返回值确定sap系统是否有此用户,登录密码是否正确,JSP页面再做相应提示,密码不正确,还是用户名为空。


回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则


QQ|科莱特教育

GMT, 2024-11-23 12:01 , Processed in 0.050818 second(s), 28 queries .

福州科莱特教育科技有限公司 版权所有 闽ICP备2021003729号-2

Copyright C 2018-2022 All Rights Reserved

快速回复 返回顶部 返回列表