ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Chapter 2
Programming Section
Flow Logic - Screen 9000
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
PROCESS AFTER INPUT.
MODULE ADDITION.
Flow Logic - Screen 9001
PROCESS BEFORE OUTPUT.
PROCESS AFTER INPUT.
Top Include
PROGRAM SAPMYOPXX1.
DATA: NUM1 TYPE I,
NUM2 LIKE NUM1,
RESULT LIKE NUM1.
PBO Modules
MODULE INITIALIZE OUTPUT.
CLEAR: NUM1, NUM2, RESULT.
ENDMODULE.
PAI Modules
MODULE ADDITION INPUT.
RESULT = NUM1 + NUM2.
ENDMODULE.
Dec-2008
Page 1
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Chapters 4-5
Programming Section
Flow Logic - Screen 9000
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
PROCESS AFTER INPUT.
MODULE GET_RECORD.
Flow Logic - Screen 9001
PROCESS BEFORE OUTPUT.
PROCESS AFTER INPUT.
Top Include
PROGRAM SAPMYOPXX3.
TABLES: YMOVIE_OP.
PBO Modules
MODULE INITIALIZE OUTPUT.
CLEAR YMOVIE_OP.
ENDMODULE.
PAI Modules
MODULE GET_RECORD INPUT.
CHECK YMOVIE_OP-CATEGORY <> 'PIC' OR YMOVIE_OP-CATEGORY <> 'MAL'
OR YMOVIE_OP-CATEGORY <> 'FEM'.
SELECT SINGLE * FROM YMOVIE_OP
WHERE YEARC = YMOVIE_OP-YEARC
AND CATEGORY = YMOVIE_OP-CATEGORY.
ENDMODULE.
Dec-2008
Page 2
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Chapters 6-8
Programming Section
Flow Logic - Screen 9000
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
PROCESS AFTER INPUT.
CHAIN.
FIELD: YMOVIE_OP-YEARC, YMOVIE_OP-CATEGORY.
MODULE CHECK_YEAR.
MODULE GET_RECORD.
ENDCHAIN.
* note: the SPA/GPA attributes are turned “on” for the year and category fields
Flow Logic - Screen 9001
PROCESS BEFORE OUTPUT.
PROCESS AFTER INPUT.
* Note: the cursor is positioned in the Screen Attributes of this screen
Top Include
PROGRAM SAPMYOPXX4 MESSAGE-ID YTRABAPMSG.
TABLES: YMOVIE_OP.
PBO Modules
MODULE INITIALIZE OUTPUT.
CLEAR YMOVIE_OP.
ENDMODULE.
Dec-2008
Page 3
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
PAI Modules
MODULE CHECK_YEAR INPUT.
* local data for this module
DATA: MAX_YEAR(4) TYPE N.
CONSTANTS: MIN_YEAR(4) TYPE N VALUE ‘1927’.
MAX_YEAR = SY-DATUM(4).
IF YMOVIE_OP-YEARC < MIN_YEAR OR YMOVIE_OP-YEARC > MAX_YEAR.
MESSAGE E009 WITH MIN_YEAR MAX_YEAR. “ Invalid Year
ENDIF.
ENDMODULE.
MODULE GET_RECORD INPUT.
SELECT SINGLE * FROM YMOVIE_OP
WHERE YEARC = YMOVIE_OP-YEARC
AND CATEGORY = YMOVIE_OP-CATEGORY.
IF SY-SUBRC <> 0.
MESSAGE E001. “No record exists
ENDIF.
ENDMODULE.
Dec-2008
Page 4
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Chapters 9-10
Programming Section
Flow Logic - Screen 9000
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
PROCESS AFTER INPUT.
CHAIN.
FIELD: YMOVIE_OP-YEARC, YMOVIE_OP-CATEGORY.
MODULE CHECK_YEAR.
MODULE GET_RECORD.
ENDCHAIN.
MODULE EXIT.
* note: the SPA/GPA attributes are turned “on” for the year and category fields in this screen
Flow Logic - Screen 9001
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
* the cursor is now set in this initialize module
PROCESS AFTER INPUT.
MODULE CRITIC.
MODULE EXIT.
Flow Logic - Screen 9002
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
PROCESS AFTER INPUT.
MODULE RETURN.
Dec-2008
Page 5
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Top Include
PROGRAM SAPMYOPXX5 MESSAGE-ID YTRABAPMSG.
TABLES: YMOVIE_OP.
DATA: OKCODE(4) TYPE C.
PBO Modules
MODULE INITIALIZE OUTPUT.
CASE SY-DYNNR. “ sy-dynnr contains current screen number
WHEN 9000.
CLEAR YMOVIE_OP.
SET PF-STATUS ‘FIRST’.
SET TITLEBAR ‘ONE’.
WHEN 9001.
SET PF-STATUS ‘SECOND’.
SET TITLEBAR 'TWO'.
SET CURSOR FIELD ‘YMOVIE_OP-NOTES’. “another way to set cursor position
WHEN 9002.
SET PF-STATUS ‘THIRD’.
SET TITLEBAR 'THREE'.
ENDCASE.
CLEAR OKCODE.
ENDMODULE.
PAI Modules
MODULE CHECK_YEAR INPUT.
* local data for this module
DATA: MAX_YEAR(4) TYPE N.
CONSTANTS: MIN_YEAR(4) TYPE N VALUE ‘1927’.
MAX_YEAR = SY-DATUM(4).
IF YMOVIE_OP-YEARC < MIN_YEAR OR YMOVIE_OP-YEARC > MAX_YEAR.
MESSAGE E009. “ Invalid Year
ENDIF.
ENDMODULE.
MODULE GET_RECORD INPUT.
CASE OKCODE.
Dec-2008
Page 6
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
WHEN ‘ADD’.
SELECT SINGLE * FROM YMOVIE_OP
WHERE YEARC = YMOVIE_OP-YEARC
AND CATEGORY = YMOVIE_OP-CATEGORY.
IF SY-SUBRC = 0.
CLEAR: YMOVIE_OP-WINNER, YMOVIE_OP-NAME1,
YMOVIE_OP-NAME2, YMOVIE_OP-NAME3,
YMOVIE_OP-NAME4, YMOVIE_OP-NAME5,
YMOVIE_OP-NOTES, YMOVIE_OP-CRITIC.
MESSAGE E006. “Record already exists
ENDIF.
LEAVE TO SCREEN 9001.
WHEN ‘EDIT’.
SELECT SINGLE * FROM YMOVIE_OP
WHERE YEARC = YMOVIE_OP-YEARC
AND CATEGORY = YMOVIE_OP-CATEGORY.
IF SY-SUBRC <> 0.
MESSAGE E001. “No record exists
ENDIF.
LEAVE TO SCREEN 9001.
ENDCASE.
ENDMODULE.
Dec-2008
Page 7
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
MODULE CRITIC INPUT.
CHECK OKCODE = ‘NAME’.
CALL SCREEN 9002 STARTING AT 30 5 ENDING AT 60 10.
ENDMODULE.
MODULE EXIT INPUT.
IF OKCODE = ‘EXIT’.
LEAVE TO SCREEN 0.
ELSEIF OKCODE = ‘INIT’.
LEAVE TO SCREEN 9000.
ENDIF.
ENDMODULE.
MODULE RETURN INPUT.
LEAVE TO SCREEN 0.
ENDMODULE.
Dec-2008
Page 8
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Chapters 12-14
Programming Section
Flow Logic - Screen 9000
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
PROCESS AFTER INPUT.
CHAIN.
FIELD: YMOVIE_OP-YEARC, YMOVIE_OP-CATEGORY.
MODULE CHECK_YEAR.
MODULE GET_RECORD.
ENDCHAIN.
MODULE EXIT AT EXIT-COMMAND.
* note: the SPA/GPA attributes are turned “on” for the year and category fields in this screen
Flow Logic - Screen 9001
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
* the cursor is now set in this initialize module
PROCESS AFTER INPUT.
MODULE MODIFY.
MODULE CRITIC.
MODULE EXIT AT EXIT-COMMAND.
Flow Logic - Screen 9002
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
PROCESS AFTER INPUT.
MODULE RETURN.
Dec-2008
Page 9
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Top Include
PROGRAM SAPMYOPXX6 MESSAGE-ID YTRABAPMSG.
TABLES: YMOVIE_OP.
DATA: OKCODE(4) TYPE C,
INITIAL_OKCODE LIKE OKCODE.
PBO Modules
MODULE INITIALIZE OUTPUT.
CASE SY-DYNNR. “ sy-dynnr contains current screen number
WHEN 9000.
CLEAR YMOVIE_OP.
SET PF-STATUS ‘FIRST’.
SET TITLEBAR ‘ONE’.
WHEN 9001.
SET PF-STATUS ‘SECOND’.
SET TITLEBAR 'TWO'.
SET CURSOR FIELD ‘YMOVIE_OP-NOTES’. “another way to set cursor position
WHEN 9002.
SET PF-STATUS ‘THIRD’.
SET TITLEBAR 'THREE'.
ENDCASE.
CLEAR OKCODE.
ENDMODULE.
PAI Modules
MODULE CHECK_YEAR INPUT.
* local data for this module
DATA: MAX_YEAR(4) TYPE N.
CONSTANTS: MIN_YEAR(4) TYPE N VALUE ‘1927’.
MAX_YEAR = SY-DATUM(4).
IF YMOVIE_OP-YEARC < MIN_YEAR OR YMOVIE_OP-YEARC > MAX_YEAR.
MESSAGE E009. “ Invalid Year
ENDIF.
ENDMODULE.
MODULE GET_RECORD INPUT.
CASE OKCODE.
WHEN ‘ADD’.
Dec-2008
Page 10
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
PERFORM LOCK_RECORD. “need to lock before selecting
SELECT SINGLE * FROM YMOVIE_OP
WHERE YEARC = YMOVIE_OP-YEARC
AND CATEGORY = YMOVIE_OP-CATEGORY.
IF SY-SUBRC = 0.
CLEAR: YMOVIE_OP-WINNER, YMOVIE_OP-NAME1,
YMOVIE_OP-NAME2, YMOVIE_OP-NAME3,
YMOVIE_OP-NAME4, YMOVIE_OP-NAME5,
YMOVIE_OP-NOTES, YMOVIE_OP-CRITIC.
MESSAGE E006. “Record already exists
ENDIF.
INITIAL_OKCODE = OKCODE.
LEAVE TO SCREEN 9001.
WHEN ‘EDIT’.
PERFORM LOCK_RECORD. “need to lock before selecting
SELECT SINGLE * FROM YMOVIE_OP
WHERE YEARC = YMOVIE_OP-YEARC
AND CATEGORY = YMOVIE_OP-CATEGORY.
IF SY-SUBRC <> 0.
MESSAGE E001. “No record exists
ENDIF.
INITIAL_OKCODE = OKCODE.
LEAVE TO SCREEN 9001.
ENDCASE.
ENDMODULE.
Dec-2008
Page 11
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
MODULE MODIFY INPUT. “see alternative to this module on the next page
CHECK OKCODE = ‘MODI’.
IF INITIAL_OKCODE = ‘EDIT’.
UPDATE YMOVIE_OP.
IF SY-SUBRC = 0.
COMMIT WORK.
MESSAGE S002. “Record updated successfully
ELSE.
ROLLBACK WORK.
MESSAGE I003. “Update unsuccessful
ENDIF.
ELSEIF INITIAL_OKCODE = ‘ADD’.
INSERT YMOVIE_OP.
IF SY-SUBRC = 0.
COMMIT WORK.
MESSAGE S007. “Record inserted successfully
ELSE.
ROLLBACK WORK.
MESSAGE I008. “Insert unsuccessful
ENDIF.
ENDIF.
PERFORM UNLOCK_RECORD. “need to unlock the record when leaving 9001
LEAVE TO SCREEN 9000.
ENDMODULE.
Dec-2008
Page 12
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
*********************** alternative code for MODIFY module ***********************
MODULE MODIFY INPUT.
CHECK OKCODE = ‘MODI’.
MODIFY YMOVIE_OP. “modify will insert a new record or update an existing one
MESSAGE S017. “Record modified successfully
PERFORM UNLOCK_RECORD. “need to unlock the record when leaving 9001
LEAVE TO SCREEN 9000.
ENDMODULE.
******************************************************************************
Dec-2008
Page 13
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
MODULE CRITIC INPUT.
CHECK OKCODE = ‘NAME’.
CALL SCREEN 9002 STARTING AT 30 5 ENDING AT 60 10.
ENDMODULE.
MODULE EXIT INPUT.
IF SY-DYNNR = 9001.
PERFORM UNLOCK_RECORD. “need to unlock record when leaving 9001
ENDIF.
IF OKCODE = ‘EXIT’.
LEAVE TO SCREEN 0.
ELSEIF OKCODE = ‘INIT’.
LEAVE TO SCREEN 9000.
ENDIF.
ENDMODULE.
MODULE RETURN INPUT.
LEAVE TO SCREEN 0.
ENDMODULE.
Dec-2008
Page 14
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Subroutines
FORM LOCK_RECORD.
CALL FUNCTION ‘ENQUEUE_EZ_MOVIE_OP’
EXPORTING
YEARC = YMOVIE_OP-YEARC
CATEGORY = YMOVIE_OP-CATEGORY
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
IF SY-SUBRC = 1.
MESSAGE E004. “This record is currently locked
ELSEIF SY-SUBRC = 2 OR SY-SUBRC = 3.
MESSAGE E015. “Error trying to lock record
ENDIF.
ENDFORM.
FORM UNLOCK_RECORD.
CALL FUNCTION ‘DEQUEUE_EZ_MOVIE_OP’
EXPORTING
YEARC = YMOVIE_OP-YEARC
CATEGORY = YMOVIE_OP-CATEGORY
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC = 1.
MESSAGE E016. “Error trying to unlock record
ENDIF.
ENDFORM.
Dec-2008
Page 15
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Chapters 15
Programming Section
Flow Logic - Screen 9000
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
PROCESS AFTER INPUT.
CHAIN.
FIELD: YMOVIE_OP-YEARC, YMOVIE_OP-CATEGORY.
MODULE CHECK_YEAR.
MODULE GET_RECORD.
ENDCHAIN.
MODULE EXIT AT EXIT-COMMAND.
* note: the SPA/GPA attributes are turned “on” for the year and category fields in this screen
Flow Logic - Screen 9001
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
* the cursor is now set in this initialize module
PROCESS AFTER INPUT.
MODULE MODIFY.
MODULE CRITIC.
MODULE EXIT AT EXIT-COMMAND.
Flow Logic - Screen 9002
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
PROCESS AFTER INPUT.
MODULE RETURN.
Dec-2008
Page 16
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Flow Logic - Screen 9003
PROCESS BEFORE OUTPUT.
MODULE INITIALIZE.
LOOP AT MOVIE_ITAB INTO WA_ MOVIE_ITAB CURSOR LOOP_NUM.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP.
ENDLOOP.
Top Include
PROGRAM SAPMYOPXX7 MESSAGE-ID YTRABAPMSG.
TABLES: YMOVIE_OP.
TYPES: BEGIN OF MOVIE_REC,
CATEGORY LIKE YMOVIE_OP-CATEGORY,
WINNER LIKE YMOVIE_OP-WINNER,
END OF MOVIE_REC.
DATA: MOVIE_ITAB TYPE STANDARD TABLE OF MOVIE_REC ,
WA_MOVIE_ITAB TYPE MOVIE_REC.
DATA: OKCODE(4) TYPE C,
INITIAL_OKCODE LIKE OKCODE,
LOOP_NUM LIKE SY-INDEX.
Dec-2008
Page 17
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
PBO Modules
MODULE INITIALIZE OUTPUT.
CASE SY-DYNNR. “ sy-dynnr contains current screen number
WHEN 9000.
CLEAR YMOVIE_OP.
REFRESH MOVIE_ITAB.
SET PF-STATUS ‘FIRST’.
SET TITLEBAR ‘ONE’.
WHEN 9001.
SET PF-STATUS ‘SECOND’.
SET TITLEBAR 'TWO'.
SET CURSOR FIELD ‘YMOVIE_OP-NOTES’. “another way to set cursor position
WHEN 9002.
SET PF-STATUS ‘THIRD’.
SET TITLEBAR 'THREE'.
WHEN 9003.
SET PF-STATUS ‘FOURTH’.
SET TITLEBAR 'FOUR'.
ENDCASE.
CLEAR OKCODE.
ENDMODULE.
PAI Modules
MODULE CHECK_YEAR INPUT.
* local data for this module
DATA: MAX_YEAR(4) TYPE N.
CONSTANTS: MIN_YEAR(4) TYPE N VALUE ‘1927’.
MAX_YEAR = SY-DATUM(4).
IF YMOVIE_OP-YEARC < MIN_YEAR OR YMOVIE_OP-YEARC > MAX_YEAR.
MESSAGE E009. “ Invalid Year
ENDIF.
ENDMODULE.
Dec-2008
Page 18
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
MODULE GET_RECORD INPUT.
CASE OKCODE.
WHEN ‘ADD’.
PERFORM LOCK_RECORD. “need to lock before selecting
SELECT SINGLE * FROM YMOVIE_OP
WHERE YEARC = YMOVIE_OP-YEARC
AND CATEGORY = YMOVIE_OP-CATEGORY.
IF SY-SUBRC = 0.
CLEAR: YMOVIE_OP-WINNER, YMOVIE_OP-NAME1,
YMOVIE_OP-NAME2, YMOVIE_OP-NAME3,
YMOVIE_OP-NAME4, YMOVIE_OP-NAME5,
YMOVIE_OP-NOTES, YMOVIE_OP-CRITIC.
MESSAGE E006. “Record already exists
ENDIF.
INITIAL_OKCODE = OKCODE.
LEAVE TO SCREEN 9001.
WHEN ‘EDIT’.
PERFORM LOCK_RECORD. “need to lock before selecting
SELECT SINGLE * FROM YMOVIE_OP
WHERE YEARC = YMOVIE_OP-YEARC
AND CATEGORY = YMOVIE_OP-CATEGORY.
IF SY-SUBRC <> 0.
MESSAGE E001. “No record exists
ENDIF.
INITIAL_OKCODE = OKCODE.
LEAVE TO SCREEN 9001.
Dec-2008
Page 19
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
WHEN ‘LOOP’.
REFRESH MOVIE_ITAB. “ To clear the contents of the internal table
SELECT CATEGORY WINNER FROM YMOVIE_OP
INTO (WA_MOVIE_ITAB-CATEGORY, WA_MOVIE_ITAB-WINNER)
WHERE YEARC = YMOVIE_OP-YEARC.
APPEND WA_MOVIE_ITAB TO MOVIE_ITAB.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE E019. “No winners exist for this year
ENDIF.
INITIAL_OKCODE = OKCODE.
LEAVE TO SCREEN 9003.
ENDCASE.
ENDMODULE.
Dec-2008
Page 20
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
MODULE MODIFY INPUT. “see alternative to this module on the next page
CHECK OKCODE = ‘MODI’.
IF INITIAL_OKCODE = ‘EDIT’.
UPDATE YMOVIE_OP.
IF SY-SUBRC = 0.
COMMIT WORK.
MESSAGE S002. “Record updated successfully
ELSE.
ROLLBACK WORK.
MESSAGE I003. “Update unsuccessful
ENDIF.
ELSEIF INITIAL_OKCODE = ‘ADD’.
INSERT YMOVIE_OP.
IF SY-SUBRC = 0.
COMMIT WORK.
MESSAGE S007. “Record inserted successfully
ELSE.
ROLLBACK WORK.
MESSAGE I008. “Insert unsuccessful
ENDIF.
ENDIF.
PERFORM UNLOCK_RECORD. “need to unlock the record when leaving 9001
LEAVE TO SCREEN 9000.
ENDMODULE.
Dec-2008
Page 21
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
*********************** Alternative code for MODIFY module ***********************
MODULE MODIFY INPUT.
CHECK OKCODE = ‘MODI’.
MODIFY YMOVIE_OP. “modify will insert a new record or update an existing one
MESSAGE S017. “Record modified successfully
PERFORM UNLOCK_RECORD. “need to unlock the record when leaving 9001
LEAVE TO SCREEN 9000.
ENDMODULE.
******************************************************************************
Dec-2008
Page 22
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
MODULE CRITIC INPUT.
CHECK OKCODE = ‘NAME’.
CALL SCREEN 9002 STARTING AT 30 5 ENDING AT 60 10.
ENDMODULE.
MODULE EXIT INPUT.
IF SY-DYNNR = 9001.
PERFORM UNLOCK_RECORD. “need to unlock record when leaving 9001
ENDIF.
IF OKCODE = ‘EXIT’.
LEAVE TO SCREEN 0.
ELSEIF OKCODE = ‘INIT’.
LEAVE TO SCREEN 9000.
ENDIF.
ENDMODULE.
MODULE RETURN INPUT.
LEAVE TO SCREEN 0.
ENDMODULE.
Dec-2008
Page 23
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Subroutines
FORM LOCK_RECORD.
CALL FUNCTION ‘ENQUEUE_EZ_MOVIE_OP’
EXPORTING
YEARC = YMOVIE_OP-YEARC
CATEGORY = YMOVIE_OP-CATEGORY
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
IF SY-SUBRC = 1.
MESSAGE E004. “This record is currently locked
ELSEIF SY-SUBRC = 2 OR SY-SUBRC = 3.
MESSAGE E015. “Error trying to lock record
ENDIF.
ENDFORM.
FORM UNLOCK_RECORD.
CALL FUNCTION ‘DEQUEUE_EZ_MOVIE_OP’
EXPORTING
YEARC = YMOVIE_OP-YEARC
CATEGORY = YMOVIE_OP-CATEGORY
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC = 1.
MESSAGE E016. “Error trying to unlock record
ENDIF.
ENDFORM.
Dec-2008
Page 24
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Dec-2008
Page 25
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Chapter 16 (With App-server)
Flow Logic – Screen 9000
PROCESS BEFORE OUTPUT.
MODULE initialize.
PROCESS AFTER INPUT.
MODULE select.
Flow Logic – Screen 9001
PROCESS BEFORE OUTPUT.
MODULE set_tabpage.
CALL SUBSCREEN sub1 INCLUDING sy-repid scrnr.
PROCESS AFTER INPUT.
MODULE user_command.
Top Include
TABLES: YMOVIE_OP.
DATA: scrnr LIKE sy-repid VALUE 9100,
okcode LIKE sy-ucomm.
CONTROLS: my_tabstrip TYPE TABSTRIP.
PBO Modules
MODULE initialize OUTPUT.
CLEAR YMOVIE_OP.
ENDMODULE. " INITIALIZE OUTPUT
MODULE set_tabpage OUTPUT.
CASE okcode.
WHEN 'FNTAB1'.
my_tabstrip-activetab = 'FNTAB1'.
scrnr = '9100'.
WHEN 'FNTAB2'.
Dec-2008
Page 26
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
my_tabstrip-activetab = 'FNTAB2'.
scrnr = '9100'.
WHEN 'FNTAB3'.
my_tabstrip-activetab = 'FNTAB3'.
scrnr = '9100'.
ENDCASE.
ENDMODULE. " SET_TABPAGE OUTPUT
PAI Modules
MODULE select INPUT.
SELECT SINGLE * FROM YMOVIE_OP WHERE yearc = YMOVIE_OP-yearc
AND category = 'PIC'.
LEAVE TO SCREEN 9001.
ENDMODULE. " SELECT INPUT
MODULE user_command INPUT.
clear: YMOVIE_OP -category, YMOVIE_OP -winner,
YMOVIE_OP -name1, ymovie_op-name2,
ymovie_op-name3, ymovie_op-name4,
ymovie_op-name5.
CASE okcode.
WHEN 'FNTAB1'.
SELECT SINGLE * FROM YMOVIE_OP
WHERE yearc = YMOVIE_OP-yearc AND category = 'PIC'.
WHEN 'FNTAB2'.
SELECT SINGLE * FROM YMOVIE_OP
WHERE yearc = YMOVIE_OP-yearc AND category = 'FEM'.
WHEN 'FNTAB3'.
SELECT SINGLE * FROM YMOVIE_OP
WHERE yearc = YMOVIE_OP-yearc AND category = 'MAL'.
ENDCASE.
ENDMODULE. " USER_COMMAND INPUT
Dec-2008
Page 27
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Chapter 16 (Without App-server)
Flow Logic – Screen 9000
PROCESS BEFORE OUTPUT.
MODULE initialize.
PROCESS AFTER INPUT.
MODULE select.
Flow Logic – Screen 9001
PROCESS BEFORE OUTPUT.
MODULE set_tabpage.
CALL SUBSCREEN sub1 INCLUDING sy-repid scrnr1.
CALL SUBSCREEN sub2 INCLUDING sy-repid scrnr2.
PROCESS AFTER INPUT.
MODULE user_command.
Top Include
TABLES: YMOVIE_OP.
DATA: scrnr1 LIKE sy-repid VALUE 9100,
scrnr2 LIKE sy-repid VALUE 9100
okcode LIKE sy-ucomm.
CONTROLS: my_tabstrip TYPE TABSTRIP.
Dec-2008
Page 28
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
PBO Modules
MODULE initialize OUTPUT.
CLEAR YMOVIE_OP.
ENDMODULE. " INITIALIZE OUTPUT
MODULE set_tabpage OUTPUT.
CASE okcode.
WHEN 'FNTAB1'.
my_tabstrip-activetab = 'FNTAB1'.
scrnr1 = '9100'.
WHEN 'FNTAB2'.
my_tabstrip-activetab = 'FNTAB2'.
scrnr2 = '9101'.
ENDCASE.
ENDMODULE. " SET_TABPAGE OUTPUT
PAI Modules
MODULE select INPUT.
SELECT SINGLE * FROM YMOVIE_OP WHERE yearc = YMOVIE_OP-yearc
AND category = YMOVIE_OP-CATEGORY.
LEAVE TO SCREEN 9001.
ENDMODULE. " SELECT INPUT
MODULE user_command INPUT.
clear: YMOVIE_OP -winner,
YMOVIE_OP -name1, ymovie_op-name2,
ymovie_op-name3, ymovie_op-name4,
ymovie_op-name5, ymovie_op-notes,
ymovie_op-critic.
CASE okcode.
WHEN 'FNTAB1'.
SELECT SINGLE * FROM YMOVIE_OP
WHERE yearc = YMOVIE_OP-yearc AND category = YMOVIE_OP-CATEGORY.
WHEN 'FNTAB2'.
SELECT SINGLE * FROM YMOVIE_OP
Dec-2008
Page 29
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
WHERE yearc = YMOVIE_OP-yearc AND category = YMOVIE_OP-CATEGORY.
ENDCASE.
ENDMODULE. " USER_COMMAND INPUT
Dec-2008
Page 30
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Chapter 17 (Table Control)
Flow Logic – Screen 9000
PROCESS BEFORE OUTPUT.
MODULE initialise.
PROCESS AFTER INPUT.
MODULE select.
Flow Logic – Screen 9001
*note: As we are using work area for itab ,when creating the screen fields using the below mentioned icon
select Get from program tab and give wa name rather that selecting get from dictionary tab.
PROCESS BEFORE OUTPUT.
LOOP AT ITAB INTO WA_ITAB WITH CONTROL ITEMS CURSOR ITEMS-CURRENT_LINE.
MODULE display_ymovie.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP.
ENDLOOP.
Top Include
TABLES: YMOVIE_OP.
DATA: ITAB TYPE STANDARD TABLE OF YMOVIE_OP,
WA_ITAB TYPE YMOVIE_OP.
CONTROLS ITEMS TYPE TABLEVIEW USING SCREEN 9001.
PBO Modules
Dec-2008
Page 31
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
MODULE initialise OUTPUT.
CLEAR YMOVIE_OP.
ENDMODULE. " INITIALIZE OUTPUT
MODULE display_ymovie OUTPUT.
YMOVIE_OP-YEARC = WA_ITAB-YEARC.
YMOVIE_OP-CATEGORY = WA_ITAB-CATEGORY.
YMOVIE_OP-WINNER = WA_ITAB-WINNER.
YMOVIE_OP-NAME1 = WA_ITAB-NAME1.
YMOVIE_OP-NAME2 = WA_ITAB-NAME2.
YMOVIE_OP-NAME3 = WA_ITAB-NAME3.
YMOVIE_OP-NAME4 = WA_ITAB-NAME4.
YMOVIE_OP-NAME5 = WA_ITAB-NAME5.
ENDMODULE. " DISPLAY_YMOVIE OUTPUT
PAI Modules
MODULE select INPUT.
SELECT * FROM YMOVIE_OP INTO TABLE ITAB
WHERE YEARC = YMOVIE_OP-YEARC.
ENDMODULE. " SELECT 9000 INPUT
Dec-2008
Page 32