在Eclipse中建立一個ABAP專案
第1步:下載,安裝並啟動Eclipse IDE
ABAP開發是在Eclipse IDE中使用自定義ABAP工具完成的。如果您尚未安裝Eclipse,請下載適用於Java開發人員的Eclipse IDE,然後立即安裝並啟動該應用程式。
第2步:為SAP NetWeaver(ADT)安裝ABAP開發工具
- 在Eclipse選單欄中,選擇:幫助>安裝新軟體...
- 在對話方塊中新增URL https://tools.hana.ondemand.com/neon(例如Eclipse Neon 4.6)
- 按Enter顯示可用的功能
- 選擇適用於SAP NetWeaver的ABAP
- 在下一個嚮導頁面上,您將看到要安裝的功能的概述。點選下一步
- 確認許可協議,然後單擊完成開始安裝
- 第3步:切換視角
- 單擊Open Perspective按鈕或使用選單:Window> Open Perspective> Other切換到ABAP透檢視。
- 第4步:關閉歡迎頁面
- 歡迎頁面可能會出現。它給出了關於Eclipse的一些一般資訊。點選工作臺按鈕離開歡迎頁面。
- 第5步:選擇ABAP透檢視
- 點選Open Perspective按鈕。
- 然後通過在列表中選擇ABAP並單擊確定按鈕切換到ABAP透檢視。
- 第6步:熟悉工具佈局
- 在ABAP透檢視中,ABAP工具理想地位於IDE中,以便於開發任務。不過,您可以根據自己的需要自由重新排列所有檢視和編輯。
- 第7步:新的ABAP專案
- 開啟檔案選單,選擇新建,然後點選ABAP專案。從SAP系統連線列表中選擇ABAP後端系統,然後按下一步按鈕。
- 第8步:選擇連線設定
- 在連線設定對話方塊中單擊下一步。
- 第9步:輸入您的登入資料
- 在下一個螢幕上輸入您的登入資料並單擊完成按鈕。
第10步:建立專案
ABAP專案已建立。它表示與您選擇的SAP系統的系統連線。
顯示資料庫內容並執行SQL查詢
你將學習
在本教程中,您將學習如何使用資料預覽來顯示錶和檢視的內容,以及如何使用SQL控制檯執行臨時SQL查詢。
本教程從SAP NetWeaver Demo樣本EPM模型的表格開始(您可以在SAP Community NetWeaver企業採購模型 - 簡介中找到詳細資訊 ),因此您可以在任何SAP NetWeaver 7.5系統上重複教程。
第1步:開啟資料預覽
在Eclipse中,單擊或使用鍵盤快捷鍵Alt+F8執行ABAP開發物件。您將“執行”資料庫表snwd_so_inv_item。這將開啟資料預覽,這將允許您瀏覽EPM模型中的發票專案。
第2步:選擇一個數據庫表
snwd_so_inv_item在搜尋欄位中輸入。一旦搜尋結果已經傳遞或者表格已經在歷史列表中,點選條目** SNWD_SO_INV_ITEM**。點選確定開啟資料預覽。
第3步:資料預覽
在資料預覽中單擊選擇列以更改從資料庫中檢索哪些欄位。
第4步:選擇列
首先點選取消全選。只選擇欄位GROSS_AMOUNT和CURRENCY_CODE。點選確定確認您的選擇。
資料預覽會相應地重新整理。
第5步:新增一個過濾器
按新增過濾器並選擇CURRENCY_CODE。
第6步:輸入過濾條件
USD在文字欄位中輸入以過濾美元的專案並按Enter鍵。
資料預覽會相應地重新整理。
第7步:開啟SQL控制檯
單擊SQL控制檯按鈕以開啟SQL控制檯。
第8步:初始化SQL SELECT語句
SQL控制檯顯示SELECT用於檢索資料預覽資料的語句。在以下步驟中,您將調整SELECT報表以讀取訂單的付款狀態和買方的公司名稱。
第9步:新增JOIN條件
調整SQL控制檯中的SELECT語句,以通過執行以下操作來從訂單標題中獲取付款狀態:JOIN為表新增條件snwd_so_inv_head
注意:您可能會遇到錯誤。你會在下一步中解決這個問題。
FROM查詢的部分應該如下所示:
複製程式碼
SNWD_SO_INV_ITEM join SNWD_SO_INV_HEAD
on SNWD_SO_INV_ITEM~parent_key = SNWD_SO_INV_HEAD~node_key
第10步:更新WHERE子句
修改WHERE子句以匹配以下內容:
複製程式碼
SNWD_SO_INV_ITEM~CURRENCY_CODE = 'USD'
第11步:將欄位新增到SELECT列表
payment_status將表中的欄位新增snwd_so_inv_head到SELECT列表中。
第12步:執行查詢
單擊執行以執行當前查詢或按F8鍵。
第13步:檢查查詢結果
檢查右側的輸出是否包含付款狀態。
第14步:調整SELECT語句
再次調整SELECT語句以snwd_bpa通過新增表的JOIN條件從表中檢索公司名稱snwd_bpa。
複製程式碼
join SNWD_BPA
on SNWD_SO_INV_HEAD~buyer_guid = SNWD_BPA~node_key
步驟15:新增公司名稱欄位
company_name將表中的欄位新增snwd_bpa到SELECT列表中。
複製程式碼
SNWD_BPA~company_name,
SNWD_SO_INV_ITEM~GROSS_AMOUNT,
SNWD_SO_INV_ITEM~CURRENCY_CODE,
SNWD_SO_INV_HEAD~PAYMENT_STATUS
第16步:新增一個order by子句
新增一個ORDER BY條款按照買方的公司名稱對結果進行排序。
複製程式碼
ORDER BY SNWD_BPA~company_name
第17步:執行修改後的查詢
單擊執行以執行當前查詢或按F8。
第18步:檢視更新的結果
檢查右側的輸出是否包含公司名稱。您稍後將重複使用此SELECT語句在ABAP類中進行資料檢索。所以只需保持SQL控制檯處於開啟狀態
建立並執行ABAP應用程式
根據樣本EPM資料模型中的表建立並執行ABAP應用程式。
你將學習
在本教程中,您將學習如何基於SAP NetWeaver Demo樣本EPM模型的表建立和執行ABAP應用程式(SAP社群中的詳細資訊)SAP NetWeaver企業採購模型 - 介紹,因此您可以在任何SAP上重申本教程NetWeaver 7.5系統。
第1步:建立新的ABAP程式
一個。建立全球資料字典(“DDIC”)結構:在工具欄中,選擇新圖示,然後選擇ABAP程式...:
嚮導似乎建立一個新的ABAP程式。z_invoice_items_euro
在名稱欄位中輸入。在描述欄位中輸入一個有意義的文字。點選完成建立報告。
之後會開啟一個編輯器,顯示空白報告。
第2步:建立ABAP本地類
鍵入lcl並按下Ctrl+Space即可獲取程式碼完成建議。通過雙擊選擇用於插入本地類的程式碼模板,lcl - Local class或者Enter如果已經選擇了正確的條目,請按。
調整本地類的名稱以lcl_main使用內聯編輯。
第3步:建立CREATE方法
將游標定位在類定義語句中,然後按Ctrl + 1開啟快速修復選單。雙擊Generate factory method create來建立靜態工廠方法。
第4步:執行RUN方法
一個。新增額外的例項方法的定義執行輸入methods run.公共部分。
灣 然後將游標定位在方法名稱上,然後按Ctrl + 1開啟Quick-Fix選單。雙擊執行新增實施。
在方法執行中實現一個簡單的WRITE語句。
第5步:使ABAP程式可以執行
一個。在您的報告中新增START-OF-SELECTION事件
b。建立本地類的例項lcl_main。
C。呼叫run方法。
即,輸入以下程式碼:
複製程式碼
START-OF-SELECTION.
lcl_main=>create( )->run( ).
第6步:儲存並激活ABAP程式
單擊工具欄上的儲存並啟用按鈕,儲存並激活您的程式。
第7步:執行ABAP程式
按F8執行您的程式。嵌入式SAP GUI將在Eclipse編輯器中開啟。檢查報告的輸出後,單擊關閉圖示關閉選項卡。
建立一個新的資料字典結構
您將學習如何建立資料字典結構
第1步:建立全域性資料字典結構
現在您將建立一個全域性資料字典(“DDIC”)結構:在工具欄中,選擇New圖示,然後選擇Other ...:
第2步:過濾物件型別的列表
在出現的嚮導中,通過輸入過濾ABAP儲存庫物件型別列表**struct**。
第3步:輸入名稱和說明
然後輸入以下內容並選擇完成。
•名稱= •說明=例如發票專案結構ZSO_INVOICE_ITEM
開啟一個新的文字編輯器,顯示新建立的資料字典結構的內容。
第4步:刪除生成的元件
component_to_be_changed從結構中移除生成的示例元件:
第5步:為結構定義欄位
在該專案的結構中,定義的欄位company_name,amount,currency_code,和payment_status,如下所示:
複製程式碼
company_name : snwd_company_name;
amount : snwd_ttl_gross_amount;
currency_code : snwd_curr_code;
payment_status : snwd_soi_payment_status_code;
編輯器顯示語法錯誤,因為數量尚未繫結到貨幣程式碼。
第6步:繫結金額程式碼註釋
將金額繫結到貨幣程式碼:
a。在欄位前新增一個新行,通過輸入Ctrl +空格來amount新增@並開啟程式碼完成。顯示所有可能的註釋列表。
灣 選擇註釋@Semantics.amount.currencyCode。
C。再次觸發程式碼完成:: '在之後輸入@Semantics.amount.currencyCode,然後選擇Ctrl +空格,然後選擇註釋zso_invoice_item.currency_code:
d。最後選擇儲存(Ctrl + S)
你不應該再有這個語法錯誤。
步驟7:檢查並激活結構
回到結構中ZSO_INVOICE_ITEM,選擇檢查ABAP開發物件(Ctrl + F2)。然後選擇啟用(Ctrl + F3)。
資料字典結構ZSO_INVOICE_ITEM現在被啟用。
你的程式碼應該是這樣的:
複製程式碼
@EndUserText.label : 'Invoice Item Structure'
@AbapCatalog.enhancementCategory : #NOT_EXTENSIBLE
define type zso_invoice_item {
company_name : snwd_company_name;
@Semantics.amount.currencyCode : 'zso_invoice_item.currency_code'
amount : snwd_ttl_gross_amount;
currency_code : snwd_curr_code;
payment_status : snwd_soi_payment_status_code;
}
建立一個全域性ABAP類
您將學習如何建立一個全域性的ABAP類,其中您將從資料庫中檢索資料。
先決條件
開發環境: ABAP開發工具,AS ABAP 7.50或更高版本
你將學習
在之前的教程中,您學習瞭如何:
1. 建立並執行ABAP程式
2. 顯示資料庫內容並執行SQL查詢
3. 建立ABAP資料字典結構
現在,您將把所有這些放在一起:在ABAP程式中,您將:
- 建立一個全域性類
- ...使用資料預覽和SQL工具從後端檢索資料
- ...然後使用ABAP結構作為型別返回引數。
將資料檢索邏輯封裝在全域性ABAP類中,使您能夠正確分離關注點並熟悉更廣泛的工具集。
最後,您將學習如何在SAP列表檢視器(“ ALV Grid
”)中顯示資料。
第1步:開啟您的ABAP程式
首先,開啟你ZSO_INVOICE_ITEMS_EURO
在上一篇教程中建立的ABAP程式,建立並執行一個ABAP應用程式。
第2步:刪除WRITE語句
在程式中ZSO_INVOICE_ITEMS_EURO,刪除WRITE語句:通過將游標放在WRITE語句的某處並選擇Ctrl + D來刪除整行:
第3步:建立全球課程
現在建立資料檢索的全域性類:
一個。在run方法中,建立一個型別的區域性變數zcl_invoice_retrieval:
data: invoices type ref to zcl_invoice_retrieval。
灣 由於這個類還不存在,你會得到一個語法錯誤。要建立班級,請將游標放在班級名稱上,然後通過選擇Ctrl + 1開啟快速幫助。在快速幫助選單中,雙擊建立全域性類zcl_invoice_retrieval:
C。將出現一個嚮導來建立一個新的ABAP類。輸入:
- 名稱- 說明發票檢索ZCL_INVOICE_RETRIEVAL
d。選擇完成:
將會開啟一個新編輯器,顯示您建立的課程,ZCL_INVOICE_RETRIEVAL。
第4步:檢查語法
如有必要,請返回到您的程式並使用鍵盤快捷鍵觸發語法檢查Ctrl+F2。
語法錯誤不應再發生。
第5步:例項化類
仍然在你的程式中,zcl_invoice_retrieval使用new運算子建立一個類的例項:
第6步:建立一個獲取資料庫記錄的方法
要從資料庫中讀取記錄,您需要呼叫一個方法get_items_from_db。
該方法尚不存在,所以我們將使用快速輔助建立它,如下所示:
一個。仍然在你的程式中,輸入一個方法呼叫:
invoices->get_items_from_db
灣 由於該方法不存在,您將收到錯誤。將游標定位在缺失方法的名稱上,然後選擇快速輔助(Ctrl+1)。在快速幫助選單中,選擇建立方法get_items_from_db
C。在出現的Create class嚮導中,只需選擇Finish,建立一個不帶引數的公共方法:
在該類中ZCL_INVOICE_RETRIEVAL,快速輔助建立:
- 方法定義
- 空方法實現:
第7步:新增方法實現
在以前的教程(顯示資料庫內容和執行SQL查詢)中,您SELECT
使用SQL控制檯生成了一條語句。使用SQL控制檯的優點是,您可以通過定義子句來減少錯誤 - 就像JOIN, WHERE, or ORDER BY
- 只需操作資料預覽即可。SQL控制檯會自動為您生成正確的SELECT語句。
您現在將SELECT
在您的類中使用此生成的語句從資料庫檢索資料。
注意:我們強烈建議您通過完成此前的教程來了解SQL控制檯。但是,如果您不再開啟SQL控制檯,則可以簡單地將以下SELECT
語句複製到方法實現中(請參閱下面的步驟c)。
一個。回到SQL控制檯:
灣 調整查詢部分的大小並使用快捷鍵Ctrl + C複製Open SQL語句:
C。現在,在你的類中ZCL_INVOICE_RETRIEVAL
,將語句貼上到get_items_from_db
(使用Ctrl + V)的方法實現中:
來自SQL控制檯的程式碼應該如下所示。請注意,SQL控制檯查詢部分自動新增INTO子句INTO TABLE @DATA(LT_RESULT)
:
複製程式碼
SELECT
SNWD_BPA
~COMPANY_NAME
,
SNWD_SO_INV_ITEM
~GROSS_AMOUNT
,
SNWD_SO_INV_ITEM
~CURRENCY_CODE
,
SNWD_SO_INV_HEAD
~PAYMENT_STATUS
FROM
SNWD_SO_INV_ITEM
JOINSNWD_SO_INV_HEAD
ONSNWD_SO_INV_ITEM
~PARENT_KEY
=SNWD_SO_INV_HEAD
~NODE_KEY
JOINSNWD_BPA
ONSNWD_SO_INV_HEAD
~BUYER_GUID
=SNWD_BPA
~NODE_KEY
WHERE
SNWD_SO_INV_ITEM
~CURRENCY_CODE
='USD'
ORDER
BY
SNWD_BPA
~COMPANY_NAME
INTO
TABLE
@DATA
(LT_RESULT
).
UP
TO
100
ROWS.
該宣告UP TO 100 ROWS
將導致錯誤。你將在下一步中解決這個問題。
第8步:格式化程式碼
現在您可以格式化(即“漂亮列印”)原始碼:開啟“ 源”選單並選擇“ 格式”。(或者,您可以使用快捷鍵Shift + F1)。
如果你想指定你的格式設定,你可以在專案的屬性中做到這一點。在專案瀏覽器中右鍵單擊專案並選擇屬性。
一個。刪除新增UP TO 100 ROWS。
灣 要使SELECT語句更具可讀性,請在JOIN條件中新增一些換行符:
第9步:顯式宣告區域性變數
在前面的教程(建立結構)中,您建立了一個ABAP資料字典結構。現在,你將使用這個結構:
首先,我們將lt_result
明確宣告一個區域性變數。然後,使用這個結構,我們將定義型別。您的方法的返回引數get_items_from_db
。
一個。首先將游標置於內聯宣告的變數上,lt_result
然後通過選擇Ctrl + 1開啟Quick Fix :
灣 lt_result
通過雙擊快速修復選單,選擇顯式宣告本地變數:
這將建立一個引用本地型別的本地變數,並自動生成以下程式碼:
```ABAP
型別:開始為helper_type,
company_name TYPE snwd_bpa-company_name,
gross_amount TYPE snwd_so_inv_item-gross_amount,
currency_code TYPE snwd_so_inv_item_ currency_code,
payment_status TYPE snwd_so_inv_head-payment_status,
結束的helper_type。
DATA:lt_result型別標準表helper_type.`
```
它也取代INTO TABLE @DATA(lt_result)
了INTO TABLE @lt_result
第10步:用Dictionary結構替換helper_type
在接下來的步驟中,您將使用helper_type
您建立的資料字典結構(在前面的教程建立ABAP資料字典結構中)替換本地型別。
仍然在發票檢索類的編輯器中ZCL_INVOICE_RETRIEVAL
:
a。在該方法中get_items_from_db
,將變數的型別更改lt_result
為以下標準表格zso_invoice_item
:
灣 刪除本地型別helper_type
:
第11步:宣告區域性變數作為返回引數
你的方法仍然不會返回任何資料。因此,您將使用另一個Quick Assist將本地變數轉換為返回引數 - 以便您可以從程式中訪問結果:
一個。為此,請將游標置於變數上lt_result並通過輸入Ctrl + 1來獲得快速輔助。
灣 選擇轉換lt_result為返回引數:
請注意,返回的引數已新增到方法中,並生成了基於結構的附加表型別:
第12步:儲存並激活你的類
儲存(Ctrl + S)和啟用(Ctrl + F3)你的類。
第13步:在程式中使用返回引數
現在,在您的程式中,宣告一個內聯宣告的變數data(invoice_items),以接收返回引數的結果,invoices->get_items_from_db( )如下所示:
第14步:生成ALV網格
最後,您可以ALV Grid使用該類將發票專案顯示為SAP列表檢視器(“ ”)cl_salv_table。
在你的程式中,ZSO_INVOICE_ITEMS_EURO:
a。cl_salv_table=>通過輸入Ctrl +空格鍵
b來輸入並獲取程式碼完成建議。選擇靜態方法factory並...
c。按Shift + Enter鍵插入方法呼叫的完整簽名:
如果您希望預設插入完整簽名,則可以在首選項中更改程式碼完成的行為。在選單中選擇視窗並點選首選項。在“首選項”對話方塊中,在過濾器欄位中輸入程式碼完成,或者開啟以下路徑ABAP開發>編輯器>原始碼編輯器>程式碼完成。在程式碼完成設定中,您可以啟用複選框以完成時始終插入完整簽名。
步驟15:改編ALV Grid工廠方法
在您生成的方法呼叫中:
一個。list_display, r_container, and container_name使用快捷鍵Ctrl + D刪除註釋的匯出引數
灣 取消對匯入引數r_salv_table使用快捷按Ctrl + 7和手動內嵌變數分配alv_table給它
C。將變數分配invoice_items給變化的引數t_table
d。然後呼叫的顯示方法ALV_TABLE:alv_table->display( ):
你的方法應該是這樣的:
複製程式碼
cl_salv_table=>factory(
IMPORTING
r_salv_table = data(alv_table)
CHANGING
t_table = invoice_items ).
alv_table->display( ).
第16步:檢查你的程式碼
你的程式程式碼應該如下所示:
複製程式碼
*&---------------------------------------------------------------------*
*& Report z_invoice_items_euro
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_invoice_items_euro.
class lcl_main definition create private.
public section.
CLASS-METHODS create
RETURNING
value(r_result) TYPE REF TO lcl_main.
methods run.
protected section.
private section.
endclass.
class lcl_main implementation.
method create.
create object r_result.
endmethod.
method run.
data: invoices type ref to zcl_invoice_retrieval.
invoices = new ZCL_INVOICE_RETRIEVAL( ).
data(invoice_items) = invoices->get_items_from_db( ).
cl_salv_table=>factory(
IMPORTING
r_salv_table = data(alv_table)
CHANGING
t_table = invoice_items ).
alv_table->display( ).
endmethod.
endclass.
start-of-selection.
lcl_main=>create( )->run( ).
你的班級程式碼現在應該如下所示:
複製程式碼
CLASS zcl_invoice_retrieval DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES: ty_table_of_zso_invoice_item TYPE STANDARD TABLE OF zso_invoice_item WITH DEFAULT KEY.
METHODS get_items_from_db
RETURNING
VALUE(lt_result) type ty_table_of_zso_invoice_item.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_invoice_retrieval IMPLEMENTATION.
METHOD get_items_from_db.
SELECT
snwd_bpa~company_name,
snwd_so_inv_item~gross_amount,
snwd_so_inv_item~currency_code,
snwd_so_inv_head~payment_status
FROM
snwd_so_inv_item
JOIN snwd_so_inv_head ON snwd_so_inv_item~parent_key = snwd_so_inv_head~node_key
JOIN snwd_bpa ON snwd_so_inv_head~buyer_guid = snwd_bpa~node_key
INTO TABLE @lt_result
WHERE
snwd_so_inv_item~currency_code = 'USD'
ORDER BY
snwd_bpa~company_name.
ENDMETHOD.
ENDCLASS.
第17步:儲存並激活程式
通過單擊工具欄中的啟用圖示或使用鍵盤快捷鍵Ctrl + F3來啟用您的程式。
現在執行該程式。你應該像這樣獲得一個SAP列表檢視器:
建立一個數據元素
您將學習如何建立一個數據元素,您將在稍後的教程中使用它。
你將學習
您將學習如何建立資料元素。然後,您將使用此資料元素為表中的某一列提供布林邏輯,而該列又包含您從資料庫檢索到的資料。(在前面的教程中,建立一個ABAP類。)
第1步:更改欄位型別(到新的資料元素)
返回到您的ABAP字典結構zso_invoice_item並將欄位型別更改payment_status為zso_invoice_payment_status:
由於資料元素zso_invoice_payment_status不存在,因此會出現語法錯誤,您將使用快速修復來解決該問題:
第2步:選擇一個快速修復
開啟快速修復:
一個。選擇資料元素並通過選擇Ctrl + 1來顯示所有可用的快速修復。
灣 然後選擇建立資料元素zso_invoice_payment_status並選擇回車。
第3步:建立一個新的資料元素
在欄位說明中輸入新資料元素的說明,然後選擇完成:
第4步:輸入型別和欄位標籤
在出現的資料元素編輯器中,輸入以下內容:
一個。在型別名稱框中,輸入標誌。
灣 在右側的欄位標籤下,輸入以下內容:
•短= 已付
•中= 已付發票
•長= 已付發票
•標題= 已付發票
第5步:儲存並激活資料元素
然後選擇儲存(Ctrl + S),然後啟用(Ctrl + F3)您的資料元素。
第6步:檢查結構的語法錯誤
回到結構ZSO_INVOICE_ITEM並選擇檢查ABAP開發物件(Ctrl + F2):
啟用結構
選擇啟用(Ctrl + F3)。
第8步:在ABAP類中使用您的資料元素
回到班級,**ZCL_INVOICE_RETRIEVAL**
,你在前面的教程中建立(建立ABAP類)。)
現在,您將改變的值payment_status
從P到被設定標識X(真)當發票已支付。
ORDER BY
在SELECT
語句的子句後面輸入以下程式碼:
複製程式碼
LOOPAT
lt_result
ASSIGNINGFIELD-SYMBOL(
<entry>
).
CASE
<entry>-payment_status
.
WHEN
'P'.
<entry>-payment_status
=abap_true
.
WHEN
OTHERS.
<entry>-payment_status
=abap_false
.
ENDCASE.
ENDLOOP.
第9步:儲存並激活課程
最後,選擇儲存(Ctrl + S),然後啟用(Ctrl + F3)你的班級。
你的程式碼應該是這樣的:
複製程式碼
CLASS zcl_invoice_retrieval DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES: ty_table_of_zso_invoice_item TYPE STANDARD TABLE OF zso_invoice_item WITH DEFAULT KEY.
METHODS get_items_from_db
RETURNING
VALUE(lt_result) type ty_table_of_zso_invoice_item.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_invoice_retrieval IMPLEMENTATION.
METHOD get_items_from_db.
SELECT
snwd_bpa~company_name,
snwd_so_inv_item~gross_amount,
snwd_so_inv_item~currency_code,
snwd_so_inv_head~payment_status
FROM
snwd_so_inv_item
JOIN snwd_so_inv_head ON snwd_so_inv_item~parent_key = snwd_so_inv_head~node_key
JOIN snwd_bpa ON snwd_so_inv_head~buyer_guid = snwd_bpa~node_key
INTO TABLE @lt_result
WHERE
snwd_so_inv_item~currency_code = 'USD'
ORDER BY
snwd_bpa~company_name.
LOOP AT lt_result ASSIGNING FIELD-SYMBOL(<entry>).
CASE <entry>-payment_status.
WHEN 'P'.
<entry>-payment_status = abap_true.
WHEN OTHERS.
<entry>-payment_status = abap_false.
ENDCASE.
ENDLOOP.
ENDMETHOD.
ENDCLASS.
第10步:測試您的更改
您現在可以在SAP列表檢視器中測試更改的結果。
有一個首選項允許您在執行應用程式時重用SAP GUI視窗。要啟用此功能,請選擇視窗>首選項。在“首選項”對話方塊中,開啟“ ABAP開發”>“SAP GUI整合”並勾選相應的複選框。
返回到您的報告並通過選擇F8執行它。您的SAP列表檢視器應該大致如下所示:
在你的類上建立ABAPDoc
瞭解如何為您的班級維護ABAP Doc文件
你將學習
在下面的練習中,您將通過學習如何維護ABAP Doc來使程式更具可讀性。您還將學習如何在ABAP開發工具(ADT)和SAP GUI中同步文件並進行顯示。
第1步:開啟你的ABAP類
第2步:新增ABAP文件註釋
為了提高可讀性,請在方法定義之前立即在該類中新增ABAP Doc註釋,例如
**"! Method reads invoice items from database**::
注意:您必須在宣告之前立即插入ABAP Doc註釋; 否則你會收到ADT的警告。
ABAP Doc註釋可用於記錄API並顯示在Element Info中。ABAP文件註釋以開始"!。
第3步:將引數新增到ABAP Doc
您也可以使用ABAP Doc通過Quick Assist記錄方法引數。將游標放在ABAP文件註釋中。然後選擇**Ctrl+1**開啟Quick Assist選單,然後雙擊將缺少的引數新增到文件中:
ABAP文件評論由a擴充套件@parameter ... |。您現在可以使用它來記錄方法引數:為此,只需在管道符號(|)後面輸入文件即可。
第4步:同步短文字
我們已經使用ABAP Doc記錄了我們的方法。但是,我們也希望在SAP GUI中基於表單的類構建器的描述欄位中看到相同的簡短文字。
為此,我們需要將ABAP Doc中所需的文字標記為“同步”,以確保它與類生成器同步。
一個。在ABAP文件中將您的方法的短文字標記為“同步” <p class="shorttext synchronized">...</p>。
灣 對引數的簡短文字執行相同的操作lt_result:
第5步:儲存並激活
儲存(Ctrl + S)並激活(Ctrl + F3)該類。
第6步:與編輯器連結
最後,您將檢查同步短文字是否也顯示在類生成器中。首先,我們必須在SAP GUI中開啟課程。
要在SAP GUI中輕鬆找到該類,請先選擇“使用編輯器連結”:
第7步:在SAP GUI中檢視ABAP Doc註釋
一個。在Project Explorer中,選擇該類ZCL_INVOICE_RETRIEVAL並從上下文選單中選擇使用SAP GUI開啟:
灣 方法描述顯示了我們在同步標記中的ABAP Doc註釋中輸入的文字:
C。現在選擇引數。你會看到引數的描述也被同步了:
d。最後,在SAP GUI中關閉該類並通過選擇關閉返回到您的ABAP程式:
第8步:顯示元素資訊
一個。回到ABAP程式中,將游標定位在方法呼叫上,GET_ITEMS_FROM_DB並通過選擇Element Info(F2)來顯示方法的Element Info。除了方法簽名之外,它還顯示您之前編寫的ABAP文件:
灣 通過選擇ESC關閉元素資訊。
現在你的類的程式碼應該是這樣的:
複製程式碼
CLASS zcl_invoice_retrieval DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES: ty_table_of_zso_invoice_item TYPE STANDARD TABLE OF zso_invoice_item WITH DEFAULT KEY.
"! <p class="shorttext synchronized">Read items from DB</p>
"! Method reads invoice items from the database
"! @parameter lt_result | <p class="shorttext synchronized">Table of invoice items</p>
"!
METHODS get_items_from_db
RETURNING
VALUE(lt_result) type ty_table_of_zso_invoice_item.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_invoice_retrieval IMPLEMENTATION.
METHOD get_items_from_db.
SELECT
snwd_bpa~company_name,
snwd_so_inv_item~gross_amount,
snwd_so_inv_item~currency_code,
snwd_so_inv_head~payment_status
FROM
snwd_so_inv_item
JOIN snwd_so_inv_head ON snwd_so_inv_item~parent_key = snwd_so_inv_head~node_key
JOIN snwd_bpa ON snwd_so_inv_head~buyer_guid = snwd_bpa~node_key
INTO TABLE @lt_result
WHERE
snwd_so_inv_item~currency_code = 'USD'
ORDER BY
snwd_bpa~company_name.
LOOP AT lt_result ASSIGNING FIELD-SYMBOL(<entry>).
CASE <entry>-payment_status.
WHEN 'P'.
<entry>-payment_status = abap_true.
WHEN OTHERS.
<entry>-payment_status = abap_false.
ENDCASE.
ENDLOOP.
ENDMETHOD.
ENDCLASS.