“如果你已經能夠獨立完成了ABAP 的“Hello World”程序,發現自己有一定的邏輯思維能力,那么建議你先閱讀一下ERP BC400的課程,詳細了解一下程序的處理邏輯。(畢竟我們這個課程是玩轉系列,不是系統教學。需要的小伙伴可以在文末關注本人微信,索要課程),接下來我們就可以來玩一個更實用的小程序,采用這個程序,可以完成ERP 80%左右的業務需求。”
ERP ALV說白了就是一個數據列表,它的基本邏輯就是“查詢-取值-輸出”, 其中涉及到的兩個小知識點,就是了解1.ERP內表處理邏輯 2.數據庫查詢邏輯。
STEP 1:模板代碼復制(可在文末添加筆者微信索取)。
STEP2:修改程序代碼 a.選擇屏幕字段 b.修改取值邏輯 c.輸出結構
STEP3 :修改報表抬頭信息。
STEP4 :保存、檢查和激活程序。如果您有任何錯誤,它們將顯示在頁面底部。
STEP 5:如果未顯示任何錯誤,您可以運行程序。
STEP6: 接下來的屏幕會輸出標題和字符串。選擇屏幕
輸出結果
相關知識點:1 內表處理邏輯1 了解內部表?內部表( table )是一個包含相同類型的數據對象的序列。內部表只在程序運行過程中存在。?內部表的用途:–暫時存放從數據庫表中讀取的數據,以便作進一步的處理–暫時存放用于顯示的清單數據–作為數據緩沖用于同其他程序進行數據交換2內部表的特性
?內部表的行數不是預先定義的,而是動態增長的(每次增長8K)。?內部表的行類型()可以是任意一種ABAP數據類型。?內部表的類型:–標準表( ),有一個線性索引,主要通過索引訪問。–排序表( ),定義了主鍵abap內表指定行添加,可以通過主鍵和索引訪問。–哈希表( ),沒有索引,只能通過主鍵訪問。
3內部表的處理關鍵字?:將工作區的內容添加到內部表的末尾?:將工作區的內容添加到內部表指定的位置(行號)?:比較非數值型字段,將數值型字段累加到內部表中?:將工作區的內容覆蓋內部表指定的行?:從內部表中刪除指定的行?LOOP AT:將內部表的數據逐行讀到工作區中?READ TABLE:將內部表的某一特定行的數據讀到工作區中?SORT:對內部進行排序?CLEAR:清除工作區的內容?:刪除內部表中的所有記錄
系統變量SY-TABIX可以表示內部表當前所在行
2 數據庫查詢邏輯
1兩種方式訪問數據庫?在ABAP程序中,可以通過兩種方式訪問數據庫–OPEN SQL:標準SQL的子集,與ABAP完全集成,具有數據庫無關性,數據庫接口會自動將其轉換為所使用的數據庫的標準SQL。– SQL:與數據庫相關,使用數據庫提供的標準SQL,不經過數據庫接口的語法檢查和轉換。?避免使用 SQL
2OPEN SQL訪問介紹?OPEN SQL只包含數據操作語言(DML),數據定義語言(DDL)通過ABAP字典對象控制。?通過OPEN SQL可以執行的操作:、、、、?可以通過系統變量SY-SUBRC判斷操作成功與否,SY-SUBRC = 0表示執行成功,SY-SUBRC 0表示執行不成功abap內表指定行添加,更詳細的信息請參考在線幫助文檔。
3SAP SQL基本格式?子句用于確定讀取什么數據–結果包含那些字段–需要讀取單條記錄還是多條記錄()–結果是否可以包含重復記錄()?INTO子句表示讀取的數據放入內存的什么位置(變量、工作區、內部表)?FROM子句表示數據源(表或者視圖)?WHERE子句表示記錄必須滿足的條件
4SAP SQL讀取方式?可以使用 讀取單條記錄,要確保讀出的記錄是唯一的,需要在WHERE語句中判斷所有主鍵。?如果不使用關鍵字,則讀取所有滿足WHERE條件的記錄,讀取方式有兩種:–以循環的方式逐行讀入目標區域,需要有語句配合使用。–使用 … INTO TABLE語句,一次將所有滿足條件的記錄讀入內部表中,沒有使用循環,不需要。這種方式讀取數據比前一種有更高的效率。?在INTO子句中,可以使用 OF,系統只填充有相同名稱的字段,如果不使用,則按照從左向右的順序填充。?在字段清單和WHERE子句中,只需指定字段名稱,不需指定表名稱。?WHERE子句中可以使用AND或OR實現復雜的邏輯條件。? *語句讀取透明表的所有字段,可以沒有INTO子句,但是必須使用聲明透明表。
5SAP SQL表鏈接方法?可以使用JOIN連接多個透明表進行查詢。–INNER JOIN–LEFT OUTER JOIN–RIGHT OUTER JOIN?透明表可以使用別名。?字段如果只存在于一個表中,不需要指定表名稱