19_Online Programming Exercise Solutions
19_Online Programming Exercise Solutions
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Chapter 2
Programming Section
Top Include
PROGRAM SAPMYOPXX1.
DATA: NUM1 TYPE I,
NUM2 LIKE NUM1,
RESULT LIKE NUM1.
PBO Modules
PAI Modules
Dec-2008
Page 1
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Chapters 4-5
Programming Section
Top Include
PROGRAM SAPMYOPXX3.
TABLES: YMOVIE_OP.
PBO Modules
PAI Modules
Dec-2008
Page 2
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Chapters 6-8
Programming Section
* note: the SPA/GPA attributes are turned “on” for the year and category fields
Top Include
PBO Modules
Dec-2008
Page 3
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
PAI Modules
MAX_YEAR = SY-DATUM(4).
ENDMODULE.
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
* note: the SPA/GPA attributes are turned “on” for the year and category fields in this screen
Dec-2008
Page 5
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Top Include
PBO Modules
CLEAR OKCODE.
ENDMODULE.
PAI Modules
MAX_YEAR = SY-DATUM(4).
CASE OKCODE.
Dec-2008
Page 6
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
WHEN ‘ADD’.
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.
WHEN ‘EDIT’.
IF SY-SUBRC <> 0.
MESSAGE E001. “No record exists
ENDIF.
ENDCASE.
ENDMODULE.
Dec-2008
Page 7
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
ENDMODULE.
IF OKCODE = ‘EXIT’.
LEAVE TO SCREEN 0.
ELSEIF OKCODE = ‘INIT’.
LEAVE TO SCREEN 9000.
ENDIF.
ENDMODULE.
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
* note: the SPA/GPA attributes are turned “on” for the year and category fields in this screen
Dec-2008
Page 9
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Top Include
PBO Modules
PAI Modules
MAX_YEAR = SY-DATUM(4).
CASE OKCODE.
WHEN ‘ADD’.
Dec-2008
Page 10
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
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
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
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.
INSERT YMOVIE_OP.
IF SY-SUBRC = 0.
COMMIT WORK.
MESSAGE S007. “Record inserted successfully
ELSE.
ROLLBACK WORK.
MESSAGE I008. “Insert unsuccessful
ENDIF.
ENDIF.
ENDMODULE.
Dec-2008
Page 12
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
MODIFY YMOVIE_OP. “modify will insert a new record or update an existing one
ENDMODULE.
******************************************************************************
Dec-2008
Page 13
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
ENDMODULE.
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.
LEAVE TO SCREEN 0.
ENDMODULE.
Dec-2008
Page 14
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Subroutines
FORM LOCK_RECORD.
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.
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
* note: the SPA/GPA attributes are turned “on” for the year and category fields in this screen
Dec-2008
Page 16
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Top Include
Dec-2008
Page 17
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
PBO Modules
PAI Modules
MAX_YEAR = SY-DATUM(4).
Dec-2008
Page 18
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
CASE OKCODE.
WHEN ‘ADD’.
PERFORM LOCK_RECORD. “need to lock before selecting
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’.
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.
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
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.
INSERT YMOVIE_OP.
IF SY-SUBRC = 0.
COMMIT WORK.
MESSAGE S007. “Record inserted successfully
ELSE.
ROLLBACK WORK.
MESSAGE I008. “Insert unsuccessful
ENDIF.
ENDIF.
ENDMODULE.
Dec-2008
Page 21
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
MODIFY YMOVIE_OP. “modify will insert a new record or update an existing one
ENDMODULE.
******************************************************************************
Dec-2008
Page 22
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
ENDMODULE.
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.
LEAVE TO SCREEN 0.
ENDMODULE.
Dec-2008
Page 23
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Subroutines
FORM LOCK_RECORD.
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.
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
Top Include
TABLES: YMOVIE_OP.
PBO Modules
my_tabstrip-activetab = 'FNTAB2'.
scrnr = '9100'.
WHEN 'FNTAB3'.
my_tabstrip-activetab = 'FNTAB3'.
scrnr = '9100'.
ENDCASE.
ENDMODULE. " SET_TABPAGE OUTPUT
PAI Modules
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.
Dec-2008
Page 27
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
Top Include
TABLES: YMOVIE_OP.
Dec-2008
Page 28
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
PBO Modules
PAI Modules
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
Dec-2008
Page 30
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
*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.
Top Include
TABLES: YMOVIE_OP.
PBO Modules
Dec-2008
Page 31
ECC
6.0
Online Programming:
Exercise Solutions SAP Development ABAP
Training
PAI Modules
Dec-2008
Page 32