IM-ERP Real Connect for Accel Platform プログラミングガイド 初版 2013-02-01

サンプルプログラムによる作成例

サンプルプログラムの概要

サンプルとして実装する機能についての仕様は以下の通りです。
„
  • 機能概要

    会社一覧画面で任意の会社を選択すると、選択した会社の詳細情報が次画面にて表示される。
    詳細画面にて表示される項目は以下の通りとする。
    • 会社コード
    • 会社名
    • 市区町村
    • 国コード
    • 通貨コード
    • 勘定コード表
    • 会計年度バリアント
  • 使用する BAPI

    BAPI_COMPANYCODE_GETDETAIL 標準 BAPI
„
  • 使用する汎用プロパティファイル名

    sapapi_tutorial.properties
„
  • 備考

    業務用APIの会社取得APIのサンプルプログラムを元に作成する。

汎用プロパティファイルの作成

汎用モジュールビルダ(t-cd:SE37)で、「BAPI_COMPANYCODE_GETDETAIL」のパラメータ名、コンポーネント名等を確認して、
汎用プロパティファイル「sapapi_tutorial.properties」を作成します。
ファイルを保存する場所は、intra-mart のアプリケーションディレクトリ(例:C:/imart/doc/imart)直下の/WEB-INF/classes フォルダです。
servertype= 
commit=false 

bapiname=BAPI_COMPANYCODE_GETDETAIL 

import.import.COMPANYCODEID=imp_key1 

export.structure.COMPANYCODE_DETAIL.COMP_CODE=imp_str_key1 
export.structure.COMPANYCODE_DETAIL.COMP_NAME=imp_str_key2 
export.structure.COMPANYCODE_DETAIL.CITY=imp_str_key3 
export.structure.COMPANYCODE_DETAIL.COUNTRY=imp_str_key4 
export.structure.COMPANYCODE_DETAIL.CURRENCY=imp_str_key5 
export.structure.COMPANYCODE_DETAIL.CHRT_ACCTS=imp_str_key6 
export.structure.COMPANYCODE_DETAIL.FY_VARIANT=imp_str_key7

サンプルのコーディング

以下のファイルをサンプル用の画面、及び処理として実装します。
  • 入力画面(im_sapapi.html)

    <imart type="head">
      <title>チュートリアル</title>
      <script type="text/javascript">
      // 前の画面へと移動.
      function refresh() {
        $('#refresh-form').submit();
      };
      function back() {
        $('#back-form').submit();
      };
      </script>
    </imart>
    
    <header class="imui-title">
        <h1>SAP リアルタイム連携API チュートリアル(会社取得 API)</h1>
    </header>
    <div class="imui-toolbar-wrap">
      <div class="imui-toolbar-inner">
        <!-- ツールバー左側 -->
        <ul class="imui-list-toolbar">
          <!-- 戻る -->
          <li><a href="javascript:back();" class="imui-toolbar-icon"
            title="戻る"><span class="im-ui-icon-common-16-back"></span></a></li>
        </ul>
        <!-- ツールバー右側 -->
        <ul class="imui-list-toolbar-utility">
          <li><a href="javascript:refresh();" class="imui-toolbar-icon" title="最新情報"><span
              class="im-ui-icon-common-16-refresh"></span></a></li>
        </ul>
      </div>
    </div>
    
    <div class="imui-form-container-wide">
      <div class="imui-chapter-title">
        <h2>会社取得(BAPI_COMPANYCODE_GETLIST)</h2>
      </div>
      <label>※ 実行時の注意点</label><br />
      <label>1件以上の会社が SAP 上に存在すること。</label><br />
      <form method="POST" action="sapapi_tutorial/tutorial3-4-3/result">
        <div class="imui-operation-parts">
          <input type="submit" value="チュートリアル実行" class="imui-large-button" />
        </div>
      </form>
    </div>
    
    <!-- 画面更新用フォーム -->
    <form id="back-form" name="backForm" action="sapapi_tutorial/tutorial_menu" method="POST"></form>
    <form id="refresh-form" name="refreshForm" action="sapapi_tutorial/tutorial3-4-3/im_sapapi" method="POST"></form>
    
  • 入力画面処理(im_sapapi.js)

    function init(){
    }
    
  • 一覧画面(result.html)

    <imart type="head">
    <title>チュートリアル</title>
    <script type="text/javascript">
      // 前の画面へと移動.
      function back() {
        $('#back-form').submit();
      };
    </script> </imart>
    <header class="imui-title">
      <h1>SAP リアルタイム連携API チュートリアル実行結果(会社取得 API)</h1>
    </header>
    <div class="imui-toolbar-wrap">
      <div class="imui-toolbar-inner">
        <!-- ツールバー左側 -->
        <ul class="imui-list-toolbar">
          <!-- 戻る -->
          <li><a href="javascript:back();" class="imui-toolbar-icon"
            title="戻る"><span class="im-ui-icon-common-16-back"></span></a></li>
        </ul>
      </div>
    </div>
    <div class="imui-form-container-wide">
      <div class="imui-chapter-title">
        <h2>
          会社一覧(
          <imart type="string" value=listCount />
          件 )
        </h2>
      </div>
      <br />
      <table class="imui-table mt-20">
        <tbody>
          <tr>
            <th><label>No</label></th>
            <th><label>会社コード</label></th>
            <th><label>会社名</label></th>
          </tr>
          <imart type="repeat" list=listResult item="record" index="idx">
          <tr>
            <td><a rel="alternate"
              href="sapapi_tutorial/tutorial3-4-3/detail"
              name=record.LINK_KEY><imart type="string" value=idx></imart>
              </a>
            </td>
            <td><imart type="string" value=record.COMP_CODE></imart></td>
            <td><imart type="string" value=record.COMP_NAME></imart></td>
          </tr>
          </imart type="repeat">
        </tbody>
      </table>
    </div>
    
    <!-- 実行画面遷移用フォーム -->
    <form id="back-form" name="backForm"
      action="sapapi_tutorial/tutorial3-4-3/im_sapapi" method="POST"></form>
  • 一覧画面処理(result.js)

    var listResult;
    var listCount;
    
    function init(request) {
        var objCon;
        var idx;
    
        //インスタンス生成
        objCon = new CompanyController();
    
        // コンストラクタでのエラーチェック
        if(objCon.getErrCode() != "0"){
            //エラーメッセージ出力
            Debug.browse(objCon.getErrMsg());
        }
    
        //会社の一覧を取得
        listResult = objCon.getCompanyList();
    
        //会社の一覧にページ間リンク用のKEYを追加
        for (idx=0; idx < listResult.length; idx++){
        	listResult[idx]["LINK_KEY"] = listResult[idx]["COMP_CODE"]
        }
    
        //一覧の件数を取得
        listCount = listResult.length;
    
    }
    
  • 詳細画面(detail.html)

    <imart type="head">
    <title>チュートリアル</title>
    <script type="text/javascript">
      // 前の画面へと移動.
      function back() {
        $('#back-form').submit();
      };
    </script> </imart>
    <header class="imui-title">
      <h1>SAP リアルタイム連携API チュートリアル実行結果(会社取得 API)</h1>
    </header>
    <div class="imui-toolbar-wrap">
      <div class="imui-toolbar-inner">
        <!-- ツールバー左側 -->
        <ul class="imui-list-toolbar">
          <!-- 戻る -->
          <li><a href="javascript:back();" class="imui-toolbar-icon"
            title="戻る"><span class="im-ui-icon-common-16-back"></span></a></li>
        </ul>
      </div>
    </div>
    <div class="imui-form-container-wide">
      <div class="imui-chapter-title">
        <h2>会社情報 詳細</h2>
      </div>
      <table class="imui-table mt-20">
        <tbody>
          <tr>
            <th class="wd-20"><label>会社コード</label></th>
            <td><imart type="string" value=compCode> </imart></td>
          </tr>
          <tr>
            <th class="wd-20"><label>会社名</label></th>
            <td><imart type="string" value=compName> </imart></td>
          </tr>
          <tr>
            <th class="wd-20"><label>市区町村名</label></th>
            <td><imart type="string" value=city> </imart></td>
          </tr>
          <tr>
            <th class="wd-20"><label>国コード</label></th>
            <td><imart type="string" value=country> </imart></td>
          </tr>
          <tr>
            <th class="wd-20"><label>通貨コード</label></th>
            <td><imart type="string" value=currency> </imart></td>
          </tr>
          <tr>
            <th class="wd-20"><label>勘定コード表</label></th>
            <td><imart type="string" value=chrtAccts> </imart></td>
          </tr>
          <tr>
            <th class="wd-20"><label>会計年度バリアント</label></th>
            <td><imart type="string" value=fyVariant></imart></td>
          </tr>
        </tbody>
      </table>
    </div>
    
    <!-- 実行画面遷移用フォーム -->
    <form id="back-form" name="backForm"
      action="sapapi_tutorial/tutorial3-4-3/result" method="POST"></form>
    
  • 詳細画面(detail.js)

    var compCode;  //会社コード
    var compName;  //会社名
    var city;    //市区町村
    var country;   //国コード
    var currency;  //通貨コード
    var chrtAccts; //勘定コード表
    var fyVariant; //会計年度バリアント
    
    function init(request) {
    
        var objCon;
        var objResult;
        var strResult;
    
        //インスタンス生成
        objCon = new BapiController("sapapi_tutorial");
    
        // コンストラクタでのエラーチェック
        if(objCon.getErrCode() != "0"){
            //エラーメッセージ出力
            Debug.browse(objCon.getErrMsg());
        }
        
        //importの設定(会社コード)
        objCon.putImportParam("imp_key1", request.link_key);
    
        //BAPI実行
        objResult = objCon.executeBapi();
    
        //要素[ERR_CODE]に何らかの値がセットされている場合
        if (objResult["ERR_CODE"] != null) {
            //エラー情報を出力する。
            Debug.browse(objResult);
        } else if (!objCon.isSuccess()) {
            //BAPIエラーメッセージを出力する。
            Debug.browse(objCon.getErrMessage());
        }
    
        //structureの取得
        strResult = objCon.getStructureParam("COMPANYCODE_DETAIL");
        
        compCode  = strResult["imp_str_key1"];  //会社コード
        compName  = strResult["imp_str_key2"];  //会社名
        city      = strResult["imp_str_key3"];  //市区町村
        country   = strResult["imp_str_key4"];  //国コード
        currency  = strResult["imp_str_key5"];  //通貨コード
        chrtAccts = strResult["imp_str_key6"];  //勘定コード表
        fyVariant = strResult["imp_str_key7"];  //会計年度バリアント
    }
    

コラム

スクリプト開発で作成されたシステムのメニューの登録方法、実行方法は「スクリプト開発プログラミングガイド」の内容を参照してください。