如果函数的第 arg 个参数是一个 字符串,返回该字符串。 若该参数不存在或是 nil, 返回 d。 除此之外的情况,抛出错误。
返回一段大小为 sz 的空间地址。 你可以将字符串复制其中以加到缓存 B 内 (参见 lu aL_Buffer)。 将字符串复制其中后,你必须调用 luaL_addsize 传入字符串的大小,才会真正把它加入缓存。
针对栈顶的对象,创建并返回一个在索引 t 指向的表中的 引用 (最后会d出栈顶对象)。
此引用是一个唯一的整数键。 只要你不向表链氏 t 手工添加整数键, lu aL_ref 可以保证它返回的键的唯一性。 你可以通过调用 lua_rawgeti(L, t, r) 来找回由 r 引用的对象。 函数 luaL_unref 用来释放一个引用关联的对象
如果栈顶的对象是 nil, l uaL_ref 将返回常量 LUA_REFNIL。 常量 LUA_NOREF 可以保证和 luaL_ref 能返回的其它引用值不同。
用于 lu aL_setfuncs 注册函数的数组类型。 name 指函数名,func 是函数指针。 任何 luaL_Reg 数组必须以一对 name 与 func 皆为 NULL 结束。
如果 modname 不在 package.loaded 中, 则调用函数 openf ,并传入字符串 modname。 将其返回值置入 package.loaded[modname]。 这个行为好似该函数通过 require 调用过一样。
如果 glb 为真, 同时也讲模块设到全局变量 modname 里。
在栈上留下该模块的副本。
把数组 l 中的所有函数 (参见 lu aL_Reg) 注册到栈顶的表中(该表在可选的上值之下,见下面的解说)。
若 nup 不为零, 所有的函数都共享 nup 个上值。 这些值必须在调用之前,压在表之上。 这些值在注册完毕后都会从栈d出。
标准输入输出库中用到的标准文件句柄结构。
文件句柄实现为一个完全用户数据, 其元表被称为 LU A_FILEHANDLE (LU A_FILEHANDLE 是一个代表真正元表的名字的灶唤宽宏)。 这张元表由标准输入输出库(参见 lua L_newmetatable)创建。
用户数据必须以结构 luaL_Stream 开头; 此结构其后可以包含任何其它数据。 f 域指向一个 C 数据流 (如果它为 NULL 表示一个没有创建好的句柄)。 closef 域指向一个在关闭或回收该流时需要调用的 Lua 函数。 该函数将收到一个参数,即文件句柄。 它需要返回 true( *** 作成功)或 nil 加错误消息(出错的时候)。 一旦 Lua 调用过这个域,该域的值就会修改为 NULL 以提示这个句柄已经被关闭了。
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接口程序开发,主要用的是"SAP.Functions"这个控件,通过控件在外部程序模拟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 ' 调用生产、开发系统开关
StatusBar1.Visible = True
StatusBar1.SimpleText = "正在登录SAP R/3系统..."
Dim R3AppServer As String, R3Client As String, R3SystemNo As String
If Form2.opPRD.Value Then
' 以下服务器参数请根据客户配置情况更改
R3AppServer = "10.3.1.4" ' 生产系统服务器IP
R3Client = "800" '生产系统集团代码
R3SystemNo = "00" '生产系统号
Else
R3AppServer = "10.3.3.1" ' 开发系统服务器IP
R3Client = "101"
R3SystemNo = "00"
End If
Unload Form2 ' 释放 Form2 , 所有控件及值不可用
Set Functions = CreateObject("Sap.Functions") ' 创建RFC的本地对象
Set Connect = Functions.Connection ' 设置连接
Connect.ApplicationServer = R3AppServer ' 赋值服务器IP
Connect.Client = R3Client ' 赋值SAP集团代码
Connect.Language = "ZH" ' 置SAP系统界面中文
Connect.User = Trim(logname) ' 赋值SAP登录用户名
Connect.password = Trim(password) ' 赋值SAP登录用户密码
Connect.SystemNumber = R3SystemNo ' 赋值SAP系统号
If Not Connect.Logon(0, True) Then ' 软件登录SAP并判断
MsgBox "登录SAP R/3失败,请重新登录!", vbOKOnly + vbExclamation, "系统提示"
Command1.SetFocus
Else ' 登录SAP成功
Command1.Enabled = False
Command2.Enabled = True
test.Enabled = True
End If
StatusBar1.SimpleText = ""
StatusBar1.Visible = False
End If
End Sub
Private Sub Command2_Click() ' 注销SAP登录
Connect.LogOff
Command2.Enabled = False
Command1.Enabled = True
test.Enabled = False
End Sub
Private Sub Command3_Click() ' 退出SAP接口演示程序
If Form1.Command2.Enabled Then
MsgBox "退出前请断开SAP R/3系统!", vbOKOnly + vbInformation, "系统提示"
Else
End
End If
End Sub
Private Sub Form_Load()
Command2.Enabled = False
test.Enabled = 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 = Functions.Add("RFC_CUSTOMER_GET")
GetCustomers.Exports("KUNNR") = "0000000103" ' 向函数入口赋值(客户代码)
' 向函数入口赋查询表名称
Set Customers = GetCustomers.Tables("CUSTOMER_T")
If GetCustomers.Call Then ' 调用成功遍历显示客户所有信息条目
For i = 1 To Customers.rowcount
MsgBox Customers(i, "KUNNR")
Next i
Else
MsgBox " 搜索出错! 出错信息: " + GetCustomers.Exception
End If
End Sub
SAP的RFC调用是其接口技术中最简单和易用的一种方式,该方式开发比较简便,特别适合于外部报表开发,但对于大数据量的查询效率相对较低。大家在熟练掌握后,可以进一步学习高级的IDOC和BAPI接口开发技术。
是指同一计算机不同功能层之间的通信规则称为接口。java接口作用:
1、利于代码的规范。这样做的目的一方面是为了给开发人员一个清晰的指示,告诉他们哪些业务需要实现;同时也能防止由于开发人员随搜伏意命名而导致的命名不清晰和代码混乱,影响开发效率。
2、有利于对代码进行维护。可以一开始定义一个接口,把功能菜单放在接口里,然后定义类时实现这个接口,以后要换的话只不过是引用另一个类而已,这样就达到维护、拓展的方便性。
3、保证代码的安全和严密。一个好的程序一定符合高内聚低耦合的特征,能够让系统世坦携的功能较好地实现,而信手不涉及任何具体的实现细节。这样就比较安全、严密一些,这一思想一般在软件开发中较为常见。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)