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

BDC

Former Member
0 Likes
557

hI all,

I would like to take print a report of all errors in bdc session where it stores in a log file. how can we get all the errors from a log file through a program. means how can we know the log file name. my idea is if we know the log file name by using ws_upload we will get that data into internal table. by using that internal table we can print a report. where can we get the log file name or is there any other method.

pls help me out.

rewards will be awarded.

4 REPLIES 4
Read only

Former Member
0 Likes
503

Hai

Please Refer this program

&----


*& Report ZSUBTEST_BDC

*&

&----


*&

*&

&----


----


*& Program Name : ZSUBTEST_BDC *

*& Module Name : Human Resource *

*& Sub-Module : Cross Component *

*& Author : Ravi Vadlakunta *

*& Create Date : 05/28/2003 *

*& Logical DB : None *

*& Program Type : Report *

*& SAP Release : 4.7 *

*& Description:

*& Program to read BDC Errors from SM35 and give the output report *

*& in ALV format - Ravi Vadlakunta. *

&----


REPORT ZSUBTEST_BDC NO STANDARD PAGE HEADING

LINE-SIZE 300

LINE-COUNT 65.

TABLES: apqd, apql, apqi, t100, dd03l, dd04t.

DATA : BEGIN OF tbl_apqi OCCURS 0 .

INCLUDE STRUCTURE apqi.

DATA: END OF tbl_apqi.

DATA: dynpro_index TYPE i,

sdat LIKE apqd-vardata,

udat LIKE apqd-vardata,

bdcmhlen TYPE i VALUE 68,

wcount TYPE i,

mfstart TYPE i,

mfende TYPE i,

mflen TYPE i,

mfart(2).

*

DATA: BEGIN OF tf OCCURS 0,

count TYPE i VALUE 0,

trcd(4),

stat(4),

pgm(8),

dyn(4) TYPE n,

fname(35),

farg(80),

fstart(5) TYPE p,

fende(5) TYPE p,

END OF tf.

TYPE-POOLS slis.

DATA : BEGIN OF tbl_apqd OCCURS 0.

INCLUDE STRUCTURE apqd.

DATA: END OF tbl_apqd.

DATA: BEGIN OF all_bdc_dynpro OCCURS 0,

program LIKE sy-cprog,

dynpro LIKE sy-dynnr,

fnam LIKE bdcdata-fnam,

fval LIKE bdcdata-fval,

index TYPE i,

END OF all_bdc_dynpro.

DATA :BEGIN OF bdcmh,

mtype, state,

tcode(20),

prog(40),

dynr(4),

sepc,

filler,

END OF bdcmh.

DATA: BEGIN OF bdcth,

mtype,

state,

tcode(20),

postg,

print,

msgid(20),

END OF bdcth.

DATA: BEGIN OF all_bdc_tcodes OCCURS 0,

index TYPE i,

tcode LIKE sy-tcode,

status(1),

s_text(16),

pernr(400),

groupid LIKE apqi-groupid,

qid LIKE apqi-qid,

END OF all_bdc_tcodes.

DATA:

logtab LIKE bdcld OCCURS 0 WITH HEADER LINE,

tbl_temse LIKE apql OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF tbl_bdcld OCCURS 0,

qid LIKE bdcld-quid.

INCLUDE STRUCTURE bdcld. "

DATA: logname(80), " protokollpfad

local_host(12), " lokaler rechner

cnt TYPE i, " satzzaehler

active(1) TYPE c, " active flag

temseid TYPE rstsoname. " TemSe ID

DATA END OF tbl_bdcld .

DATA : tbl_temp_bdcld LIKE tbl_bdcld OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF tbl_bdclm OCCURS 0,

qid LIKE apqi-qid.

INCLUDE STRUCTURE bdclm.

DATA: counter TYPE i,

longtext TYPE bdc_mpar,

text_caps TYPE bdc_mpar,

END OF tbl_bdclm .

DATA: lm LIKE tbl_bdclm,

save_mpar TYPE bdc_mpar,

mtext(124) TYPE c,

mtext1(124) TYPE c,

mtext2(273) TYPE c,

digits(10) TYPE c VALUE '0123456789'.

DATA: do_condense TYPE c,

mtvaroff TYPE i,

showtyp(05) TYPE c, "showtyp

lmapn(12) TYPE c, "Hilfsfeld log-mapn

date1 TYPE d,

linct0 LIKE sy-linct,

parcnt TYPE i,

sp_len TYPE i,

charcnt TYPE i,

wcnt TYPE i,

mparcnt TYPE i,

qfound(04) TYPE n,

x(1) VALUE 'X'.

DATA :BEGIN OF mt,

off(02) TYPE n,

len(02) TYPE n,

text(80),

END OF mt.

DATA: "Aufbereitung Messagetext

BEGIN OF mttab OCCURS 4,

off(02) TYPE n,

len(02) TYPE n,

text(80),

END OF mttab.

DATA: BEGIN OF par,

len(02) TYPE n,

text(254),

END OF par.

DATA : BEGIN OF tbl_out OCCURS 0,

index LIKE all_bdc_tcodes-index,

info(35),

module LIKE tbl_bdclm-module,

screen LIKE tbl_bdclm-dynr,

error_message LIKE tbl_bdclm-longtext,

groupid LIKE apqi-groupid,

qid LIKE apqi-qid,

END OF tbl_out.

DATA : x_catalog TYPE slis_fieldcat_alv.

DATA : x_sort TYPE slis_sortinfo_alv.

DATA : i_catalog TYPE slis_t_fieldcat_alv.

DATA : i_sort TYPE slis_t_sortinfo_alv.

DATA: gt_list_top_of_page TYPE slis_t_listheader.

DATA : gt_events TYPE slis_t_event.

FIELD-SYMBOLS:

<mtxt>,

<vtxt>.

CONSTANTS : c_x VALUE 'X',

c_i VALUE 'I'.

CONSTANTS : gc_formname_top_of_page TYPE slis_formname

VALUE 'TOP_OF_PAGE'.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME .

PARAMETERS : p_sess LIKE apql-groupid OBLIGATORY,

p_user LIKE apql-creator OBLIGATORY,

p_date LIKE sy-datum OBLIGATORY.

SELECT-OPTIONS: s_time FOR sy-uzeit OBLIGATORY.

PARAMETERS: p_string(35) OBLIGATORY,

p_mess(35) .

SELECT-OPTIONS: s_excl FOR tbl_bdclm-longtext NO INTERVALS.

PARAMETERS: p_lgindx OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b1.

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

PARAMETERS: p_err AS CHECKBOX DEFAULT 'X',

p_war AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK b2.

----


START-OF-SELECTION.

PERFORM select_session_data.

PERFORM get_logs.

----


END-OF-SELECTION.

PERFORM move_final_data_to_tblout.

PERFORM build_catalog.

PERFORM sort.

PERFORM display_alv.

&----


*& Form get_session_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_session_data.

MOVE tbl_apqd-vardata TO bdcmh.

TRANSLATE bdcmh TO UPPER CASE.

MOVE tbl_apqd-vardata TO sdat.

SHIFT sdat BY bdcmhlen PLACES.

wcount = bdcmhlen.

mfstart = wcount.

mfart = 'FN'.

WHILE wcount LE tbl_apqd-varlen.

IF sdat(1) = bdcmh-sepc.

mfende = wcount.

PERFORM move_tf.

ENDIF.

SHIFT sdat.

wcount = wcount + 1.

ENDWHILE.

ENDFORM. " get_session_data

&----


*& Form MOVE_TF

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM move_tf.

mflen = mfende - mfstart.

CASE mfart.

WHEN 'FN'.

CLEAR: tf-fname, udat.

tf-fstart = mfstart.

MOVE tbl_apqd-vardata TO udat.

SHIFT udat BY mfstart PLACES.

WRITE udat TO tf-fname+0(mflen).

TRANSLATE tf-fname TO UPPER CASE.

mfstart = mfende + 1.

mfende = 0.

MOVE 'FA' TO mfart.

WHEN 'FA'.

CLEAR: tf-farg, udat.

tf-fende = mfende.

MOVE tbl_apqd-vardata TO udat.

SHIFT udat BY mfstart PLACES.

WRITE udat TO tf-farg+0(mflen).

APPEND tf.

tf-stat = space.

mfstart = mfende + 1.

mfende = 0.

MOVE 'FN' TO mfart.

CHECK NOT tf-fname IS INITIAL.

CLEAR all_bdc_dynpro.

all_bdc_dynpro-index = dynpro_index.

all_bdc_dynpro-fnam = tf-fname.

all_bdc_dynpro-fval = tf-farg.

APPEND all_bdc_dynpro.

WHEN OTHERS.

ENDCASE.

ENDFORM. " MOVE_TF

&----


*& Form get_logs

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_logs.

DATA: BEGIN OF logtable OCCURS 50, " plain log information in TemSe

enterdate LIKE btctle-enterdate,

entertime LIKE btctle-entertime,

  • logmessage(900) type c,

logmessage(400) TYPE c,

END OF logtable.

LOOP AT tbl_apqi.

SELECT * FROM apql APPENDING TABLE tbl_temse WHERE qid =

tbl_apqi-qid.

ENDLOOP.

CHECK sy-subrc = 0.

DATA: wa_log LIKE LINE OF tbl_temse,

wa_ld LIKE LINE OF tbl_bdcld.

LOOP AT tbl_temse INTO wa_log.

CLEAR wa_ld.

wa_ld-temseid = wa_log-temseid.

wa_ld-lmand = wa_log-mandant.

wa_ld-edate = wa_log-credate.

wa_ld-etime = wa_log-cretime.

wa_ld-luser = wa_log-creator.

wa_ld-grpn = wa_log-groupid.

wa_ld-quid = wa_log-qid.

wa_ld-local_host = wa_log-destsys(8).

wa_ld-qid = wa_log-qid.

APPEND wa_ld TO tbl_bdcld.

ENDLOOP.

SORT tbl_bdcld BY qid ASCENDING edate DESCENDING etime DESCENDING.

  • read table bdcld index 1.

LOOP AT tbl_bdcld.

MOVE : tbl_bdcld TO tbl_temp_bdcld.

APPEND tbl_temp_bdcld.

AT END OF qid.

SORT tbl_temp_bdcld BY qid ASCENDING edate DESCENDING

etime DESCENDING.

READ TABLE tbl_temp_bdcld INDEX p_lgindx.

PERFORM read_bdc_log_plain

TABLES logtable

USING tbl_temp_bdcld-temseid tbl_temp_bdcld-lmand.

LOOP AT logtable.

CLEAR tbl_bdclm.

tbl_bdclm-indate = logtable-enterdate.

tbl_bdclm-qid = tbl_temp_bdcld-qid.

tbl_bdclm-intime = logtable-entertime.

tbl_bdclm+34(300) = logtable-logmessage.

  • tbl_bdclm-mpar = logtable-logmessage.

APPEND tbl_bdclm.

ENDLOOP.

REFRESH: tbl_temp_bdcld.

CLEAR tbl_temp_bdcld.

ENDAT.

ENDLOOP.

LOOP AT tbl_bdclm.

lm = tbl_bdclm. save_mpar = tbl_bdclm-mpar.

PERFORM get_text.

tbl_bdclm-longtext = mtext.

tbl_bdclm-mpar = save_mpar.

MOVE tbl_bdclm-longtext TO tbl_bdclm-text_caps.

TRANSLATE tbl_bdclm-text_caps TO UPPER CASE.

MODIFY tbl_bdclm.

ENDLOOP.

IF p_err IS INITIAL.

DELETE tbl_bdclm WHERE mart = 'E'.

ENDIF.

IF p_war IS INITIAL.

DELETE tbl_bdclm WHERE mart = 'W'.

ENDIF.

IF NOT s_excl IS INITIAL.

DELETE tbl_bdclm WHERE text_caps IN s_excl.

ENDIF.

ENDFORM. " get_logs

&----


*& Form READ_BDC_LOG_PLAIN

&----


  • text

----


  • -->P_LOGTABLE text

  • -->P_BDCLD_TEMSEID text

  • -->P_BDCLD_LMAND text

----


FORM read_bdc_log_plain

TABLES

log_table

USING

log_name log_client.

FREE log_table.

CALL FUNCTION 'RSTS_OPEN_RLC'

EXPORTING

name = log_name

client = log_client

authority = 'BATCH'

prom = 'I'

rectyp = 'VNL----'

EXCEPTIONS

fb_call_handle = 4

fb_error = 8

fb_rsts_noconv = 12

fb_rsts_other = 16

no_object = 20

OTHERS = 24.

IF sy-subrc > 0.

EXIT.

ENDIF.

CALL FUNCTION 'RSTS_READ'

TABLES

datatab = log_table

EXCEPTIONS

fb_call_handle = 4

fb_error = 8

fb_rsts_noconv = 12

fb_rsts_other = 16

OTHERS = 16.

IF sy-subrc > 0.

EXIT.

ENDIF.

CALL FUNCTION 'RSTS_CLOSE'

EXCEPTIONS

OTHERS = 4.

IF sy-subrc > 0.

EXIT.

ENDIF.

ENDFORM. " READ_BDC_LOG_PLAIN

&----


*& Form GET_TEXT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_text.

DATA: shiftln TYPE i,

vartcnt TYPE i,

fdpos LIKE sy-fdpos.

IF tbl_bdclm-mparcnt CN digits.

tbl_bdclm-mparcnt = 0.

ENDIF.

SELECT SINGLE * FROM t100

WHERE sprsl = sy-langu

AND arbgb = tbl_bdclm-mid

AND msgnr = tbl_bdclm-mnr.

*

IF sy-subrc EQ 0.

CLEAR: mtext,

parcnt,

mparcnt,

charcnt,

wcnt,

mt,

sp_len,

sy-fdpos.

*

MOVE tbl_bdclm-mparcnt TO mparcnt.

*

IF t100-text CA '$&'.

MOVE t100-text TO mtext1.

ELSE.

MOVE t100-text TO mtext.

EXIT.

ENDIF.

REFRESH mttab.

CLEAR shiftln.

DO mparcnt TIMES.

CLEAR: par, mttab.

MOVE tbl_bdclm-mpar TO par.

IF par-len CN digits OR par-len EQ 0.

par-len = 1.

ENDIF.

WRITE par-text TO mttab-text(par-len).

MOVE par-len TO mttab-len.

MOVE mparcnt TO mttab-off.

APPEND mttab.

shiftln = par-len + 2.

SHIFT tbl_bdclm-mpar BY shiftln PLACES.

ENDDO.

*

mtext2 = mtext1.

IF tbl_bdclm-mid EQ '00' AND

tbl_bdclm-mnr EQ '368' AND

tbl_bdclm-mart EQ 'S'.

CLEAR mtext2.

CLEAR mttab.

READ TABLE mttab INDEX 1.

WRITE mttab-text TO mtext2+0(mttab-len).

CLEAR mttab.

READ TABLE mttab INDEX 2.

WRITE mttab-text TO mtext2+35(mttab-len).

mtext = mtext2.

EXIT.

ENDIF.

do_condense = x.

CLEAR: mt, vartcnt, mtvaroff.

WHILE vartcnt LE 3.

vartcnt = vartcnt + 1.

IF mtext1 CA '$&'.

parcnt = parcnt + 1.

IF sy-fdpos GT 0.

fdpos = sy-fdpos - 1.

ELSE.

fdpos = sy-fdpos.

ENDIF.

SHIFT mtext1 BY sy-fdpos PLACES.

IF mtext1(1) EQ '&'.

SHIFT mtext1 BY 1 PLACES.

CASE mtext1(1).

WHEN ' '.

PERFORM replace_var USING '& ' parcnt fdpos.

WHEN '$'.

PERFORM replace_var USING '&&' 0 fdpos.

WHEN '1'.

PERFORM replace_var USING '&1' 1 fdpos.

WHEN '2'.

PERFORM replace_var USING '&2' 2 fdpos.

WHEN '3'.

PERFORM replace_var USING '&3' 3 fdpos.

WHEN '4'.

PERFORM replace_var USING '&4' 4 fdpos.

WHEN OTHERS.

PERFORM replace_var USING '&<' parcnt fdpos.

ENDCASE.

ENDIF.

IF mtext1(1) EQ '$'.

SHIFT mtext1 BY 1 PLACES.

CASE mtext1(1).

WHEN ' '.

PERFORM replace_var USING '$ ' parcnt fdpos.

WHEN '$'.

PERFORM replace_var USING '$$' 0 fdpos.

WHEN '1'.

PERFORM replace_var USING '$1' 1 fdpos.

WHEN '2'.

PERFORM replace_var USING '$2' 2 fdpos.

WHEN '3'.

PERFORM replace_var USING '$3' 3 fdpos.

WHEN '4'.

PERFORM replace_var USING '$4' 4 fdpos.

WHEN OTHERS.

PERFORM replace_var USING '$<' parcnt fdpos.

ENDCASE.

ENDIF.

ENDIF.

ENDWHILE.

*

IF mtext2 CA '%%_D_%%'.

REPLACE '%%_D_%%' WITH '$' INTO mtext2.

ENDIF.

IF mtext2 CA '%%_A_%%'.

REPLACE '%%_A_%%' WITH '&' INTO mtext2.

ENDIF.

IF do_condense EQ space.

mtext = mtext2.

ELSE.

CONDENSE mtext2 .

mtext = mtext2.

ENDIF.

ELSE.

mtext = '???????????????????????????????????????????????????'.

ENDIF.

ENDFORM. " GET_TEXT

&----


*& Form REPLACE_VAR

&----


  • text

----


  • -->P_1209 text

  • -->P_PARCNT text

  • -->P_FDPOS text

----


FORM replace_var USING vark vari varpos.

DATA: var(02),

var1,

moff TYPE i.

*

CLEAR: mttab , moff.

var = vark.

SHIFT var BY 1 PLACES.

CASE var.

WHEN ' '.

READ TABLE mttab INDEX vari.

IF sy-subrc EQ 0.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

ASSIGN mttab-text(mttab-len) TO <vtxt>.

var1 = vark.

REPLACE var1 WITH <vtxt> INTO <mtxt>.

mtvaroff = mttab-len.

ELSE.

IF vari GT mparcnt.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE vark WITH ' ' INTO <mtxt>.

mtvaroff = 2.

ELSE.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE vark WITH '%%_Z_%%' INTO <mtxt>.

mtvaroff = 7.

ENDIF.

ENDIF.

WHEN '$'.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE vark WITH '%%_D_%%' INTO <mtxt>.

mtvaroff = 7.

WHEN '&'.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE vark WITH '%%_A_%%' INTO <mtxt>.

mtvaroff = 7.

WHEN '<'.

READ TABLE mttab INDEX vari.

IF sy-subrc EQ 0.

IF vark EQ '&<'.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

ASSIGN mttab-text(mttab-len) TO <vtxt>.

REPLACE '&' WITH <vtxt> INTO <mtxt>.

mtvaroff = mttab-len.

ENDIF.

IF vark EQ '$<'.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

ASSIGN mttab-text(mttab-len) TO <vtxt>.

REPLACE '$' WITH <vtxt> INTO <mtxt>.

mtvaroff = mttab-len.

ENDIF.

ELSE.

IF vark EQ '&<'.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE '&' WITH ' ' INTO <mtxt>.

mtvaroff = 1.

ENDIF.

IF vark EQ '$<'.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE '$' WITH ' ' INTO <mtxt>.

mtvaroff = 1.

ENDIF.

ENDIF.

WHEN '1'.

READ TABLE mttab INDEX 1.

IF sy-subrc EQ 0.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

ASSIGN mttab-text(mttab-len) TO <vtxt>.

REPLACE vark WITH <vtxt> INTO <mtxt>.

mtvaroff = mttab-len.

ELSE.

IF vari GT mparcnt.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE vark WITH ' ' INTO <mtxt>.

mtvaroff = 2.

ELSE.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE vark WITH '%%_Z_%%' INTO <mtxt>.

mtvaroff = 7.

ENDIF.

ENDIF.

WHEN '2'.

READ TABLE mttab INDEX 2.

IF sy-subrc EQ 0.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

ASSIGN mttab-text(mttab-len) TO <vtxt>.

REPLACE vark WITH <vtxt> INTO <mtxt>.

mtvaroff = mttab-len.

ELSE.

IF vari GT mparcnt.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE vark WITH ' ' INTO <mtxt>.

mtvaroff = 2.

ELSE.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE vark WITH '%%_Z_%%' INTO <mtxt>.

mtvaroff = 7. ""

ENDIF.

ENDIF.

WHEN '3'.

READ TABLE mttab INDEX 3.

IF sy-subrc EQ 0.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

ASSIGN mttab-text(mttab-len) TO <vtxt>.

REPLACE vark WITH <vtxt> INTO <mtxt>.

mtvaroff = mttab-len.

ELSE.

IF vari GT mparcnt.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE vark WITH ' ' INTO <mtxt>.

mtvaroff = 2.

ELSE.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE vark WITH '%%_Z_%%' INTO <mtxt>.

mtvaroff = 7.

ENDIF.

ENDIF.

WHEN '4'.

READ TABLE mttab INDEX 4.

IF sy-subrc EQ 0.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

ASSIGN mttab-text(mttab-len) TO <vtxt>.

REPLACE vark WITH <vtxt> INTO <mtxt>.

mtvaroff = mttab-len.

ELSE.

IF vari GT mparcnt.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE vark WITH ' ' INTO <mtxt>.

mtvaroff = 2.

ELSE.

moff = varpos + mtvaroff.

ASSIGN mtext2+moff(*) TO <mtxt>.

REPLACE vark WITH '%%_Z_%%' INTO <mtxt>.

mtvaroff = 7.

ENDIF.

ENDIF.

*

ENDCASE.

*

do_condense = space.

ENDFORM. " REPLACE_VAR

&----


*& Form build_catalog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_catalog.

DATA : tablenam LIKE dd03l-tabname,

fieldnam LIKE dd03l-fieldname,

pos TYPE i.

SPLIT p_string AT '-' INTO tablenam fieldnam.

SELECT SINGLE * FROM dd03l INTO dd03l WHERE tabname = tablenam AND

fieldname = fieldnam.

SELECT SINGLE * FROM dd04t WHERE rollname = dd03l-rollname AND

ddlanguage = 'E'.

ADD 1 TO pos.

x_catalog-fieldname = 'GROUPID'.

  • x_catalog-col_pos = 1.

x_catalog-outputlen = '15'.

x_catalog-seltext_l = 'Session Name'(047).

APPEND x_catalog TO i_catalog.

CLEAR x_catalog.

ADD 1 TO pos.

x_catalog-fieldname = 'QID'.

  • x_catalog-col_pos = 1.

x_catalog-outputlen = '20'.

x_catalog-seltext_l = 'Queue ID'(047).

x_catalog-no_out = 'X'.

APPEND x_catalog TO i_catalog.

CLEAR x_catalog.

ADD 1 TO pos.

x_catalog-fieldname = 'INDEX'.

  • x_catalog-col_pos = 2.

x_catalog-outputlen = '8'.

x_catalog-seltext_l = 'Index'(047).

APPEND x_catalog TO i_catalog.

CLEAR x_catalog.

ADD 1 TO pos.

x_catalog-fieldname = 'INFO'.

  • x_catalog-col_pos = 3.

x_catalog-outputlen = '10'.

x_catalog-seltext_l = dd04t-scrtext_s.

APPEND x_catalog TO i_catalog.

CLEAR x_catalog.

ADD 1 TO pos.

x_catalog-fieldname = 'MODULE'.

  • x_catalog-col_pos = 4.

x_catalog-outputlen = '8'.

x_catalog-seltext_l = 'Program'(007).

APPEND x_catalog TO i_catalog.

CLEAR x_catalog.

ADD 1 TO pos.

x_catalog-fieldname = 'SCREEN'.

  • x_catalog-col_pos = 5.

x_catalog-outputlen = '4'.

x_catalog-seltext_l = 'Screen'(075).

  • X_CATALOG-NO_OUT = 'X'.

APPEND x_catalog TO i_catalog.

CLEAR x_catalog.

ADD 1 TO pos.

x_catalog-fieldname = 'ERROR_MESSAGE'.

  • x_catalog-col_pos = 6.

x_catalog-outputlen = '254'.

x_catalog-seltext_l = 'Error Message'(076).

APPEND x_catalog TO i_catalog.

CLEAR x_catalog.

ENDFORM. " build_catalog

&----


*& Form sort

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM sort.

DATA : srtpos TYPE i.

ADD 1 TO srtpos.

  • x_sort-spos = 1.

x_sort-fieldname = 'GROUPID'.

x_sort-up = c_x.

x_sort-subtot = c_x.

APPEND x_sort TO i_sort.

CLEAR x_sort.

*add 1 to srtpos.

    • x_sort-spos = 1.

  • x_sort-fieldname = 'QID'.

  • x_sort-up = c_x.

  • x_sort-subtot = c_x.

  • append x_sort to i_sort.

  • clear x_sort.

ADD 1 TO srtpos.

  • x_sort-spos = 2.

x_sort-fieldname = 'INDEX'.

x_sort-up = c_x.

x_sort-subtot = c_x.

APPEND x_sort TO i_sort.

CLEAR x_sort.

ADD 1 TO srtpos.

  • x_sort-spos = 3.

x_sort-fieldname = 'INFO'.

x_sort-up = c_x.

x_sort-subtot = c_x.

APPEND x_sort TO i_sort.

CLEAR x_sort.

ADD 1 TO srtpos.

  • x_sort-spos = 4.

x_sort-fieldname = 'ERROR_MESSAGE'.

x_sort-up = c_x.

x_sort-subtot = c_x.

APPEND x_sort TO i_sort.

CLEAR x_sort.

ENDFORM. " sort

&----


*& Form display_alv

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_alv.

PERFORM eventtab_build USING gt_events[].

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

i_callback_program = 'ZSUBTEST_BDC'

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE = v_grid_title

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

it_fieldcat = i_catalog

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

it_sort = i_sort

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

i_save = 'A'

  • IS_VARIANT = X_DISVARIANT

it_events = gt_events[]

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_ADD_FIELDCAT =

  • IT_HYPERLINK =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = tbl_out

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " display_alv

----


  • FORM EVENTTAB_BUILD *

----


  • ........ *

----


  • --> LT_EVENTS *

----


FORM eventtab_build USING

lt_events TYPE slis_t_event.

DATA: ls_event TYPE slis_alv_event.

*

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = lt_events.

READ TABLE lt_events WITH KEY name = slis_ev_top_of_page

INTO ls_event.

IF sy-subrc = 0.

MOVE gc_formname_top_of_page TO ls_event-form.

APPEND ls_event TO lt_events.

ENDIF.

.

ENDFORM. "eventtab_build

  • -------------------------------------------------------------------

  • ---------------------------------------------------

FORM top_of_page.

*

PERFORM comment_build USING gt_list_top_of_page[].

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

i_logo = 'TEST_IMAGINEPA_LOGO'

it_list_commentary = gt_list_top_of_page.

ENDFORM. "top_of_page

----


  • FORM COMMENT_BUILD *

----


  • ........ *

----


  • --> LT_TOP_OF_PAGE *

----


FORM comment_build USING lt_top_of_page TYPE slis_t_listheader.

DATA: ls_line TYPE slis_listheader,

data(15) TYPE c,

wa_lt LIKE ls_line,

date(10),

time(10).

WRITE : p_date TO date MM/DD/YY.

REFRESH lt_top_of_page.

CLEAR ls_line.

ls_line-typ = 'H'.

ls_line-info = 'BDC LOG REPORT'.

APPEND ls_line TO lt_top_of_page.

CLEAR ls_line.

CLEAR ls_line.

ls_line-typ = 'S'.

ls_line-key = 'Session :'.

ls_line-info = p_sess.

APPEND ls_line TO lt_top_of_page.

CLEAR ls_line.

  • concatenate date ' at ' s_time-low ' - ' s_time-high into

  • ls_line-info.

ls_line-typ = 'S'.

ls_line-key = 'Created On:'.

ls_line-info = date.

APPEND ls_line TO lt_top_of_page.

ENDFORM. "comment_build

&----


*& Form move_final_data_to_tblout

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM move_final_data_to_tblout.

LOOP AT all_bdc_tcodes.

LOOP AT tbl_bdclm WHERE qid = all_bdc_tcodes-qid AND

tcnt = all_bdc_tcodes-index.

IF NOT p_mess IS INITIAL.

IF tbl_bdclm-longtext CS p_mess.

PERFORM build_tbl_out.

ENDIF.

ELSE.

PERFORM build_tbl_out.

ENDIF.

ENDLOOP.

ENDLOOP.

ENDFORM. " move_final_data_to_tblout

&----


*& Form select_session_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM select_session_data.

DO.

IF p_sess CA '*'.

TRANSLATE p_sess USING '*%'.

ELSE.

EXIT.

ENDIF.

ENDDO.

SELECT * FROM apqi INTO TABLE tbl_apqi

WHERE mandant = sy-mandt AND

groupid LIKE p_sess AND

creator = p_user AND

credate = p_date AND

cretime IN s_time.

LOOP AT tbl_apqi.

SELECT * FROM apqd WHERE qid = tbl_apqi-qid AND

block = 1 ORDER BY PRIMARY KEY.

MOVE apqd-vardata TO bdcth.

CHECK bdcth-state = 'E'.

all_bdc_tcodes-index = apqd-trans.

all_bdc_tcodes-tcode = bdcth-tcode.

all_bdc_tcodes-status = bdcth-state.

all_bdc_tcodes-groupid = tbl_apqi-groupid.

all_bdc_tcodes-qid = tbl_apqi-qid.

APPEND all_bdc_tcodes.

ENDSELECT.

ENDLOOP.

LOOP AT all_bdc_tcodes.

REFRESH: tf, tbl_apqd.

CLEAR: tbl_apqd, tf.

SELECT * FROM apqd INTO TABLE tbl_apqd WHERE

qid = all_bdc_tcodes-qid

AND trans = all_bdc_tcodes-index.

LOOP AT tbl_apqd.

IF tbl_apqd-vardata(1) = 'M'.

PERFORM get_session_data.

ENDIF.

ENDLOOP.

LOOP AT tf.

IF tf-fname = p_string.

MOVE tf-farg TO all_bdc_tcodes-pernr.

MODIFY all_bdc_tcodes.

EXIT.

ENDIF.

ENDLOOP.

ENDLOOP.

ENDFORM. " select_session_data

&----


*& Form build_tbl_out

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_tbl_out.

MOVE : all_bdc_tcodes-index TO tbl_out-index,

all_bdc_tcodes-pernr TO tbl_out-info,

tbl_bdclm-module TO tbl_out-module,

tbl_bdclm-dynr TO tbl_out-screen,

tbl_bdclm-longtext TO tbl_out-error_message,

all_bdc_tcodes-groupid TO tbl_out-groupid,

all_bdc_tcodes-qid TO tbl_out-qid.

APPEND tbl_out.

ENDFORM. " build_tbl_out

<b>its very useful for u....</b>

**Please reward suitable points***

With Regards

Navin Khedikar

Read only

Former Member
0 Likes
503

Hi Pavan,

1.GO to sm35

2.In Incorrect Tab,Select your transaction.

3.You can see one button " Log " on the application tool bar.click on that.....

4.Click on the Display button which is on the application tool bar.

5.Then here you can see the <b>ERROR LOG</b> for that transaction ....

<b>

Hope your problem is solved...

Reward all helpful answers.</b>

Regards,

V.Raghavender.

Read only

0 Likes
503

Hi,

I want error log file name not how to see error log in sm35. thanks for your information.

Read only

Former Member
0 Likes
503

Hi Pavan,

Check out this sample program to understand the same

REPORT  ztest_report
 NO STANDARD PAGE HEADING
                        LINE-SIZE 255
                        MESSAGE-ID ZRASH.

************************************************************************
*                 Internal Table Declarations                          *
************************************************************************
*--Internal Table for Data Uploading.
DATA : BEGIN OF IT_FFCUST OCCURS 0,
         KUNNR(10),
         BUKRS(4),
         KTOKD(4),
         ANRED(15),
         NAME1(35),
         SORTL(10),
         STRAS(35),
         ORT01(35),
         PSTLZ(10),
         LAND1(3),
         SPRAS(2),
         AKONT(10),
       END OF IT_FFCUST.

*--Internal Table to Store Error Records.
DATA : BEGIN OF IT_ERRCUST OCCURS 0,
         KUNNR(10),
         EMSG(255),
       END OF IT_ERRCUST.

*--Internal Table to Store Successful Records.
DATA : BEGIN OF IT_SUCCUST OCCURS 0,
         KUNNR(10),
         SMSG(255),
       END OF IT_SUCCUST.

*--Internal Table for Storing the BDC data.
DATA : IT_CUSTBDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

*--Internal Table for storing the messages.
DATA : IT_CUSTMSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

DATA : V_FLAG1(1) VALUE ' ',
"Flag used for opening session.
       V_TLINES LIKE SY-TABIX,
       "For storing total records processed.
       V_ELINES LIKE SY-TABIX,
       "For storing the no of error records.
       V_SLINES LIKE SY-TABIX.
       "For storing the no of success records.


************************************************************************
*          Selection screen                                            *
************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK B1.
PARAMETERS : V_FNAME LIKE RLGRAP-FILENAME,
             V_SESNAM  LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK B1.

************************************************************************
*          Start-of-selection                                          *
************************************************************************

START-OF-SELECTION.
*-- Form to upload flatfile data into the internal table.
  PERFORM FORM_UPLOADFF.

************************************************************************
*        TOP-OF-PAGE                                                   *
************************************************************************
TOP-OF-PAGE.
  WRITE:/ 'Details of the error and success records for the transaction'
  .
  ULINE.
  SKIP.


************************************************************************
*          End of Selection                                            *
************************************************************************
END-OF-SELECTION.
*-- Form to Generate a BDC from the Uploaded Internal table
  PERFORM FORM_BDCGENERATE.

*--To write the totals and the session name.
  PERFORM FORM_WRITEOP.



*&---------------------------------------------------------------------*
*&      Form  form_uploadff
*&---------------------------------------------------------------------*
*     Form to upload flatfile data into the internal table.
*----------------------------------------------------------------------*
FORM FORM_UPLOADFF .

*--Variable to change the type of the parameter file name.
  DATA : LV_FILE TYPE STRING.

  LV_FILE = V_FNAME.

*--Function to upload the flat file to the internal table.
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      FILENAME                      =  LV_FILE
*     FILETYPE                      = 'ASC'
      HAS_FIELD_SEPARATOR           = 'X'
*     HEADER_LENGTH                 = 0
*     READ_BY_LINE                  = 'X'
*     DAT_MODE                      = ' '
*   IMPORTING
*     FILELENGTH                    =
*     HEADER                        =
    TABLES
      DATA_TAB                      = IT_FFCUST
    EXCEPTIONS
      FILE_OPEN_ERROR               = 1
      FILE_READ_ERROR               = 2
      NO_BATCH                      = 3
      GUI_REFUSE_FILETRANSFER       = 4
      INVALID_TYPE                  = 5
      NO_AUTHORITY                  = 6
      UNKNOWN_ERROR                 = 7
      BAD_DATA_FORMAT               = 8
      HEADER_NOT_ALLOWED            = 9
      SEPARATOR_NOT_ALLOWED         = 10
      HEADER_TOO_LONG               = 11
      UNKNOWN_DP_ERROR              = 12
      ACCESS_DENIED                 = 13
      DP_OUT_OF_MEMORY              = 14
      DISK_FULL                     = 15
      DP_TIMEOUT                    = 16
      OTHERS                        = 17
            .
  IF SY-SUBRC = 0.
*--Deleting the headings from the internal table.
    DELETE IT_FFCUST INDEX 1.
*--Getting the total number of records uploaded.
    DESCRIBE TABLE IT_FFCUST LINES V_TLINES.

  ENDIF.


ENDFORM.                    " form_uploadff
*&---------------------------------------------------------------------*
*&      Form  Form_bdcgenerate
*&---------------------------------------------------------------------*
*     Form to Generate a BDC from the Uploaded Internal table
*----------------------------------------------------------------------*
FORM FORM_BDCGENERATE .

*--Generating the BDC table for the fields of the internal table.
  LOOP AT IT_FFCUST.
    PERFORM POPULATEBDC USING :
                                'X' 'SAPMF02D' '0105',
                                ' ' 'BDC_OKCODE'  '/00' ,
                                ' ' 'RF02D-KUNNR' IT_FFCUST-KUNNR,
                                ' ' 'RF02D-BUKRS' IT_FFCUST-BUKRS,
                                ' ' 'RF02D-KTOKD' IT_FFCUST-KTOKD,
                                'X' 'SAPMF02D' '0110' ,
                                ' ' 'BDC_OKCODE'  '/00',
                                ' ' 'KNA1-ANRED'  IT_FFCUST-ANRED,
                                ' ' 'KNA1-NAME1' IT_FFCUST-NAME1,
                                ' ' 'KNA1-SORTL'  IT_FFCUST-SORTL,
                                ' ' 'KNA1-STRAS' IT_FFCUST-STRAS,
                                ' ' 'KNA1-ORT01' IT_FFCUST-ORT01,
                                ' ' 'KNA1-PSTLZ' IT_FFCUST-PSTLZ,
                                ' ' 'KNA1-LAND1' IT_FFCUST-LAND1,
                                ' ' 'KNA1-SPRAS' IT_FFCUST-SPRAS,

                                'X' 'SAPMFO2D' '0120',	
                                ' ' 'BDC_OKCODE'  '/00',

                                'X' 'SAPMF02D' '0125',	
                                ' ' 'BDC_OKCODE'  '/00',

                                'X' 'SAPMF02D' '0130',	
                                ' ' 'BDC_OKCODE'  '=ENTR',

                                'X' 'SAPMF02D' '0340',	
                                ' ' 'BDC_OKCODE'  '=ENTR',

                                'X' 'SAPMF02D' '0360',
                                ' ' 'BDC_OKCODE'  '=ENTR',

                                'X' 'SAPMF02D' '0210',	
                                ' ' 'KNB1-AKONT'  IT_FFCUST-AKONT,
                                ' ' 'BDC_OKCODE'  '/00',

                                'X' 'SAPMF02D' '0215',
                                ' ' 'BDC_OKCODE'  '/00',

                                'X' 'SAPMF02D' '0220',	
                                ' ' 'BDC_OKCODE'  '/00',

                                'X' 'SAPMF02D' '0230',	
                                ' ' 'BDC_OKCODE'  '=UPDA'.
*--Calling the transaction 'fd01'.
    CALL TRANSACTION 'FD01' USING IT_CUSTBDC MODE 'N' UPDATE 'S'
    MESSAGES INTO IT_CUSTMSG.
    IF SY-SUBRC <> 0.
*--Populating the error records internal table.
      IT_ERRCUST-KUNNR = IT_FFCUST-KUNNR.
      APPEND IT_ERRCUST.
      CLEAR IT_ERRCUST.
*--Opening a session if there is an error record.
      IF V_FLAG1 = ' '.
        PERFORM FORM_OPENSESSION.
        V_FLAG1 = 'X'.
      ENDIF.
*--Inserting the error records into already open session.
      IF V_FLAG1 = 'X'.
        PERFORM FORM_INSERT.
      ENDIF.
*--Populating the Success records internal table.
    ELSE.
      IT_SUCCUST-KUNNR = IT_FFCUST-KUNNR.
      APPEND IT_SUCCUST.
      CLEAR IT_SUCCUST.
    ENDIF.
*--Displaying the messages.
    IF NOT IT_CUSTMSG[] IS INITIAL.
      PERFORM FORM_FORMATMSG.
    ENDIF.
*--Clearing the message and bdc tables.
    CLEAR : IT_CUSTBDC[],IT_CUSTMSG[].
  ENDLOOP.

*--Getting the total no of error records.
  DESCRIBE TABLE IT_ERRCUST LINES V_ELINES.

*--Getting the total no of successful records.
  DESCRIBE TABLE IT_SUCCUST LINES V_SLINES.

*--Closing the session only if it is open.
  IF V_FLAG1 = 'X'.
    PERFORM FORM_CLOSESESS.
  ENDIF.


ENDFORM.                    " Form_bdcgenerate


*&---------------------------------------------------------------------*
*&      Form  populatebdc
*&---------------------------------------------------------------------*
*       FOrm to Populate the BDC table.
*----------------------------------------------------------------------*
FORM POPULATEBDC  USING    VALUE(P_0178)
                           VALUE(P_0179)
                           VALUE(P_0180).

  IF P_0178 = 'X'.
    IT_CUSTBDC-PROGRAM = P_0179.
    IT_CUSTBDC-DYNPRO = P_0180.
    IT_CUSTBDC-DYNBEGIN = 'X'.
  ELSE.
    IT_CUSTBDC-FNAM = P_0179.
    IT_CUSTBDC-FVAL = P_0180.
  ENDIF.

  APPEND IT_CUSTBDC.
  CLEAR IT_CUSTBDC.


ENDFORM.                    " populatebdc


*&---------------------------------------------------------------------*
*&      Form  FORM_OPENSESSION
*&---------------------------------------------------------------------*
*       Form to Open a session.
*----------------------------------------------------------------------*
FORM FORM_OPENSESSION .

*--Variable to convert the given session name into reqd type.
  DATA : LV_SESNAM(12).

  LV_SESNAM = V_SESNAM.

*--Opening a session.
  CALL FUNCTION 'BDC_OPEN_GROUP'
   EXPORTING
     CLIENT                    = SY-MANDT
     GROUP                     = LV_SESNAM
     HOLDDATE                  = '20040805'
     KEEP                      = 'X'
     USER                      = SY-UNAME
     PROG                      = SY-CPROG
*  IMPORTING
*    QID                       =
   EXCEPTIONS
     CLIENT_INVALID            = 1
     DESTINATION_INVALID       = 2
     GROUP_INVALID             = 3
     GROUP_IS_LOCKED           = 4
     HOLDDATE_INVALID          = 5
     INTERNAL_ERROR            = 6
     QUEUE_ERROR               = 7
     RUNNING                   = 8
     SYSTEM_LOCK_ERROR         = 9
     USER_INVALID              = 10
     OTHERS                    = 11
            .
  IF SY-SUBRC <> 0.
    WRITE :/ 'Session not open'.
  ENDIF.


ENDFORM.                    " FORM_OPENSESSION
*&---------------------------------------------------------------------*
*&      Form  FORM_INSERT
*&---------------------------------------------------------------------*
*       fORM TO INSERT ERROR RECOED INTO A SESSION.
*----------------------------------------------------------------------*
FORM FORM_INSERT .

*--Inserting the record into session.
  CALL FUNCTION 'BDC_INSERT'
    EXPORTING
      TCODE                  = 'FD01'
*     POST_LOCAL             = NOVBLOCAL
*     PRINTING               = NOPRINT
*     SIMUBATCH              = ' '
*     CTUPARAMS              = ' '
    TABLES
      DYNPROTAB              = IT_CUSTBDC
    EXCEPTIONS
      INTERNAL_ERROR         = 1
      NOT_OPEN               = 2
      QUEUE_ERROR            = 3
      TCODE_INVALID          = 4
      PRINTING_INVALID       = 5
      POSTING_INVALID        = 6
      OTHERS                 = 7
            .
  IF SY-SUBRC <> 0.
    WRITE :/ 'Unable to insert the record'.
  ENDIF.


ENDFORM.                    " FORM_INSERT
*&---------------------------------------------------------------------*
*&      Form  FORM_CLOSESESS
*&---------------------------------------------------------------------*
*       Form to Close the Open Session.
*----------------------------------------------------------------------*
FORM FORM_CLOSESESS .


  CALL FUNCTION 'BDC_CLOSE_GROUP'
    EXCEPTIONS
      NOT_OPEN    = 1
      QUEUE_ERROR = 2
      OTHERS      = 3.
  IF SY-SUBRC <> 0.
  ENDIF.



ENDFORM.                    " FORM_CLOSESESS
*&---------------------------------------------------------------------*
*&      Form  FORM_FORMATMSG
*&---------------------------------------------------------------------*
*       Form to format messages.
*----------------------------------------------------------------------*
FORM FORM_FORMATMSG .

*--Var to store the formatted msg.
  DATA : LV_MSG(255).


  CALL FUNCTION 'FORMAT_MESSAGE'
    EXPORTING
      ID        = SY-MSGID
      LANG      = SY-LANGU
      NO        = SY-MSGNO
      V1        = SY-MSGV1
      V2        = SY-MSGV2
      V3        = SY-MSGV3
      V4        = SY-MSGV4
    IMPORTING
      MSG       = LV_MSG
    EXCEPTIONS
      NOT_FOUND = 1
      OTHERS    = 2.
  IF SY-SUBRC = 0.

    WRITE :/ LV_MSG.

  ENDIF.
  ULINE.


ENDFORM.                    " FORM_FORMATMSG
*&---------------------------------------------------------------------*
*&      Form  form_writeop
*&---------------------------------------------------------------------*
*       To write the totals and the session name.
*----------------------------------------------------------------------*
FORM FORM_WRITEOP .

  WRITE :/ 'Total Records Uploaded :',V_TLINES,
           / 'No of Error Records :',V_ELINES,
           / 'No of Success Records :',V_SLINES,
           / 'Name of the Session :',V_SESNAM.
  ULINE.

ENDFORM.                    " form_writeop