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