1. 程式人生 > >在Eclipse中建立一個ABAP專案

在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 NetWeaverABAP
    開發工具,然後單擊下一步
  • 在下一個嚮導頁面上,您將看到要安裝的功能的概述。點選下一步
  • 確認許可協議,然後單擊完成開始安裝
  • 第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 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
 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_statusP到被設定標識X(真)當發票已支付。

ORDER BYSELECT語句的子句後面輸入以下程式碼:

複製程式碼

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.
 

 

第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類

首先,開啟您在建立ABAP類建立的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 InfoF2)來顯示方法的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.