‎2008 May 05 10:57 PM
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
‎2008 May 05 11:08 PM
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
‎2008 May 05 11:10 PM
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