2016-07-26 38 views
0

因此,我已經完成了嘗試從ECC提取質量通知數據的任務。我選擇的路徑是找到一個可以將數據提取到表格中的BAPI,並使用SE37來編寫FM。獲取質量通知SAP - BAPI_QUALNOT_GETDETAIL

經過一些Google搜索後,我發現了一個名爲「BAPI_QUALNOT_GETDETAIL」的BAPI。我目前面臨的問題是將數據填充到BAPI的導出表中。

Notification in QMEL Table

如從上面的截圖的細節在表QMEL可用看出。

以下是我實施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感謝您的指針,從結果中我得到以下「通知200360210不存在」,儘管它明顯存在於表格中,如上面的截圖所示。是否應該在輸入數字中填充「000200360210」這樣的輸入? – Isuru

回答

3

您必須提供與內部處理完全一樣的密鑰。很有可能會有一個conversion routine,如ALPHA,在顯示數字時抑制前導零,並在輸入數字時添加它們。您可以在事務SE16N中關閉此例程以進行檢查。然而,這只是用戶的一個便利實現 - 開發人員總是必須提供完整的值,如果它是基於字符的鍵字段(不適用於像INT4那樣的數字類型),則包括前導零。

+1

是的,這解決了。只是一個指針,下一次找到字段的確切長度來擴大SE16N的結果,並檢查「值未轉換」:) – Isuru

+0

@Isuru,糾正我,如果我錯了,但這是通過單擊「更改設置( Ctrl + F12)',並檢查'SE16N'中的'無轉換輸出輸出'。 – gkubed

+0

@gkubed是的,但我不知道它。好的提示:) – Isuru