2016-01-22 148 views
4

我正在開發用於變更SAP設備數據的網關和代理接口。爲了瞭解進入的數據是怎麼回事,我一直在使用BAL_*功能模塊記錄數據。它工作正常,到目前爲止它是有幫助的。SAP閱讀SLG1登錄客戶程序

最終,儘管我們打算讓最終用戶完全通過Web前端工作,並且無法訪問SAP GUI。他們不能使用交易SLG1。因此,我被要求創建一個網關實體,這樣我們的前端開發人員就可以對來自日誌的消息製作一個美麗的視圖。我已經注意到每個日誌都會創建一個句柄,例如看起來像051MjXRE7jMmdAR2X6GWoW的東西。我在每個「跑步」和每個「手柄」之間建立了關聯。

我已經搜索了很多,功能組BAL_DSP_LOG_DISPLAY,以及其他BAL_*功能,如BAL_LOG_EXIST等。無論我使用哪些函數,它們都會繼續報告日誌不存在(然後在括號中,在內存中找不到)。我也沒有真正找到一個例子,在首先創建它之外使用這些功能,然後立即顯示它。我假設,因爲日誌剛剛創建,數據已經在內存中,只能顯示。

但是,我不能這樣做。對此接口進行的大多數調用都是異步的,我無法將消息發送回客戶端,也沒有SAP GUI。同時,在函數中挖掘並返回一個檢查內存的宏時,我發現它顯然沒有問題。

Macro function inside the BAL function group

The load function which does nothing

有誰用經驗,用這個日誌知道如何正確地準備功能組使用的工作?我假設在調用它之前我必須將它加載到內存中,但是我一直無法找到自己會做這樣的事情。

+0

你爲什麼不從數據庫中讀取日誌? – Suncatcher

+0

我不知道自己在使用哪個表,而我正在爲之工作的客戶更喜歡我們堅持使用SAP提供的API,而不是推出或擁有。 –

+0

以下客戶的需求往往是錯誤的方法。在這種特殊情況下,從數據庫中獲取必要的數據會更快更簡單。 – Suncatcher

回答

7

我在每個「運行」和每個「句柄」之間建立了關聯。

這不應該是必要的,因爲你可以存儲你的「運行標識」作爲協議報頭數據外鍵(BAL_S_LOG-EXTNUMBER) - 不過沒關係。

你是對的,假設協議需要首先加載到內存中 - 這就是BAL_DB_SEARCHBAL_DB_LOAD的用途。程序包SZAL中提供了大量演示程序和文檔。您可能需要檢查SBAL_DEMO_05這個案例。


上述技術的技術說明:本FORM load用於確保該函數組SBAL的負載(字節代碼)被加載,因爲否則如果不是這樣的ASSIGN語句將失敗。這只是防止錯誤調用的保護措施,而不是按需加載設施。

+0

我會看看演示。我有蜜蜂在尋找某些東西,但大多數人在我遇到的文件中沒有提到這一點。很多注意力都集中在保存日誌上,而不是本身檢索它。謝謝您的幫助。 –

1

您可以直接從DB加入BALHDRBALDAT表讀取日誌。 BALHDR表包含LOG_HANDLE字段,您可以使用收集的句柄輕鬆查詢該字段。
但是,最方便的方法是使用FM調頻。該模塊包含大量的搜索參數,可以檢索您想要的任何日誌。