克米亚sap论坛,最好的sap论坛,sap系统,sap培训,kemiya,克米亚,sap账号,sap ides,sap mm,sap hana,sap fico,sap pp

 找回密码
 注册
查看: 2098|回复: 26

SAP HANA通过PhoneGap(Cordova)连接手机

[复制链接]
kmy 发表于 2013-4-29 14:15:11 | 显示全部楼层 |阅读模式
原文链接:http://scn.sap.com/community/developer-center/hana/blog/2012/12/29/sap-hana-goes-mobile-with-phonegap-cordova
  
三天前,我在Packt出版社的朋友发给我一本免费的电子书,叫PhoneGap初学者向导。当我知道PhoneGap时我还从来没真正使用过它……所以当然,我第一个想法是……我要如何将它与SAP HANA结合起来?
两天前,我开始读这本书,并且安装PhoneGap……这完全是一种痛苦,而且并不起作用……因此我仅仅把它放到一边到来年……
昨天……我的程序员精神打动了我……从早上9点到晚上11:30,我让自己投身于让PhoneGap运行的运动中,当然……是让它可以与SAP HANA结合在一起……这是我的故事……那么你就不用伤脑筋了。
有了这些……我就基本准备好了……因为我少了Cordova-2.2.0.jar文件……所以……我做了以下这些……
  • 下载并复制commons-codec-1.7.jarCordova\libs文件夹下
  • 我来到Cordova\android\framework\scr\org\apache\cordova并修改了文件CordovaWebView.java,注释了这两行……
    • if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB)
                    settings.setNavDump(true);
  • 使用CMD,我来到Cordova\android\framework文件夹并执行==> ant jar.
现在……我真的准备好了……所以我在Corbova里创建了一个名为Projects的文件夹……并再一次的我在CMD里做了如下事情……
  • Corbova\Projects==> create C:\Cordova\Projects com.BlagTest BlagTest
那会创建一个Blag_Test文件夹,包含所有与Cordova项目相关的文件。然后我就上传它到Eclipse,并且做了一系列测试来检验是否一切都如我所愿运行正常……是的……所以新的基于SAP HANA的odyssey系统准备就绪……
在一开始……我最初的想法是……这应该很简单……我已经在PowerBuilder上做过,所以基本上我需要把ngdbc.jar导入到我的Eclipse项目中,而那是……错误的!不起作用……经过多次尝试都失败了……我最后看到一丝曙光……我从Eclipse里删除了项目……从我的BlagTest下libs文件夹里复制ngdbc.jar……重新导入到Eclipse里……神奇的是……我连接到了SAP HANA……
现在……让该连接工作是另一个噩梦……在本博客中中,我需要重拾几乎忘记的Java和JavaScript知识……并且……学习新的事物比如PhoneGap和JQueryMobile……
但是……我想要试图长话短说,这样你不会觉得无聊……
  • 我创建一个名叫MyClass.java的新类(我累了……所以忘掉这个愚蠢的名字)
  
MyClass.java

package com.BlagTest;

import java.sql.*;
import java.util.ArrayList;

public class MyClass {
          public ArrayList<String> getData(String p_carrid){
                    Connection connection = null;
              ArrayList<String> carrid = new ArrayList<String>();
              String data = "";
                    try{
                              Class.forName("com.sap.db.jdbc.Driver");
                              try{
                                        connection = DriverManager.getConnection("jdbc:sap://XX.XX.XXX.XXX:30115","SYSTEM","manager");
                              }
                              catch (SQLException e){
                              }
                    }
                    catch (ClassNotFoundException e){
                    }
                    if(connection != null){
                              try{
                                        String sqlstring = "select CONNID, FLDATE, PRICE from SFLIGHT.SFLIGHT where carrid = '" + p_carrid + "'";
                                        Statement stmt = connection.createStatement();
                                        ResultSet rs = stmt.executeQuery(sqlstring);
                                        while(rs.next()){
                                                  data = rs.getString("CONNID") + "/" + rs.getString("FLDATE") + "/" + rs.getString("PRICE");
                                                  carrid.add(data);
                                        }
                              }
                              catch(SQLException e){
                              }
                    }
                    return carrid;
            }
}
在这个文件里,我所做的是建立一个JDBC连接到我建立在TK ucloud biz上的SAP HANA服务器。我从SFLIGHT表中选出了CONNID, FLDATE和PRICE,CARRID是一个从应用传过来的参数。因为我没有传递一个多维的数组,或者一个数组的数组,或者类似的……我只是简单地用一个“/”串联这些值来以后分隔它们。
  • 我修改了已经存在的BlagTest.java文件
  
BlagTest.java

package com.BlagTest;

import android.app.Activity;
import android.os.Bundle;
import org.apache.cordova.*;

public class BlagTest extends DroidGap
{

          private MyClass mc;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        super.init();
        mc = new MyClass();
        super.appView.getSettings().setJavaScriptEnabled(true);
        super.appView.addJavascriptInterface(mc, "MyCls");
        super.loadUrl("file:///android_asset/www/index.html");      
    }
}
这里,一般来说我们想要允许数据从Java传到JavaScript需要使用setJavaScriptEnabled(true),然后添加addJavaScriptInterface(mc, “MyCls”),我们要告知我们的类是如何被调用……我们通过JavaScript来调用它们。
  • 最后……我从已经生成好的index.html文件里删除了所有内容,并且输入以下代码……
  
index.html

<html>
<head>
<title>SAP HANA from PhoneGap</title>
<meta name="viewport" content="width=device-width, initialscale=1.0"></meta>
<script>
            function getData(){
         var carridField = document.getElementById('carrid');
                           var getCarrid = carridField.value;
         var myArrayList = window.MyCls.getData(getCarrid);
         carridField.value = "";
         $("#content").append("<ul id='list' data-role='listview' data-inset='true'</ul>");
         $("#content").trigger("create");
         for(var i = 0; i < myArrayList.size(); i++){
              var array = "" + myArrayList.get(i);
              array = array.split('/');
              var _connid = array[0], _fldate = array[1], _price = array[2];
              var list = "<li><p>CONNID: " + _connid + "</p><p>FLDATE: " + _fldate + "</p><p>PRICE: " + _price + "</p></li>";
              $("#list").append(list);
         }
         $("#list").listview("refresh");
          }
</script>
</head>
<body>

<div data-role="page">
          <div data-role="content" id="content">
                    <div align="center"><h1>SAP HANA from PhoneGap</h1></div>
                    Carrid: <input type="text" id="carrid" size="2"/>
                    <button id="submitCarrid">Submit</button>
          </div>
</div>
</body>
</html>
这里我所做的……如下所示……
  • 我有个输入文本框和一个按钮。在输入框里,我们将传输一个CARRID的值并且当按下按钮时,我们将调用一个JavaScript函数。
  • JavaScript函数将从输入框中收集值,将使用window.MyCls.getData()调用我们的Java函数,并且传输CARRID参数。这应该返回一个数组列表……但是取而代之的是……它返回了一个对象……所以我们稍后需要处理它……
  • 使用JQueryMobile我们将创建一个列表视图,就像一个类固醇的HTML表……那么我所喜欢JQueryMobile的是,我们只需要包括一行“link rel”和两行“script src”来让它运行……正如它从一个在线位置抓到的一样。
  • 我们将要做一个从0到对象大小的FOR循环,然后将通过.get()取到它的内容,并且将其通过””转换成一个字符串。
  • 我们简单地把新创建的字符串分隔,并把它分配到变量中。
  • 我们加了几行到列表视图中,并且在结束的时候更新它。
    接着,我们就来到项目-->清空以重建我们的项目然后右击我们的项目文件夹,再选择运行通过-->安卓应用。[/url]
[url=http://scn.sap.com/servlet/JiveServlet/showImage/38-77777-170038/PhoneGap_SAP_HANA_02.png]

[/url]
[url=http://scn.sap.com/servlet/JiveServlet/showImage/38-77777-170271/PhoneGap_SAP_HANA_04.png]

这看上去花很长时间……但是收获却无比巨大……希望你喜欢它

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
dikang 发表于 2013-5-29 21:02:57 | 显示全部楼层
版主人才啊
permanent 发表于 2017-7-13 12:37:02 | 显示全部楼层
kemiya
zhcslxf 发表于 2017-7-13 18:06:11 | 显示全部楼层
SAP论坛
sysnology 发表于 2017-7-13 19:50:03 | 显示全部楼层
sap培训
zangyunfei 发表于 2017-7-14 03:12:51 | 显示全部楼层
SAP事务代码查阅
泉恒 发表于 2017-7-14 03:51:24 | 显示全部楼层
SAP招聘
262067995 发表于 2017-7-14 07:11:07 | 显示全部楼层
SAP在线免费文档学习
LiCa 发表于 2017-7-14 09:10:26 | 显示全部楼层
SAP学习文档
ivychenzone 发表于 2017-7-14 09:15:05 | 显示全部楼层
SAP事务代码查阅
zdq2601 发表于 2017-7-14 10:07:28 | 显示全部楼层
SAP资料下载
zangyunfei 发表于 2017-7-14 13:55:54 | 显示全部楼层
SAP资料下载
Sunshine_gir 发表于 2018-2-8 19:53:58 | 显示全部楼层
sap basis
深秋 发表于 2018-3-4 06:46:13 | 显示全部楼层
克米亚sap论坛
abefh 发表于 2018-9-21 09:23:19 | 显示全部楼层
SAP QQ群
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|克米亚sap论坛,sap账号,sap系统,sap ides,sap学习机,sap练习环境 ( 渝ICP备18002525号-5 )

GMT+8, 2019-6-26 10:30

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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