ABAP 程式設計期末報告
國片查詢系統
指導老師: 楊子青 老師學 生: 黃掀芸 資管四 B 498710782 林依惠 資管四 B 498710203 張 開 資管四 B 498711144
2013/1/7
目錄一、 前言 ---------- P.3
二、 系統功能 -------- P.3
三、 系統特色 -------- P.4
四、 使用對象 -------- P.4
五、 使用環境 -------- P.4
六、 開發工具 -------- P.5
七、 系統畫面 -------- P.5
八、 結論及未來發展 ----- P.12
九、 附錄 ---------- P.13 國片資料庫系統 --------- P.13 國片查詢系統 ---------- P.17 ABAP Dictionary --------- P.26
十、 工作分配 -------- P.27
2
一、 前言 目前國片(台灣電影)逐漸興盛起來,我們想要藉此系統瞭解國片市場的現況及未來方向與挑戰。 從海角七號之後,國片市場蓬勃發展,加入這個市場的電影工作者、作品不斷地增加,但我們卻對國片市場如此陌生。藉著電影查詢系統可以瞭解到目前有哪些電影工作者以及他們的作品,並針對導演的作品擁有多少票房做統計,以便讓關心國片市場的人們知道,未來改善的目標與方向。
二、 系統功能(一)國片查詢系統: 給一般的使用者查詢國片及票房資料,透過票房統計可以知曉某一位導演所拍攝的電影共擁有多少票房,此系統也提供讓使用者輸入電影類型或演員可以找到相關的電影。1.查詢國片資料: 輸入電影片名,按下「查詢」後,畫面上會顯示片長、上映年份、導演、製作成本、主要演員和電影類型,片長以分鐘為單位;成本以千為單位。2.查詢票房資料: 輸入電影片名,按下「查詢」後,畫面上會顯示電影上映的檔期和擁有多少票房,以千為單位。3.票房統計: 輸入導演姓名,按下「統計」,畫面上會顯示導演所拍的電影以及票房的加總,以千為單位。此功能可以瞭解導演的作品受歡迎的程度為何,由此推得哪些導演可能未來潛力無窮。4.類型、演員查詢: 在此畫面使用者可以選擇輸入喜愛或想了解的電影類型或是演員名稱,輸入其中一項後,按下「查詢」,會顯示與輸入值相關的電影。(二)國片資料庫系統: 此系統提供給系統管理者或電影公司維護國片及票房資料。
1.新增導演:3
這個功能可以讓管理者來新增新進的導演,讓資料的存取更方便。2.新增、修改、刪除國片資料: 為了讓使用者在有新的電影產生或電影更新時,可以得到最新的資料,就必須建立良好的資料庫功能,提供資料的維護。3.新增、修改、刪除票房資料: 同樣是為了讓電影查詢系統執行得更順暢,此功能提供針對票房資料的新增、修改和刪除。
三、 系統特色提供使用者簡單的介面,就能夠瞭解簡易的國片資訊。減少使用者在查詢國片資訊上時間的消耗。透過票房計算能了解大眾喜歡哪一位導演的電影。提供使用者用簡單的方式蒐尋到自己喜好的電影類型或演員。
四、 使用對象愛好國片者 系統管理者和電影公司
1. 查詢國片及票房資料。2. 瞭解某一位導演製作的電影的吸引力。
3. 查詢特定類型或演員的電影。
管 理 者 或 電 影 公 司 維 護 國 片 相 關 資料,讓使用者獲得最新資訊以及系統正常運作。
五、 使用環境軟體 硬體
SAP ECC Front End 具備 Internet 連線能力的 PC 或NOTEBOOK
4
六、 開發工具SAP ECC-ABAP Development Workbench Object Navigator(SE80):
(1) ABAP Dictionary 為集中管理 SAP ECC6.0被使用到的所有資料定義,可以處理資料庫定義,檢索全局類型。
(2) 提供使用者撰寫程式碼、編譯、執行的平台。(3) Screen Painter 為設計和使用者互動介面的動態程序。
七、 系統畫面 使 用 者 可 於 SAP 系 統 主 畫 面 打 入 Transaction-code ( ZPU101_30_MOVIE 、 ZPU101_30_MDB ) 或 進 入 ABAP Development Workbench(SE80)畫面選擇 ZPU101_30 之 Package觀看程式,程式分別為 ZPU101_30_MOVIE、ZPU101_30_MDB。T-code 與程式對照表:
T-code 程式 名稱ZPU101_30_M
OVIE ZPU101_30_MOVIE 國片查詢系統ZPU101_30_M
DB ZPU101_30_MDB 國片資料庫系統
(一)國片查詢系統1.主選單 進入主選單後,可點選中央的選項按鈕:
(1) 若要進行國片資料查詢,請點選「查詢國片資料」按鈕。(2) 若要進行票房資料查詢,請點選「查詢票房資料」按鈕。(3) 若要進行票房統計查詢,請點選「票房統計」按鈕。(4) 若要進行類型、演員查詢,請點選「類型、演員查詢」按鈕。(5) 若要離開程式請點選「Good Bye」按鈕或上方「EXIT」按鈕。
5
2.查詢國片資料: 從主選單點選「查詢國片資料」按鈕即可進入此畫面。 (1)若要查詢國片基本資料,首先要從片名的跳出式選單中挑選電影名稱,再點選「查詢」按鈕。
(2)若要返回主選單,請點選「離開」按鈕或上方「EXIT」按鈕。6
3.查詢票房資料 從主選單點選「查詢票房資料」按鈕即可進入此畫面。 (1)若要查詢國片票房資料,首先要從片名的跳出式選單中挑選電影名稱,再點選「查詢」按鈕。
(2)若要返回主選單,請點選「離開」按鈕或上方「EXIT」按鈕。4.票房統計 從主選單點選「票房統計」按鈕即可進入此畫面。 (1)若要統計出導演各電影的總票房,首先要從導演的下拉式選單中挑選導演名稱,再點選「統計」按鈕。
(2)若要返回主選單,請點選「離開」按鈕或上方「EXIT」按鈕。7
5.類型、演員查詢 從主選單點選「類型、演員查詢」按鈕即可進入此畫面。 (1)若要由電影類型尋找所有的電影,首先點選「類型」選項,再輸入電影類型名稱,最後點選「查詢」按鈕。
(2)如果沒有輸入電影類型就按了「查詢」,會出現「請輸入電影類型」的訊息視窗。
(3)如果沒有點選類型就按了「查詢」,會出現「請點選類型」的訊息視窗。
8
(4)若要由演員查找所有演員有演出的電影,首先點選「演員」選項,再輸入演員名稱,最後點選「查詢」按鈕。
(5)若要返回主選單,請點選「離開」按鈕或上方「EXIT」按鈕。(二)國片資料庫系統1.主選單 進入主選單後,可點選中央的選項按鈕。 (1) 若要新增導演,請點選「新增導演」按鈕。 (2) 若要變更國片資料,請點選「新增、修改、刪除國片資料」按鈕。 (3) 若要變更票房資料,請點選「新增、修改、刪除票房資料」按鈕。 (4) 若要離開程式請點選「離開系統」按鈕或上方「EXIT」按鈕。
2.新增導演 從主選單點選「新增導演」按鈕即可進入此畫面。
9
(1)若要新增,輸入導演名稱,按下[新增]按鈕,即可新增,成功會跳出「新增成功」視窗。
(2)若要刪除,按 F4,彈出視窗,選擇要刪除的導演,成功會跳出「刪除成功」視窗。
(3)若要返回主選單,請點選「離開」按鈕或上方「EXIT」按鈕。3.新增修改刪除國片資料 (1)若要新增,至少必須輸入片名、 上映年份和導演才能新增資料, 如果只輸入片名會跳出「請輸入 上映年份和導演」的訊息視窗。
10
(2)若要修改,直接更改欄位,按下「修改」才能修改資料。 (3)若要刪除,輸入要刪除的片名,按下「刪除」即可刪除資料。 (4)新增或修改或刪除可以按「查詢」,檢查是否有成功執行動作。
(5) 若要返回主選單,請點選「離開」按鈕或上方「EXIT」按鈕。4.新增修改刪除票房資料 (1)若要新增,一定要輸入片名、票房、檔期,才能新增資料,如果只輸入片名會出現「請輸入檔期和票房」的訊息視窗。
(2)若要修改,直接更改欄位,按下「修改」才能修改資料。 (3)若要刪除,輸入要刪除的片名,按下「刪除」即可刪除資料。
11
(4)新增或修改或刪除可以按「查詢」,檢查是否有成功執行動作。
(5) 若要返回主選單,請點選「離開」按鈕或上方「EXIT」按鈕。八、 結論及未來發展
由於國片日漸興盛,有越來越多人更加關注國片未來發展的趨勢,想要藉由此系統使大眾更加掌握到台灣的導演拍攝電影的方向,作為一個統計數據,客觀的展示,提供給各位參考。此系統給予對台灣電影業未來發展關心的人,一個瞭解的機會。 未來系統也許可以朝著更精緻的方向發展,分析哪一種類型的電影,最受台灣大眾喜愛,與其他國家又有哪些差異,藉由分析創造出屬於國片的特色,也希望能藉此把台灣更推向國際。
12
九、附錄Package:ZPU101_30(一)、國片查詢系統Transaction code:ZPU101_30_MOVIEProgram:ZPU101_30_MOVIE程式碼:*&------------------------------------------------------------------*
*& Report ZPU101_30_MOVIES
*&
*&------------------------------------------------------------------*
REPORT ZPU101_30_MOVIES.
TABLES ZPU101_30_BOX. "票房 table
TABLES ZPU101_30_TFILM. "國片 table
TABLES ZPU101_30_BVIEW. "國片和票房結合的 view
DATA OK_CODE TYPE SY-UCOMM.
DATA MSG(100) TYPE C.
DATA WA TYPE ZPU101_30_TFILM.
DATA ITAB TYPE STANDARD TABLE OF ZPU101_30_BVIEW WITH HEADER LINE.
DATA ITAB2 TYPE STANDARD TABLE OF ZPU101_30_TFILM WITH HEADER LINE.
DATA: A(100) TYPE C , B TYPE I, C(100) TYPE C.
DATA: RA1,RA2. "radio box
RA2 = 'X'. "有點選CALL SCREEN 9100. "主畫面*&----------主畫面---------------------------------------------------*
*& Module USER_COMMAND_9100 INPUT
*&------------------------------------------------------------------*
* text
*-------------------------------------------------------------------*
MODULE USER_COMMAND_9100 INPUT.
CASE OK_CODE.
13
WHEN 'SM'.
CALL SCREEN 9000. "國片資料查詢 WHEN 'SB'.
CALL SCREEN 9400. "國片票房查詢 WHEN 'BOX'.
CALL SCREEN 9200. "票房統計 WHEN 'TAS'.
CALL SCREEN 9300. "類型、演員查詢 WHEN 'EXIT'.
LEAVE PROGRAM. "離開程式ENDCASE.
ENDMODULE. " USER_COMMAND_9100 INPUT
*&------------------------------------------------------------------*
*& Module STATUS_9100 OUTPUT
*&------------------------------------------------------------------*
* text
*-------------------------------------------------------------------*
MODULE STATUS_9100 OUTPUT.
SET PF-STATUS 'STATUS2'.
SET TITLEBAR '9100'.
ENDMODULE. " STATUS_9100 OUTPUT
*&------國片資料查詢--------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&------------------------------------------------------------------*
* TEXT
*-------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.
CASE OK_CODE.
WHEN 'SEARCH'. "查詢 IF ( ZPU101_30_TFILM-MOVIE <> '').
SELECT SINGLE * FROM ZPU101_30_TFILM
WHERE MOVIE = ZPU101_30_TFILM-MOVIE.
ENDIF.
CALL SCREEN 9000.
WHEN 'EXIT'. "離開 FREE ZPU101_30_TFILM-MOVIE. "在 screen中使用到的變數都清空
14
FREE ZPU101_30_TFILM-M_YEAR.
FREE ZPU101_30_TFILM-COST_K.
FREE ZPU101_30_TFILM-DIRECTOR.
FREE ZPU101_30_TFILM-M_MIN.
FREE ZPU101_30_TFILM-M_TYPE.
FREE ZPU101_30_TFILM-PERFORMER.
FREE A.
ENDCASE.
ENDMODULE. " USER_COMMAND_9000 INPUT
*&------國片票房查詢--------------------------------------------------*
*& Module USER_COMMAND_9400 INPUT
*&------------------------------------------------------------------*
* text
*-------------------------------------------------------------------*
MODULE USER_COMMAND_9400 INPUT.
CASE OK_CODE.
WHEN 'SEARCH'. "查詢 IF ( ZPU101_30_BOX-MOVIE <> '').
SELECT SINGLE * FROM ZPU101_30_BOX
WHERE MOVIE = ZPU101_30_BOX-MOVIE.
ENDIF.
CALL SCREEN 9400.
WHEN 'EXIT'. "離開 FREE ZPU101_30_BOX-MOVIE. "在 screen中使用到的變數都清空 FREE ZPU101_30_BOX-PEOPLE.
FREE ZPU101_30_BOX-TIMELINE.
ENDCASE.
ENDMODULE. " USER_COMMAND_9400 INPUT
*&-----------票房統計------------------------------------------------*
*& Module USER_COMMAND_9200 INPUT
*&------------------------------------------------------------------*
* text
*-------------------------------------------------------------------*
MODULE USER_COMMAND_9200 INPUT.
CASE OK_CODE.
WHEN 'SEARCH'.
15
FREE A.
FREE B.
SELECT * FROM ZPU101_30_BVIEW
INTO CORRESPONDING FIELDS OF ITAB
WHERE DIRECTOR = ZPU101_30_BVIEW-DIRECTOR.
CONCATENATE A ITAB-MOVIE '__' INTO A. "A為電影集合 B = B + ITAB-PEOPLE. "B為票房加總 ENDSELECT.
CALL SCREEN 9200.
WHEN 'EXIT'. "在 screen中使用到的變數都清空 FREE A.
FREE B.
FREE ZPU101_30_BVIEW-DIRECTOR.
ENDCASE.
ENDMODULE. " USER_COMMAND_9200 INPUT
*&------------類型、演員查詢-------------------------------------------
*
*& Module USER_COMMAND_9300 INPUT
*&------------------------------------------------------------------*
* text
*-------------------------------------------------------------------*
MODULE USER_COMMAND_9300 INPUT.
CASE OK_CODE.
WHEN 'SEARCH'.
FREE A. "清空電影集合 IF ( RA2 = 'X' AND ZPU101_30_TFILM-M_TYPE <> '').
CONCATENATE '%' ZPU101_30_TFILM-M_TYPE '%' INTO C.
SELECT * FROM ZPU101_30_TFILM
INTO CORRESPONDING FIELDS OF ITAB2
WHERE M_TYPE LIKE C. "C為電影類型 CONCATENATE A ITAB2-MOVIE '__' INTO A.
ENDSELECT.
ELSEIF ( RA2 = 'X' AND ZPU101_30_TFILM-M_TYPE = '').
MSG = '請輸入國片類型'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( RA2 = '' AND ZPU101_30_TFILM-M_TYPE <> '').
MSG = '請點選類型'.
16
MESSAGE I001(00) WITH MSG.
ELSEIF ( RA1 = 'X' AND ZPU101_30_TFILM-PERFORMER = '').
MSG = '請輸入國片演員'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( RA1 = '' AND ZPU101_30_TFILM-PERFORMER <> '').
MSG = '請點選演員'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( RA2 = '' AND ZPU101_30_TFILM-PERFORMER <> '').
CONCATENATE '%' ZPU101_30_TFILM-PERFORMER '%' INTO C.
SELECT * FROM ZPU101_30_TFILM
INTO CORRESPONDING FIELDS OF ITAB2
WHERE PERFORMER LIKE C.
CONCATENATE A ITAB2-MOVIE '__' INTO A.
ENDSELECT.
ENDIF.
CALL SCREEN 9300.
WHEN 'EXIT'.
FREE ZPU101_30_TFILM-M_TYPE. "在 screen中使用到的變數都清空 FREE ZPU101_30_TFILM-PERFORMER.
FREE A.
FREE C.
ENDCASE.
ENDMODULE. " USER_COMMAND_9300 INPUT
(二)國片資料庫系統Transaction code:ZPU101_30_MDBProgram:ZPU101_30_MDB程式碼:*&------------------------------------------------------------------*
*& Report ZPU101_30_MDB
*&
*&------------------------------------------------------------------*
REPORT ZPU101_30_MDB.
TABLES ZPU101_30_BOX. "票房 table
TABLES ZPU101_30_TFILM. "國片 table
TABLES ZPU101_30_DIRC. "導演 table
17
DATA OK_CODE TYPE SY-UCOMM.
DATA MSG(100) TYPE C.
DATA WA TYPE ZPU101_30_TFILM.
DATA WA2 TYPE ZPU101_30_BOX.
DATA WA3 TYPE ZPU101_30_DIRC.
CALL SCREEN 9000. "主畫面*&-------國片資料庫系統主畫面------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&-------------------------------------------------------------------
*
* text
*-------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.
CASE OK_CODE.
WHEN 'AUDM'.
CALL SCREEN 9100. "新增、修改、刪除國片資料 WHEN 'AUDB'.
CALL SCREEN 9200. "新增、修改、刪除票房資料 WHEN 'ADIR'.
CALL SCREEN 9300. "新增導演 WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_9000 INPUT
*&------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&------------------------------------------------------------------*
* text
*-------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
SET PF-STATUS 'STATUS1'.
SET TITLEBAR '9000'.
ENDMODULE. " STATUS_9000 OUTPUT
18
*&--------新增、修改、刪除國片資料-------------------------------------*
*& Module USER_COMMAND_9100 INPUT
*&------------------------------------------------------------------*
* text
*-------------------------------------------------------------------*
MODULE USER_COMMAND_9100 INPUT.
CASE OK_CODE.
WHEN 'ADD'. "新增 IF ( ZPU101_30_TFILM-MOVIE <> '' AND ZPU101_30_TFILM-M_YEAR <>''
AND ZPU101_30_TFILM-DIRECTOR <> '').
WA-MOVIE = ZPU101_30_TFILM-MOVIE.
WA-M_YEAR = ZPU101_30_TFILM-M_YEAR.
WA-DIRECTOR = ZPU101_30_TFILM-DIRECTOR.
WA-M_MIN = ZPU101_30_TFILM-M_MIN.
WA-M_TYPE = ZPU101_30_TFILM-M_TYPE.
WA-COST_K = ZPU101_30_TFILM-COST_K.
WA-PERFORMER = ZPU101_30_TFILM-PERFORMER.
INSERT INTO ZPU101_30_TFILM VALUES WA.
IF SY-SUBRC = 0.
MSG = '新增成功'.
MESSAGE I001(00) WITH MSG.
ENDIF.
ELSEIF ( ZPU101_30_TFILM-MOVIE <> ''
AND ZPU101_30_TFILM-M_YEAR <>'').
MSG = '請輸入導演'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( ZPU101_30_TFILM-MOVIE <> ''
AND ZPU101_30_TFILM-DIRECTOR <> '').
MSG = '請輸入上映年份'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( ZPU101_30_TFILM-M_YEAR <>''
AND ZPU101_30_TFILM-DIRECTOR <> '').
MSG = '請輸入國片名稱'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( ZPU101_30_TFILM-M_YEAR <>'').
MSG = '請輸入國片名稱和導演'.
19
MESSAGE I001(00) WITH MSG.
ELSEIF ( ZPU101_30_TFILM-MOVIE <>'').
MSG = '請輸入上映年份和導演'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( ZPU101_30_TFILM-DIRECTOR <>'').
MSG = '請輸入國片名稱和上映年份'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( ZPU101_30_TFILM-MOVIE = ''
AND ZPU101_30_TFILM-M_YEAR =''
AND ZPU101_30_TFILM-DIRECTOR ='').
MSG = '請輸入資料'.
MESSAGE I001(00) WITH MSG.
ENDIF.
CALL SCREEN 9100.
WHEN 'SEARCH'. "查詢 IF ( ZPU101_30_TFILM-MOVIE <> '').
SELECT SINGLE * FROM ZPU101_30_TFILM
WHERE MOVIE = ZPU101_30_TFILM-MOVIE.
ENDIF.
CALL SCREEN 9100.
WHEN 'MODIFY'. "修改 IF ( ZPU101_30_TFILM-MOVIE <> '').
UPDATE ZPU101_30_TFILM
SET M_MIN = ZPU101_30_TFILM-M_MIN
M_YEAR = ZPU101_30_TFILM-M_YEAR
M_TYPE = ZPU101_30_TFILM-M_TYPE
COST_K = ZPU101_30_TFILM-COST_K
PERFORMER = ZPU101_30_TFILM-PERFORMER
DIRECTOR = ZPU101_30_TFILM-DIRECTOR
WHERE MOVIE = ZPU101_30_TFILM-MOVIE.
IF SY-SUBRC = 0.
MSG = '修改成功'.
MESSAGE I001(00) WITH MSG.
ENDIF.
CALL SCREEN 9100.
ENDIF.
WHEN 'DEL'. "刪除20
IF ( ZPU101_30_TFILM-MOVIE <> '').
DELETE FROM ZPU101_30_TFILM
WHERE MOVIE = ZPU101_30_TFILM-MOVIE.
IF SY-SUBRC = 0.
MSG = '刪除成功'.
MESSAGE I001(00) WITH MSG.
ENDIF.
ENDIF.
FREE ZPU101_30_TFILM-MOVIE. "清空變數 FREE ZPU101_30_TFILM-M_YEAR.
FREE ZPU101_30_TFILM-DIRECTOR.
FREE ZPU101_30_TFILM-M_MIN.
FREE ZPU101_30_TFILM-M_TYPE.
FREE ZPU101_30_TFILM-COST_K.
FREE ZPU101_30_TFILM-PERFORMER.
CALL SCREEN 9100.
WHEN 'RESET'.
FREE ZPU101_30_TFILM-MOVIE.
FREE ZPU101_30_TFILM-M_YEAR.
FREE ZPU101_30_TFILM-DIRECTOR.
FREE ZPU101_30_TFILM-M_MIN.
FREE ZPU101_30_TFILM-M_TYPE.
FREE ZPU101_30_TFILM-COST_K.
FREE ZPU101_30_TFILM-PERFORMER.
CALL SCREEN 9100.
WHEN 'EXIT'. "離開 FREE ZPU101_30_TFILM-MOVIE. "清空 screen中使用的變數 FREE ZPU101_30_TFILM-M_YEAR.
FREE ZPU101_30_TFILM-DIRECTOR.
FREE ZPU101_30_TFILM-M_MIN.
FREE ZPU101_30_TFILM-M_TYPE.
FREE ZPU101_30_TFILM-COST_K.
FREE ZPU101_30_TFILM-PERFORMER.
ENDCASE.
ENDMODULE. " USER_COMMAND_9100 INPUT
*&------------------------------------------------------------------*
*& Module STATUS_9100 OUTPUT
21
*&------------------------------------------------------------------*
* text
*-------------------------------------------------------------------*
MODULE STATUS_9100 OUTPUT.
SET PF-STATUS 'STATUS1'.
SET TITLEBAR '9100'.
ENDMODULE. " STATUS_9100 OUTPUT
*&---------新增、修改、刪除票房資料--------------------------------------
*
*& Module USER_COMMAND_9200 INPUT
*&------------------------------------------------------------------*
* text
*-------------------------------------------------------------------*
MODULE USER_COMMAND_9200 INPUT.
CASE OK_CODE.
WHEN 'ADD'. "新增 IF ( ZPU101_30_BOX-MOVIE <> '' AND ZPU101_30_BOX-PEOPLE <> ''
AND ZPU101_30_BOX-TIMELINE <>'').
WA2-MOVIE = ZPU101_30_BOX-MOVIE.
WA2-TIMELINE = ZPU101_30_BOX-TIMELINE.
WA2-PEOPLE = ZPU101_30_BOX-PEOPLE.
INSERT INTO ZPU101_30_BOX VALUES WA2.
IF SY-SUBRC = 0.
MSG = '新增成功'.
MESSAGE I001(00) WITH MSG.
ENDIF.
ELSEIF ( ZPU101_30_BOX-MOVIE <> ''
AND ZPU101_30_BOX-TIMELINE <>'').
MSG = '請輸入票房'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( ZPU101_30_BOX-MOVIE <> ''
AND ZPU101_30_BOX-PEOPLE <> '').
MSG = '請輸入檔期'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( ZPU101_30_BOX-TIMELINE <>''
22
AND ZPU101_30_BOX-PEOPLE <> '').
MSG = '請輸入國片名稱'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( ZPU101_30_BOX-TIMELINE <>'').
MSG = '請輸入國片名稱和票房'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( ZPU101_30_BOX-MOVIE <>'').
MSG = '請輸入檔期和票房'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( ZPU101_30_BOX-PEOPLE <>'').
MSG = '請輸入國片名稱和檔期'.
MESSAGE I001(00) WITH MSG.
ELSEIF ( ZPU101_30_BOX-MOVIE = ''
AND ZPU101_30_BOX-TIMELINE =''
AND ZPU101_30_BOX-PEOPLE ='').
MSG = '請輸入資料'.
MESSAGE I001(00) WITH MSG.
ENDIF.
CALL SCREEN 9200.
WHEN 'SEARCH'. "查詢 IF ( ZPU101_30_BOX-MOVIE <> '').
SELECT SINGLE * FROM ZPU101_30_BOX
WHERE MOVIE = ZPU101_30_BOX-MOVIE.
ENDIF.
CALL SCREEN 9200.
WHEN 'MODIFY'. "修改 IF ( ZPU101_30_BOX-MOVIE <> '').
UPDATE ZPU101_30_BOX
SET TIMELINE = ZPU101_30_BOX-TIMELINE
PEOPLE = ZPU101_30_BOX-PEOPLE
WHERE MOVIE = ZPU101_30_BOX-MOVIE.
IF SY-SUBRC = 0.
MSG = '修改成功'.
MESSAGE I001(00) WITH MSG.
ENDIF.
CALL SCREEN 9200.
ENDIF.
23
WHEN 'DEL'. "刪除 IF ( ZPU101_30_BOX-MOVIE <> '').
DELETE FROM ZPU101_30_BOX
WHERE MOVIE = ZPU101_30_BOX-MOVIE.
IF SY-SUBRC = 0.
MSG = '刪除成功'.
MESSAGE I001(00) WITH MSG.
ENDIF.
ENDIF.
FREE ZPU101_30_BOX-MOVIE.
FREE ZPU101_30_BOX-TIMELINE.
FREE ZPU101_30_BOX-PEOPLE.
CALL SCREEN 9200.
WHEN 'RESET'.
FREE ZPU101_30_BOX-MOVIE.
FREE ZPU101_30_BOX-TIMELINE.
FREE ZPU101_30_BOX-PEOPLE.
CALL SCREEN 9200.
WHEN 'EXIT'. "離開 FREE ZPU101_30_BOX-MOVIE. "清空 screen中使用的變數 FREE ZPU101_30_BOX-TIMELINE.
FREE ZPU101_30_BOX-PEOPLE.
ENDCASE.
ENDMODULE. " USER_COMMAND_9200 INPUT
*&------------------------------------------------------------------*
*& Module STATUS_9200 OUTPUT
*&------------------------------------------------------------------*
* text
*-------------------------------------------------------------------*
MODULE STATUS_9200 OUTPUT.
SET PF-STATUS 'STATUS1'.
SET TITLEBAR '9200'.
ENDMODULE. " STATUS_9200 OUTPUT
*&-------------新增導演----------------------------------------------*
*& Module USER_COMMAND_9300 INPUT
*&------------------------------------------------------------------*
24
* text
*-------------------------------------------------------------------*
MODULE USER_COMMAND_9300 INPUT.
CASE OK_CODE.
WHEN 'ADD'.
IF ( ZPU101_30_DIRC-DIRECTOR <> '').
WA3-DIRECTOR = ZPU101_30_DIRC-DIRECTOR.
INSERT INTO ZPU101_30_DIRC VALUES WA3.
IF SY-SUBRC = 0.
MSG = '新增成功'.
MESSAGE I001(00) WITH MSG.
ENDIF.
ENDIF.
CALL SCREEN 9300.
WHEN 'DEL'. "刪除 IF ( ZPU101_30_DIRC-DIRECTOR <> '').
DELETE FROM ZPU101_30_DIRC
WHERE DIRECTOR = ZPU101_30_DIRC-DIRECTOR.
IF SY-SUBRC = 0.
MSG = '刪除成功'.
MESSAGE I001(00) WITH MSG.
ENDIF.
ENDIF.
CALL SCREEN 9300.
WHEN 'EXIT'.
ENDCASE.
ENDMODULE. " USER_COMMAND_9300 INPUT
*&------------------------------------------------------------------*
*& Module STATUS_9300 OUTPUT
*&------------------------------------------------------------------*
* text
*-------------------------------------------------------------------*
MODULE STATUS_9300 OUTPUT.
SET PF-STATUS 'STATUS1'.
SET TITLEBAR '9300'.
ENDMODULE. " STATUS_9300 OUTPUT
25
(三)ABAP Dictionary1.Domain:
zpu101_30_movie CHAR(25)
zpu101_30_people INT4(10)
zpu101_30_dir CHAR(10)
2.Data Element:zpu101_30_movie 使用 zpu101_30_movie 的 domain
zpu101_30_year NUMC(4)
zpu101_30_dir 使用 zpu101_30_dir 的 domain
zpu101_30_people 使用 zpu101_30_people 的 domain
3.Table:(1)zpu101_30_tfilm
movie 使用 zpu101_30_movie 的 data element
m_year 使用 zpu101_30_year 的 data element
cost_k INT4(10)
director 使用 zpu101_30_dir 的 data element
M_MIN INT4(10)
PERFORMER CHAR(30)
M_TYPE CHAR(30)
(2)zpu101_30_box
movie 使用 zpu101_30_movie 的 data element
people 使用 zpu101_30_people 的 data element
timeline CHAR(6)
4.VIEW:ZPU101_30_BVIEWJOIN:zpu101_30_tfilm AND zpu101_30_box WITH MOVIEFieldmoviepeopledirector
26
5.Search help:zpu101_30_bsearchUse:zpu101_30_tfilmSearch help parameter:movie m_year director
十、工作分配黃掀芸
規劃、討論、整合(程式、書面)ABAP 所有程式、資料庫書面資料
林依惠 討論、書面資料張 開 討論、整合(程式、PPT)
ABAP 所有程式、資料庫
27