Skip to content

Commit

Permalink
Add ALV table for BAL message details
Browse files Browse the repository at this point in the history
Adds the possibility to show a ALV table for message details of a BAL message
  • Loading branch information
chriss158 committed Sep 29, 2023
1 parent 5e35a5d commit 67cfbf9
Show file tree
Hide file tree
Showing 8 changed files with 444 additions and 48 deletions.
22 changes: 22 additions & 0 deletions src/example/zalog_example_bal_logger.prog.abap
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,22 @@ go_logger->warning( `Warning` ) ##NO_TEXT.
go_logger->error( `Error` ) ##NO_TEXT.
go_logger->debug( `Debug` ) ##NO_TEXT.

DATA gt_table TYPE STANDARD TABLE OF bal_s_ex06.

gt_table = VALUE #( ( id = '00000002' txt_id = 'Chris Smith' )
( id = '00000013' txt_id = 'Paula Quick' )
( id = '00000002' txt_id = 'Tim Meyer' ) ) ##NO_TEXT.

" If you use a object for the logger and therefore save the log to the database,
" please do not use the callback parameters.
" The logger itself will handle the display of the data table
go_logger->prepare_table( it_table = gt_table
iv_table_struc_type_name = 'BAL_S_EX06'
iv_callback_form = 'LOG_CALLBACK'
iv_callback_program = sy-repid ).

go_logger->info( 'Info with attached table!' ) ##NO_TEXT.

MESSAGE e000(zalog) WITH 'Message class error' INTO DATA(gv_dummy) ##NEEDED ##NO_TEXT.
go_logger->entry_msg( ).

Expand All @@ -15,3 +31,9 @@ go_logger->prepare_context( VALUE #( tabname = 'T000'
go_logger->info( `Info with context` ) ##NO_TEXT.

go_logger->show_log_entries( ).

FORM log_callback
TABLES
it_params STRUCTURE spar ##CALLED.
go_logger->log_callback_alv( it_params[] ).
ENDFORM.
3 changes: 3 additions & 0 deletions src/zalog.fugr.lzalogtop.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
FUNCTION-POOL ZALOG. "MESSAGE-ID ..

* INCLUDE LZALOGD... " Local class definition
17 changes: 17 additions & 0 deletions src/zalog.fugr.lzalogtop.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<PROGDIR>
<NAME>LZALOGTOP</NAME>
<DBAPL>S</DBAPL>
<DBNA>D$</DBNA>
<SUBC>I</SUBC>
<APPL>S</APPL>
<FIXPT>X</FIXPT>
<LDBNAME>D$S</LDBNAME>
<UCCHECK>X</UCCHECK>
</PROGDIR>
</asx:values>
</asx:abap>
</abapGit>
15 changes: 15 additions & 0 deletions src/zalog.fugr.saplzalog.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
*******************************************************************
* System-defined Include-files. *
*******************************************************************
INCLUDE LZALOGTOP. " Global Declarations
INCLUDE LZALOGUXX. " Function Modules

*******************************************************************
* User-defined Include-files (if necessary). *
*******************************************************************
* INCLUDE LZALOGF... " Subroutines
* INCLUDE LZALOGO... " PBO-Modules
* INCLUDE LZALOGI... " PAI-Modules
* INCLUDE LZALOGE... " Events
* INCLUDE LZALOGP... " Local class implement.
* INCLUDE LZALOGT99. " ABAP Unit tests
18 changes: 18 additions & 0 deletions src/zalog.fugr.saplzalog.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<PROGDIR>
<NAME>SAPLZALOG</NAME>
<DBAPL>S</DBAPL>
<DBNA>D$</DBNA>
<SUBC>F</SUBC>
<APPL>S</APPL>
<RLOAD>D</RLOAD>
<FIXPT>X</FIXPT>
<LDBNAME>D$S</LDBNAME>
<UCCHECK>X</UCCHECK>
</PROGDIR>
</asx:values>
</asx:abap>
</abapGit>
28 changes: 28 additions & 0 deletions src/zalog.fugr.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_FUGR" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<INCLUDES>
<SOBJ_NAME>LZALOGTOP</SOBJ_NAME>
<SOBJ_NAME>SAPLZALOG</SOBJ_NAME>
</INCLUDES>
<FUNCTIONS>
<item>
<FUNCNAME>ZALOG_MSG_CALLBACK</FUNCNAME>
<TABLES>
<RSTBL>
<PARAMETER>I_T_PARAMS</PARAMETER>
<TYP>SPAR</TYP>
</RSTBL>
</TABLES>
<DOCUMENTATION>
<RSFDO>
<PARAMETER>I_T_PARAMS</PARAMETER>
<KIND>P</KIND>
</RSFDO>
</DOCUMENTATION>
</item>
</FUNCTIONS>
</asx:values>
</asx:abap>
</abapGit>
35 changes: 35 additions & 0 deletions src/zalog.fugr.zalog_msg_callback.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
FUNCTION zalog_msg_callback.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" TABLES
*" I_T_PARAMS STRUCTURE SPAR
*"----------------------------------------------------------------------
DATA(lv_lognumber) = i_t_params[ param = '%LOGNUMBER' ]-value.
IF lv_lognumber(1) = '$'.
" This is not possible because message details table is not exported if log is not saved to database
RETURN.
ENDIF.

DATA(lv_msgnr) = CONV balmnr( i_t_params[ param = 'MSGNR' ]-value ).

DATA lt_table_types TYPE string_table.
LOOP AT i_t_params REFERENCE INTO DATA(lr_param) WHERE param CP 'TS_*'.
APPEND lr_param->*-value TO lt_table_types.
ENDLOOP.

zcl_alog_bal_logger=>get_msg_details_abap_descr( EXPORTING it_table_struc_type_names = lt_table_types
IMPORTING eo_table_def = DATA(lo_table_def) ).
FIELD-SYMBOLS <lt_msg_details> TYPE ANY TABLE.
DATA lt_msg_details TYPE REF TO data.
CREATE DATA lt_msg_details TYPE HANDLE lo_table_def.
ASSIGN lt_msg_details->* TO <lt_msg_details>.

IMPORT mt_msg_details TO <lt_msg_details> FROM DATABASE bal_indx(al) ID lv_lognumber.
IF sy-subrc <> 0.
CLEAR <lt_msg_details>.
RETURN.
ENDIF.

zcl_alog_bal_logger=>show_message_alv( iv_msgnr = lv_msgnr
it_message_details = <lt_msg_details> ).
ENDFUNCTION.
Loading

0 comments on commit 67cfbf9

Please sign in to comment.