SAP宣布推出Blue Ruby,这是在ABAP虚拟机中运行的Ruby版本.
这似乎为Ruby语言提供了额外的可信度,但除了SAP开发人员之外,它是否对Ruby社区的其他部分有任何适用性?
我只是想知道这可能有什么其他意义.或许,可以聘请Ruby开发人员从事SAP项目的其他工作机会?
Ruby程序员还有其他任何潜在的好处吗?
另外,我还不清楚:除了MRI和JRuby之外,还有多少不同的实现,为什么我作为Ruby程序员需要除MRI以外的任何实现?我知道如果我想与Java库集成,我可能需要JRuby.除了MRI或JRuby之外,还有其他任何时候我可能需要研究一个实现吗?
我注意到Blue Ruby已编译完成.这是一个很大的好处,这将是Ruby的第一个编译版本吗?
对不起 - 可能有太多问题,但这是一个大问题,但我不确定为什么/如果确实如此.非常感谢从比我更了解Ruby(和IT)的人那里获得一些反馈.
我们第一次在SOAP 1.1上使用SAP NetWeaver Web服务,该服务需要通过HTTPS进行用户名和密码身份验证.
我目前正在对WCF应用程序进行原型设计,并且我成功地使用这两种绑定配置来使用SAP Web服务.
<basicHttpBinding>
<binding name="SapEndpoint">
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
</binding>
</basicHttpBinding>
<customBinding>
<binding name="SapSoap11Endpoint">
<textMessageEncoding messageVersion="Soap11" />
<httpsTransport authenticationScheme="Basic" />
</binding>
</customBinding>
Run Code Online (Sandbox Code Playgroud)
只要它提供所需的功能,我倾向于使用标准绑定而不是自定义绑定.但我想了解它使用一个绑定或另一个绑定会有什么不同.
如果您之前曾使用过SAP网络服务,那么任何建议都会有所帮助.
谢谢!
我只是一个初学者,我正在尝试理解SAP之间的通信,例如使用SAP连接器的C#应用程序.我搜索了很多网站,但我真的找不到我的问题的答案!我希望这里有人可以帮助我.
例如,我在SAP中有一个功能getProducts(String = " ").这个功能在SAP中完美运行,它不是由我编写的,我无法访问它,所以我不能给你任何代码(对不起).我必须使用C#应用程序与SAP通信.
我想要做的是给SAP一个参数,例如"Shirts".SAP将回馈所有衬衫.我不能这样做Function.GetValue()(或者至少我认为我不能),因为GetValue只需要整数.但如果我进入GetValue(0),它会给我所有的产品(这是正常的)而不仅仅是衬衫.
这是我用来获取数据的代码:
IRfcFunction function = fRepository.CreateFunction("GetProducts");
function.Invoke(destination);
String products = function.GetValue(0).ToString();
result = Functions.Instance.GetData(result);
Run Code Online (Sandbox Code Playgroud)
有没有办法给SAP函数一个字符串参数(而不是一个整数,在本例中为0)并检索我想要的数据?
我想写一个导出引用表的方法.这是必需的,因为它的每一行都可以有自己的结构.所以我宣布这样的类型:
... TYPE STANDARD TABLE OF REF TO data.
Run Code Online (Sandbox Code Playgroud)
我认为如果我可以立即修改最后一行的表而不是单独的工作区来附加,那将是一个很好的想法.
为什么这样做......
FIELD-SYMBOLS: <lfs_struct> TYPE REF TO DATA.
" ...
APPEND INITIAL LINE TO ei_lines ASSIGNING <lfs_struct>.
CREATE DATA <lfs_struct> TYPE (<lfs_field>-segnam).
ASSIGN <lfs_struct>->* TO <lfs_target>.
Run Code Online (Sandbox Code Playgroud)
......但这不是吗?
DATA: lo_struct TYPE REF TO data.
" ...
APPEND INITIAL LINE TO ei_lines REFERENCE INTO lo_struct.
CREATE DATA lo_struct TYPE (<lfs_field>-segnam).
ASSIGN lo_struct->* TO <lfs_target>.
Run Code Online (Sandbox Code Playgroud)
使用'work'我的意思是附加行的值确实会改变.如果我<lfs_target>在第二个例子中分配了类似的东西,它会改变结构本身 - 但不会在表格内部.
显然我正在用最后一个例子改变参考.但是为什么它与Field-Symbols一起使用呢?
我从未与SAP合作过.我对业务有一个合理的理解,但没有会计背景.如何学习ABAP的例子,同时启发我的"SAP方式"?
它不一定是一个深刻的知识,只是为Python和C#世界的某些人开始,但需要了解SAP世界的运作方式.
(这不是"学习SAP-ABAP"的重复)
是SAP Java连接仍然是一个Java应用程序与SAP连接的好办法?会不会有支撑和连接器的维护在未来(特别是在ECC 6.0),或者是一个和唯一的好办法了"企业服务"的使用ECC 6.0?
由于SAP不再维护SAP Connector for .NET,我现在正在寻找将Microsoft世界与SAP世界连接起来的替代方案.我知道有第三方产品,如"ERPConnect",但我想用SAP的工具做到这一点(我不能使用企业服务,因为目标SAP系统是SAP 4.6C).因此,出现了将SAP Java Connector与工具IKVM.NET(www.ikvm.net/devguide/net2java.html)结合使用的疯狂想法.IKVM.NET提供IKVMC工具,它将Java字节码转换为.NET dll和exe."说到做到!" 我将SAP JCo转换为.NET dll并创建了一个新的Visual Studio解决方案.我将所有JCO文件放入我的解决方案的子目录中.我设置了2个生成的IKVM.OpenJDK.Core.dll和sapjco.dll的引用.很棒,所有JCO类现在都可以作为.NET类使用.充满乐观,我写了一些小代码来连接到SAP系统.
JCO.Client client = null; client = JCO.createClient(...)
我的测试代码的编译没有错误."很棒!" 我想.然后我开始了我的tetstapplication.不幸的是我遇到了一个调用JCO.createClient的异常:
无法在java.library.path中加载中间件层'com.sap.mw.jco.rfc.MiddlewareRFC'\ r \nno sapjcorfc
我有两个关于这个主题的问题.
1)您认为使用SAP Java Connector(SAP JCo)将.NET与SAP连接是一个好主意还是无意义?也许有人已经有了相同的想法;-)
2)如何解决上述异常?
我编写了一个Windows应用程序来测试与客户端SAP Web服务的连接.Web服务调用需要X509证书安全性.
在互联网上阅读各种文章之后,我想出了三种方法将X509证书附加到Web服务调用上.不幸的是,所有这些尝试都返回'401 Unauthorized Access'.但是,我可以通过IE中的URL连接到Web服务.
有没有人对我可能做错了什么?我使用的是WSE 3.0,我用来附加证书的三种方法如下: -
证书
X509Certificate2 oCert = GetSecurityCertificate(oCertificate);
svc.ClientCertificates.Add(oCert);
Run Code Online (Sandbox Code Playgroud)
代币
X509SecurityToken oToken = GetSecurityToken(oCertificate);
svc.RequestSoapContext.Security.Tokens.Add(oToken);
Run Code Online (Sandbox Code Playgroud)
政策
SAPX509Assertion sapX509Assertion = new SAPX509Assertion(oCertificate, oStoreLocation, oStoreName, oFindType);
svc.SetPolicy(sapX509Assertion.Policy());
Run Code Online (Sandbox Code Playgroud)
GetSecurityToken()和GetSecuirtyCertificate都搜索证书存储区.SAPX509Assertion执行此操作: -
public SAPX509Assertion(String certSubject, StoreLocation oStoreLocation, StoreName oStoreName, X509FindType oFindType)
{
ClientX509TokenProvider = new X509TokenProvider(oStoreLocation,
oStoreName, certSubject, oFindType);
ServiceX509TokenProvider = new X509TokenProvider(oStoreLocation,
oStoreName, certSubject, oFindType);
Protection.Request.EncryptBody = false;
Protection.Response.EncryptBody = false;
}
Run Code Online (Sandbox Code Playgroud)
更新 OK,我现在有一个WCF调用.我无法使用Eugarps显示的BasicHttpBinding方法,因为它抱怨我连接到https地址并期望http ...这是有道理的.我现在的代码是: -
var binding = new WSHttpBinding();
binding.MaxReceivedMessageSize = int.MaxValue;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
binding.Security.Mode = …Run Code Online (Sandbox Code Playgroud) 我必须将vb6程序迁移到C#.net 3.5用户启动SAP登录并进行身份验证,然后他可以使用该工具使用该工具获取和插入数据问题:我可以用反射创建一个新的GuiApplication,但我可以用它获取当前打开的GuiSessions:/这里是当前打开GuiApplication所有打开的GuiSessions的代码的vb6部分
Dim obj As Object
Set obj = CreateObject("SAPGUI")
Set obj = obj.GetScriptingEngine
If TypeName(obj) = "GuiApplication" Then
Set SapAutomationObject = obj
SapAutomationObject.AllowSystemMessages = False
Debug.Print "SAP Automation OK"
End If
Run Code Online (Sandbox Code Playgroud)
我试着反思:
GuiApplication Application = (GuiApplication)System.Activator.CreateInstance(Type.GetTypeFromProgID("SapGui.S??criptingCtrl.1"));
Run Code Online (Sandbox Code Playgroud)
我有一个实例,但没有现有的会话
TL; DR ---------------
如果我在初始化脚本中正确声明变量,则无法附加到SAPFEWSELib.GuiApplication的"连接"对象.MyApplication.Children(0)集合是空的,但如果我注释掉声明块,它就可以了!
TL; DR ---------------
我正在尝试在我的SAP客户端和我的Excel应用程序之间创建更可靠的连接.
我目前的问题是建立连接.SAP客户端在使用其脚本记录功能时提供示例vbscript.
If Not IsObject(MyApplication) Then
Debug.Print "yep"
Set SapGuiAuto = GetObject("SAPGUI")
Set MyApplication = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = MyApplication.Children(0)
End If
If Not IsObject(session) Then
Set session = Connection.Children(0)
End If
Run Code Online (Sandbox Code Playgroud)
stackoverflow上的另一个问题接近于答案,但是没有达到最低限度.clipoverflow.com/questions/24738998/vba-using-variables-that-were-not-declared
原始代码在这里,我稍微修改了以便它可以在excel/vba中工作.(我删除了IsObject(Wscript),我不得不用MyApplication替换Application)
我想要做的第一件事是明确声明所有变量.
使用代码我在以下地址stackoverflow.com/questions/19783180/get-list-of-all-properties-for-an-object得到我用"类型库信息",功能类型名()来确定每个对象类型.我尝试声明如下
Dim session as GuiSession
Dim MyApplication as GuiApplication
Dim Connection as ISapConnectionTarget
Dim SapGuiAuto as object
Run Code Online (Sandbox Code Playgroud)
我得到用户定义的类型未定义错误.
经过一番搜索,我在这个地址找到了部分答案.
scn.sap.com/thread/3254335
我觉得手动添加"C:\ Program Files(x86)\ SAP\FrontEnd\SAPgui\sapfewse.ocx"引用很容易破解.如果有更好的方法,请告诉我.
好的,现在我可以这样声明并且它有效.
Dim MyApplication As SAPFEWSELib.GuiApplication
Dim …Run Code Online (Sandbox Code Playgroud)