Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Message Class-Choose

Former Member
0 Likes
1,256

Hi!

I have a report in FI where the output is shown in form of messages . I have the report but I am not aware which message class I should be using for the report or should I be ceratinga new messag class to accommodate the messages.

Its a report which opens and close accounting periods.For just to make it easy to understand I am pasting teh report too at the bottom. Thanks , plesae just tell me which message class i should be using or do I have to create a new message class alltogether.

&----


*& Report ZFI_ACC_OPEN_CLOSE

*&

&----


*&

*&

&----


REPORT ZFI_ACC_OPEN_CLOSE NO STANDARD PAGE HEADING..

*|----


|

*| Pourpose : To update the status of posting periods. |

*| |

*| Date / Author: |

*| |

*| Table Updates: T001B |

*| |

*| Security : S_TABU_DIS Actvt-02, Dicbercls=FC31. |

*| |

*| Constraints : |

*|----


|

*| M O D I F I C A T I O N L O G |

*|Date Programmer Request# Description |

*|----


-


-


-


|

*| Date Name CTS # |

*|----


|

*| Data Declarations |

*|----


|

TABLES: T001B. "Posting Periods"

DATA: PROGRAM LIKE SY-REPID,

YEAR_LOW(4) TYPE N,

YEAR_HIGH LIKE YEAR_LOW,

TABKEY LIKE RSTABLE-VARKEY,

FT_ENQUEUE_PATTERN(2) TYPE C VALUE ' @',

USER LIKE SY-UNAME,

LOCK_FLAG TYPE C,

LOWER_PERIOD(6) TYPE N,

UPPER_PERIOD LIKE LOWER_PERIOD.

  • |-------------------------------------------------------------------|

  • | Selections |

  • |-------------------------------------------------------------------|

SELECTION-SCREEN BEGIN OF BLOCK S1 WITH FRAME TITLE TEXT-S11.

SELECT-OPTIONS SO_BUKRS FOR T001B-BUKRS.

  • Account Type selection

SELECTION-SCREEN BEGIN OF BLOCK TYPE WITH FRAME TITLE TEXT-S03.

  • ALL Type

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT: 1(19) TEXT-S04.

PARAMETERS: PA_ALL AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF LINE.

  • Asset (A) Type

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT: 1(19) TEXT-S05.

PARAMETERS: PA_ASSET AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF LINE.

  • Customer (D) Type

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT: 1(19) TEXT-S06.

PARAMETERS: PA_CUST AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF LINE.

  • Special Ledger (G) Type

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT: 1(19) TEXT-S07.

PARAMETERS: PA_SPLGR AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF LINE.

  • Vendors (K) Type

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT: 1(19) TEXT-S08.

PARAMETERS: PA_VEND AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF LINE.

  • Materials (M) Type

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT: 1(19) TEXT-S09.

PARAMETERS: PA_MATER AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF LINE.

  • G/L Accounts (S) Type

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT: 1(19) TEXT-S10.

PARAMETERS: PA_GLACC AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK TYPE.

SELECTION-SCREEN END OF BLOCK S1.

SELECTION-SCREEN BEGIN OF BLOCK PERD WITH FRAME TITLE TEXT-S14.

  • First Set of Periods.

SELECTION-SCREEN BEGIN OF BLOCK P1 WITH FRAME TITLE TEXT-S01.

SELECTION-SCREEN BEGIN OF BLOCK PP1.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(29) TEXT-S12.

PARAMETERS: PA_P1_L(3) TYPE N.

SELECTION-SCREEN COMMENT 50(5) TEXT-S13.

PARAMETERS: PA_P1_H(3) TYPE N.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK PP1.

SELECT-OPTIONS SO_Y1 FOR T001B-TOYE1 NO-EXTENSION.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(29) TEXT-S15.

PARAMETERS: AUTH LIKE V_T001B-BRGRU.

PARAMETERS: AUTH_CL AS CHECKBOX.

SELECTION-SCREEN COMMENT 38(25) TEXT-S17.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK P1.

  • Second Set of Periods

SELECTION-SCREEN BEGIN OF BLOCK P2 WITH FRAME TITLE TEXT-S02.

SELECTION-SCREEN BEGIN OF BLOCK PP2.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(29) TEXT-S12.

PARAMETERS: PA_P2_L(3) TYPE N.

SELECTION-SCREEN COMMENT 50(5) TEXT-S13.

PARAMETERS: PA_P2_H(3) TYPE N.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK PP2.

SELECT-OPTIONS SO_Y2 FOR T001B-TOYE1 NO-EXTENSION.

SELECTION-SCREEN END OF BLOCK P2.

SELECTION-SCREEN END OF BLOCK PERD.

  • |-------------------------------------------------------------------|

  • | Set Defaults |

  • |-------------------------------------------------------------------|

INITIALIZATION.

AUTHORITY-CHECK OBJECT 'S_TABU_DIS'

ID 'DICBERCLS' FIELD 'FC31'

ID 'ACTVT' FIELD '02'.

IF SY-SUBRC <> 0.

  • MESSAGE A999 WITH TEXT-E08.

ENDIF.

MOVE: SY-DATUM+0(4) TO YEAR_LOW,

SY-DATUM+0(4) TO YEAR_HIGH.

YEAR_LOW = YEAR_LOW - 1.

YEAR_HIGH = YEAR_HIGH + 1.

  • |-------------------------------------------------------------------|

  • | Validate Selections |

  • |-------------------------------------------------------------------|

  • Check that + was selected with auth group.

AT SELECTION-SCREEN.

IF ( NOT AUTH IS INITIAL OR NOT AUTH_CL IS INITIAL ) AND

PA_ALL IS INITIAL.

  • MESSAGE E999 WITH TEXT-E11.

ENDIF.

  • Check that at least one set of periods was marked for change.

AT SELECTION-SCREEN ON BLOCK PERD.

IF PA_P1_L IS INITIAL AND PA_P1_H IS INITIAL AND

SO_Y1-LOW IS INITIAL AND SO_Y1-HIGH IS INITIAL AND

PA_P2_L IS INITIAL AND PA_P2_H IS INITIAL AND

SO_Y2-LOW IS INITIAL AND SO_Y2-HIGH IS INITIAL AND

AUTH IS INITIAL AND AUTH_CL IS INITIAL.

  • MESSAGE E999 WITH TEXT-E06.

ENDIF.

  • Check that lower period is lower than upper period for group p1.

AT SELECTION-SCREEN ON BLOCK P1.

IF ( NOT PA_P1_L IS INITIAL AND NOT PA_P1_H IS INITIAL AND

NOT SO_Y1-LOW IS INITIAL AND NOT SO_Y1-HIGH IS INITIAL ) .

MOVE: SO_Y1-LOW TO LOWER_PERIOD+0(4).

MOVE: PA_P1_L TO LOWER_PERIOD+4(2).

MOVE: SO_Y1-HIGH TO UPPER_PERIOD+0(4).

MOVE: PA_P1_H TO UPPER_PERIOD+4(2).

IF LOWER_PERIOD > UPPER_PERIOD.

  • MESSAGE E999 WITH TEXT-E12.

ENDIF.

ENDIF.

  • Check that selected periods for group 1 are between 1 and 13.

AT SELECTION-SCREEN ON BLOCK PP1.

IF ( NOT PA_P1_L IS INITIAL OR NOT PA_P1_H IS INITIAL OR

NOT SO_Y1-LOW IS INITIAL OR NOT SO_Y1-HIGH IS INITIAL ).

IF PA_P1_L IS INITIAL OR PA_P1_H IS INITIAL.

  • MESSAGE E999 WITH TEXT-E07.

ENDIF.

IF ( PA_P1_L < 1 OR PA_P1_H > 13 OR PA_P1_H < 1 OR

PA_P1_H > 13 ).

  • MESSAGE E999 WITH TEXT-E01.

ENDIF.

ENDIF.

  • Check that year for group 1 is within 1 year of the current year.

AT SELECTION-SCREEN ON SO_Y1.

IF ( NOT PA_P1_L IS INITIAL OR NOT PA_P1_H IS INITIAL OR

NOT SO_Y1-LOW IS INITIAL OR NOT SO_Y1-HIGH IS INITIAL ) .

IF SO_Y1-LOW IS INITIAL OR SO_Y1-HIGH IS INITIAL.

  • MESSAGE E999 WITH TEXT-E07.

ENDIF.

IF ( SO_Y1-LOW < YEAR_LOW OR SO_Y1-HIGH > YEAR_HIGH OR

SO_Y1-HIGH < YEAR_LOW OR SO_Y1-HIGH > YEAR_HIGH ).

  • MESSAGE E999 WITH TEXT-E02 YEAR_LOW TEXT-E03 YEAR_HIGH.

ENDIF.

ENDIF.

  • Check that lower period is lower than upper period for group p2.

AT SELECTION-SCREEN ON BLOCK P2.

IF ( NOT PA_P2_L IS INITIAL AND NOT PA_P2_H IS INITIAL AND

NOT SO_Y2-LOW IS INITIAL AND NOT SO_Y2-HIGH IS INITIAL ) .

MOVE: SO_Y2-LOW TO LOWER_PERIOD+0(4).

MOVE: PA_P2_L TO LOWER_PERIOD+4(2).

MOVE: SO_Y2-HIGH TO UPPER_PERIOD+0(4).

MOVE: PA_P2_H TO UPPER_PERIOD+4(2).

IF LOWER_PERIOD > UPPER_PERIOD.

  • MESSAGE E999 WITH TEXT-E12.

ENDIF.

ENDIF.

  • Check that selected periods for group 2 are between 1 and 13.

AT SELECTION-SCREEN ON BLOCK PP2.

IF ( NOT PA_P2_L IS INITIAL OR NOT PA_P2_H IS INITIAL OR

NOT SO_Y2-LOW IS INITIAL OR NOT SO_Y2-HIGH IS INITIAL ).

IF PA_P2_L IS INITIAL OR PA_P2_H IS INITIAL.

    • MESSAGE E999 WITH TEXT-E07.

ENDIF.

IF ( PA_P2_L < 1 OR PA_P2_L > 13 OR PA_P2_L < 1 OR

PA_P2_H > 13 ).

  • MESSAGE E999 WITH TEXT-E01.

ENDIF.

ENDIF.

  • Check that year for group 2 is within 1 year of the current year.

AT SELECTION-SCREEN ON SO_Y2.

IF ( NOT PA_P2_L IS INITIAL OR NOT PA_P2_H IS INITIAL OR

NOT SO_Y2-LOW IS INITIAL OR NOT SO_Y2-HIGH IS INITIAL ).

IF SO_Y2-LOW IS INITIAL OR SO_Y2-HIGH IS INITIAL.

  • MESSAGE E999 WITH TEXT-E07.

ENDIF.

IF ( SO_Y2-LOW < YEAR_LOW OR SO_Y2-HIGH > YEAR_HIGH OR

SO_Y2-HIGH < YEAR_LOW OR SO_Y2-HIGH > YEAR_HIGH ).

  • MESSAGE E999 WITH TEXT-E02 YEAR_LOW TEXT-E03 YEAR_HIGH.

ENDIF.

ENDIF.

  • Check that an account type was selected.

AT SELECTION-SCREEN ON BLOCK TYPE.

IF PA_ALL IS INITIAL AND PA_ASSET IS INITIAL AND

PA_CUST IS INITIAL AND PA_SPLGR IS INITIAL AND

PA_VEND IS INITIAL AND PA_MATER IS INITIAL AND

PA_GLACC IS INITIAL.

MESSAGE E999 WITH TEXT-E05.

ENDIF.

  • Black out fields.

AT SELECTION-SCREEN OUTPUT.

IF NOT AUTH IS INITIAL.

AUTH_CL = ' '.

LOOP AT SCREEN.

IF SCREEN-NAME = 'AUTH_CL'.

SCREEN-OUTPUT = '1'.

SCREEN-INPUT = '0'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ELSE.

IF AUTH_CL = 'X'.

AUTH = ' '.

LOOP AT SCREEN.

IF SCREEN-NAME = 'AUTH'.

SCREEN-OUTPUT = '1'.

SCREEN-INPUT = '0'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

ENDIF.

----


START-OF-SELECTION.

----


MOVE SY-REPID TO PROGRAM.

AUTHORITY-CHECK OBJECT 'S_TABU_DIS'

ID 'DICBERCLS' FIELD 'FC31'

ID 'ACTVT' FIELD '02'.

IF SY-SUBRC <> 0.

MESSAGE A999(fi) WITH TEXT-E08.

ENDIF.

MOVE SY-REPID TO PROGRAM.

PERFORM SET_TABLE_LOCK.

IF LOCK_FLAG <> 'X'.

PERFORM UPDATE_SPECIAL_USERS.

PERFORM UPDATE_NORMAL_USERS.

PERFORM UPDATE_AUTH_GROUP.

PERFORM REMOVE_TABLE_LOCK.

  • CALL FUNCTION 'Z_PROGRAM_COUNTER'

  • EXPORTING

  • PROGRAM = PROGRAM

  • USER = SY-UNAME

  • EXCEPTIONS

  • OTHERS = 1.

  • MESSAGE I999 WITH 'Program finished Properly.'.

ENDIF.

  • Eject

&----


*& Form UPDATE_SPECIAL_USERS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM UPDATE_SPECIAL_USERS.

IF NOT PA_P1_L IS INITIAL.

IF PA_ALL = 'X'.

PERFORM UPDATE_SPECIAL_USERS_T100B USING '+'.

ENDIF.

IF PA_ASSET = 'X'.

PERFORM UPDATE_SPECIAL_USERS_T100B USING 'A'.

ENDIF.

IF PA_CUST = 'X'.

PERFORM UPDATE_SPECIAL_USERS_T100B USING 'D'.

ENDIF.

IF PA_SPLGR = 'X'.

PERFORM UPDATE_SPECIAL_USERS_T100B USING 'G'.

ENDIF.

IF PA_VEND = 'X'.

PERFORM UPDATE_SPECIAL_USERS_T100B USING 'K'.

ENDIF.

IF PA_MATER = 'X'.

PERFORM UPDATE_SPECIAL_USERS_T100B USING 'M'.

ENDIF.

IF PA_GLACC = 'X'.

PERFORM UPDATE_SPECIAL_USERS_T100B USING 'S'.

ENDIF.

ENDIF.

ENDFORM. " UPDATE_SPECIAL_USERS

  • Eject

&----


*& Form UPDATE_NORMAL_USERS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM UPDATE_NORMAL_USERS.

IF NOT PA_P2_L IS INITIAL.

IF PA_ALL = 'X'.

PERFORM UPDATE_NORMAL_USERS_T100B USING '+'.

ENDIF.

IF PA_ASSET = 'X'.

PERFORM UPDATE_NORMAL_USERS_T100B USING 'A'.

ENDIF.

IF PA_CUST = 'X'.

PERFORM UPDATE_NORMAL_USERS_T100B USING 'D'.

ENDIF.

IF PA_SPLGR = 'X'.

PERFORM UPDATE_NORMAL_USERS_T100B USING 'G'.

ENDIF.

IF PA_VEND = 'X'.

PERFORM UPDATE_NORMAL_USERS_T100B USING 'K'.

ENDIF.

IF PA_MATER = 'X'.

PERFORM UPDATE_NORMAL_USERS_T100B USING 'M'.

ENDIF.

IF PA_GLACC = 'X'.

PERFORM UPDATE_NORMAL_USERS_T100B USING 'S'.

ENDIF.

ENDIF.

ENDFORM. " UPDATE_NORMAL_USERS

  • Eject

&----


*& Form UPDATE_NORMAL_USERS_T100B

&----


  • text

----


  • -->P_0769 text *

----


FORM UPDATE_NORMAL_USERS_T100B USING VALUE(TYPE) TYPE C.

UPDATE T001B SET:

FRPE2 = PA_P2_L

TOPE2 = PA_P2_H

FRYE2 = SO_Y2-LOW

TOYE2 = SO_Y2-HIGH

WHERE BUKRS IN SO_BUKRS AND MKOAR = TYPE.

ENDFORM. " UPDATE_NORMAL_USERS_T100B

&----


*& Form SET_TABLE_LOCK

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SET_TABLE_LOCK.

  • PERFORM FILL_TABKEY(LSVIXF10) USING 'T001B' TABKEY.

TRANSLATE TABKEY USING FT_ENQUEUE_PATTERN.

MOVE SY-MANDT TO TABKEY+0(3).

MOVE '0' TO TABKEY+3(1).

CALL FUNCTION 'ENQUEUE_E_TABLEE'

EXPORTING

TABNAME = 'T001B'

VARKEY = TABKEY

EXCEPTIONS

FOREIGN_LOCK = 1

SYSTEM_FAILURE = 2.

IF SY-SUBRC <> 0.

MOVE SY-MSGV1 TO USER.

MOVE: 'X' TO LOCK_FLAG.

IF SY-BATCH = 'X'.

  • MESSAGE A999 WITH TEXT-E09 USER TEXT-E10.

ELSE.

  • MESSAGE I999 WITH TEXT-E09 USER TEXT-E10.

ENDIF.

ENDIF.

ENDFORM. " SET_TABLE_LOCK

&----


*& Form REMOVE_TABLE_LOCK

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM REMOVE_TABLE_LOCK.

CALL FUNCTION 'DEQUEUE_E_TABLEE'

EXPORTING

TABNAME = 'T001B'

VARKEY = TABKEY

EXCEPTIONS

OTHERS = 1.

ENDFORM. " REMOVE_TABLE_LOCK

&----


*& Form UPDATE_SPECIAL_USERS_T100B

&----


  • text

----


  • -->P_0802 text *

----


FORM UPDATE_SPECIAL_USERS_T100B USING VALUE(TYPE) TYPE C.

UPDATE T001B SET:

FRPE1 = PA_P1_L

TOPE1 = PA_P1_H

FRYE1 = SO_Y1-LOW

TOYE1 = SO_Y1-HIGH

WHERE BUKRS IN SO_BUKRS AND MKOAR = TYPE.

ENDFORM. " UPDATE_SPECIAL_USERS_T100B

&----


*& Form UPDATE_AUTH_GROUP

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM UPDATE_AUTH_GROUP.

IF NOT AUTH IS INITIAL OR NOT AUTH_CL IS INITIAL.

UPDATE T001B SET: BRGRU = AUTH

WHERE BUKRS IN SO_BUKRS AND MKOAR = '+'.

ENDIF.

ENDFORM. " UPDATE_AUTH_GROUP

2 REPLIES 2
Read only

Former Member
0 Likes
1,084

Hi,

You can use any message class and pass the message text to it. Generally we have a generic message & & & & create in one of the custom message classes, so as to pass the message text from the program as per the requirement.

You can also use existing messages -

Message class: UAC

Message No: 000

Thanks,

Pavan

Read only

naimesh_patel
Active Contributor
0 Likes
1,084

You can create your own class and you can use the exisitng one.

For Exisiting one, try to check message class F5 and F5A

Regards,

Naimesh Patel