WDA入門教程Ⅱ:在WDA程序中使用選擇選項

本文提供了在 WDA 程序中使用選擇選項(Select Option)的分步操作指南蜈项,前提是您已學(xué)習(xí)了《WDA入門教程Ⅰ:Web Dynpro for ABAP 入門》一文芹关,并非常了解WDA的基礎(chǔ)知識。

目錄

  1. 創(chuàng)建 WDA 對象
  2. 定義使用的組件
  3. 編輯視圖
  4. 定義屬性
  5. 方法實施
  6. 將視圖嵌入窗口
  7. 創(chuàng)建應(yīng)用并測試

1. 創(chuàng)建 WDA 對象

打開事務(wù)碼 SE80紧卒,在左側(cè)對象清單中選擇“Web Dynpro 組件/接口”侥衬,在下方輸入“Z_TUTORIAL2”并回車,系統(tǒng)將詢問你是否創(chuàng)建常侦,單擊“是”浇冰。

創(chuàng)建 WDA 對象

在彈出的對話框中輸入描述如下,回車聋亡。在彈出的包選擇本地對象肘习。

創(chuàng)建 WDA 對象

結(jié)果如下,保存并激活所有對象坡倔。

創(chuàng)建成功

2. 定義使用的組件

雙擊左側(cè)的組件接口漂佩,在右邊的窗口新建如下組件。

使用組件

3. 編輯視圖

在已創(chuàng)建的 MAIN 視圖屬性(Properties)選項卡罪塔,點擊新建按鈕投蝉,添加兩個 SELECT_OPTIONS 組件。

Properties

來到 Context(上下文)選項卡征堪,為 CONTEXT 添加一個節(jié)點 FLIGHTS 瘩缆, Cardinality 選擇“0...N”,回車佃蚜。

Create Node

在創(chuàng)建好的 FLIGHTS 節(jié)點右鍵選擇“Create Using the Wizard”->“Attributes from Commonents of Structure”庸娱。輸入 Structure Name 為“SFLIGHT”着绊,回車,選擇除 MANDT 之外的所有字段熟尉,回車归露。

Add Attributes

結(jié)果如下圖。

Reslut

單擊 Layout 選項卡斤儿,添加一個名稱為“View_Container” 的元素剧包,類型為“VIEW_CONTAINER_UIELEMENT”。

View_Container

再添加一個名為“BUTTON1”的按鈕往果,并為其添加一個 Action 事件“CONTINUE”疆液。

BUTTON1
Result

最后,創(chuàng)建一個名為“FLIGHTTABLE”的表元素棚放。

創(chuàng)建 FLIGHTTABLE

右鍵 FLIGHTTABLE枚粘,選擇“Create Binding”,將表綁定到視圖上文飘蚯。

Create Binding
Create Context Binding

結(jié)果如圖馍迄。

Result

4. 定義屬性

單擊 Attributes 選項卡,添加兩個屬性局骤,分別為:

  • M_HANDLER攀圈,類型:IF_WD_SELECT_OPTIONS
  • M_WD_SELECT_OPTIONS,類型: IWCI_WDR_SELECT_OPTIONS峦甩。
image.png

保存并激活所有對象赘来。

5. 方法實施

單擊 Method 選項卡,找到 WDDOINI T雙擊進入凯傲,編寫以下代碼犬辰。

METHOD WDDOINIT .

  DATA:
    LT_RANGE_TABLE TYPE REF TO DATA,
    RT_RANGE_TABLE TYPE REF TO DATA,
    READ_ONLY      TYPE ABAP_BOOL,
    TYPENAME       TYPE STRING.

  DATA:
    LR_COMPONENTCONTROLLER TYPE REF TO IG_COMPONENTCONTROLLER,
    L_REF_CMP_USAGE        TYPE REF TO IF_WD_COMPONENT_USAGE.

* create the used component
  L_REF_CMP_USAGE = WD_THIS->WD_CPUSE_SELECT_OPTIONS( ).
  IF L_REF_CMP_USAGE->HAS_ACTIVE_COMPONENT( ) IS INITIAL.
    L_REF_CMP_USAGE->CREATE_COMPONENT( ).
  ENDIF.

* get a pointer to the interface controller of the select options
*component
  WD_THIS->M_WD_SELECT_OPTIONS =
       WD_THIS->WD_CPIFC_SELECT_OPTIONS( ).

* init the select screen
  WD_THIS->M_HANDLER =
       WD_THIS->M_WD_SELECT_OPTIONS->INIT_SELECTION_SCREEN( ).

* create a range table that consists of this new data element
  LT_RANGE_TABLE =
    WD_THIS->M_HANDLER->CREATE_RANGE_TABLE(
         I_TYPENAME = 'S_CARR_ID' ).

* add a new field to the selection
  WD_THIS->M_HANDLER->ADD_SELECTION_FIELD(
                 I_ID = 'S_CARR_ID'
                 IT_RESULT = LT_RANGE_TABLE
                 I_READ_ONLY = READ_ONLY ).

* create a range table that consists of this new data element
  LT_RANGE_TABLE =
    WD_THIS->M_HANDLER->CREATE_RANGE_TABLE(
         I_TYPENAME = 'S_CONN_ID' ).

* add a new field to the selection
  WD_THIS->M_HANDLER->ADD_SELECTION_FIELD(
                 I_ID = 'S_CONN_ID'
                 IT_RESULT = LT_RANGE_TABLE
                 I_READ_ONLY = READ_ONLY ).

ENDMETHOD.

在來到 ONACTIONCONTINUE 方法,雙擊進入編輯冰单,插入如下代碼幌缝。

METHOD ONACTIONCONTINUE .

  DATA: NODE_FLIGHTS   TYPE REF TO IF_WD_CONTEXT_NODE.
  DATA: RT_CARRID TYPE REF TO DATA.
  DATA: RT_CONNID TYPE REF TO DATA.
  DATA: ISFLIGHT TYPE TABLE OF SFLIGHT.
  DATA: WSFLIGHT TYPE SFLIGHT.
  FIELD-SYMBOLS: <FS_CARRID> TYPE TABLE,
                 <FS_CONNID> TYPE TABLE.

* Retrieve the data from the select option
  RT_CARRID = WD_THIS->M_HANDLER->GET_RANGE_TABLE_OF_SEL_FIELD(
                           I_ID = 'S_CARR_ID' ).
* Assign it to a field symbol
  ASSIGN RT_CARRID->* TO <FS_CARRID>.

* Retrieve the data from the select option
  RT_CONNID = WD_THIS->M_HANDLER->GET_RANGE_TABLE_OF_SEL_FIELD(
                           I_ID = 'S_CONN_ID' ).
* Assign it to a field symbol
  ASSIGN RT_CONNID->* TO <FS_CONNID>.

* Retrieve that data from the database.  Normally it is suggested to
* encapsulate the data retrieval in a separate class.
* For simplicity, the SELECT statement has been implemented here.
  CLEAR ISFLIGHT. REFRESH ISFLIGHT.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE ISFLIGHT FROM SFLIGHT
          WHERE CARRID IN <FS_CARRID>
            AND CONNID IN <FS_CONNID>.

* Bind the data to the context
  NODE_FLIGHTS = WD_CONTEXT->GET_CHILD_NODE( NAME = `FLIGHTS` ).
  NODE_FLIGHTS->BIND_ELEMENTS( ISFLIGHT ).

ENDMETHOD.

保存并激活所有對象。

6. 將視圖嵌入窗口

來到窗口 Z_TUTORIAL2 下诫欠,展開清單涵卵,找到 VIEW_CONTAINER,右鍵單擊嵌套視圖荒叼,填入以下信息轿偎,回車。

嵌套視圖

結(jié)果如下被廓。

Result

保存并激活所有對象坏晦。

7. 創(chuàng)建應(yīng)用并測試

創(chuàng)建 Web Dynpro 程序,并保存為本地對象兆解。執(zhí)行測試篇裁,在彈出的瀏覽器中進行檢驗。

Test

如果您的系統(tǒng)中沒有數(shù)據(jù)白筹,請運行程序 SAPBC_DATA_GENERATOR 生成.

錯漏之處挖诸,歡迎指正。


參考文獻:
[1] Getting Started with Web Dynpro for ABAP, Rich Heilman,2005
[2] Using Select Options in a WDA Application, Rich Heilman , 2006
[3] SAP Documentation

查看上一篇WDA入門教程Ⅰ:Web Dynpro for ABAP 入門

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末法精,一起剝皮案震驚了整個濱河市多律,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搂蜓,老刑警劉巖狼荞,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異帮碰,居然都是意外死亡相味,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門殉挽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丰涉,“玉大人,你說我怎么就攤上這事斯碌∫凰溃” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵傻唾,是天一觀的道長投慈。 經(jīng)常有香客問我,道長冠骄,這世上最難降的妖魔是什么伪煤? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮凛辣,結(jié)果婚禮上抱既,老公的妹妹穿的比我還像新娘。我一直安慰自己蟀给,他們只是感情好蝙砌,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著跋理,像睡著了一般择克。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上前普,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天肚邢,我揣著相機與錄音,去河邊找鬼。 笑死骡湖,一個胖子當(dāng)著我的面吹牛贱纠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播响蕴,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谆焊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浦夷?” 一聲冷哼從身側(cè)響起辖试,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎劈狐,沒想到半個月后罐孝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡肥缔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年莲兢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片续膳。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡改艇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坟岔,到底是詐尸還是另有隱情遣耍,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布炮车,位于F島的核電站舵变,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瘦穆。R本人自食惡果不足惜纪隙,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扛或。 院中可真熱鬧绵咱,春花似錦、人聲如沸熙兔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽住涉。三九已至麸锉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舆声,已是汗流浹背花沉。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工柳爽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碱屁。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓磷脯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親娩脾。 傳聞我的和親對象是個殘疾皇子赵誓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354