一、將ABAP時間戳轉(zhuǎn)換為JAVA時間戳的方法
1、解析
使用 Java 的?SimpleDateFormat?類來解析 ABAP 時間戳字符串,下面是代碼示例:
String abapTimestamp = "20180531120501.123456";SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss.SSSSSS");
2、轉(zhuǎn)換對象
將 ABAP 時間戳轉(zhuǎn)換為 Java 中的?Date?對象,下面是代碼示例:
Date date = sdf.parse(abapTimestamp);
3、轉(zhuǎn)換為毫秒數(shù)
使用?getTime()?方法將其轉(zhuǎn)換為毫秒數(shù),下面是代碼示例:
long millis = date.getTime();
4、得到微秒數(shù)
如果 ABAP 時間戳沒有微秒部分,可以將毫秒數(shù)乘以 1000 來得到對應(yīng)的微秒數(shù)。下面是代碼示例:
String abapTimestamp = "20190531120501";SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");Date date = sdf.parse(abapTimestamp);long micros = date.getTime() * 1000;
二、將ABAP時間戳轉(zhuǎn)換為JAVA時間戳的原理
BAP 時間戳和 Java 時間戳都是表示從 1970 年 1 月 1 日 0 時 0 分 0 秒(UTC/GMT)起經(jīng)過的毫秒數(shù)。它們只是數(shù)據(jù)類型和存儲格式不同,所以可以互相轉(zhuǎn)換。
在 ABAP 中,時間戳通常保存為字符串類型,格式為?YYYYMMDDhhmmss?或?YYYYMMDDhhmmss.uuuuuu,其中?YYYY?表示年份,MM?表示月份,DD?表示日期,hh表示小時,mm?表示分鐘,ss?表示秒,uuuuuu?表示微秒。
在 Java 中,時間戳通常保存為長整型數(shù)據(jù)類型?long,表示從 1970 年 1 月 1 日 0 時 0 分 0 秒(UTC/GMT)起經(jīng)過的毫秒數(shù)。
三、ABAP介紹
1、簡介
ABAP(高級商務(wù)應(yīng)用編程)是一種高級語言,由德國軟件公司SAP開發(fā)。和最近引入的Java一起,ABAP主要用作SAP的編程。這個服務(wù)器軟件是SAP NetWeaver平臺的一部分,這個平臺主要用來開發(fā)商務(wù)應(yīng)用。ABAP支持有面向過程和面向?qū)ο蟆?/p>
2、歷史
ABAP作為一種面向特定應(yīng)用的第四代編程語言較早在20世紀(jì)80年代開發(fā)。它原本是作為一種報表語言應(yīng)用在SAP R/2上,這是一個幫助大型公司在大型機上建立原材料管理和財務(wù)會計管理商務(wù)應(yīng)用的平臺。ABAP本來也是德語AllgemeinerBerichtsaufbereitungsprozessor的縮寫,意思是“通用報表預(yù)處理器”。ABAP名列前茅次引入了“邏輯數(shù)據(jù)庫”的概念,它在基本的數(shù)據(jù)庫層提供了更高級的抽象。
ABAP編程語言最初被SAP的開發(fā)者用于開發(fā)SAP R/3平臺。但它也被設(shè)計讓SAP的客戶用于增強SAP的軟件應(yīng)用–客戶可以用ABAP編程開發(fā)自定義的報表和界面。這個編程語言對于程序員來說很容易學(xué)習(xí)但并不是一個非程序設(shè)計人員可以直接使用的工具。編寫ABAP程序需要良好的編程技巧和關(guān)系數(shù)據(jù)庫方面的知識,如果知道面向?qū)ο笤O(shè)計的概念更好。
雖然SAP較早于1992年就發(fā)布了R/3,但ABAP仍可以用于為R/3系統(tǒng)編寫程序。在20世紀(jì)90年代,隨著計算機硬件的發(fā)展,越來越多的SAP的應(yīng)用軟件和系統(tǒng)都用ABAP來實現(xiàn)。一直到2001年,幾乎所有的基本功能都是由ABAP編程實現(xiàn)的。在1999年,SAP在發(fā)布R/3 4.6版的同時也發(fā)布了一個對ABAP的面向?qū)ο髷U展,叫做ABAP Objects。SAP最新的開發(fā)平臺NetWeaver同時支持ABAP和Java。
3、ABAP程序運行在哪里
所有的ABAP程序都駐留在SAP數(shù)據(jù)庫里。他們不像Java或者C++程序那樣存儲在一個單獨的外部文件里,在數(shù)據(jù)庫里所有的ABAP代碼都以兩種形式存在:可以用ABAP workbench查看和編輯的源代碼和由ABAP運行環(huán)境載入和解釋的“編譯”代碼(技術(shù)上更精確地說是“產(chǎn)生”代碼)。當(dāng)一段ABAP源代碼名列前茅次被調(diào)用時會隱含的進行代碼產(chǎn)生。如果稍后源代碼改變了或者程序訪問的對象改變了(比如數(shù)據(jù)庫的表添加了新的字段),產(chǎn)生代碼就會自動重新產(chǎn)生。
ABAP程序在運行時系統(tǒng)(SAP核心的一部分)的控制下運行在SAP應(yīng)用服務(wù)器里。運行時系統(tǒng)負(fù)責(zé)處理ABAP語句,控制顯示的邏輯序列和響應(yīng)事件(比如,用戶按一下屏幕上的一個按鈕)。ABAP運行時系統(tǒng)的一個關(guān)鍵組件是數(shù)據(jù)庫接口,它把ABAP的數(shù)據(jù)庫無關(guān)語句(“開放SQL”)變成底層數(shù)據(jù)庫管理系統(tǒng)可以理解的語句(“本地SQL”)。數(shù)據(jù)庫接口處理ABAP程序和關(guān)系數(shù)據(jù)庫之間所有的通信;它也有一些其他的作用,比如把經(jīng)常訪問的數(shù)據(jù)緩存到應(yīng)用服務(wù)器本地的存儲器里。
4、ABAP Workbench
ABAP Workbench有幾個不同的工具用于編輯容器對象。這些工具可以為你提供涵蓋整個軟件開發(fā)周期各階段的輔助。創(chuàng)建和編輯容器對象的最重要的工具有:
ABAP Editer:編寫程序代碼ABAP Dictionary:處理數(shù)據(jù)庫表定義,檢索全局類型Menu Painter:設(shè)計用戶界面(包括菜單欄,標(biāo)準(zhǔn)工具欄,應(yīng)用欄,配置功能鍵)Screen Painter:為用戶對話框設(shè)計屏幕(動態(tài)程序)Function Builder:顯示和處理功能模塊Class Builder:顯示和處理ABAP對象類延伸閱讀1:ABAP在線程序
在線程序(也叫模塊池)不產(chǎn)生列表。這些程序使用一系列的屏幕來定義更復(fù)雜的用戶交互模式。術(shù)語“屏幕”是指用戶看到的實際的物理圖像。每個屏幕還有一個“流邏輯”;這是指由屏幕觸發(fā)的ABAP代碼,比如初始化屏幕,響應(yīng)用戶請求的應(yīng)答和控制模塊池的屏幕之間的序列的邏輯。每個屏幕都有自己的流邏輯,每個流邏輯都分為“PBO”(輸出前處理)和“PAI”(輸入后處理)部分。在SAP的文檔中,術(shù)語“dynpro”(動態(tài)程序)用來表示這種屏幕和流邏輯的結(jié)合。