l_stmt1 = 'CALL "ZBO001""ZPROC_FI_001" (,,)'
create db connection
lr_conn = cl_sql_connection=>get_connection( ls_dbcon-con_name )
create a statement object
l_stmt_ref1 = lr_conn->create_statement( )
GET REFERENCE OF l_param1 INTO lr_var_01
l_stmt_ref1->set_param( data_ref = lr_var_01
inout = cl_sql_statement=>c_param_in )
l_res_ref1 = l_stmt_ref1->execute_query( l_stmt1 )
l_stmt_ref->execute_procedure( proc_name = 'ZBO001ZPROC_FI_001')
lr_conn->COMMIT( )
如果用SUBMIT z_simple_program EXPORTING LIST TO MEMORY AND RETURN程序会输出calling中的语句,simple程序中的值不会输出,保存在内存中。
如果你希望先输出calling中的语句,可以考虑使用GUI status
START-OF-SELECTION
WRITE '222'
SET PF-STATUS 'STATUS_1000'
AT USER-COMMAND
CASE sy-ucomm
WHEN 'EXECUTE'
IF sy-pfkey = 'STATUS_1000'
SET PF-STATUS 'STATUS_2000'
ENDIF
LEAVE TO LIST-PROCESSING
SUBMIT zrab_yxy_0005
SET SCREEN 0
ENDCASE
可以参考page349页的GUI状态交互。
SAP R/3系统是业界最先进、最稳定的ERP系统,国际和国内大型企业采用该系统的比例遥遥于其它ERP系统的总和。SAP R/3内建了二次开发平台,使用的开发语言叫做ABAP,是一种类似于COBOL的编程语言。ABAP在报表输出方面功能相对较弱(只能按行打印在屏幕上或者导出到Excel中处理),所以日常工作中经常需要在外部开发程序。通过程序接口自动读取SAP R/3的数据表(视图),在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。
SAP R/3的接口方式主要有RFC、IDOC、BAPI三种,本文要介绍的是相对比较简单的RFC(Romote Function Call,远程函数调用)。SAP系统RFC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。下面是RFC调用的模型:
本文主要不是讨论SAP R/3函数的开发,因为使用SAP的公司一般都有专门的ABAP开发人员。大家如果有机会接触ABAP平台,可以通过事务代码SE37进入ABAP开发平台的"函数编制器"进行函数开发测试。如图:
下面主要以VB为例介绍一下SAP接口RFC的开发思路。在SAP客户端SAP Gui Client安装的时候,注意选择安装附带的SDK包(最保险是选择完全安装)。RFC接口程序开发,主要用的是"SAPFunctions"这个控件,通过控件在外部程序模拟SAP Gui Client的用户登录和函数调用,然后返回函数的值。请看下面的程序片段和重点注解(尤其是test_Click()):
Private Sub Command1_Click()
' 定义R/3用户名和密码变量(用户名应由SAP管理员开运行函数的权限)
Dim logname As String 22, password As String 22
Call logonr3(logname, password) ' 调用SAP登录界面程序
If logflag Then ' 调用生产、开发系统开关
StatusBar1Visible = True
StatusBar1SimpleText = "正在登录SAP R/3系统"
Dim R3AppServer As String, R3Client As String, R3SystemNo As String
If Form2opPRDValue Then
' 以下服务器参数请根据客户配置情况更改
R3AppServer = "10314" ' 生产系统服务器IP
R3Client = "800" '生产系统集团代码
R3SystemNo = "00" '生产系统号
Else
R3AppServer = "10331" ' 开发系统服务器IP
R3Client = "101"
R3SystemNo = "00"
End If
Unload Form2 ' 释放 Form2 , 所有控件及值不可用
Set Functions = CreateObject("SapFunctions") ' 创建RFC的本地对象
Set Connect = FunctionsConnection ' 设置连接
ConnectApplicationServer = R3AppServer ' 赋值服务器IP
ConnectClient = R3Client ' 赋值SAP集团代码
ConnectLanguage = "ZH" ' 置SAP系统界面中文
ConnectUser = Trim(logname) ' 赋值SAP登录用户名
Connectpassword = Trim(password) ' 赋值SAP登录用户密码
ConnectSystemNumber = R3SystemNo ' 赋值SAP系统号
If Not ConnectLogon(0, True) Then ' 软件登录SAP并判断
MsgBox "登录SAP R/3失败,请重新登录!", vbOKOnly + vbExclamation, "系统提示"
Command1SetFocus
Else ' 登录SAP成功
Command1Enabled = False
Command2Enabled = True
testEnabled = True
End If
StatusBar1SimpleText = ""
StatusBar1Visible = False
End If
End Sub
Private Sub Command2_Click() ' 注销SAP登录
ConnectLogOff
Command2Enabled = False
Command1Enabled = True
testEnabled = False
End Sub
Private Sub Command3_Click() ' 退出SAP接口演示程序
If Form1Command2Enabled Then
MsgBox "退出前请断开SAP R/3系统!", vbOKOnly + vbInformation, "系统提示"
Else
End
End If
End Sub
Private Sub Form_Load()
Command2Enabled = False
testEnabled = False
logoflag = False
End Sub
Private Sub test_Click() ' SAP RFC远程调用处理主演示
Dim GetCustomers As Object
Dim Customers As Object
Dim i As Integer
' 通过RFC接口远程运行SAP内部函数RFC_CUSTOMER_GET
' 赋要调用的SAP内建函数名
Set GetCustomers = FunctionsAdd("RFC_CUSTOMER_GET")
GetCustomersExports("KUNNR") = "0000000103" ' 向函数入口赋值(客户代码)
' 向函数入口赋查询表名称
Set Customers = GetCustomersTables("CUSTOMER_T")
If GetCustomersCall Then ' 调用成功遍历显示客户所有信息条目
For i = 1 To Customersrowcount
MsgBox Customers(i, "KUNNR")
Next i
Else
MsgBox " 搜索出错! 出错信息: " + GetCustomersException
End If
End Sub
SAP的RFC调用是其接口技术中最简单和易用的一种方式,该方式开发比较简便,特别适合于外部报表开发,但对于大数据量的查询效率相对较低。大家在熟练掌握后,可以进一步学习高级的IDOC和BAPI接口开发技术。
Program:是当触发Output时要调用的ABAP程序名Form routing:是指上述要调用的ABAP程序里面的某个子程序名称,即FORM END FORM 语法格式中的Form:是指当Medium选择Print Output时, 所要调用的SAP Script的Form名称在T-code"SE71"中定义Smartform:是指当Medium选择Print Output时, 所要调用的SmartForm名称在T-code"SMARTFORMS"中定义
自建的BADI,用SE19,打开实例,在里面设置个断点,再去运行事务代码CO11N *** 作,系统如果有调用会自动跳到断点处,停在哪儿。
如果是标准的BADI,用事务SE24,输入CL_EXITHANLDER,点显示,找到方法,GET_INSTANCE,在里面放个断点,再运行T-CODE就可以跟踪调用了那些BADI。
接口,就是数据接口,在两个系统中进行数据传递,比如之前他们用的金蝶ERP系统,现在上SAP了,就要把金蝶中的数据,传到SAP中来,这时,就需要你做一个SAP的接口来对接数据。做接口的方式通常是WEBSERVISE,IDOC这些方式。
SAP系统(全称:systemsandproctsindataprocessing)是SAP公司推出的一个企业管理工具。全球77%的交易收入都与SAP系统有关,SAP(思爱普)是ERP的代名词,是全球最大的企业管理和协同化商务解决方案供应商、全球第二大云公司。在中国有超过16,100多家客户。
SAP实施方法分为5步:
第一阶段:项目准备。包括:项目管理、项目组织培训、项目的初步实施计划、制定项目实施的规范及标准、启动项目网络/硬件技术环境的分析及规划、质量检查。
第二阶段:蓝图设计。包括:项目管理、项目组初中级培训、建立系统技术环境、企业组织结构确定、企业业务流程的描述、分析、优化及确定、质量检查。
第三阶段:系统实现。包括:项目管理、项目组高级培训、基本系统配置及确认、系统管理、最终系统配置及确认、开发数据转换程序、开发应用接口程序、开发外挂或扩展程序、报表定义、格式定义、权限定义及管理、归档定义及管理、系统集成测试、用户手册及培训资料、质量检查。
第四阶段:测试与准备。包括:项目管理、用户培训、系统管理、正式运行、技术环境的安装测试、系统性能、安全测试、制定明细运行计划、制定系统切换计划、制定系统运行支持计划、数据准备、系统切换、质量检查。
第五阶段:系统上线。项目管理、后续培训、提供用户支持、确认正式业务流程的正确性、优化系统的使用、制定后续长期计划、系统升级、系统日常维护、项目回顾。
学会的时间不会太长,因为也不是什么难事。
以上就是关于如何在sap 调用hana存储过程全部的内容,包括:如何在sap 调用hana存储过程、SAP/ABAP高手请进,求教、利用VisualBasic开发SAP接口程序初探等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)