0% found this document useful (0 votes)
9 views

19_Online Programming Exercise Solutions

The document provides a detailed overview of programming exercises using ABAP in SAP ECC 6.0, focusing on flow logic and screen handling for various modules. It includes code snippets for initializing, processing inputs, and managing records in a movie database application. The document spans multiple chapters, each detailing specific programming sections and modules with relevant ABAP code examples.

Uploaded by

Aniruddha_Ghosh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

19_Online Programming Exercise Solutions

The document provides a detailed overview of programming exercises using ABAP in SAP ECC 6.0, focusing on flow logic and screen handling for various modules. It includes code snippets for initializing, processing inputs, and managing records in a movie database application. The document spans multiple chapters, each detailing specific programming sections and modules with relevant ABAP code examples.

Uploaded by

Aniruddha_Ghosh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 32

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

You might also like