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

Capture SLG1 error message

Former Member
0 Likes
1,359

Hi,

I want to download to excel all the error log messages which I get in SLG1 when I do mass article data upload for MM42 using BAPI.

Could someone tell me how to get message in SLG1 in the calling program so as to download only the text in excel.

Thanks in advance.

1 REPLY 1
Read only

Former Member
0 Likes
577

hi try functions like that

sample comes here:

TYPE-POOLS: icon.

  • Tabellen

DATA:

gt_log_handle TYPE bal_t_logh,

gt_lognumber TYPE bal_t_logn,

gt_msg_handle TYPE bal_t_msgh,

gt_log_header TYPE balhdr_t,

*

gt_log_filter TYPE bal_s_lfil, "Filter gesamt

gt_log_filter_obj TYPE bal_s_lfil-object, "Objekt

gt_log_filter_sub TYPE bal_s_lfil-subobject, "Unterobjekt

gt_log_filter_extn TYPE bal_s_lfil-extnumber, "Ext.Identifikation

gt_log_filter_user TYPE bal_s_lfil-aluser, "User

gt_log_filter_prcl TYPE bal_s_lfil-probclass, "Protokollklasse

gt_log_filter_dttm TYPE bal_s_lfil-date_time, "Datum/Zeit von-bis

gt_log_filter_alprog TYPE bal_s_lfil-alprog. "Programmname

  • Strukturen

DATA:

gs_log_header TYPE LINE OF balhdr_t,

gs_log_handle TYPE LINE OF bal_t_logh,

gs_lognumber TYPE LINE OF bal_t_logn,

gs_msg_ret TYPE bal_s_msg,

gs_msg_handle TYPE LINE OF bal_t_msgh,

gs_balloghndl TYPE balloghndl,

*

gs_log_filter_obj TYPE LINE OF bal_s_lfil-object, "Objekt

gs_log_filter_sub TYPE LINE OF bal_s_lfil-subobject, "Unterobjekt

gs_log_filter_extn TYPE LINE OF bal_s_lfil-extnumber, "Ext.Ident.

gs_log_filter_user TYPE LINE OF bal_s_lfil-aluser, "User

gs_log_filter_prcl TYPE LINE OF bal_s_lfil-probclass, "Protokollklasse

gs_log_filter_dttm TYPE bal_s_lfil-date_time, "Datum/Zeit

gs_log_filter_alprog TYPE LINE OF bal_s_lfil-alprog. "Programmname

  • Arbeitsfelder

DATA:

gs_txt_msg TYPE c,

gs_msg_text(90) TYPE c,

gv_do_not_load_messages TYPE boolean,

gv_tabix TYPE sy-tabix,

gs_marav TYPE marav.

*----


*

  • Abgrenzungen *

*----


*

SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_object FOR gs_log_filter_obj, "Objekt

s_subobj FOR gs_log_filter_sub, "SubObjekt

s_extnum FOR gs_log_filter_extn, "Ext.Ident.

s_aluser FOR gs_log_filter_user, "Benutzer

s_prcl FOR gs_log_filter_prcl, "Protokollklasse

s_alprog FOR gs_log_filter_alprog. "Programmname

PARAMETERS: p_err DEFAULT 'X' RADIOBUTTON GROUP r1,

p_all RADIOBUTTON GROUP r1.

SELECTION-SCREEN END OF BLOCK 1.

*

SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE text-002.

PARAMETERS: p_datev TYPE sy-datum DEFAULT sy-datum,

p_timev TYPE sy-uzeit DEFAULT '000000',

p_dateb TYPE sy-datum DEFAULT sy-datum,

p_timeb TYPE sy-uzeit DEFAULT '235959'.

SELECTION-SCREEN END OF BLOCK 2.

*----


*

  • Initialisierung *

*----


*

INITIALIZATION.

  • Objektname

gs_log_filter_obj-low = 'ZPP_MSG'.

gs_log_filter_obj-option = 'EQ'.

gs_log_filter_obj-sign = 'I'.

APPEND gs_log_filter_obj TO s_object.

  • Sub-Objekt

gs_log_filter_sub-low = 'EDOK2ERP_STAMM'.

gs_log_filter_sub-option = 'EQ'.

gs_log_filter_sub-sign = 'I'.

APPEND gs_log_filter_sub TO s_subobj.

  • Benutzer

gs_log_filter_user-low = sy-uname.

gs_log_filter_user-option = 'EQ'.

gs_log_filter_user-sign = 'I'.

APPEND gs_log_filter_user TO s_aluser.

*----


*

  • Datenselektion *

*----


*

START-OF-SELECTION.

  • Selektionstabellen übergeben

gt_log_filter-object[] = s_object[]. "Objekt

gt_log_filter-subobject[] = s_subobj[]. "SubObjekt

gt_log_filter-extnumber[] = s_extnum[]. "Ext.Ident.

gt_log_filter-aluser[] = s_aluser[]. "Benutzer

gt_log_filter-probclass[] = s_prcl[]. "Protokollklasse

gt_log_filter-alprog[] = s_alprog[]. "Programmname

  • Datum

gt_log_filter-date_time-date_from = p_datev.

gt_log_filter-date_time-time_from = p_timev.

gt_log_filter-date_time-date_to = p_dateb.

gt_log_filter-date_time-time_to = p_timeb.

  • Log's suchen

CALL FUNCTION 'BAL_DB_SEARCH'

EXPORTING

i_s_log_filter = gt_log_filter

IMPORTING

e_t_log_header = gt_log_header

EXCEPTIONS

log_not_found = 1

no_filter_criteria = 2

OTHERS = 3.

IF sy-subrc <> 0.

STOP.

ENDIF.

  • Log's in den Hauptspeicher laden

CALL FUNCTION 'BAL_DB_LOAD'

EXPORTING

i_t_log_header = gt_log_header

i_t_log_handle = gt_log_handle

i_t_lognumber = gt_lognumber

i_do_not_load_messages = gv_do_not_load_messages

  • I_DO_NOT_LOAD_MESSAGES = 'X'

IMPORTING

e_t_log_handle = gt_log_handle

e_t_msg_handle = gt_msg_handle

EXCEPTIONS

no_logs_specified = 1

log_not_found = 2

log_already_loaded = 3

OTHERS = 4.

IF sy-subrc <> 0.

STOP.

ENDIF.

LOOP AT gt_log_header INTO gs_log_header.

IF p_err <> space.

CHECK gs_log_header-msg_cnt_a > 0 OR

gs_log_header-msg_cnt_e > 0.

ELSEIF p_all <> space.

CHECK gs_log_header-msg_cnt_a > 0 OR

gs_log_header-msg_cnt_e > 0 OR

gs_log_header-msg_cnt_w > 0 OR

gs_log_header-msg_cnt_i > 0 OR

gs_log_header-msg_cnt_s > 0.

ENDIF.

  • Meldungen zum Log lesen

LOOP AT gt_msg_handle INTO gs_msg_handle.

CHECK gs_msg_handle(22) EQ gs_log_header-log_handle.

CALL FUNCTION 'BAL_LOG_MSG_READ'

EXPORTING

i_s_msg_handle = gs_msg_handle

  • i_s_msg_handle = gs_balmsghndl

i_langu = sy-langu

IMPORTING

e_s_msg = gs_msg_ret

  • E_EXISTS_ON_DB = 'X'

  • E_TXT_MSGTY =

  • E_TXT_MSGID =

  • E_TXT_DETLEVEL =

  • E_TXT_PROBCLASS =

e_txt_msg = gs_txt_msg

  • E_WARNING_TEXT_NOT_FOUND =

EXCEPTIONS

log_not_found = 1

msg_not_found = 2

OTHERS = 3.

  • Meldungstext aufbereiten

IF sy-subrc EQ 0.

CLEAR: gs_msg_text.

CALL FUNCTION 'BAL_DSP_TXT_MSG_READ'

EXPORTING

i_langu = sy-langu

i_msgid = gs_msg_ret-msgid

i_msgno = gs_msg_ret-msgno

i_msgv1 = gs_msg_ret-msgv1

i_msgv2 = gs_msg_ret-msgv2

i_msgv3 = gs_msg_ret-msgv3

i_msgv4 = gs_msg_ret-msgv4

IMPORTING

e_message_text = gs_msg_text.

WRITE: / gs_log_header-extnumber(18),

21 gs_log_header-aldate,

33 gs_log_header-altime,

42 gs_log_header-probclass,

50 gs_log_header-aluser,

64 gs_log_header-alprog(25),

89 gs_msg_ret-msgid,

91 gs_msg_ret-msgno,

99 gs_msg_text.

ENDIF.

ENDLOOP.

ENDLOOP.

  • Log's wieder freigeben

LOOP AT gt_log_handle INTO gs_log_handle.

gs_balloghndl = gs_log_handle.

CALL FUNCTION 'BAL_LOG_REFRESH'

EXPORTING

i_log_handle = gs_balloghndl

EXCEPTIONS

log_not_found = 1

OTHERS = 2.

IF sy-subrc <> 0.

ENDIF.

ENDLOOP.