ログイン Up dated!
ユーザー名:

パスワード:


パスワード紛失

新規登録

SAP勉強会開催中!

運 営

メインメニュー

運営者及び問合先

当サイトに対する問い合わせは erp.expert.jp@gmail.comまでお願いします。または
SUNTEC WEST お問合せまで。
なおこのサイトからのメールが迷惑メールに振り分けられてしまう場合があります。


フォーラムの説明
フォーラムは階層構造になっており「カテゴリ」の下に「フォーラム」があります。その下にQ&Aのやりとりの題名があり、それを「トピック」と呼びます。例にあげると「SAP ERP」というカテゴリがあって「Financials」というフォーラムがあります。その下でメンバーが自由に「原価センタグループの移送方法ありますか」とかいうQ&Aの「トピック」を立ててやりとりします。 このフォーラム機能は通知機能があります。興味のある「カテゴリ」「フォーラム」「トピック」と各レベルごとに誰かが投稿したら「メール」で知らせること機能でフォーラム内各ページの下にある「イベントの選択」で自由に通知方法を選択してください。なおその前に「ホーム」→「アカウント編集」でイベント更新通知メッセージの受取方法は「メール」、イベント通知のタイミングは「・・・通知する」となっていることを確認してください。「フォーラム」とその親となる「カテゴリ」に また「トピック」とその親となる「フォーラム」に通知チェックを入れたりするとどちらかがキャンセルされるか二度通知いくようなことが発生しますので親側にチェックいれたらその子には通知チェックはずしておいてください。複雑になってしまったら「ホーム」→「イベント通知機能」で整理するといいでしょう。

投稿数ランキング
1 chira3903 51
2 ttabuchi 43
3 emy 25
4 jun 20
5 chong 20
6 hiro888 15
7 mkouso 11
8 sarjan 11
9 saku_saperp 11
10 ishikawa 10

CALL TRANSACTION のリターンコード

  • このトピックは管理者もしくはモデレータによりロックされています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-7-14 0:54
ishikawa  新米   投稿数: 10
アドオン機能にて、課題が発生しています。
ご存知でしたら教えてください。

CALL TRANSACTION で発伝トランザクションをCALL後、
SY-SUBRCが0にもかかわらず、伝票番号が返却されない場合があるのでしょうか?
しかも、処理後に発伝されたはずの伝票番号を参照すると
正常に発伝がされているのです。

会計系のアドオンですが、
仕様としては以下2ステップの処理をしています。
?内部処理にてCALL TRANSACTION を利用して発伝のトランザクションを呼び出し同期更新のバッチインプットを行う。
?SY-SUBRC=0なら
このバッチインプットの結果としてSY-MSGV1に返却される
伝票番号を取得して、アドオンテーブルを更新する。

これまで約5〜6年ほど稼働しており、特に問題が発生していなかったアドオン機能なのですが、今年3月下旬・7月上旬と決算関連でシステム負荷が高まった場合に?の処理で”伝票番号”が取得できない事象が発生しました。

?の後続処理にてアドオンテーブルは更新されており、伝票番号が””(空文字)のまま保存されている状態でしたので、
SY-SUBRC=0 ですが、伝票番号がSY-MSGV1に返却されていないことになります。

自分なりに調べたところ、以下の2つの情報からSY-SUBRC=0でも
エラーが発生している場合がある?ように読み取れますが
そんなことあるのでしょうか・・・?

<CALL TRANSACTION が正常終了したかどうかの確認>
http://help.sap.com/saphelp_470/helpdata/ja/78/21763651ce11d189570000e829fbbd/content.htm

<CALL TRANSACTIONの命令について>
http://www.ab.auone-net.jp/~s0410/masa/abap/abap20.html

負荷の状況にもよるのか、テスト環境で何度試してみても再現せず
原因が特定できないため、安易に改修も入れられない状況となり困っております。
何かご存知の方がいらっしゃいましたら、ご教示ください。
よろしくお願いします。
投票数:206 平均点:2.77
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014-4-30 1:24
ojojojojojoj  新米   投稿数: 1
時間が経っているので、もう解決しているかもしれませんが・・・

ロジックを見ていないので、文面から憶測で気になったことを返信します。

通常、伝票登録のバッチインプットPGでは、オプションのmessage intoを使用して、
バッチインプットメッセージを内部テーブルに格納し、
その中から伝票登録時のメッセージID,NOが存在するかをチェックして、判断します。
メッセージ変数も、内部テーブルから取得します。

システム変数直接だと、途中で何かメッセージが出力されれば、
その値で書き換わってしまうので、処理としては良くないですね。

SY-SUBRCですが、モードNで実行した場合、エラーがあると必ず0以外が設定されるので、
SY-SUBRC=0でエラーが発生しているのはあり得ないと思います。

可能性は薄いですが、バッチインプット時のプログラムは、
COMMITが発行された時点でプログラムの処理が終了します。
オプションRACOMMITをONにすると、COMMIT後も続行されます。
COMMIT後に何かメッセージが出力されるロジックがあって、
偶然そのパターンになってSY-MSGVが書き換わったのかもしれません。
(何もしなければデフォルトでOFFなので、あり得ないと思いますが念のため)

message intoを使用したロジックになっているのであれば、
ちょっと厳しいかもしれませんね。。。

<CALL TRANSACTION が正常終了したかどうかの確認>
に書いている内容ですが、モードA,またはEで実行した場合、
エラーが発生しても、手動で画面を戻ったりして終了させた場合、subrcに0が設定されると言う説明です。
投票数:206 平均点:4.47
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014-6-12 17:48
ishikawa  新米   投稿数: 10
返事が遅れてすみません。
ojojojojojoj 様 ご教示頂きありがとうございました。
現在、事象の再発は発生しておらず、次回発生するまで様子見・・の状態となっており
解決そのものには至っていない状況です。

やはり 「message into itab」でメッセージを拾わないと、
予期せぬことが起こる可能性があるのですね。

オンラインプログラムでログ採取もしておらず
メッセージ表示そのものはされていないのでわかりませんが、
同期更新(UPDATE "S")のため、伝票番号採番にてメッセージ返却後、
処理遅延のワーニングメッセージが実は出力されたりしているのかもしれないと考えていました。

ソースは以下の通りで、サブルーチンにて未転記伝票発伝を行い、
その未転記伝票の伝票番号をアドオンテーブルに追加更新するという処理です。
この処理にて伝票番号が取得出来ない状態("")でアドオンテーブルが更新される不具合が発生しました。
CALL TRANSACTION直後にSY-MSGV1の伝票番号を変数に格納しているので問題ないと考えていました。
伝票番号なしですが、アドオンテーブルの更新自体はされているため、
SY-SUBRCとしては"0”ですが、伝票番号が返却されていない(または変数が上書きされた)という
状況になったという事になります。

なお、何故 FLG_SUBRC が"USING"なのか等、突っ込みどころはあるかもしれませんが
通常は何の問題もなくこのプログラムにて稼働しています。

急ぎではありませんが、もしお分かりの点があればご教示頂ければと思います。

■■■■■■■■
■サブルーチン■
■■■■■■■■
FORM BATCH_INPUT USING FLG_SUBRC
〜略〜

* トランザクション呼出し
CALL TRANSACTION 'FBV1' USING IT_BDCDATA " FBV1
MODE W_BDC_MODE
UPDATE 'S'.
* 結果判定
IF SY-SUBRC <> 0.
ELSE.
MOVE SY-MSGV1 TO ZSK0010-BELNR. " 伝票番号
ENDIF.
MOVE SY-SUBRC TO FLG_SUBRC.

ENDFORM

■■■■■■
■呼出元 ■
■■■■■■
PERFORM BATCH_INPUT USING FLG_SUBRC. " バッチインプット
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
IF FLG_SUBRC <> 0. " エラーあり
IF FLG_LOCK = C_ON. " ロックされてる?
PERFORM DEQ_ZTK0010 USING ZSK0010-BUKRS
ZSK0010-BELNR
ZSK0010-GJAHR.
ENDIF.
ELSE.
MOVE ZSK0010-BELNR TO ZSK0010-XBLNR.
PERFORM BELNR_ZTK0010. " 内部テーブルへ伝票番号を反映
PERFORM UPDATE_ZTK0010 USING FLG_SUBRC.
IF FLG_SUBRC = 0.
MESSAGE S000(ZK01) WITH TEXT-005 ZSK0010-BELNR ')'. " 更新OK
MOVE C_XOFF TO W_INIT. " 初期化する
MOVE C_XOFF TO FLG_SL_INIT.
CLEAR W_SELLINE.
ENDIF.
ENDIF.
投票数:261 平均点:2.68

  条件検索へ


 

Powered by XOOPS Cube 2.1.8© 2010 ERP EXPERT Project  |  COPYLIGHT (C) 2007 Suntec-BS rights reserved.