ラベル

2012年7月22日日曜日

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

前回に続きを書きます。

1、4番目に作ったツール
  4番目のツールも「なでしこ」を使って作りました。
  3番目までは単体で動作するツールでしたが今回のツールから処理したログをMySQLへ
  記録しました。
  XAMPPを使い、記録したログはイントラで確認、検索出来るものです。
  目的は処理毎に掛かった時間を把握する事でした。

  「なでしこ」ではローカルにmdb、SOLiteも使えますが、集中管理する為MySQLにしました。

  色々とテストして気がついたのはMyODBCをインストールして
  MySQLへ書き込む都度にDBのオープンをすると処理時間が掛かり動作が遅くなります。

  また処理の依頼が少ない時に長時間、MySQLへのアクセスがないと
  MyODBCのタイムアウトになるようですが詳しくは調べていません。
  「なでしこ」のコンパイル前に『エラー無視』を入れています。(汗)

  いつか詳しく調べて対応を考えてみます。

  2011年3月に試したのが、mdbとMyODBCの両方をオープンして使い分けです。
  この同時利用はレスポンスが非常に遅くなるので諦めました。

2、5番目のツール(今現在改良中です)
  5番目のツールは2012年6月中旬から始まりました。
  今までに受信BOXの自動更新とツールからの操作、ログの記録を実装しましたが
  残った問題として、処理の取り合い、取れない人の不満が出てきました。

  そこで考えた(周りから要望された)のがバッテイングの回避と割り当て方式です。
  SAPの外付けで処理するので何か処理状況を通知(共有)する手段が必要と考え
  チャットサーバーの考え方を取り入れました。

  既存のフリーソフトやサンプルソースを見るといくつか利用出来そうでしたが
  MicrosoftのVisualStudio等が必要そうで私には敷居が高く、「なでしこ」の
  TCPのコマンドを使って試してみました。
  「なでしこ」のサンプルのサーバーで試すと問題なく動作しました。

  そして、プロトコルは自分で決めれば良いと気づきました。
  TCPで通信するけどやり取りする電文の内容はコマンドとステータスを含め
  自分でルールを決めました。

  これで処理を最初に取った人以外は同じ物件を取れないようにする仕組みが
  できました。

  また割り当てするツールも「なでしこ」で作りました。
  これまでに作ってきたツールの変形で作り、割り当てをした事をTCPで送信します。

  今現在も改良中ですが、フロントエンド、イベント中継サーバ、割り当てツールと
  すべて日本語プログム言語「なでしこ」で作る事ができました。

  ちなみに私は有料版のライセンスを購入しています。
  部門内に配布する時にexeファイル1個で処理する為です。

  日本語プログム言語「なでしこ」の開発者の「クジラ飛行机」さんに感謝です!

以上です。

2012年7月21日土曜日

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

日常業務の不便を解消する為に自作したフロントエンドの概念を整理しておきます。
具体的なコードは掲載しません。
解りやすい図解とかも予定はしていません。

SAP R/3 といっても使っている企業毎にカストマイズしていたり、基本機能でも使っていない
部分が有ると思うので、自分の環境でしか動作確認はしていません。(出来ません)
最初のツールから改良・拡張を繰り返しています、5年くらい続いています。

1、自部門の業務
  自分の受け持ちはSAPのワークフローで社内から受注の処理依頼が来る部門です。
  常に受信BOXを手動で更新して処理依頼が見えたら処理を取ります。
  20名程で取り合いになるのです。
  取った後は受注処理から購買依頼まで行います。

2、自作するキッカケ
  上に書きましたが、処理の依頼を取るまでの不便さを解消したい!
  が始まりでした。

  1)手動の画面更新・・・手が疲れます。
  2)処理の取り合い・・・取れないことのストレス、処理件数が少ない。ロスタイム。

3、最初に作ったツール
  SAP R/3にVBスクリプトの連携機能が有る事を社内で知りました。
  ネットで検索してもサンプルソースは見つかりませんでした。
  社内でもフォローはしないので使えれば使っても良いだけでした。

  そこでSAP R/3のスクリプトの記録と再生(Excelと同様な発想?)を使って受信BOXの
  更新スクリプトを確認しました。

  このスクリプトをNSBASICに入れて小さな自動更新専用のツールを作りました。

  更新間隔は120秒から30秒プラスで6分までコンボボックスで選択しました。
  これで手動更新から開放されました。

4、2番目に作ったツール
  受信BOXには数項目の表示(依頼の日時や部門、伝票番号、処理の種類)が有りますが
  ソートやフィルターだけでは見にくい。

  そこで受信BOXの表示内容をVBで取り込んで部門別件数、処理別件数の表示と
  フィルター機能を追加したのが2番目のツールです。

  これはNSBASICにOWC11のスプレッドシートを組み込み集計表示のクリックした項目で
  受信BOXにフィルターを掛ける事ができます。
  ご参考->スプレッドシートのサンプル(NSBASIC)

5、3番目に作ったツール(ここからフロントエンドらしくなったのです)
  2番目のツールでも実際の処理を取る動作からはSAPの受信BOXを直接操作しました。
  最初のツールから2年くらい掛かりました。
  3番目のツールでは受信BOXで行う操作をツールから出来る様に各機能を追加しました。
  処理依頼の照会、実行、予約、解除(置換)、表題の編集、ソート、フィルター等です。

  通常はツールが最前面にいて処理を照会や実行するとSAP画面を最前面にし処理が終わると
  またツールを最前面にします。

  上に有る様に必要なタイミングで最前面に見せるウィンドウを切り替えるのに苦労しました。

  私のレベルではNSBASICでは記述が判らず、最終的に日本語プログラム言語「なでしこ」
  作り直しです。
  以降の説明では「なでしこ」と記述します。

  「なでしこ」でOWC11は組み込めず、グリッドと言う機能を使って集計表示を作り
  2番目のツールと同等のツールを作ってから今回の目的の機能を追加して行きました。

  簡単に書いていますが、表題の解析やウィンドウの状態の取得が複雑になりました。

  「なでしこ」でウィンドウハンドルの取得は簡単に記述出来ますが突然出る
  システムメッセージが色々と邪魔になるので想定している状況と存在するウィンドウを
  チェックしています。

  外見的には「なでしこ」からSAP R/3を操作していますが「なでしこ」にはVBスクリプトが
  記述出来るのでそこにVBでSAPのインターフェースを書いています。
  計画した機能の追加・デバックは実際の業務で使いながら行いました。(汗)

長くなったので、Part2で続きを書きます。