ZGPUTR_BDC_LOG_REPORT
ZGPUTR_BDC_LOG_REPORT
* PROGRAM ID : ZGPUTR_BDC_LOG_REPORT_NEW *
* PROGRAM TITLE : Utility Program to BDC Log Report *
* AUTHOR : Ravindra Anagani *
* SUPPLIER : IBM *
* DATE : 08/27/2009 *
* DEVELOPMENT ID : N/A *
* TRANSPORT NUMBER: ECDK937069 *
* Description : While loading data through LSMW's using BDC , *
* tracing error logs is not user friendly through *
* SM35. Hence to trace all the error records and *
* their messages this program has been developed. *
*=======================================================================
* CHANGE HISTORY LOG *
*----------------------------------------------------------------------*
* MOD. ID| DATE | NAME | TRANSPORT # | CHANGE REF. # *
************************************************************************
SELECTION-SCREEN:
BEGIN OF BLOCK a1 WITH FRAME TITLE text-014.
*-- File destination Radio Button
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN:
COMMENT 4(25) text-012,
POSITION 33.
***********************************************************************
* DATA DECLARATION *
***********************************************************************
TABLES:
apqi,
apqd,
d020t.
TABLES:
bdcth,
bdcmh.
TYPES:
BEGIN OF ty_content, " OCCURS 0,
entry(200) TYPE c,
END OF ty_content.
TYPES:
BEGIN OF ty_fld, " OCCURS 0,
program TYPE bdc_prog, " BDC module pool
dynpro TYPE bdc_dynr, " BDC Screen number
fnam TYPE fnam_____4, " Field name
tabname TYPE tabname, " Table Name
fieldname TYPE fieldname, " Field Name
fieldtext TYPE as4text, " Short Description of Repository Objects
END OF ty_fld,
DATA: i_apqi TYPE STANDARD TABLE OF apqi, " OCCURS 0 WITH HEADER LINE,
i_apqd TYPE STANDARD TABLE OF apqd, " OCCURS 0 WITH HEADER LINE,
i_dfies TYPE STANDARD TABLE OF dfies. " OCCURS 0 WITH HEADER LINE.
DATA: i_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
DATA: wa_selerr TYPE ty_err,
wa_content TYPE ty_content,
wa_fld TYPE ty_fld,
wa_final TYPE ty_final,
wa_err TYPE ty_err,
wa_selfld TYPE ty_selfld,
wa_mnr TYPE ty_mnr,
wa_apqi TYPE apqi,
wa_apqd TYPE apqd,
wa_tab TYPE ty_tab,
wa_data TYPE ty_tab,
wa_dfies TYPE dfies.
* Interne Felder
DATA:
flg_intensified TYPE char1,
flg_select TYPE char1,
flg_done TYPE char1,
flg_newgroup TYPE char1,
flg_newtrans TYPE char1,
flg_uline TYPE char1,
offset TYPE i,
length TYPE i,
vardata LIKE apqd-vardata,
rest TYPE i,
l_count TYPE i,
char20(20) TYPE c,
part1 LIKE bdcdata-fnam,
part2 LIKE bdcdata-fnam,
part3 LIKE bdcdata-fnam,
string(100) TYPE c,
checkbox TYPE char1,
line_counter TYPE i,
nr_lines TYPE i,
l_v_date TYPE char10,
l_v_time TYPE char8,
groupid LIKE apqi-groupid.
* Konstanten
CONSTANTS:
yes TYPE char1 VALUE 'X',
no TYPE char1 VALUE ' ',
c_0 TYPE char1 VALUE '0',
c_1 TYPE char1 VALUE '1'.
****** INCLUDES
INCLUDE rsbdcil1. " data definitionen fuer rsbdcil2
INCLUDE zgputn_bdc_log_forms_new. " Forms zur Protokollanzeige
INCLUDE rsbdcil3. " Form zum Lesen des TemSe Files
*************************************************************************
** At Selection Screen
*************************************************************************
AT SELECTION-SCREEN OUTPUT.
PERFORM modify_screen.
PERFORM default_file_paths.
AT SELECTION-SCREEN.
IF rb_pc EQ yes.
CONCATENATE:
p_pcpath p_fname1 INTO p_infile.
ELSE.
CONCATENATE:
p_srpath p_fname1 INTO p_infile.
ENDIF.
START-OF-SELECTION.
IF cb_file = yes.
*Get data from PC or Application Server
PERFORM get_data.
ENDIF.
*--- Unicode related corrections: 2 lines -------------------------*
* DESCRIBE FIELD BDCMH LENGTH OFFSET.
PERFORM select_error_sessions.
SORT i_apqi BY groupid credate.
IF cb_headr = yes.
r_sess-low = s_grpid-low.
r_date-low = s_date-low.
*****Write to in System Formatted date
WRITE r_date-low TO l_v_date USING EDIT MASK '____/__/__' .. "YYYY/MM/DD.
wa_final-groupid = r_sess-low.
wa_final-credate = l_v_date.
wa_final-cretime = ''.
wa_final-pernr = ''.
wa_final-subty = ''.
wa_final-msg = ''.
wa_final-index = 0.
CLEAR l_v_date.
READ TABLE i_tab INTO wa_tab INDEX 1.
IF sy-subrc IS INITIAL.
wa_final-record = wa_tab-line.
ENDIF.
APPEND wa_final TO i_final.
CLEAR: wa_final, wa_tab.
r_index-sign = 'I'.
r_index-option = 'EQ'.
r_index-low = s_index-low + 1.
r_index-high = s_index-high + 1.
APPEND r_index.
CLEAR: l_trans_low,
l_trans_high.
l_trans_low = 1.
l_trans_high = 500.
DO.
CLEAR i_apqd[].
ENDIF.
ENDLOOP.
ENDIF.
* i_content is the KEY table for this program. It contains all the fields
* and their values for that record. In future if we need to add any further fields
* we have to add in this section like the way PERNR and SEARK added below
LOOP AT i_content INTO wa_content.
rest = sy-tabix MOD 2.
IF rest = 1.
wa_err-fnam = wa_content.
IF wa_content CS 'PERNR'.
v_pernr = 'X'.
CLEAR l_c_var.
l_c_var = sy-tabix.
ENDIF.
IF wa_content CS 'SEARK'.
CLEAR v_pernr.
CLEAR l_c_var.
l_c_var = sy-tabix.
ENDIF.
ELSE.
wa_err-fval = wa_content.
IF NOT l_c_var IS INITIAL.
CLEAR l_c_var1.
l_c_var1 = l_c_var + 1.
CLEAR l_c_var.
ENDIF.
IF l_c_var1 EQ sy-tabix.
CLEAR wa_final-pernr.
wa_final-pernr = wa_content.
wa_final-groupid = wa_apqi-groupid.
*****Write to in System Formatted date
WRITE wa_apqi-credate TO l_v_date USING EDIT MASK
'____/__/__' .. "YYYY/MM/DD.
wa_final-credate = l_v_date.
* wa_final-credate = wa_apqi-credate.
WRITE wa_apqi-cretime TO l_v_time USING EDIT MASK
'__:__:__' .. "HH:MM:SS.
wa_final-cretime = l_v_time.
* wa_final-cretime = wa_apqi-cretime.
wa_final-index = wa_apqd-trans.
REPLACE '&1' IN wa_final-msg WITH ' '.
REPLACE '&2' IN wa_final-msg WITH ' '.
REPLACE '&3' IN wa_final-msg WITH ' '.
REPLACE '&4' IN wa_final-msg WITH ' '.
CONDENSE wa_final-msg.
*Get Subtype
LOOP AT i_content INTO wa_content.
IF wa_content CS 'SUBTY'.
CLEAR l_c_var.
l_c_var = sy-tabix.
ENDIF.
ENDLOOP.
IF NOT l_c_var IS INITIAL.
CLEAR l_c_var1.
l_c_var1 = l_c_var + 1.
CLEAR l_c_var.
LOOP AT i_content INTO wa_content FROM l_c_var1 TO
l_c_var1.
wa_final-subty = wa_content.
ENDLOOP.
ENDIF.
*****************If input file contains header, count will increase
* IF cb_headr = yes.
* l_count = wa_apqd-trans + 1.
* ELSE.
* l_count = wa_apqd-trans.
* ENDIF.
READ TABLE i_data INTO wa_data INDEX wa_apqd-trans.
"l_count.
IF sy-subrc IS INITIAL.
wa_final-record = wa_data-line.
ENDIF.
CLEAR: l_count, wa_data.
APPEND wa_final TO i_final.
CLEAR wa_final.
v_apqd_out = 'X'.
v_old_trans = wa_apqd-trans.
CLEAR l_c_var1.
EXIT.
ENDIF.
APPEND wa_err TO i_err.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
IF sy-subrc NE 0.
EXIT.
ENDIF.
l_trans_low = l_trans_high + 1.
ADD 500 TO l_trans_high.
ENDDO.
ENDLOOP.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form DISPLAY_REPORT
*&-------------------------------------------------------------------#-*
* Display the output report for the final internal table
*----------------------------------------------------------------------*
FORM display_report .
IF v_pernr IS INITIAL.
l_v_seltext_l = 'Object ID'.
ELSE.
l_v_seltext_l = 'Personnel No.'.
ENDIF.
PERFORM do_sort.
REFRESH: i_header.
CLEAR: r_header.
IF cb_headr = yes.
l_v_lines = v_lines - 1.
ELSE.
l_v_lines = v_lines.
ENDIF.
* Header Title
r_header-typ = 'H'.
r_header-info = 'BDC Error Evaluation'.
************************************************************************
*
* (c) SAP Aktiengesellschaft
* Systeme, Anwendungen und Produkte in der Datenverarbeitung
*
* authors: Brigitte Hering (Digital) based on RSBDCLOG by Volker Harms
************************************************************************
* Common include file for RSBDCLOG (> 4.0), RSBDCCKT, ...
* Needed data definitions in Include RSBDCIL1.
*-HISTORY-------------------------
* 30.04.1997 first Version
*-END-HISTORY--------------------
*---------------------------------------------------------------------*
* FORM : log_mes *
* *
*---------------------------------------------------------------------*
FORM log_mes.
*
CLEAR: bdclm.
REFRESH: bdclm.
FREE bdclm.
*
PERFORM read_bdc_log_plain
TABLES
logtable
USING
bdcld-temseid bdcld-mandant.
LOOP AT logtable.
bdclm-indate = logtable-enterdate.
bdclm-intime = logtable-entertime.
bdclm+14 = logtable-logmessage.
APPEND bdclm.
ENDLOOP.
*
ENDFORM. " log_mes.
*/
*---------------------------------------------------------------------*
* FORM : show_mes *
* *
*---------------------------------------------------------------------*
FORM show_mes.
*
IF return GT 0.
EXIT.
ENDIF.
*
CLEAR: old.
LOOP AT bdclm. " Ausgabe der Log-Partition
FORMAT RESET.
IF old-tcnt EQ bdclm-tcnt AND
old-mcnt EQ bdclm-mcnt .
ELSE.
WRITE:/01(102) space COLOR COL_NORMAL.
WRITE: 10(01) '.'.
PERFORM write_vline USING ' ' 10.
PERFORM write_vline USING ' ' 15.
PERFORM write_vline USING ' ' 29.
PERFORM write_vline USING ' ' 1.
PERFORM write_vline USING ' ' 102.
ENDIF.
MOVE: bdclm-tcnt TO old-tcnt,
bdclm-mcnt TO old-mcnt.
WRITE:/01(102) space COLOR COL_NORMAL.
WRITE: 02(08) bdclm-intime USING EDIT MASK '__:__:__'
COLOR COL_NORMAL,
11(04) bdclm-tcode COLOR COL_NORMAL,
16(08) bdclm-module COLOR COL_NORMAL,
25(04) bdclm-dynr COLOR COL_NORMAL,
30(01) bdclm-mart COLOR COL_NORMAL,
31(02) bdclm-mid COLOR COL_NORMAL,
33(03) bdclm-mnr COLOR COL_NORMAL.
PERFORM write_vline USING ' ' 10.
PERFORM write_vline USING ' ' 15.
PERFORM write_vline USING ' ' 29.
PERFORM write_vline USING ' ' 1.
MOVE bdclm TO lm.
PERFORM get_text.
WRITE: 37(098) mtext COLOR COL_NORMAL.
PERFORM write_vline USING ' ' 102.
MOVE lm-mpar TO bdclm-mpar.
HIDE: bdclm, mtext.
ENDLOOP.
*
ENDFORM. " show_mes.
*/
*---------------------------------------------------------------------*
* FORM : write_vline *
* *
*---------------------------------------------------------------------*
FORM write_vline USING mode pos.
*
*** Vline schreiben
*
IF mode NE 'T'.
FORMAT INTENSIFIED.
ENDIF.
POSITION pos.
WRITE: sy-vline.
IF mode NE 'T'.
FORMAT RESET.
ENDIF.
*
ENDFORM. " last_listline
*/
*---------------------------------------------------------------------*
* FORM : get_text # *
* *
*---------------------------------------------------------------------*
FORM get_text.
*
*** aufbereiten des Messagetextes
*
*REAK-POINT 1.
PERFORM get_text1.
EXIT.
*
IF bdclm-mparcnt CN digits. "Korrupter Datensatz:
bdclm-mparcnt = 0. "z.B. Hexnullen
ENDIF.
*
SELECT SINGLE * FROM t100
WHERE sprsl = sy-langu
AND arbgb = bdclm-mid
AND msgnr = bdclm-mnr.
*
*
IF sy-subrc EQ 0.
* REFRESH: MT.
CLEAR: mtext,
parcnt,
mparcnt,
charcnt,
wcnt,
mt,
sy-fdpos.
*
MOVE bdclm-mparcnt TO mparcnt.
*
IF t100-text CA '$&'. "Kennung fuer parameter:
MOVE t100-text TO mtext1. " alt '$' --- neu '&'
ELSE.
MOVE t100-text TO mtext.
EXIT.
ENDIF.
CLEAR: mt.
WHILE wcnt LE 73.
IF mtext1 CA '$&'.
parcnt = parcnt + 1.
CLEAR: mt-text.
WRITE: mtext1 TO mt-text+0(sy-fdpos).
mt-off = charcnt.
mt-len = sy-fdpos.
WRITE: mt-text TO mtext+mt-off(mt-len).
* APPEND MT.
charcnt = charcnt + sy-fdpos.
wcnt = charcnt.
SHIFT mtext1 BY sy-fdpos PLACES.
* kopiere parameter aus bdclm-mpar nach tabelle mt
IF parcnt > mparcnt.
SHIFT mtext1 BY 1 PLACES.
wcnt = wcnt + 1 .
ELSE.
CLEAR: mt-text.
MOVE bdclm-mpar TO par.
* SHIFT PAR BY 2 PLACES.
IF par-len CN digits. "convert_no_number
par-len = 1. "entsch�rfen
ENDIF.
WRITE: par-text TO mt-text+0(par-len).
mt-off = charcnt.
mt-len = par-len.
sp_len = par-len - 1.
WRITE: mt-text TO mtext+mt-off(mt-len).
* APPEND MT.
charcnt = charcnt + par-len.
wcnt = wcnt + 1.
SHIFT mtext1 .
par-len = par-len + 2. "laenge von par = 2.
SHIFT bdclm-mpar BY par-len PLACES.
ENDIF.
ELSE.
CLEAR: mt, par-len.
par-len = 73 - charcnt.
WRITE: mtext1 TO mt-text+0(par-len).
IF parcnt > mparcnt.
mt-off = wcnt.
ELSE.
mt-off = wcnt + sp_len.
ENDIF.
mt-len = par-len.
WRITE: mt-text TO mtext+mt-off(mt-len).
* APPEND MT.
wcnt = 74.
ENDIF.
ENDWHILE.
ELSE.
* MOVE 'Text unbekannt ... ' TO MTEXT.
IF bdclm-mparcnt EQ '0'.
EXIT.
ENDIF.
CLEAR: mparcnt, mtext.
WHILE mparcnt LT bdclm-mparcnt. "#EC PORTABLE
CLEAR: mt.
mparcnt = mparcnt + 1.
MOVE bdclm-mpar TO par.
WRITE: par-text TO mt-text+0(par-len).
IF mparcnt EQ 1.
mt-off = 0.
ELSE.
mt-off = sp_len + 1.
ENDIF.
mt-len = par-len.
sp_len = mt-off + par-len.
WRITE: mt-text TO mtext+mt-off(mt-len).
par-len = par-len + 2. "laenge von par = 2.
SHIFT bdclm-mpar BY par-len PLACES.
ENDWHILE.
ENDIF.
*
* CONDENSE MTEXT.
*
ENDFORM. " get_text
*/
*---------------------------------------------------------------------*
* FORM : get_text1 *
* *
*---------------------------------------------------------------------*
FORM get_text1.
*
*** aufbereiten des Messagetextes
*
DATA: shiftln TYPE i,
vartcnt TYPE i,
fdpos LIKE sy-fdpos.
*
*REAK HARMS.
*
IF bdclm-mparcnt CN digits. "Korrupter Datensatz:
bdclm-mparcnt = 0. "z.B. Hexnullen
ENDIF.
*
SELECT SINGLE * FROM t100
WHERE sprsl = sy-langu
AND arbgb = bdclm-mid
AND msgnr = bdclm-mnr.
*
*
IF sy-subrc EQ 0.
CLEAR: mtext,
parcnt,
mparcnt,
charcnt,
wcnt,
mt,
sp_len,
sy-fdpos.
*
MOVE bdclm-mparcnt TO mparcnt.
*
IF t100-text CA '$&'. "Kennung fuer parameter:
MOVE t100-text TO mtext1. " alt '$' --- neu '&'
ELSE.
MOVE t100-text TO mtext.
EXIT.
ENDIF.
* variable teile aus batch-input protokoll in mttab bringen.
REFRESH mttab.
CLEAR shiftln.
DO mparcnt TIMES.
CLEAR: par, mttab.
MOVE bdclm-mpar TO par.
IF par-len CN digits. "convert_no_number
par-len = 1. "entsch�rfen
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 bdclm-mpar BY shiftln PLACES.
ENDDO.
*
mtext2 = mtext1.
IF bdclm-mid EQ '00' AND " sonderbehandlung s00368
bdclm-mnr EQ '368' AND
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. " neu 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'. "'&1'
PERFORM replace_var USING '&1' 1 fdpos.
WHEN '2'. "'&2'
PERFORM replace_var USING '&2' 2 fdpos.
WHEN '3'. "'&3'
PERFORM replace_var USING '&3' 3 fdpos.
WHEN '4'. "'&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'. "'$1'
PERFORM replace_var USING '$1' 1 fdpos.
WHEN '2'. "'$2'
PERFORM replace_var USING '$2' 2 fdpos.
WHEN '3'. "'$3'
PERFORM replace_var USING '$3' 3 fdpos.
WHEN '4'. "'$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 = '???????????????????????????????????????????????????'(999).
ENDIF.
*
ENDFORM. " get_text1
*---------------------------------------------------------------------*
* FORM : replace_var *
* *
*---------------------------------------------------------------------*
FORM replace_var USING vark vari varpos.
*
* ersetzen der variablen teile einer fehlermeldung
*
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 NOT mttab-len IS INITIAL.
IF sy-subrc EQ 0.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
ASSIGN mttab-text(mttab-len) TO <vtxt>.
var1 = vark.
REPLACE var1 WITH <vtxt> INTO <mtxt>. "neu
mtvaroff = mttab-len. "neu
ELSE.
IF vari GT mparcnt.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE vark WITH ' ' INTO <mtxt>. "neu
mtvaroff = 2. "neu
ELSE.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE vark WITH '%%_Z_%%' INTO <mtxt>. "neu
mtvaroff = 7. "neu
ENDIF.
ENDIF.
ENDIF.
WHEN '$'. "'&&'
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE vark WITH '%%_D_%%' INTO <mtxt>. "neu
mtvaroff = 7. "neu
WHEN '&'. "'&&'
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE vark WITH '%%_A_%%' INTO <mtxt>. "neu
mtvaroff = 7. "neu
WHEN '<'. "'&1'
READ TABLE mttab INDEX vari.
IF NOT mttab-len IS INITIAL.
IF sy-subrc EQ 0.
IF vark EQ '&<'.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
ASSIGN mttab-text(mttab-len) TO <vtxt>.
REPLACE '&' WITH <vtxt> INTO <mtxt>. "neu
mtvaroff = mttab-len. "neu
ENDIF.
IF vark EQ '$<'.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
ASSIGN mttab-text(mttab-len) TO <vtxt>.
REPLACE '$' WITH <vtxt> INTO <mtxt>. "neu
mtvaroff = mttab-len. "neu
ENDIF.
ENDIF.
ELSE.
IF vark EQ '&<'.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE '&' WITH ' ' INTO <mtxt>. "neu
mtvaroff = 1. "neu
ENDIF.
IF vark EQ '$<'.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE '$' WITH ' ' INTO <mtxt>. "neu
mtvaroff = 1. "neu
ENDIF.
ENDIF.
WHEN '1'. "'&1'
READ TABLE mttab INDEX 1.
IF NOT mttab-len IS INITIAL.
IF sy-subrc EQ 0.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
ASSIGN mttab-text(mttab-len) TO <vtxt>.
REPLACE vark WITH <vtxt> INTO <mtxt>. "neu
mtvaroff = mttab-len. "neu
ELSE.
IF vari GT mparcnt.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE vark WITH ' ' INTO <mtxt>. "neu
mtvaroff = 2. "neu
ELSE.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE vark WITH '%%_Z_%%' INTO <mtxt>. "neu
mtvaroff = 7. "neu
ENDIF.
ENDIF.
ENDIF.
WHEN '2'. "'&2'
READ TABLE mttab INDEX 2.
IF NOT mttab-len IS INITIAL.
IF sy-subrc EQ 0.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
ASSIGN mttab-text(mttab-len) TO <vtxt>.
REPLACE vark WITH <vtxt> INTO <mtxt>. "neu
mtvaroff = mttab-len. "neu
ELSE.
IF vari GT mparcnt.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE vark WITH ' ' INTO <mtxt>. "neu
mtvaroff = 2. "neu
ELSE.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE vark WITH '%%_Z_%%' INTO <mtxt>. "neu
mtvaroff = 7. "neu
ENDIF.
ENDIF.
ENDIF.
WHEN '3'. "'&3'
READ TABLE mttab INDEX 3.
IF NOT mttab-len IS INITIAL.
IF sy-subrc EQ 0.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
ASSIGN mttab-text(mttab-len) TO <vtxt>.
REPLACE vark WITH <vtxt> INTO <mtxt>. "neu
mtvaroff = mttab-len. "neu
ELSE.
IF vari GT mparcnt.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE vark WITH ' ' INTO <mtxt>. "neu
mtvaroff = 2. "neu
ELSE.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE vark WITH '%%_Z_%%' INTO <mtxt>. "neu
mtvaroff = 7. "neu
ENDIF.
ENDIF.
ENDIF.
WHEN '4'. "'&4'
READ TABLE mttab INDEX 4.
IF NOT mttab-len IS INITIAL.
IF sy-subrc EQ 0.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
ASSIGN mttab-text(mttab-len) TO <vtxt>.
REPLACE vark WITH <vtxt> INTO <mtxt>. "neu
mtvaroff = mttab-len. "neu
ELSE.
IF vari GT mparcnt.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE vark WITH ' ' INTO <mtxt>. "neu
mtvaroff = 2. "neu
ELSE.
moff = varpos + mtvaroff. "neu
ASSIGN mtext2+moff(*) TO <mtxt>. "neu
REPLACE vark WITH '%%_Z_%%' INTO <mtxt>. "neu
mtvaroff = 7. "neu
ENDIF.
ENDIF.
ENDIF.
ENDCASE.
*
do_condense = space.
*
ENDFORM. "replace_var
*/
*---------------------------------------------------------------------*
* FORM : prot_titel *
* # *
*---------------------------------------------------------------------*
FORM prot_titel.
WRITE:/01(102) sy-uline.
WRITE:/01(102) space COLOR COL_HEADING INTENSIFIED OFF.
WRITE: 02 'Zeit '(001) COLOR COL_HEADING INTENSIFIED OFF,
11 'Tran'(008) COLOR COL_HEADING INTENSIFIED OFF,
16 'Dynpro'(007) COLOR COL_HEADING INTENSIFIED OFF,
30 'Nachricht'(002) COLOR COL_HEADING INTENSIFIED OFF.
* 63 DATE1 DD/MM/YYYY.
PERFORM write_vline USING 'T' 10.
PERFORM write_vline USING 'T' 15.
PERFORM write_vline USING 'T' 29.
PERFORM write_vline USING 'T' 1.
PERFORM write_vline USING 'T' 102.
WRITE: /02(09) sy-uline,
11(04) sy-uline,
16(13) sy-uline,
30(72) sy-uline.
PERFORM write_vline USING 'T' 10.
PERFORM write_vline USING 'T' 15.
PERFORM write_vline USING 'T' 29.
PERFORM write_vline USING 'T' 1.
PERFORM write_vline USING 'T' 102.
*
FORMAT RESET.
ENDFORM. "PROT_TITEL
*&---------------------------------------------------------------------*
*& Form SELECT_ERROR_SESSIONS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM select_error_sessions .
* Select the error sessions for the Session mentioned on selection screen
SELECT * FROM apqi INTO TABLE i_apqi WHERE groupid IN s_grpid
AND credate IN s_date
AND creator IN s_userid
AND mandant EQ sy-mandt
AND qstate EQ 'E'.
IF sy-subrc NE 0 .
WRITE: / text-006.
EXIT.
ENDIF.
ENDFORM. " SELECT_ERROR_SESSIONS
*&---------------------------------------------------------------------*
*& Form MODIFY_SCREEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM modify_screen .
* Make the Application Server path as read-only
IF rb_pc = yes.
LOOP AT SCREEN.
IF screen-group1 EQ 'MD1'.
screen-active = c_0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSE. " rb_unix = c_x.
LOOP AT SCREEN.
IF screen-group1 EQ 'MD2'.
screen-active = c_0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
LOOP AT SCREEN.
CHECK screen-group1 EQ 'MD4'.
IF cb_file = yes.
screen-active = c_1.
ELSE.
screen-active = c_0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDFORM. " MODIFY_SCREEN
*&---------------------------------------------------------------------*
*& Form DEFAULT_FILE_PATHS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM default_file_paths .
CONCATENATE:
* Unix path set according to the rules defined Globally
text-004 syst-sysid text-005 INTO p_srpath,
* Unix Files
p_srpath p_fname1 INTO p_infile.
ENDFORM. " DEFAULT_FILE_PATHS
*&---------------------------------------------------------------------*
*& Form SELECT_PC_PATH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM select_pc_path .
DATA:
l_upath TYPE string,
l_offset TYPE i.
cl_gui_frontend_services=>directory_browse(
EXPORTING
initial_folder = p_pcpath
CHANGING
selected_folder = p_pcpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4
).
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
FORM from_pres_server .
DATA: l_wa_head TYPE ty_tab.
* Upload data from input file to the internal table
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_infile
filetype = 'ASC'
TABLES
data_tab = i_tab
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 NOT sy-subrc IS INITIAL.
* READ TABLE i_tab INTO l_wa_head INDEX 1.
* IF sy-subrc IS INITIAL.
* l_v_colhead = l_wa_head-line.
* ENDIF.
* DELETE i_tab INDEX 1.
* ELSE.
MESSAGE e000 WITH text-m02.
ENDIF.
ENDFORM. " FROM_PRES_SERVER