2016-07-26 30 views
0

したがって、ECCから品質の高い通知データを抽出しようとしています。私が選択したパスは、テーブルにデータを抽出し、SE37を使用してFMを書き込むことができるBAPIを見つけることです。品質通知を取得するSAP - BAPI_QUALNOT_GETDETAIL

周りでグーグルで回ったところ、「BAPI_QUALNOT_GETDETAIL」というBAPIが見つかりました。現時点で直面している問題は、データをBAPIのエクスポートテーブルに取り込むことです。詳細はQMELテーブルで使用可能な上記のスクリーンショットから分かるよう

Notification in QMEL Table

以下は、私がBAPIを実装した方法です。

CALL FUNCTION 'BAPI_QUALNOT_GETDETAIL' "QM Notification: Read Detail Data 
    EXPORTING 
    number =   '200360210'   " bapi2078_nothdre-notif_no Message Number 
    IMPORTING 
    notifheader_export = bapi2078_nothdre_t " bapi2078_nothdre BAPI Quality Notification Header 
    notifhdtext =  bapi2078_nothdtxte_t  " bapi2078_nothdtxte Text Fields for Notification Header 
TABLES 
    notlongtxt =    bapi2078_notfulltxti_t " bapi2078_notfulltxti Notification Long Text 
* notitem =     " bapi2078_notiteme Work Table for Notification Item 
* notifcaus =     " bapi2078_notcause Notification Cause 
* notifactv =     " bapi2078_notactve Work Structure Activities 
* notiftask =     " bapi2078_nottaske Work table for tasks 
* notifpartnr =    " bapi2078_notpartnre Partner(s) for Display 
* return =     " bapiret2  Return Parameter(s) 
    . " BAPI_QUALNOT_GETDETAIL 

データを取得できないため、私がBAPIを呼び出す方法に間違いがありますか?

+2

'BAPIRET2'メッセージを受け取る変数を指定し、エラーメッセージの表を確認してください。 – vwegert

+0

@vwegertは、上記のスクリーンショットのようにテーブルにはっきりと存在していますが、次の "Notification 200360210 does not exist"という結果を得ています。 "000200360210"のような入力として与えられている数字の中にパディングがあるはずですか? – Isuru

答えて

3

鍵は、内部で処理されたとおりに提供する必要があります。おそらくのようなconversion routineが存在し、数字を表示するときに先頭のゼロを抑制し、数字を入力するときにゼロを追加します。トランザクションSE16Nでこのルーチンをオフに切り替えて確認することができます。しかし、これはユーザーのための便利な実装に過ぎません。開発者は、文字ベースのキーフィールドの場合は先頭の0を含めて常に完全な値を提供する必要があります(ただし、INT4のような数値型ではありません)。

+1

はい、これはうまくいった。ちょうどポインタ、SE16Nの結果を展開し、 "値の変換されていない"を確認するフィールドの正確な長さを見つける次回: – Isuru

+0

@唯、私が間違っている場合は私を修正しますが、 Ctrl + F12) '、' SE16N'で '変換なしで出力 'をチェックします。 – gkubed

+0

@gkubedはい、私はそれを知らなかった。良いヒント:) – Isuru

関連する問題