ラベル

2015年2月15日日曜日

SAP R/3用 手作りフロントエンド Part4

SAP R/3用 手作りフロントエンド を数年前から作っていましたが、その頃には判らなかったコンテキストメニューからテキストコピーが出来ました。

以前はGoogleで検索してもエンドユーザが使うSAPのVBスクリプトの情報が殆んど無かったのですが、最近、駄目モトでもう一度検索したら、沢山の情報が有りました。

そして見つけました!

コンテキストメニューのテキストコピーの方法

これを見ながら
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").contextMenu
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").selectContextMenuItemByText "Text kopieren"
・・・これは出来ませんでした、さすがに「"Text kopieren"」は英語らしくないので「Text Copy」他、幾つか試しましたがエラーでした。

でも
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").contextMenu
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").selectContextMenuItemByPosition "0"
このVBスクリプト参考に読み込みが出来ました。

テストしていると、読み込めないケースが発生しテストを繰り返して判ったのは表示件数が180行位からエラーになっていました。

私の要件では500行を超えるデータ量が有り得るので更に調べました。

エラーメッセージをチャントメモしなかったけど、表示内容が不完全との指摘でした。

そこで、表形式の表示を最新に更新したら、一番下の行へカーソルを移動してコピーすると綺麗にコピー出来ました。


参考にスクリプトを記載します。

s = session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").RowCount -1
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").firstVisibleRow = s
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").selectColumn "STATUSTEXT"
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").selectColumn "xxxx1"
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").selectColumn "xxxx2"
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").selectColumn "xxxx3"
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").setCurrentCell -1,"xxxx3"
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").contextMenu
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").selectContextMenuItemByPosition "0"
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").clearSelection

私の環境ではこの記述でOKでしたが、参考にされる場合は自己責任でお願い致します。


ちなみに、今までは印刷プレビューからデータをコピーしていました、この場合はスクリーンセーバーが働かない。
今回のテキストコピーでは、負荷が軽い?、画面偏移が無いから?、判りませんがスクリーセーバーが動作しました。

以上です。


2015年2月8日日曜日

Vue.jsを使ったテーブル表示のサンプル

※2016/02/28サンプルプログラムのエラー修正しました。

Vue.jsを使ったテーブル表示のサンプルを作ってみました。
前回のFixed TableをベースにVue.jsを追加した構成です。
どちらかと言えばVue.jsを試したくて作ったので余り実用的でないかも!

Vue.jsのGrid Component Exampleでは判り難かったのですが

var vm = new Vue({ /* options */ })
vm.$el // The View
vm.$data // The Model

この記述を頼りにテーブルを定義した後で表示するデータを差し替えることでページの切り替えをおこないました。

ただし、偶数奇数行の色分けやマウスホバーでの色付けがうまく行かず、setTimeoutで100ms後に行うとうまく行きました。

Vue.jsの使い方として正しいか、よく判っていませんので、参考にされる場合は自己責任でお願い致します。

VUE.JS & JQUERY & FIXED TABLE によるデータ一覧表示サンプル

2015年1月4日日曜日

Table.js と Fixed Table の比較

※2016/02/28サンプルプログラムのエラー修正しました。

前回も書きました、「Webアプリ(jQuery、Ajax)で部門間の質問・回答システム」は、テーブル形式のデータ表示に、jQueryとTable.jsを利用させて頂きました。

このTable.jsで作ったテーブルは一度に扱うデータが100件程度までは順調に動作していました。

気を良くして、別のシステムも機能アップと操作性改善を目的にjQueryとTable.jsで作り直したところ、動作が重く使えませんでした。
色々と調べた結果、テーブル表示のレンダリングにとても負荷が掛かっている事が判りました。
確かに、扱うデータ量が多く、一度に2千件程度のデータを読み込んでテーブルを20件位でページ切り替えしていました。


対策はテーブルのレイアウトを固定する事でレンダリングを短時間で処理させることでした。
つまり、Table.jsを使わず、Fixed Tableを作り、フィルターやソート機能等の必要な機能を作り込む事です。
作り込む手間を考えるとチョット気の重い作業でしたが、完成して、考えていた以上にレスポンスが良く満足出来ました。


この2つの比較をサンプルとして作りました。

JQUERY & FIXED TABLE によるデータ一覧表示サンプル


このサンプルはMySQL、PHP、jQuery、Ajax、が稼働出来て、無料で広告なしの「chobi net Freeプラン」を使わせて頂いています。
Freeなので容量制限は有りますが、困った時にはシッカリとサポートしてくれる管理人様がいますので安心して使えます。
思い出しました、トップのindexページは6ケ月以内に更新しないと、利用解除のメールが来ます。
詳しくはchobi netのサポートページを参照ください。


以上