banner



How To Create A Message Class In Sap Abap

Definition: Message classes are created within an ABAP project at the ABAP package level. They are used to group messages within a development object. So, you can combine related messages and reuse them in other programs. After creating a message class, you add the individual messages.

Message: Messages notify a user about unexpected behaviour, an error, a status, or a result of an action. An application will display the message at runtime. A message is specified by a unique 3-digit message number, a single-digit language key, text information, and a message class.

Why do we need message class in cloud ?

Some of you might think that , hey we have SAP UI5 on cloud for front end , so why do we need a message from backend to show messages ?

Front end is not aware of every action or event happening at backend so we need meaningful response

The fact is, UI could bind dynamic responses , so that whatever happens at backend could be shown via messages .

Creating Message Class :

Step 1 : Right click on Package -> New -> Other ABAP Repository Object.

SAP Cloud Platform, ABAP Development, ABAP RESTful Programming Model, SAP ABAP Exam Prep

Step 2 : Choose Message Classes -> Next

Update : Earlier message classes were found under Message Class section after the latest update its under Text.

SAP Cloud Platform, ABAP Development, ABAP RESTful Programming Model, SAP ABAP Exam Prep

Step 3 : Give a name and Description -> Next

SAP Cloud Platform, ABAP Development, ABAP RESTful Programming Model, SAP ABAP Exam Prep

Step 4 : Choose Transport Request-> Next

Step 5 : now our message class should look like:

SAP Cloud Platform, ABAP Development, ABAP RESTful Programming Model, SAP ABAP Exam Prep

Step 6 : Insert some Messages and their Numbers, By clicking the respective cells . Keep in mind that the message number is only three digits long. After entering the specific number of messages save the class (Activation is not required or not permitted for message classes , saving is enough.). Until you save the message there will be a lock symbol in the lock column , lock symbol indicates that the changes in the respective row is not saved .

◉ Before Saving:

SAP Cloud Platform, ABAP Development, ABAP RESTful Programming Model, SAP ABAP Exam Prep

◉ After Saving:

SAP Cloud Platform, ABAP Development, ABAP RESTful Programming Model, SAP ABAP Exam Prep

'&' – Is the Parameter to be passed to the message , which will replace the symbol with the value of the passed parameter at run time , currently message classes in sap cloud platform support up to 4 parameters , first symbol will be replaced with first parameter , second symbol with second parameter and so on .

Using Message Classes:  Custom Messages using the message class could be used thrown from a behaviour implementation class or a function module / class-method called/ initiated from a  behaviour implementation. Sadly Custom Entities does not support these messages to be thrown. These  messages could be thrown from create/update/delete methods or from save method according to the need .

Since we have three messages configured for Create, Update and Delete  we will respective messages from each method.

Basic Syntax for creation and returning messages:

DATA(item_msg) = new_message( id = 'Z_MESSAGE_CLASS'  " id = Name Of message class

number = '001' "number of message defined in the message class

severity = cl_abap_behv=>ms-success "type of message

v1 = ls_create-id "First Parameter

v2 = ''           "Second Parameter

v3 = ''           "Third Parameter

v4 = ''           "Fourth Parameter

).

************************** Apeending the Message Response ************************

APPEND VALUE #( %cid = ls_create-%cid " %cid = "Content ID" in ABAP Behavior

id = ls_create-id "key

%msg = item_msg "%msg  =  type ref to if_abap_behv_message / Message to be passed

) TO reported-zdatadefinition. "type response for reported early zdatadefinition

Now let's use the message in a behaviour Implementation :

This is a basic behaviour Implementation for a CDS.

CLASS lcl_buffer DEFINITION.

* 1) define the data buffer

PUBLIC SECTION.

TYPES: BEGIN OF ty_buffer.

INCLUDE TYPE  ztable  AS lv_table.

TYPES:   flag TYPE c LENGTH 1,

END OF ty_buffer.

CLASS-DATA mt_buffer TYPE TABLE OF ty_buffer.

ENDCLASS.

CLASS lhc_zdatadefinition DEFINITION INHERITING FROM cl_abap_behavior_handler.

PRIVATE SECTION.

METHODS create FOR MODIFY

IMPORTING entities FOR CREATE zdatadefinition.

METHODS delete FOR MODIFY

IMPORTING keys FOR DELETE zdatadefinition.

METHODS update FOR MODIFY

IMPORTING entities FOR UPDATE zdatadefinition.

METHODS read FOR READ

IMPORTING keys FOR READ zdatadefinition RESULT result.

ENDCLASS.

CLASS lhc_zdatadefinition IMPLEMENTATION.

METHOD create.

LOOP AT entities INTO DATA(ls_create).

INSERT VALUE #( flag = 'C' lv_table = CORRESPONDING #( ls_create-%data ) ) INTO TABLE lcl_buffer=>mt_buffer.

*********************Message Handling Create****************

************C reating Message using Message Class *************

DATA(item_msg) = new_message( id = 'Z_MESSAGE_CLASS'  " id = Name Of message class

number = '001' "number of message defined in the message class

severity = cl_abap_behv=>ms-success "type of message

v1 = ls_create-id "First Parameter

v2 = ''           "Second Parameter

v3 = ''           "Third Parameter

v4 = ''           "Fourth Parameter

).

************ Apeending the Message Response *************

APPEND VALUE #( %cid = ls_create-%cid " %cid = "Content ID" in ABAP Behavior

id = ls_create-id "key

%msg = item_msg "%msg  =  type ref to if_abap_behv_message / Message to be passed

) TO reported-zdatadefinition. "type response for reported early zdatadefinition

********************Message End****************

ENDLOOP.

ENDMETHOD.

METHOD delete.

LOOP AT keys INTO DATA(ls_delete).

READ TABLE lcl_buffer=>mt_buffer

ASSIGNING FIELD-SYMBOL(<ls_buffer>) WITH KEY id = ls_delete-id.

" not yet in buffer.

INSERT VALUE #( flag = 'D' id = ls_delete-id ) INTO TABLE lcl_buffer=>mt_buffer.

********************Message Handling Delete******************

***********C reating Message using Message Class ****************

DATA(item_msg) = new_message( id = 'Z_MESSAGE_CLASS'  " id = Name Of message class

number = '003' "number of message defined in the message class

severity = cl_abap_behv=>ms-success "type of message

v1 = ls_delete-id "First Parameter

v2 = ''           "Second Parameter

v3 = ''           "Third Parameter

v4 = ''           "Fourth Parameter

).

********************* Apeending the Message Response ***************

APPEND VALUE #( %cid = ls_delete-%cid_ref " %cid = "Content ID" in ABAP Behavior

id = ls_delete-id "key

%msg = item_msg "%msg  =  type ref to if_abap_behv_message / Message to be passed

) TO reported-zdatadefinition. "type response for reported early zdatadefinition

*********************Message End***************

ENDLOOP.

ENDMETHOD.

METHOD update.

LOOP AT entities INTO DATA(ls_update).

READ TABLE lcl_buffer=>mt_buffer

ASSIGNING FIELD-SYMBOL(<ls_buffer>) WITH KEY id = ls_update-id.

" not yet in buffer, read from table

SELECT SINGLE * FROM ztable WHERE id = @ls_update-id  INTO @DATA(ls_db).

INSERT VALUE #( flag = 'U' lv_table = ls_db ) INTO TABLE lcl_buffer=>mt_buffer ASSIGNING <ls_buffer>.

IF ls_update-%control-name IS NOT INITIAL..

<ls_buffer>-name = ls_update-name.

ENDIF.

*******************Message Handling Delete********************

************C reating Message using Message Class ************

DATA(item_msg) = new_message( id = 'Z_MESSAGE_CLASS'  " id = Name Of message class

number = '002' "number of message defined in the message class

severity = cl_abap_behv=>ms-success "type of message

v1 = ls_update-id "First Parameter

v2 = ''           "Second Parameter

v3 = ''           "Third Parameter

v4 = ''           "Fourth Parameter

).

************ Apeending the Message Response *********************

APPEND VALUE #( %cid = ls_update-%cid_ref " %cid = "Content ID" in ABAP Behavior

id = ls_update-id "key

%msg = item_msg "%msg  =  type ref to if_abap_behv_message / Message to be passed

) TO reported-zdatadefinition. "type response for reported early zdatadefinition

***********Message End*************

ENDLOOP.

ENDMETHOD.

METHOD read.

ENDMETHOD.

ENDCLASS.

CLASS lsc_zdatadefinition DEFINITION INHERITING FROM cl_abap_behavior_saver.

PROTECTED SECTION.

METHODS check_before_save REDEFINITION.

METHODS finalize          REDEFINITION.

METHODS save              REDEFINITION.

ENDCLASS.

CLASS lsc_zdatadefinition IMPLEMENTATION.

METHOD check_before_save.

ENDMETHOD.

METHOD finalize.

ENDMETHOD.

METHOD save.

DATA lt_table TYPE STANDARD TABLE OF ztable.

" find all rows in buffer with flag = created

lt_table = VALUE #(  FOR row IN lcl_buffer=>mt_buffer WHERE  ( flag = 'C' ) (  row-lv_table ) ).

IF lt_table IS NOT INITIAL.

INSERT ztable FROM TABLE @lt_table.

ENDIF.

" find all rows in buffer with flag = updated

lt_table = VALUE #(  FOR row IN lcl_buffer=>mt_buffer WHERE  ( flag = 'U' ) (  row-lv_table ) ).

IF lt_table IS NOT INITIAL.

UPDATE ztable FROM TABLE @lt_table.

ENDIF.

" find all rows in buffer with flag = deleted

lt_table = VALUE #(  FOR row IN lcl_buffer=>mt_buffer WHERE  ( flag = 'D' ) (  row-lv_table ) ).

IF lt_table IS NOT INITIAL.

DELETE ztable FROM TABLE @lt_table.

ENDIF.

CLEAR lcl_buffer=>mt_buffer.

ENDMETHOD.

ENDCLASS.

Before use of custom messages:

◉ Creating:

SAP Cloud Platform, ABAP Development, ABAP RESTful Programming Model, SAP ABAP Exam Prep

◉ Updating:

SAP Cloud Platform, ABAP Development, ABAP RESTful Programming Model, SAP ABAP Exam Prep

◉ Deleting:

SAP Cloud Platform, ABAP Development, ABAP RESTful Programming Model, SAP ABAP Exam Prep

After use of custom messages :

◉ Creating:

SAP Cloud Platform, ABAP Development, ABAP RESTful Programming Model, SAP ABAP Exam Prep

Updating:

SAP Cloud Platform, ABAP Development, ABAP RESTful Programming Model, SAP ABAP Exam Prep

Deleting:

SAP Cloud Platform, ABAP Development, ABAP RESTful Programming Model, SAP ABAP Exam Prep

Types of messages:

Message classes support different types of messages which will be available to front end via responses, Error messages will be in error response , Success messages will be retuned in Success .

1. Error Messages.

severity = cl_abap_behv=>ms-error

2. None Messages

severity = cl_abap_behv=>ms-none​

3. Warning Messages

severity = cl_abap_behv=>ms-warning​

4. Information Messages

severity = cl_abap_behv=>ms-warning​

5. Success Messages

severity = cl_abap_behv=>ms-success​

How To Create A Message Class In Sap Abap

Source: http://sapabapcentral.blogspot.com/2020/08/message-classes-sap-cloud-platform.html

Posted by: robinsonlitaltalat.blogspot.com

0 Response to "How To Create A Message Class In Sap Abap"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel