共計 2330 個字符,預計需要花費 6 分鐘才能閱讀完成。
這篇文章主要講解了“SAP ABAP 里存在 Java List 集合工具類嗎”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“SAP ABAP 里存在 Java List 集合工具類嗎”吧!
在開發過程中發現該 API 工作不太穩定,同樣的輸入,時不時會返回 HTTP 400 Bad Request:Encountered an error (InternalServerError) from host runtime
這個錯誤并不是總能重現。
通過排查,最后我們確認這個問題和我們調用 API 的代碼無關,于是給 Azure 報了一個 bug:
在分析定位問題時,不由得讓我懷念起以前在 ABAP On-Premise 上做開發的一個便利之處——大多數問題都可以通過在 ABAP 應用服務器端調試來找到根源。
本文記錄了 2016 年時,SAP 成都研究院 CRM 開發團隊在開發 SAP CRM Fiori 應用時的一些技術討論,關于 HTTP 請求的響應狀態碼的差異。
當時我們用 Chrome 打開 SAP Fiori 應用,在 Chrome 開發者工具的 network 標簽里,觀察到有的請求響應碼為 HTTP 200,有的卻是 HTTP 304.
HTTP 200 和 HTTP 304 理論上的差異解析,網上一搜一大把:
https://ions/1665082/what-is-the-difference-between-http-status-code-200-cache-vs-status-code-304
本文我們從一個實際的例子出發,觀察 ABAP 服務器分別是在何種情況下,返回 HTTP 200 和 304 這兩個狀態碼的,幫助大家加深理解。
分幾種情況進行討論。
第一種情況:HTTP 200 OK
第二種情況:HTTP 304 Not Modified
第三種情況:HTTP 200(from Cache)
首先進行第一輪測試。
將這種來自 SAP UI5 標準庫文件的 url 粘貼到瀏覽器里訪問:
https://:7080/sap/bc/ui5_ui5/ui2/ushell/resources/~20160308134900~/sap/fiori/core-min-0.js
得到 HTTP 200 狀態碼:
大家想過沒有,上圖高亮的 HTTP 響應頭部字段,比如 last-modified, 是在 ABAP 服務器上哪段代碼里被填充的?
靈活運用 Jerry 文章
SAP 錯誤消息調試之七種武器:讓所有的錯誤消息都能被定位 介紹的辦法,順利通過調試的方式,找到準確的位置如下:
上述代碼的邏輯:
(1) 第九行,服務器試圖從 HTTP 請求的頭部字段中,提取名為 If-Modified-Since 的字段值,因為這是我第一次請求該 JavaScript 文件,而這個字段的值邏輯上應該等于第一次請求到達服務器后,從服務器返回的響應結構里名為 last-modified 字段的值。
在我的第一輪測試里,因為是第一次請求該文件,HTTP 請求頭部沒有包含 If-Modified-Since 字段,所以服務器解析出的值為空,即變量 lv_modified_since 為空。
(2) 在我使用的 ABAP 服務器上,JavaScript 文件 core-min-0.js 最后修改的時間戳為 20160316205045. 因此,兩個變量 lv_change_time_char 和 lv_change_time_string 都被附上了這個值。
下面第 20 行代碼展示了前文 HTTP 200 狀態碼的截圖里,HTTP 響應字段 cache-control 被填充的地方。
第二種情況:HTTP 304 Not Modified
之前 Chrome 瀏覽器里打開的 url:
https://:7080/sap/bc/ui5_ui5/ui2/ushell/resources/~20160308134900~/sap/fiori/core-min-0.js
不用關閉這個瀏覽器窗口,直接按 F5 刷新,這次收到的響應碼不再是 HTTP 200 OK,而是 HTTP 304 Not Modified.
為什么會產生這種差異呢?按 F5 之后仔細觀察請求頭部,發現第二次請求,瀏覽器發出的 HTTP 請求里,If-Modified-Since 字段包含的就是第一個請求里從服務器端返回的 last-modified 字段值。
按 F5 刷新的這個請求到了服務器端,這一次 ABAP 服務器成功解析出請求字段 If-Modified-Since 的值:
將客戶端發送過來的這個 If-Modified-Since 時間戳,同服務器端該文件最后修改的時間戳進行比較 (即下圖第 26 行 AND 后的第二個判斷條件),發現二者相等,因此在第 28 行返回 HTTP 304 Not Modified.
第三種情況:HTTP 200(from Cache)
關掉 Chrome,再打開,再訪問同一 url,此時 Chrome 直接從自身的 cache 里返回該 JavaScript 文件,而不是向 ABAP 服務器上發起請求。因此服務器上所有 ABAP 斷點均不會觸發。
再回到 Jerry 遇到的那個 Azure 上執行 function 創建 API 遇到的 HTTP 400 Bad request 的 incident,至本文發稿時為止還是未能得到解決。
issue.
感謝各位的閱讀,以上就是“SAP ABAP 里存在 Java List 集合工具類嗎”的內容了,經過本文的學習后,相信大家對 SAP ABAP 里存在 Java List 集合工具類嗎這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!