SAP的ABAP作為開發語言有什麼優勢?

ABAP給我一種笨重、過時的感覺。它的syntax、開發環境導致對於開發人員的友好程度和現在的主流語言相差甚遠。

然而SAP為什麼依然使用ABAP作為開發語言,而不是轉向C++等語言?ABAP在語言設計和實際應用上有什麼優勢嗎?


謝邀 @童仲毅

問優劣其實就是個對比。

但我除了ABAP/4之外,沒有做過其他語言的開發。

所以無法給出一個對比。

見諒。


謝邀~!

這個問題真不好回答啊,要不你再問一個問題:為什麼美國國防部要用ada語言而不轉向C++ 或者JAVA ??


總之,專用語言做專業的事兒吧

1.SAP不可能放棄ABAP的,放棄ABAP的歷史成本太大。

2.ABAP的最大好處是易學易用

3.ABAP有面向對象,有指針,比C++易讀,debug方便。

4.ECC平台的其他東西比較強大,這些不用ABAP語言無法使用,例如DDIC,LDB等。

5.Webdynpro for ABAP很噁心,一點也不友好,不過Webdynpro for Java更噁心一些。。。

6.ABAP也在進化,以後重點會放在描述業務底層上,前台代碼應該都是 SAP UI5和Fiori了


同意任平生的答案,abap是sap的優質歷史遺產,沒有必要放棄,而且本身也在發展,現在已經支持動態腳本。另外abap確實是一種非常高效的開發語言,極其適合sap,見過有的公司不怎麼用sap的功能而是用它做開發平台。


從這張官方給的圖中,可以看出abap從機器語言到現在ABAP Objects的進化史,他也在不斷的在融合其他語言,在現在r3的老系統中,abap開發主要還是面向過程的,容易上手,我想SAP的初衷是想讓開發人員把精力更多地放在業務上,盡量降低語言的難度,畢竟是商業軟體,幫助客戶解決問題才是第一要務。

但是市場變化萬千,最近我們也看到SAP研發了大量的新產品,HANA S4主要解決性能問題,Fiori的UI5主要解決界面友好性問題。從最新的abap language 7.40 語法我們能明顯看到,都是面向對象的語言思想。SAP以後的產品更多會採用框架,有興趣也以了解一下simple financial等產品,cds等核心數據服務技術。SAP也在轉型中,這些新技術在國內用的很少,可能是國內經濟不景氣,軟體太貴了吧,國外項目還是很多用到的。

ABAP的更多內容可以關註:SAP顧問圈-專註SAP開發培訓教程-ABAP顧問必上的SAP論壇 歡迎關注的ABAPer一起來探討。


優勢就是。如果你用java,oracle時不時的跑來訛你下。如果你用.net,微軟時不時跑來訛你下。如果你用xxx,某某公司跑來問你收保護費。官司一打好幾年。還不如自己創造一種語言出來,雖然不好用但起碼是自己的。商業優勢不在於語言,而在於平台,品牌,功能,生態。技術上的這點困難就交給程序員去克服了


假設你用紅磚蓋了30年房子了,且已經賣給100W人住了,後來有人跟你說紅磚太low了,現在都用混凝土框架+輕體磚了,建議你把以前的房子都改成混凝土框架+輕體磚。你會怎麼辦?私底下問候下對方的先輩?

另一方面SAP也並沒有放棄新的嘗試,下一代產品的UI界面開發就會用到HTML5了,UI界面可以跨平台了。移動商務嘛。


用友和金蝶都曾經(或者正在)企圖複製SAP的R3ECC,但是都沒成功,我認為他們沒辦法用常規的IDE去複製一個主要開發語言是ABAP的Netweaver開發平台是關鍵(SAP主要模塊都是基於Netweaver).當然如果你是那種從來沒有在實際的項目實施中寫過一句代碼的"高級商務人士",一定會相信了比如像"SAP的優質在於最佳業務實踐"這種鬼話.

我個人的看法這種說法是SAP估意編出來障眼法,目的就是掩飾基真正的優勢,好讓像用友金蝶之流沒法山寨出一個類似的系統.

---------------------------------------------------------------------------------

補充一點:

不要相信任何沒有一年以上ABAP開發經驗的人士對於ABAP開發工作工程量複雜程度的評估,不管這人有什麼樣嚇人的頭銜.基本上這種人無法區分一般的報表程序和複雜事務程序(Dynpro)之間的區別(不是說只有這一種區分的維度,但是這是最基本的).


對於封閉的SAP生態區來說也只能選擇它了,不過安裝S4 HANA的發展方向看,以後前端要用UI5/Fiori,後端用abap,項目組可能需要增加一名前端顧問了


我認為,沒有。

反人類的設計,反人類的SAP。

祝它早日被淘汰。

我是SAP顧問,做過項目經理,甲方乙方,謝謝。


寫了五年abap了,技術還是很菜。abap應該再戰一百年沒有問題,畢竟太強大。很死板?任何一個公司開發這麼強大的軟體,像蘋果為了安全性,穩定性不一樣限定你很多東西。我想說技術還是稍微落後了些,但是sap在進步。並且我不相信一門語言能決定啥,abap的報表難看,只是你覺得二維不是多維的,其實你去分析報表,我相信那些看柱狀圖的,都是一個大概。很多號稱工作很多年的大拿,我相信他也有很多東西不知道,我就舉幾個例子,excel ole xml解析 json解析,ooalv樹狀,以及其它功能,可能在使用過程中會遇到很多問題。畢竟你不僅僅寫寫sql,如果做過難度比較大的項目,就知道sap的強大,很多渣渣,只停留在道聽途說。

第一:ABAP是在20世紀80年代首先開發的許多特定於應用程序的第四代語言(4GL)之一。它最初是SAP R / 2的報告語言,SAP R / 2是一個使大型企業能夠為物料管理和財務和管理會計建立大型機業務應用程序的平台。

ABAP曾經是一個縮寫,一個 llgemeiner erichts 一個 ufbereitungs P rozessor,德國的「通用報表編製處理器」,但後來被更名為英國一個先進適用的 usiness 一個 pplication P AGC軟體。ABAP是首先包含邏輯資料庫(LDB)概念的語言之一,它提供了基本資料庫級別的高級抽象。

ABAP語言最初是由開發人員用來開發SAP R / 3平台的。SAP客戶也打算使用它來增強SAP應用程序 - 客戶可以開發自定義報告和ABAP編程介面。該語言面向更多具有編程經驗的技術客戶。

ABAP仍然是用於創建客戶端 - 伺服器R / 3系統的程序的語言,這是SAP於1992年首次發布的。隨著計算機硬體在20世紀90年代發展,越來越多的SAP應用程序和系統被編寫在ABAP中。到了2001年,除了最基本的功能之外,所有功能都是用ABAP編寫的。1999年,SAP發布了一個名為ABAP Objects的面向對象的擴展,以及R / 3 4.6版。

SAP當前的開發平台NetWeaver支持ABAP和Java。

ABAP具有業務應用程序,操作系統和資料庫之間的抽象。這確保應用程序不直接依賴於特定的伺服器或資料庫平台,並且可以輕鬆地從一個平台移植到另一個平台。

SAP Netweaver當前在IBM System i(以前稱為iSeries,AS / 400)上的UNIX(AIX,HP-UX,Solaris,Linux),Microsoft Windows,i5 / OS和IBM System z上的z / OS(以前稱為zSeries,S / 390)。受支持的資料庫是IBM DB2,Informix,MaxDB,Oracle和Microsoft SQL Server(在SAP Basis版本7.00中已停止支持Informix)。[2]

所有ABAP程序駐留在SAP資料庫中。它們不存儲在像Java或C ++程序這樣的單獨的外部文件中。在資料庫中,所有ABAP代碼都以兩種形式存在:源代碼,可以使用ABAP Workbench工具查看和編輯; 和生成的代碼,這是一種有點可比的Java位元組碼。ABAP程序在作為SAP內核一部分的運行時系統的控制下執行。運行時系統負責處理ABAP語句,控制屏幕的流程邏輯和響應事件(如用戶點擊屏幕按鈕)。在這方面它可以被看作是一個虛擬機器與Java VM相媲美。ABAP運行時系統的一個關鍵組件是資料庫介面,該介面將與資料庫無關的ABAP語句(「打開SQL」)轉換為底層DBMS(「本機SQL」)所理解的語句。資料庫介面代表ABAP程序處理與關係資料庫的所有通信; 它還包含額外的功能,例如在應用程序伺服器的本地內存中緩衝表和頻繁訪問的數據。

ABAP語言通過稱為「ABAP對象」的功能支持面向對象編程。[5]這有助於簡化應用程序並使其更加可控。

ABAP對象與現有語言完全兼容,因此可以在使用ABAP對象的程序中使用現有的語句和模塊化單元,也可以在現有的ABAP程序中使用ABAP對象。ABAP Objects程序中的語法檢查更為強大,某些語句的某些語法形式(通常是較老的語法形式)是不允許的。

物體形成一個膠囊,將角色與相應的行為相結合。對象應該使程序員能夠在一對一的基礎上繪製一個真正的問題和提出的軟體解決方案。商業環境中的典型對象例如是「客戶」,「訂單」或「發票」。從版本3.1開始,SAP Web應用程序伺服器ABAP的業務對象庫(BOR)包含這些對象的示例。BOR對象模型將通過將BOR對象類型遷移到ABAP類庫而集成到下一版本的ABAP對象中。作為一個整體的面向對象的全面介紹將遠遠超出ABAP對象的這個介紹的限制。本文檔介紹了在面向對象中普遍使用的術語選擇,也出現在ABAP對象中。在隨後的部分中,它繼續更詳細地討論如何在ABAP對象中使用這些術語。本節結束部分包含進一步閱讀的列表,以及關於對象方向的一系列標題。

  • 對象是類的實例。它們包含數據並提供服務。數據形成對象的屬性。這些服務被稱為方法(也稱為操作或功能)。通常,方法對私有數據(對象的屬性或狀態)進行操作,只對對象的方法可見。因此,對象的屬性不能由用戶直接改變,而只能由對象的方法改變。這保證了對象的內部一致性。
  • 描述對象。從技術角度來看,對象是類的運行時實例。理論上,可以創建基於單個類的任意數量的對象。類的每個實例(對象)都具有唯一的標識和其屬性的一組值。
  • 對象引用是唯一的地址,可用於識別和指向程序中的對象。對象引用允許訪問對象的屬性和方法。

在面向對象編程中,對象通常具有以下屬性:

  • 封裝 - 對象限制其資源(屬性和方法)對其他用戶的可見性。每個對象都有一個介面,它決定了其他對象如何與之交互。對象的實現是封裝的,也就是說,在對象本身之外是不可見的。
  • 繼承 - 現有的類可以用來派生一個新的類。派生類繼承超類的數據和方法。但是,他們可以覆蓋現有的方法,也可以添加新的方法。
  • 多態 - 相同(相同名稱)的方法在不同的類中表現不同。在ABAP對象中,多態性是通過在繼承過程中重新定義方法並使用稱為介面的結構來實現的。
  • abap官方文檔
  • https://help.sap.com/doc/abapdocu_740_index_htm/7.40/en-US/index.htm


寫過C,java,js,python,c#,plsql……

客觀來說 abap和sap家對手oracle的plsql處在同一水平。

——「啰里八嗦」,「像屎一樣」,「已棄療」,「寫啥都費勁」,「簡直tm見鬼」


學過java和C#,感覺abap有點老,聽說2005年時,abap的待遇是java的好幾倍,所以sap曾經考慮用java替代abap,但後來放棄這個計劃,現在的市場薪資,abap甚至比java略低,所以基於大量abap原有程序和成本考慮,這個語言還會用下去


我覺得沒啥優勢,只有sap裡邊的程序才需要ABAP,如果不是做SAP的話ABAP啥用沒有。而且我覺得SAP裡邊的報表都很死板,出來的效果一點也不炫酷。


對內表數據的操作很方便


技術壁壘也是優勢


沒有優勢。


優勢就是ABAP和現在流行的計算機語言之間有代差。

因為ABAP無論技術層面還是方法論都比較落後,所以熟悉了現在語言的技術人員大多不願意再去從事SAP的開發,這就成為了SAP行業就業人員的護城河。這可以算是一個優勢吧


推薦閱讀:

erp實施主要是做什麼?
OPENERP有機會取代或和SAP公司的ERP競爭嗎?
為什麼說ERP在中國很多是面子工程?
剛開始接觸ERP,目前公司用的是Oracle 的EBS,現在在學財務的各個模塊,我們公司是甲方,我是女生,感覺以後做實施的話太奔命了,ERP裡面有什麼方向比較適合女生呢?
怎麼理解「上ERP找死,不上ERP等死」這句話?

TAG:編程語言 | ERP | 思愛普SAP | abap |