06面向?qū)ο缶幊汤A校珹1.1-員工管理(本地類(lèi))

本實(shí)踐通過(guò)程序編輯器(SE38)即可完成听隐,編寫(xiě)的代碼將有如下幾部分組成,按開(kāi)發(fā)人員風(fēng)格不同风范,其組成部分并非強(qiáng)制一致沪么。

No 部分 說(shuō)明
1 程序聲明 聲明本程序執(zhí)行后是否包含標(biāo)準(zhǔn)標(biāo)題禽车,數(shù)據(jù)輸出寬度和每頁(yè)的行數(shù)量為多少
2 對(duì)象定義 通過(guò)定義變量或常量或要使用的表結(jié)構(gòu)等刊殉,以在程序執(zhí)行過(guò)程中計(jì)算和存儲(chǔ)臨時(shí)值
3 類(lèi)的定義 定義一個(gè)類(lèi)州胳,類(lèi)中包含公共區(qū)域和私有區(qū)域
4 類(lèi)的方法 從表中獲得員工數(shù)據(jù)并存儲(chǔ)到變量以待后續(xù)輸出
5 數(shù)據(jù)輸出 創(chuàng)建對(duì)象實(shí)例并調(diào)用方法栓撞,并按需求進(jìn)行數(shù)據(jù)的輸出

1、程序聲明

程序聲明部分代碼如下:

REPORT zu0601_employee_method.

REPORT 程序名稱(chēng)捌归,是對(duì)程序的定義惜索,表明此程序代碼不是FUNCTION MODULE(功能函數(shù))剃浇,不是CLASS(類(lèi)),而是可以執(zhí)行的可以輸出數(shù)據(jù)的此程序角塑;這是對(duì)程序最基本的聲明淘讥,且必須存在的部分蒲列。

2、對(duì)象定義

對(duì)象定義部分代碼如下:

******對(duì)象定義*****
CLASS local_employee DEFINITION DEFERRED.       "未定義本地類(lèi)
DATA: cl_ref        TYPE REF TO local_employee,
      out_emp_id    TYPE ztemployee-employeeid,
      out_emp_sex   TYPE ztemployee-sex,
      out_emp_newid TYPE ztemployee-employeeid,
      writestr(20)  TYPE c.

PARAMETERS p_emp_id TYPE ztemployee-employeeid.

如上代碼侥猩,首先通過(guò)預(yù)定義一個(gè)本地類(lèi)“l(fā)ocal_employee”抵赢,此類(lèi)將在后續(xù)步驟中進(jìn)行定義和實(shí)現(xiàn)铅鲤;然后參考此類(lèi)定義了一個(gè)cl_ref的對(duì)象,以在程序執(zhí)行時(shí)創(chuàng)建員工對(duì)象實(shí)例腔剂;同時(shí)定義了變量: out_emp_id(員工ID)驼仪、 out_emp_sex(性別)袜漩、out_emp_newid(最新員工ID)宙攻、writestr(性別)介褥,以在程序執(zhí)行時(shí)存儲(chǔ)獲得的員工信息以待輸出柔滔;

最后通過(guò)PARAMETERS定義了一個(gè)初始輸入框以輸入員工ID。

3形真、類(lèi)的定義

在對(duì)象預(yù)定義local_employee類(lèi)后超全,還需要進(jìn)行類(lèi)的詳細(xì)定義,包括類(lèi)所包含的方法蛾坯、屬性脉课,以及各方法改览、屬性的訪問(wèn)控制級(jí)別:公開(kāi)(PUBLIC)、保護(hù)(PROTECTED)、私有(PRIVATE)庆揩。詳細(xì)代碼如下跌穗。

CLASS local_employee DEFINITION.
  PUBLIC SECTION.                        "公有成員
    METHODS get_emp_lastid               "獲得最后一個(gè)員工ID
      RETURNING
        VALUE(re_emp_id) TYPE ztemployee-employeeid.
    METHODS get_emp_byid                  "指定員工ID
      IMPORTING
        VALUE(im_emp_id) TYPE ztemployee-employeeid.
    METHODS get_emp_sex                   "獲得員工的性別
      RETURNING
                 VALUE(re_emp_sex) TYPE ztemployee-sex
      EXCEPTIONS no_data.
    METHODS show_emp_maxid.                   "輸出最后的員工ID
    METHODS set_emp_newid                  "設(shè)置新的員工ID
      RETURNING
        VALUE(re_newemp_id) TYPE ztemployee-employeeid.

  PRIVATE SECTION.                              "私有成員
    DATA:emp_maxid TYPE ztemployee-employeeid,  "員工類(lèi)的最大員工id值
         emp_id    TYPE ztemployee-employeeid.  "員工類(lèi)的員工id
ENDCLASS.

通過(guò)如上代碼蚌吸,定義了類(lèi)local_employee有4種方法:get_emp_lastid(獲得最后一個(gè)員工ID)羹唠、get_emp_byid(根據(jù)輸入值獲得員工)娄昆、get_emp_sex(獲得員工性別)缝彬、show_emp_maxid(輸出最后員工ID)谷浅、set_emp_newid(設(shè)置新的ID),這些方法都是在PUBLIC SECTION中撼玄,表明對(duì)外公開(kāi)墩邀;另外定義了2個(gè)屬性emp_maxid(員工的最大ID)磕蒲、emp_id(員工對(duì)象的ID),這2個(gè)屬性都是在PRIVATE SECTION中兔院,表明只能在對(duì)象的內(nèi)部訪問(wèn)站削。

4许起、類(lèi)方法的實(shí)現(xiàn)

在《類(lèi)的定義》中,只是說(shuō)明類(lèi)包含了哪些方法哪些屬性惦积,但并沒(méi)有說(shuō)明方法的具體實(shí)現(xiàn)猛频、屬性的賦值等鹿寻,在本部分則進(jìn)行這些方法、屬性賦值的實(shí)現(xiàn)坦敌。

CLASS local_employee IMPLEMENTATION.
  METHOD get_emp_lastid.
    SELECT MAX( employeeid ) FROM ztemployee INTO emp_maxid. "從員工表中獲得最大員工ID值
    emp_id = emp_maxid.                                              "賦值給員工類(lèi)中的emp_id屬性
    re_emp_id = emp_id.                                              "賦值給方法的輸出參數(shù)re_emp_id
  ENDMETHOD.

  METHOD get_emp_byid.
    emp_id = im_emp_id.                                        "輸入值直接賦值給員工類(lèi)的emp_id屬性
  ENDMETHOD.

  METHOD get_emp_sex.
    SELECT SINGLE sex  FROM ztemployee INTO re_emp_sex  "根據(jù)員工類(lèi)的emp_id屬性值從表獲得性別
WHERE employeeid = emp_id.
    IF re_emp_sex IS INITIAL.
      RAISE no_data.
    ENDIF.
  ENDMETHOD.

  METHOD show_emp_maxid.
    WRITE:/5 '最后員工ID:' ,20 emp_maxid.                  "輸出員工類(lèi)中的emp_maxid屬性值
  ENDMETHOD.

  METHOD set_emp_newid.
    DATA new_id(4) TYPE n.
    new_id = emp_maxid+1(4).                                 "根據(jù)員工類(lèi)中的emp_maxid屬性值得到新的ID
    new_id = new_id + 1.
    re_newemp_id = 'E' && new_id.
  ENDMETHOD.
ENDCLASS.

代碼說(shuō)明如下:
get_emp_lastid: 通過(guò)OPEN SQL從員工表中獲得最大ID號(hào)狱窘;
get_emp_byid: 獲取選擇界面輸入的員工ID號(hào)训柴;
get_emp_sex: 根據(jù)員工ID從員工表中獲得性別,并判斷性別是否為空洗鸵,空則拋出異常仗嗦;
show_emp_maxid: 輸出員工類(lèi)中的emp_maxid值稀拐;
set_emp_newid: 根據(jù)最大員工ID號(hào),計(jì)算出最新ID號(hào)铲咨。

5蜓洪、數(shù)據(jù)輸出

在前面各個(gè)部分完成后隆檀,則可在START-OF-SELECTION事件中,通過(guò)創(chuàng)建對(duì)象實(shí)例并調(diào)用方法泉坐,獲得和輸出數(shù)據(jù)。

*&----------------------------------------------------------------------*
*& START-OF-SELECTION
*&----------------------------------------------------------------------*
START-OF-SELECTION.
  CREATE OBJECT cl_ref. "創(chuàng)建對(duì)象
  CALL METHOD cl_ref->get_emp_byid               "調(diào)用方法的方式1
    EXPORTING
      im_emp_id = p_emp_id.
  CALL METHOD cl_ref->get_emp_sex
    RECEIVING
      re_emp_sex = out_emp_sex
    EXCEPTIONS
      no_data    = 1.
**  cl_ref->get_emp_byid( p_emp_id ).             "調(diào)用方法的方式2
**  out_emp_sex = cl_ref->get_emp_sex( ).
  IF sy-subrc <> 0.
    writestr = '沒(méi)有獲得性別'.
  ELSE.
    writestr = out_emp_sex.
  ENDIF.
  WRITE:/5 '輸入員工ID', 20 p_emp_id,
        /5 '輸入員工性別:',20 writestr.
  SKIP.

  out_emp_id = cl_ref->get_emp_lastid( ).
  out_emp_sex = cl_ref->get_emp_sex( ).
  WRITE:/5 '最后員工ID', 20 out_emp_id,
        /5 '最后員工性別:',20 out_emp_sex.
  SKIP.

  cl_ref->show_emp_maxid( ).
  out_emp_newid = cl_ref->set_emp_newid( ).
  WRITE:/5 '最新員工ID:',20 out_emp_newid.

  CLEAR cl_ref.

在如上代碼中:
首先通過(guò)CREATE創(chuàng)建對(duì)象的實(shí)例裳仆;
然后再通過(guò)CALL METHOD語(yǔ)句調(diào)用方法獲得相應(yīng)數(shù)據(jù)或執(zhí)行相應(yīng)語(yǔ)句腕让,并根據(jù)獲得的數(shù)據(jù)進(jìn)行處理;
最后通過(guò)語(yǔ)句CLEAR清理對(duì)象內(nèi)容歧斟。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末记某,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子构捡,更是在濱河造成了極大的恐慌,老刑警劉巖壳猜,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勾徽,死亡現(xiàn)場(chǎng)離奇詭異统扳,居然都是意外死亡喘帚,警方通過(guò)查閱死者的電腦和手機(jī)畅姊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吹由,“玉大人若未,你說(shuō)我怎么就攤上這事∏泠辏” “怎么了粗合?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)乌昔。 經(jīng)常有香客問(wèn)我隙疚,道長(zhǎng),這世上最難降的妖魔是什么磕道? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任供屉,我火速辦了婚禮,結(jié)果婚禮上溺蕉,老公的妹妹穿的比我還像新娘伶丐。我一直安慰自己,他們只是感情好疯特,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布哗魂。 她就那樣靜靜地躺著,像睡著了一般辙芍。 火紅的嫁衣襯著肌膚如雪啡彬。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天故硅,我揣著相機(jī)與錄音庶灿,去河邊找鬼。 笑死吃衅,一個(gè)胖子當(dāng)著我的面吹牛往踢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播徘层,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼峻呕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了趣效?” 一聲冷哼從身側(cè)響起瘦癌,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎跷敬,沒(méi)想到半個(gè)月后讯私,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年斤寇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桶癣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡娘锁,死狀恐怖牙寞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情莫秆,我是刑警寧澤间雀,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站馏锡,受9級(jí)特大地震影響雷蹂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜杯道,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一匪煌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧党巾,春花似錦萎庭、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至署海,卻和暖如春吗购,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背砸狞。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工捻勉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刀森。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓踱启,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親研底。 傳聞我的和親對(duì)象是個(gè)殘疾皇子埠偿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容