Application Development 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 session log of SM35

Former Member
0 Kudos

Hi ,

I have a requirement to provide the list of inforecord that went to error in SM35.

Is there any standard program that could provide the log contents?

I found few standard programs but that are giving me screen data for all records even for the successfull records.

Any Ideas..

Thanks & Regards,

Ankur

1 ACCEPTED SOLUTION

Former Member

Read this post.

Srinivas

12 REPLIES 12

christian_wohlfahrt
Active Contributor
0 Kudos

Hi Ankur!

Just some small work-arounds, but quite good for one-time analysis:

- Download the log to a file, sort by messages (in a spreadsheet) and ignore the success messages.

- Re-run the batch folder: then only error-entries will be left over.

- And the slowest version: in session analysis, you can restrict the transactions to 'Incorrect' and the log to 'Transaction'. Then you have just messages to one transaction, but you can jump directly to next incorrect entry.

Regards,

Christian

0 Kudos

Thanks Christian!

This is what i used to do earlier..but now I also need contents of the errornoeous reocrds.

Thanks & Regards,

Ankur

0 Kudos

Hi Ankur!

Then it's best, when you run the batch the first time with the option: delete after execution (it's this hold flag? In the overview of SM35 you should see the deletion indicator behind column of number of screens).

After first run, your batch session will only contain field values for error transactions. So now you can download the whole session (and/)or analysis this with some other tools.

Regards,

Christian

0 Kudos

Hi Ankur,

another way:

in protocol , which you can download (see my 1st post),

there's an index - index of transaction .

so you can compare that index with the no. of your data-record from your custom-program, which had created the bdc map.

try it

Andreas

abdul_hakim
Active Contributor
0 Kudos

Hi Ankur,

Call the standard program RSBDCLOG.

It will give you all the log infos..

Enjoy!!

Regards,

Abdul

Note:Reward points if answer is useful

0 Kudos

Hi Abdul,

There is no such program....

Thanks & Regards,

Ankur

0 Kudos

Hi Ankur..

Program is there.

Program name is RSBDCLOG.

Below is the program's source code..

*****************************************************************

*@(#)RSBDCLOG %I% SAP %E%

*****************************************************************

*

  • SAP AG Walldorf

  • Systeme, Anwendungen und Produkte in der Datenverarbeitung

*

  • (C) Copyright SAP AG 1997

*

*****************************************************************

*

  • Projekt: R/3 BatchInput

  • Entwickl.-Stand: SAP , BIN-Datenbank

*

  • Source-Typ: Report

*

  • Autor: SAP

*

*****************************************************************

  • Entwicklungsstand:

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

  • 30.04.97 first version with new protocol interface based on

  • previous RSBDCLOG (copied to RSBDCOLG and used if

  • parameter bdc/new_protocol = off)

*****************************************************************

REPORT RSBDCLOG MESSAGE-ID 00 LINE-SIZE 102

NO STANDARD PAGE HEADING.

*----


*

  • Dieser Report dient zur Anzeige des Inhalts eines Batch-Input *

  • Protokolls. Batch Input Protokolle werden ab dieser Version *

  • als TemSe Files abgelegt. Die Zuordnung eines TemSe Files zu einem *

  • Batch Input Lauf erfolgt ueber die neue Tabelle APQL, die damit *

  • das Protokoll Verzeichnis realisiert. *

  • *

  • 1. Die Tabelle BDCLD beschreibt die Struktur eines Verzeichnis- *

  • Eintrags und entspricht damit APQL. *

  • 2. Die Tabelle BDCLM beschreibt einen Eintrag innerhalb eines *

  • TemSe Protkoll Files (M = Message). *

*----


*

*----


*

*-- Datendefinitionen zum Report ---*

*----


*

*

*

TABLES: BDCMH, *BDCMH, "BatchInput Trans.Header

BDCTH, *BDCTH, "BatchInput Mess. Header

APQD, *APQD, "Queue Daten

APQI, *APQI, "Queue Info

APQL, "Protocol Directory Info

D0220, "Dynpro 220

D0300. "Dynpro 320

*

TABLES: SPOP. "infostruktur popup_to_confirm

*

DATA: BEGIN OF BIM, "Aktivitaeten Uebersicht

AONL(4) VALUE 'AONL', "Mappen-Abspielen im Online

ABTC(4) VALUE 'ABTC', "Mappen-Abspielen im Batch

FREE(4) VALUE 'FREE', "Freigeben einer Mappe

LOCK(4) VALUE 'LOCK', "Sperren und Entsperren von Mappen

DELE(4) VALUE 'DELE', "Loeschen von Mappen

ANAL(4) VALUE 'ANAL', "Analysieren von Mappen

END OF BIM.

*

DATA BEGIN OF BDCLDA OCCURS 0. " ITabelle der Verzeichniseintraege

INCLUDE STRUCTURE APQL. " LogTabelle

DATA END OF BDCLDA .

DATA: BEGIN OF ITRAN OCCURS 0,

CNT TYPE I, "zaehler

TRANS TYPE I, "transanktions#

QID LIKE APQI-QID , "qid

FRAGM(1) , "fragmented flag

END OF ITRAN.

DATA: ISTART TYPE I,

IENDE TYPE I,

ISTEP TYPE I,

IND TYPE I.

*

DATA: BEGIN OF BLOCK,

MARK TYPE I VALUE 0, "markierungsflag

SA LIKE SY-CPAGE, " block anfang

ZA LIKE SY-CUROW,

SE LIKE SY-CPAGE, " block ende

ZE LIKE SY-CUROW,

END OF BLOCK.

DATA: BEGIN OF MTAB OCCURS 0.

INCLUDE STRUCTURE APQI.

DATA: END OF MTAB.

*

DATA: BEGIN OF MY ,

MSGV1 LIKE SY-MSGV1,

MSGV2 LIKE SY-MSGV2,

MSGV3 LIKE SY-MSGV3,

MSGV4 LIKE SY-MSGV4,

END OF MY.

*

DATA: T-COUNT TYPE I.

*

DATA: "Hilfsfelder Zugriff Logfile

S_LOGNAME(80),

DECISION(01),

JA(01) VALUE 'J', "yeah

NEIN(01) VALUE 'N', "ni

EC TYPE I,

DEL_RETURN TYPE I,

NAMELN TYPE I,

TFOUND TYPE I,

TFCOUNT TYPE I,

DTRANCNT TYPE I VALUE 0,

PROTCNT TYPE I,

DCOUNT TYPE I,

MCOUNT TYPE I,

CHECKCNT TYPE I,

MAXLINE TYPE I VALUE 0,

WSTAT(04) TYPE C,

USE(1) TYPE C,

MODUS(1) TYPE C,

RUNLEVEL(1) TYPE C,

ZW-FNAME(80), "Hilfsfeld feldname

TMAPN(12) TYPE C, "hilfsfeld bdcld-GROUPID

BDCMHLEN TYPE I VALUE 20, "MessageHeader laenge 20 Bytes

BDCTHLEN TYPE I VALUE 6, "TransactionHeader laenge 6 Bytes

WHICHTRAN(3) TYPE C,

ULINE(80) VALUE "Unterstrich

'----

-


',

TABIND LIKE SY-TABIX,

TABIND1 LIKE SY-TABIX,

PFSTATUS LIKE SY-PFKEY,

OLDSTATUS LIKE SY-PFKEY,

MOD_BILD TYPE I VALUE 0,

LOOP(1) VALUE 'L', "loop flag

TABW(1) VALUE 'T' , "loop flag

MSG_ART(1), "message art e=error w=warning s=

SEPCHAR(1), "seperator character def.

HBEGIN(1), "header beginn character Def.

COUNTX TYPE X, "header beginn character Def.

COUNTY TYPE I, "header beginn character Def.

EAFELD TYPE X VALUE '80', "header beginn character Def.

HLEN TYPE I VALUE 20, "header len

SAVE_CUROW0 LIKE SY-CUROW,

SAVE_CUROW1 LIKE SY-CUROW,

SAVE_CUROW2 LIKE SY-CUROW,

SAVE_CUROW3 LIKE SY-CUROW,

SAVE_CUROW4 LIKE SY-CUROW,

SAVE_CUROW5 LIKE SY-CUROW,

SAVE_CUROW6 LIKE SY-CUROW,

SAVE_CUROW7 LIKE SY-CUROW,

SAVE_CUROW8 LIKE SY-CUROW,

SAVE_LSIND LIKE SY-LSIND,

SAVE_LILLI1 LIKE SY-LILLI,

SAVE_LILLI2 LIKE SY-LILLI,

SAVE_PAGE1 LIKE SY-CPAGE,

SAVE_PAGE2 LIKE SY-CPAGE,

SAVE_PAGE8 LIKE SY-CPAGE,

SAVE_STARO LIKE SY-STARO,

SAVE_STACO LIKE SY-STACO,

SAVE_RC LIKE SY-SUBRC,

LINCT LIKE SY-LINCT,

LLINCT LIKE SY-LINCT,

E(1) VALUE 'E',

PARAMNAME(11) VALUE 'bdc/logfile',

frame1(14),

D0320-FCODE LIKE SY-UCOMM .

*

DATA:

  • Hilfsfeld zur Parameter-Uebergabe an Langtext-Anzeige eines

  • Job-Protokoll Eintrags

MSG_TEXT LIKE SHKONTEXT-MELDUNG,

MSG_ARBGB LIKE SHKONTEXT-MELD_ID,

MSG_NR LIKE SHKONTEXT-MELD_NR,

MSG_TITLE LIKE SHKONTEXT-TITEL.

*

DATA:

  • Hilfsfeld zur protokollfeststellung im zentralen directory

SHIFTLEN TYPE I VALUE 0,

PROTFLEN TYPE I VALUE 0,

PROTFOFF TYPE I VALUE 0,

RLEN TYPE I VALUE 0.

DATA: "Konstanten

APQD-MAXA TYPE I VALUE 100, " maximaler access auf apqd

AUTOR(05) TYPE C VALUE 'HARMS',

STANDALONE(01) TYPE C VALUE 'O',

DYNPRO(01) TYPE C VALUE 'D',

SUBMIT(01) TYPE C VALUE 'S'.

*

DATA: "zaehler

TFCNT TYPE I VALUE 0,

ON TYPE I VALUE 1,

OK TYPE I VALUE 1,

OFF TYPE I VALUE 0,

GUI_OBJ TYPE I VALUE 9,

HCOUNT TYPE I VALUE 0,

TCOUNT TYPE I VALUE 0,

TCOUNT1 TYPE I VALUE 0,

TCOUNT2 TYPE I VALUE 0,

WCOUNT TYPE I VALUE 0,

ZCOUNT TYPE I VALUE 0,

QCOUNT TYPE I VALUE 0.

*

DATA BEGIN OF LOG.

INCLUDE STRUCTURE RLOG.

DATA END OF LOG.

*

DATA:

BEGIN OF ZWD,

VDAT(8) TYPE C,

XDAT(1) TYPE C,

BDAT(8) TYPE C,

END OF ZWD.

DATA: "Hilfsfelder

VDAT TYPE D,

BDAT TYPE D.

*

DATA: "Eingabedatum fuer Ausgabedatum

BEGIN OF DATE,

JJJJ(4) TYPE N, "jahr

MM(2) TYPE N, "monat

TT(2) TYPE N, "tag

END OF DATE.

*

DATA: "Eingabedatum fuer Ausgabedatum

BEGIN OF DAT ,

TT(2) TYPE N, "tag

MM(2) TYPE N, "monat

JJJJ(4) TYPE N, "jahr

END OF DAT .

*

DATA: BEGIN OF DYH. "Dynpro Header

INCLUDE STRUCTURE D020S.

DATA: END OF DYH.

*

DATA: BEGIN OF DYF OCCURS 250. "Dynpro Felder

INCLUDE STRUCTURE D021S.

DATA: END OF DYF.

*

DATA: BEGIN OF DYA OCCURS 100. "Dynpro Ablauf-Logik

INCLUDE STRUCTURE D022S.

DATA: END OF DYA.

*

DATA: BEGIN OF DYM OCCURS 20. "Dynpro Matchcode-Subkeys

INCLUDE STRUCTURE D023S.

DATA: END OF DYM.

*

DATA: BEGIN OF DYL OCCURS 64, "Loop-Information

LTYP,

LANF TYPE X,

LBLK TYPE X,

LREP TYPE X,

END OF DYL.

*

*----


*

*----


n e u -


*

*----


*

DATA: BEGIN OF TF OCCURS 0, "interne tabelle mit dynprofeldern

COUNT TYPE I VALUE 0, "zum abmischen

TRCD(4),

STAT(4),

PGM(8), "programmname

DYN(4) TYPE N, "dynpronummer

FNAME(35),

FARG(80),

FSTART(5) TYPE P,

FENDE(5) TYPE P,

END OF TF.

*

DATA: BEGIN OF DYT. "Dynpro Felder

INCLUDE STRUCTURE D021S.

DATA: END OF DYT.

*

*

DATA: BEGIN OF ANAL,

COUNT TYPE I VALUE 0, " zaehler

ECOUNT TYPE I VALUE 0, " zaehler

BA LIKE APQD-TRANS, " block anfang

BE LIKE APQD-TRANS, " block ende

OBA LIKE APQD-TRANS, " block anfang old

OBE LIKE APQD-TRANS, " block ende old

FKT1 LIKE APQD-TRANS, " faktor1

FKT2 LIKE APQD-TRANS, " faktor2

MAXBLK LIKE APQD-TRANS, " maximale blockanzahl

BLK# LIKE APQD-TRANS, " blocknummer lfd.

END OF ANAL.

            • interne Tabelle ---

DATA:

BEGIN OF ITAB OCCURS 0, "Interne Tabelle fuer Grundliste

*

COUNT LIKE APQI-TRANSCNT, "Record count, Hilfsfeld fuer debug

*

TCNT LIKE APQI-TRANSCNT, "transaction counter all

MCNT LIKE APQI-MSGCNT, "message counter all

ETCNT LIKE APQI-TRANSCNTE, "transaction counter errore

EMCNT LIKE APQI-MSGCNTE, "message counter error

DTCNT LIKE APQI-TRANSCNTD, "transaction counter delete

DMCNT LIKE APQI-MSGCNTD, "message counter delete

FTCNT LIKE APQI-TRANSCNTF, "transaction counter finished

FMCNT LIKE APQI-MSGCNTF, "message counter finished

BTCNT LIKE APQI-TRANSCNTF, "transaction counter booked

BMCNT LIKE APQI-MSGCNTF, "message counter booked

QDEL LIKE APQI-QERASE, "kennzeichen loeschen mappe

STATD(12),

END OF ITAB.

*

DATA:

BEGIN OF OLDI, "Headerdaten von Tapqd-udat (Vergl.)

HYC(1), "header eyecatcher

PGM(8), "programmname

DYN(4) TYPE N, "dynpronummer

SYNC(1), "syncpoint

STAT(1), "STatus

SCHAR(1), "Seperatorcharacter Def.

TRCD(4), "Trans.code

TCNT LIKE APQD-TRANS,

MCNT LIKE APQD-BLOCK,

END OF OLDI.

*

DATA: MFART(2) TYPE C, "Hilfsfelder abmischen dynpro mit

MFSTART TYPE I VALUE 0, "feldinhalten

MFENDE TYPE I VALUE 0,

MFLEN TYPE I VALUE 0.

*

DATA:

BEGIN OF Z, "Hilfsstruktur fuer sy-lisel

TRCD(04),

FILLER1(08),

STAT(03),

FILLER2(09),

PROG(08),

FILLER3(01),

DYN(04),

FILLER4(44),

END OF Z.

*

DATA:

BEGIN OF LF, "Hilfsstruktur fuer loop extension

FILLER1(01),

ZEILE(02) TYPE N,

FILLER2(01),

END OF LF.

*

DATA: ZEILE(2) TYPE P, "Hilfsfelder Dynproaufbereitung

SPALTE(2) TYPE P,

PLENG(2) TYPE P,

PLANF(2) TYPE P,

PLBLK(2) TYPE P,

PLREP(2) TYPE P,

ZAEHL(4) TYPE P,

PZEILE(2) TYPE P,

PCOLN(2) TYPE P.

*

DATA: BEGIN OF BILD OCCURS 24, " -''-

ZEILE(120),

FLAG,

END OF BILD,

CHAR79(79),

DYNAME(12).

*

DATA: BEGIN OF BILDE OCCURS 0, "Eingabefelder aufbereitet

ZEILE LIKE ZEILE,

PCOLN LIKE PCOLN,

PLENG LIKE PLENG,

PREP TYPE I,

GUIOBJ(01),

FLD(120),

END OF BILDE,

REF-ZEILE LIKE ZEILE.

*

DATA:

BEGIN OF BDC,

OKCODE(5), "Dynpro Okcode

CURSOR(35), "Cursorposition Feldname

END OF BDC. "oder Format ZZ,SS

*

DATA:

BEGIN OF CURSOR,

ZZ(2) TYPE N, "Zeile

FILLER(1), "Komma

SS(2) TYPE N, "Sspalte

END OF CURSOR. " Z = Zeile, S = Spalte

*

DATA:

BEGIN OF FLD,

FNAME(80),

FVAL(80),

END OF FLD.

*

DATA: "Popup 220 Groesse

BEGIN OF D220,

L TYPE I VALUE 10 , " links 10

O TYPE I VALUE 06 , " oben 06

R TYPE I VALUE 38 , " rechts38

U TYPE I VALUE 11 , " unten 11

END OF D220.

*

INCLUDE RSTR0110.

*

DATA: BEGIN OF PROT_LIST OCCURS 0.

INCLUDE RSTR0112.

DATA: SEEN(1),

TO_BE_DELETED(1),

HAS_CHANGED(1),

LOCAL_HOST(24),

END OF PROT_LIST.

DATA: "reports

REOREPORT(8) TYPE C VALUE 'RSBDCREO', " Protokollreorganisation

SUBREPORT(12) TYPE C VALUE 'RSBDCBTC_NEW', " Submit Batch

LOGREPORT(8) TYPE C VALUE 'RSBDCLOG', " Protokoll

DMPREPORT(12) TYPE C VALUE 'RSBDCDMP_NEW', " Queue Dump

TSTREPORT(8) TYPE C VALUE 'RSBDCCKT', " alle BDCLG Files in APQL?

APLREPORT(8) TYPE C VALUE 'RSBDCCKA'. " TemSe File zu APQL-Eintrag?

TABLES: SNAP. "Rabaxauswertung

FIELD-SYMBOLS: .

*

DATA:

BEGIN OF D320, "Popup 320 Groesse

L TYPE I VALUE 30 , " links 30

O TYPE I VALUE 06 , " oben 06

R TYPE I VALUE 60 , " rechts60

U TYPE I VALUE 08 , " unten 08

END OF D320.

*

DATA: FOLGESEGMENT TYPE I,

SOFFS TYPE I ,

APQDVARLEN TYPE I,

BDCMHSEPC(01),

MAXVARDATALEN TYPE I VALUE 0.

*----


*

*---- common part daten erhalten ein eigenes segment----


*

*----


*

DATA BEGIN OF COMMON PART VARDAT.

DATA: APQDVARDATA(21333), " neue datenfelder wegen

*APQDVARDATA(21333), " segmentierten mappen

UDAT(21333).

DATA END OF COMMON PART VARDAT.

INCLUDE RSBDCIL1. " data definitionen fuer rsbdcil2

INCLUDE RSBDCIL2. " Forms zur Protokollanzeige

INCLUDE RSBDCIL3. " Form zum Lesen des TemSe Files

" in Anlehnung an LSTLGFXX.

*

*----


*

*---- START OF SELECTION -


*

*----


*

DATA: PROTPARAM(60) VALUE 'bdc/new_protocol',

NEWPROT(3) VALUE 'off'.

PARAMETER MAPPE LIKE APQI-GROUPID DEFAULT '*'.

PARAMETER QUEUE_ID LIKE APQD-QID DEFAULT '0' NO-DISPLAY.

PARAMETER TEMSEID LIKE APQL-TEMSEID DEFAULT '0' NO-DISPLAY.

START-OF-SELECTION.

CALL 'C_SAPGPARAM' ID 'NAME' FIELD PROTPARAM

ID 'VALUE' FIELD NEWPROT.

IF NEWPROT <> 'on'.

SUBMIT RSBDCOLG AND RETURN.

EXIT.

ENDIF.

*

CLEAR LOG.

*

IF SY-TCODE NE 'SE38'. " runlevel festlegen

RUNLEVEL = SUBMIT.

ELSE.

RUNLEVEL = STANDALONE.

ENDIF.

*

IF SY-BATCH <> SPACE. " runlevel festlegen

RUNLEVEL = STANDALONE. " im batch

ENDIF.

*

IF RUNLEVEL = SUBMIT.

GET PARAMETER ID 'BDC' FIELD LOG.

ELSE.

PERFORM CHECK_PARAM.

ENDIF.

*

CLEAR: BDCLD, SHOWTYP.

REFRESH: BDCLD.

*

IF LOG-MODUS EQ 'A' OR

LOG-MODUS EQ 'B'.

IF LOG-TEXT(17) NE SPACE.

MOVE LOG-TEXT TO ZWD.

MOVE ZWD-VDAT TO VDAT.

  • PERFORM MAKE_DATE USING ZWD-VDAT VDAT.

MOVE ZWD-BDAT TO BDAT.

  • PERFORM MAKE_DATE USING ZWD-BDAT BDAT.

ELSE.

MOVE '00000000' TO VDAT.

MOVE '99999999' TO BDAT.

ENDIF.

ENDIF.

*

*

CASE LOG-MODUS.

WHEN 'A'.

SET PF-STATUS 'ALPH'.

SET TITLEBAR 'ALP'.

PERFORM ALL_PROT. "vh3914

  • PERFORM LOG_ALL.

PERFORM SHOW_DIR.

WHEN 'B'.

SET PF-STATUS 'ALPH'.

SET TITLEBAR 'ALP'.

PERFORM ALL_PROT. "vh3914

  • PERFORM LOG_ALL.

PERFORM SHOW_DIRP.

WHEN 'C'.

SET PF-STATUS 'ALPO'.

SET TITLEBAR 'ALP'.

PERFORM ALL_PROT. "vh3914

  • PERFORM LOG_ALL.

PERFORM INFO_BIPROT.

IF LOG-TCNT GT 1.

LOG-MODUS = 'F'.

SET PF-STATUS 'ALPF'.

PERFORM SHOW_DIRF.

ELSE.

PERFORM SHOW_DIRQ.

ENDIF.

WHEN 'D'.

SET PF-STATUS 'ALPO'.

SET TITLEBAR 'ALP'.

PERFORM ALL_PROT. "vh3914

  • PERFORM LOG_ALL.

PERFORM SHOW_DIR.

WHEN 'E'.

SET PF-STATUS 'ALPO'.

SET TITLEBAR 'ALP'.

PERFORM ALL_PROT. "vh3914

  • PERFORM LOG_ALL.

PERFORM SHOW_DIRE.

WHEN 'M'.

SET PF-STATUS 'MESS'.

SET TITLEBAR 'MSG' WITH LOG-MAPN.

CLEAR BDCLD.

MOVE-CORRESPONDING LOG TO BDCLD.

MOVE LOG-MAPN TO BDCLD-GROUPID.

MOVE LOG-QUID TO BDCLD-QID.

PERFORM LOG_MES.

PERFORM SHOW_MES.

WHEN 'P'.

PERFORM ALL_PROT. "vh3914

PERFORM INFO_BIPROT.

WHEN 'Q'.

PERFORM ALL_PROT. "vh3914

PERFORM DELE_BIPROT.

WHEN OTHERS.

SET PF-STATUS 'ALPH'.

SET TITLEBAR 'ALP'.

PERFORM ALL_PROT. "vh3914

  • PERFORM LOG_ALL.

PERFORM SHOW_DIR.

ENDCASE.

*

PERFORM SEND_MSG.

*

SET PARAMETER ID 'BDC' FIELD LOG.

*

*/

*----


*

*---- PBO MODULE REPORT RSBDCLOG -


*

*----


*

*----


*

  • MODULE D0220_POPINI PBO *

*----


*

  • Initialisierung der Cursor-Eingabe-Felder (ja,nein) in Popup *

  • *

*----


*

MODULE D0220_POPINI OUTPUT.

*

CLEAR: ZW-FNAME.

ZW-FNAME = 'D0220-POPNEIN'.

SET CURSOR FIELD ZW-FNAME.

*

SET PF-STATUS '0220'.

SET TITLEBAR '009'.

*

D0220-POPJA = TEXT-027. "ja

D0220-POPNEIN = TEXT-028. "nein

*

ENDMODULE. " D0220_POPINI.

*/

*----


*

  • MODULE D0320_INIT PBO *

*----


*

  • Initialisierung der Felder des Dynpros 0320 *

  • *

*----


*

MODULE D0320_INIT OUTPUT.

*

  • Initialisierung der Dynprofelder

*

SET PF-STATUS '0320'.

*

SET TITLEBAR '015'.

*

CLEAR: D0320-FCODE.

*

  • CLEAR: D0300-BATCHSYS.

*

ENDMODULE. " D0300_INIT.

*/

*----


*

*---- PAI MODULE REPORT RSBDCLOG -


*

*----


*

*----


*

  • MODULE D0220_DELETE PAI *

*----


*

  • Loeschen eines Protokolls *

  • *

*----


*

MODULE D0220_DELETE.

*

  • IF SY-UNAME EQ AUTOR. BREAK-POINT 1. ENDIF.

*

CLEAR: ZW-FNAME.

GET CURSOR FIELD ZW-FNAME.

*

IF D0220-FCODE = 'CONT' OR " f12 abbrechen, nein

SY-CUROW = 7 OR

SY-CUROW = 4 OR

ZW-FNAME = 'D0220-POPNEIN' OR

ZW-FNAME = 'D0220-POPCONT'.

RETURN = 0.

ENDIF.

*

IF D0220-FCODE <> 'CONT' AND " ja

( ZW-FNAME = 'D0220-POPJA' OR

SY-CUROW = 5 ).

RETURN = 0.

D0220-FCODE = 'DEL'.

ENDIF.

*

ENDMODULE. " D0220_DELETE

*/

*----


*

  • MODULE D0320_START *

*----


*

  • Angabe der Blocknummer in der Mappenanalyse *

*----


*

MODULE D0320_FCODE.

*

*

*

CASE D0320-FCODE.

WHEN ' ' . "normale verarbeitung

IF D0300-BLOCKNR GT ANAL-MAXBLK OR

D0300-BLOCKNR LE 0.

RETURN = 328.

PERFORM SEND_MSG.

SET SCREEN 320.

ENDIF.

WHEN 'GOON' . "normale verarbeitung

IF D0300-BLOCKNR GT ANAL-MAXBLK OR

D0300-BLOCKNR LE 0.

RETURN = 328.

PERFORM SEND_MSG.

SET SCREEN 320.

ENDIF.

WHEN 'CONT' . "f12 abbrechen

WHEN OTHERS .

SET PF-STATUS '0320'.

SET TITLEBAR '015'.

SET SCREEN 320.

ENDCASE. "D0320-FCODE

*

*

ENDMODULE. " d0320_fcode

*/

*----


*

  • FORM : info_biprot *

  • *

*----


*

  • Info ueber ein Protokoll *

  • *

*----


*

FORM INFO_BIPROT.

*

CLEAR: QFOUND.

*

LOOP AT BDCLD.

IF LOG-QUID EQ BDCLD-QID.

QFOUND = QFOUND + 1.

ENDIF.

ENDLOOP.

*

IF QFOUND GT 0.

LOG-RETC = 'PROT'.

LOG-TCNT = QFOUND.

ENDIF.

*

ENDFORM. " info_biprot

*/

*----


*

  • FORM : dele_biprot *

  • *

*----


*

  • loeschen eines Protokolls von aussen *

  • *

*----


*

FORM DELE_BIPROT.

*

CLEAR: QFOUND.

*

LOOP AT BDCLD.

IF LOG-QUID EQ BDCLD-QID.

QFOUND = QFOUND + 1.

PERFORM DEL_MESL.

ENDIF.

ENDLOOP.

*

IF QFOUND GT 0.

LOG-RETC = 'DELE'.

LOG-TCNT = QFOUND.

ENDIF.

*

ENDFORM. " dele_biprot

*/

*----


*

  • FORM : all_prot "vh3914 *

  • *

*----


*

FORM ALL_PROT.

*

CLEAR: BDCLD-CNT,

BDCLD#.

PERFORM LOG_ALL. "vh3914

IF BDCLD-CNT EQ 0. "vh3914

RETURN = 318. "vh3914

EXIT. "vh3914

ELSE. "vh3914

RETURN = 0. "vh3914

ENDIF. "vh3914

SORT: BDCLD BY CREDATE DESCENDING "vh3914

CRETIME DESCENDING. "vh3914

*

ENDFORM. " all_prot

*/

*----


*

  • FORM : log_all *

  • *

*----


*

FORM LOG_ALL.

*

PERFORM LOG_DIR.

*

ENDFORM. " log_all.

*/

*----


*

  • FORM : show_all *

  • *

*----


*

FORM SHOW_ALL.

*

PERFORM SHOW_DIR.

*

ENDFORM. " show_all.

*/

*----


*

  • FORM : log_dir *

  • *

*----


*

FORM LOG_DIR.

*

  • CLEAR: BDCLD.

  • REFRESH: BDCLD.

CLEAR: BDCLDA. "vh3914

REFRESH: BDCLDA. "vh3914

*

SELECT * FROM APQL INTO TABLE BDCLDA. "protocol directory data

*

IF SY-SUBRC = 4. " Verzeichnis ist leer

RETURN = 318. "MESSAGE S318 WITH 'Verzeichnis'

EXIT.

ENDIF.

IF SY-SUBRC NE 0. " Fehler beim Lesen des Verzeichni

RETURN = 317. "MESSAGE S317 WITH 'Verzeichnis' 'gelesen

EXIT.

ENDIF.

*

SORT: BDCLDA BY CREDATE DESCENDING

CRETIME DESCENDING.

*

LOOP AT BDCLDA "vh3914

WHERE MANDANT = SY-MANDT.

MOVE-CORRESPONDING BDCLDA TO BDCLD. "vh3914

BDCLD-CNT = BDCLD-CNT + 1. "vh3914

BDCLD# = BDCLD# + 1. "vh3914

APPEND BDCLD. "vh3914

ENDLOOP. "vh3914

*

ENDFORM. " log_dir.

*/

*----


*

  • FORM : show_dir *

  • *

*----


*

FORM SHOW_DIR.

*

  • IF SY-UNAME EQ AUTOR. BREAK-POINT 1. ENDIF.

IF RETURN GT 0.

EXIT.

ENDIF.

SHOWTYP = 'DIR '.

*

LOOP AT BDCLD WHERE CREDATE GE VDAT

AND CREDATE LE BDAT.

FORMAT RESET.

WRITE:/01(102) SPACE COLOR COL_NORMAL.

WRITE: 24(27) BDCLD-GROUPID COLOR COL_KEY INTENSIFIED ON.

PERFORM WRITE_DATE USING BDCLD-CREDATE.

WRITE: 02(10) DATE1 DD/MM/YYYY COLOR COL_NORMAL,

13(08) BDCLD-CRETIME USING EDIT MASK '__:__:__'

COLOR COL_NORMAL.

WRITE: 52(12) BDCLD-CREATOR COLOR COL_NORMAL,

81(24) BDCLD-DESTSYS COLOR COL_NORMAL.

PERFORM WRITE_VLINE USING ' ' 23.

PERFORM WRITE_VLINE USING ' ' 12.

PERFORM WRITE_VLINE USING ' ' 51.

PERFORM WRITE_VLINE USING ' ' 80.

PERFORM WRITE_VLINE USING ' ' 1.

PERFORM WRITE_VLINE USING ' ' 102.

HIDE: BDCLD, BDCLD#.

ENDLOOP.

PERFORM LAST_LISTLINE.

LINCT0 = SY-SROWS. "seitengroesse grundliste festhalten

*

*

*

ENDFORM. " show_dir.

*/

*----


*

  • FORM : show_dirp *

  • *

*----


*

FORM SHOW_DIRP.

*

  • show directory for log-name

*

IF RETURN GT 0.

EXIT.

ENDIF.

SHOWTYP = 'DIRP '.

*

CLEAR: NAMELN, LMAPN, TFOUND.

IF LOG-MAPN CA '%'.

NAMELN = SY-FDPOS.

WRITE LOG-MAPN TO LMAPN(NAMELN).

ELSE.

IF LOG-MAPN CA ' '.

NAMELN = SY-FDPOS.

ELSE.

NAMELN = 12.

ENDIF.

WRITE LOG-MAPN TO LMAPN(NAMELN).

ENDIF.

*

LOOP AT BDCLD WHERE CREDATE GE VDAT

AND CREDATE LE BDAT.

CLEAR: TMAPN.

WRITE BDCLD-GROUPID TO TMAPN(NAMELN).

IF LMAPN EQ TMAPN.

TFOUND = TFOUND + 1.

FORMAT RESET.

WRITE:/01(102) SPACE COLOR COL_NORMAL.

WRITE: 24(27) BDCLD-GROUPID COLOR COL_KEY INTENSIFIED ON.

PERFORM WRITE_DATE USING BDCLD-CREDATE.

WRITE: 02(10) DATE1 DD/MM/YYYY

COLOR COL_NORMAL,

13(08) BDCLD-CRETIME USING EDIT MASK '__:__:__'

COLOR COL_NORMAL,

52(12) BDCLD-CREATOR COLOR COL_NORMAL,

81(24) BDCLD-DESTSYS COLOR COL_NORMAL.

PERFORM WRITE_VLINE USING ' ' 23.

PERFORM WRITE_VLINE USING ' ' 12.

PERFORM WRITE_VLINE USING ' ' 51.

PERFORM WRITE_VLINE USING ' ' 80.

PERFORM WRITE_VLINE USING ' ' 1.

PERFORM WRITE_VLINE USING ' ' 102.

HIDE: BDCLD, BDCLD#.

ENDIF.

ENDLOOP.

*

IF TFOUND = 0.

RETURN = 324. " keine Protokolle gefunden

ELSE.

PERFORM LAST_LISTLINE.

ENDIF.

LINCT0 = SY-SROWS. "seitengroesse grundliste festhalten

*

*

ENDFORM. " show_dirp.

*/

*----


*

  • FORM : show_dirq *

  • *

*----


*

FORM SHOW_DIRQ.

*

  • show directory and message for QUEUE_ID

*

IF RETURN GT 0.

EXIT.

ENDIF.

SHOWTYP = 'DIRQ '.

*

CLEAR: QFOUND, LMAPN.

*

LOOP AT BDCLD.

IF LOG-QUID EQ BDCLD-QID.

QFOUND = QFOUND + 1.

  • QFOUND = 1.

IF QFOUND = 1.

FORMAT COLOR COL_HEADING INTENSIFIED ON.

WRITE:/01(102) SY-ULINE.

WRITE:/24(12) 'Mappenname '(003).

WRITE: 02(11) 'Angelegt '(004),

12(08) ' ',

52(12) 'User '(005).

PERFORM WRITE_VLINE USING ' ' 23.

PERFORM WRITE_VLINE USING ' ' 51.

PERFORM WRITE_VLINE USING ' ' 1.

PERFORM WRITE_VLINE USING ' ' 102.

FORMAT INTENSIFIED.

WRITE:/24(12) SY-ULINE,

02(80) SY-ULINE,

12(08) SY-ULINE,

52(40) SY-ULINE.

PERFORM WRITE_VLINE USING 'T' 23.

PERFORM WRITE_VLINE USING 'T' 51.

PERFORM WRITE_VLINE USING ' ' 1.

PERFORM WRITE_VLINE USING ' ' 102.

ENDIF.

FORMAT RESET.

IF BDCLD-GROUPID NE LMAPN.

WRITE:/01(102) SPACE COLOR COL_NORMAL.

WRITE: 24(27) BDCLD-GROUPID COLOR COL_KEY INTENSIFIED ON.

LMAPN = BDCLD-GROUPID.

PERFORM WRITE_DATE USING BDCLD-CREDATE.

WRITE: 02(10) DATE1 DD/MM/YYYY COLOR COL_NORMAL ,

13(08) BDCLD-CRETIME USING EDIT MASK '__:__:__'

COLOR COL_NORMAL .

WRITE: 52(12) BDCLD-CREATOR COLOR COL_NORMAL ,

80(24) BDCLD-DESTSYS COLOR COL_NORMAL .

PERFORM WRITE_VLINE USING ' ' 23.

PERFORM WRITE_VLINE USING ' ' 51.

PERFORM WRITE_VLINE USING ' ' 1.

PERFORM WRITE_VLINE USING ' ' 102.

ENDIF.

MTAB-GROUPID = BDCLD-GROUPID.

PERFORM BIM_BERECHTIGUNG USING BIM-ANAL X.

IF SY-SUBRC NE 0.

HIDE: BDCLD, BDCLD#.

EXIT.

ENDIF.

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(60) 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.

PERFORM LOG_MES.

PERFORM SHOW_MES.

DO 1 TIMES.

WRITE:/01(102) SPACE COLOR COL_NORMAL.

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.

ENDDO.

HIDE: BDCLD, BDCLD#.

EXIT. " protokoll gefunden, bye

ENDIF. " immer das neueste protokoll

ENDLOOP.

*

IF QFOUND = 0.

RETURN = 324. " keine Protokolle gefunden

ELSE.

PERFORM LAST_LISTLINE.

ENDIF.

LINCT0 = SY-SROWS. "seitengroesse grundliste festhalten

*

*

ENDFORM. " show_dirq.

*/

*----


*

  • FORM : show_dirm *

  • *

*----


*

FORM SHOW_DIRM.

*

  • show directory and message for QUEUE_ID

  • at line-selection

*

*

SHOWTYP = 'DIRM '.

CLEAR: QFOUND, LMAPN.

*

IF LOG-QUID EQ BDCLD-QID.

QFOUND = QFOUND + 1.

IF QFOUND = 1.

FORMAT COLOR COL_HEADING INTENSIFIED ON.

WRITE:/01(102) SY-ULINE.

WRITE:/24(12) 'Mappenname '(003).

WRITE: 02(11) 'Angelegt '(004),

12(08) ' ',

52(50) 'User '(005).

PERFORM WRITE_VLINE USING ' ' 23.

PERFORM WRITE_VLINE USING ' ' 51.

PERFORM WRITE_VLINE USING ' ' 1.

PERFORM WRITE_VLINE USING ' ' 102.

FORMAT INTENSIFIED.

WRITE:/24(12) SY-ULINE,

02(80) SY-ULINE,

12(08) SY-ULINE,

52(80) SY-ULINE.

PERFORM WRITE_VLINE USING ' ' 23.

PERFORM WRITE_VLINE USING ' ' 51.

PERFORM WRITE_VLINE USING ' ' 1.

PERFORM WRITE_VLINE USING ' ' 102.

ENDIF.

FORMAT RESET.

IF BDCLD-GROUPID NE LMAPN.

WRITE:/01(102) SPACE COLOR COL_NORMAL.

WRITE: 24(27) BDCLD-GROUPID COLOR COL_KEY INTENSIFIED ON.

LMAPN = BDCLD-GROUPID.

PERFORM WRITE_DATE USING BDCLD-CREDATE.

WRITE: 02(10) DATE1 DD/MM/YYYY COLOR COL_NORMAL ,

13(08) BDCLD-CRETIME USING EDIT MASK '__:__:__'

COLOR COL_NORMAL .

WRITE: 52(12) BDCLD-CREATOR COLOR COL_NORMAL ,

80(24) BDCLD-DESTSYS COLOR COL_NORMAL .

PERFORM WRITE_VLINE USING ' ' 23.

PERFORM WRITE_VLINE USING ' ' 51.

PERFORM WRITE_VLINE USING ' ' 1.

PERFORM WRITE_VLINE USING ' ' 102.

ENDIF.

MTAB-GROUPID = BDCLD-GROUPID.

PERFORM BIM_BERECHTIGUNG USING BIM-ANAL X.

IF SY-SUBRC NE 0.

HIDE: BDCLD, BDCLD#.

EXIT.

ENDIF.

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.

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.

WRITE: 01(09) SY-ULINE,

11(04) SY-ULINE,

16(13) SY-ULINE,

30(80) SY-ULINE.

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.

*

FORMAT RESET.

PERFORM LOG_MES.

PERFORM SHOW_MES.

DO 1 TIMES.

WRITE:/01(102) SPACE COLOR COL_NORMAL.

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.

ENDDO.

HIDE: BDCLD, BDCLD#.

ENDIF.

*

IF QFOUND = 0.

RETURN = 324. " keine Protokolle gefunden

ELSE.

PERFORM LAST_LISTLINE.

ENDIF.

LINCT0 = SY-SROWS. "seitengroesse grundliste festhalten

*

*

ENDFORM. " show_dirm.

*/

*----


*

  • FORM : show_dire *

  • *

*----


*

FORM SHOW_DIRE.

*

  • show directory and message for QUEUE_ID

*

IF RETURN GT 0.

EXIT.

ENDIF.

SHOWTYP = 'DIRE '.

*

CLEAR: QFOUND, LMAPN.

*

LOOP AT BDCLD.

IF LOG-QUID EQ BDCLD-QID.

QFOUND = QFOUND + 1.

IF QFOUND = 1.

FORMAT COLOR COL_HEADING.

WRITE:/01(102) SY-ULINE.

WRITE:/01(102) SPACE.

WRITE: 24(12) 'Mappenname '(003),

02(10) 'Angelegt '(004),

12(08) ' ',

52(50) 'User '(005).

PERFORM WRITE_VLINE USING ' ' 01.

PERFORM WRITE_VLINE USING ' ' 23.

PERFORM WRITE_VLINE USING ' ' 51.

PERFORM WRITE_VLINE USING ' ' 102.

FORMAT INTENSIFIED.

WRITE:/24(12) SY-ULINE,

01(80) SY-ULINE,

12(40) SY-ULINE,

52(80) SY-ULINE.

PERFORM WRITE_VLINE USING ' ' 01.

PERFORM WRITE_VLINE USING ' ' 23.

PERFORM WRITE_VLINE USING ' ' 51.

PERFORM WRITE_VLINE USING ' ' 102.

ENDIF.

FORMAT RESET.

IF BDCLD-GROUPID NE LMAPN.

  • WRITE:/24(12) BDCLD-GROUPID.

WRITE:/01(102) SPACE COLOR COL_NORMAL.

WRITE: 24(27) BDCLD-GROUPID COLOR COL_KEY INTENSIFIED ON.

LMAPN = BDCLD-GROUPID.

PERFORM WRITE_DATE USING BDCLD-CREDATE.

WRITE: 02(10) DATE1 DD/MM/YYYY COLOR COL_NORMAL,

13(08) BDCLD-CRETIME USING EDIT MASK '__:__:__'

COLOR COL_NORMAL.

  • PERFORM GET_STAT USING BDCLD-STATE WSTAT.

  • WRITE: 40(03) WSTAT COLOR COL_NORMAL,

WRITE: 52(12) BDCLD-CREATOR COLOR COL_NORMAL,

80(24) BDCLD-DESTSYS COLOR COL_NORMAL.

PERFORM WRITE_VLINE USING ' ' 01.

PERFORM WRITE_VLINE USING ' ' 23.

PERFORM WRITE_VLINE USING ' ' 51.

PERFORM WRITE_VLINE USING ' ' 102.

WRITE:/01(102) SY-ULINE.

ENDIF.

FORMAT INTENSIFIED.

  • WRITE:/.

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.

PERFORM WRITE_VLINE USING ' ' 01.

PERFORM WRITE_VLINE USING ' ' 10.

PERFORM WRITE_VLINE USING ' ' 15.

PERFORM WRITE_VLINE USING ' ' 29.

PERFORM WRITE_VLINE USING ' ' 102.

FORMAT INTENSIFIED.

WRITE:

/01(09) SY-ULINE,

11(04) SY-ULINE,

16(13) SY-ULINE,

30(80) SY-ULINE.

PERFORM WRITE_VLINE USING ' ' 10.

PERFORM WRITE_VLINE USING ' ' 15.

PERFORM WRITE_VLINE USING ' ' 29.

FORMAT RESET.

  • ULINE.

PERFORM LOG_MES.

PERFORM SHOW_MES.

HIDE: BDCLD, BDCLD#.

EXIT. " protokoll gefunden, bye

ENDIF.

ENDLOOP.

*

IF QFOUND = 0.

RETURN = 324. " keine Protokolle gefunden

ELSE.

PERFORM LAST_LISTLINE.

ENDIF.

LINCT0 = SY-SROWS. "seitengroesse grundliste festhalten

*

*

ENDFORM. " show_dire.

*/

*----


*

  • FORM : show_dirf *

  • *

*----


*

FORM SHOW_DIRF.

*

  • show directory for qid

*

IF RETURN GT 0.

EXIT.

ENDIF.

SHOWTYP = 'DIRF '.

*

CLEAR: NAMELN, LMAPN, TFOUND.

*

LOOP AT BDCLD WHERE QID EQ LOG-QUID.

TFOUND = TFOUND + 1.

FORMAT RESET.

WRITE:/01(102) SPACE COLOR COL_NORMAL.

WRITE: 24(27) BDCLD-GROUPID COLOR COL_KEY INTENSIFIED ON.

PERFORM WRITE_DATE USING BDCLD-CREDATE.

WRITE: 02(10) DATE1 DD/MM/YYYY

COLOR COL_NORMAL,

13(08) BDCLD-CRETIME USING EDIT MASK '__:__:__'

COLOR COL_NORMAL,

52(12) BDCLD-CREATOR COLOR COL_NORMAL,

81(24) BDCLD-DESTSYS COLOR COL_NORMAL.

PERFORM WRITE_VLINE USING ' ' 23.

PERFORM WRITE_VLINE USING ' ' 12.

PERFORM WRITE_VLINE USING ' ' 51.

PERFORM WRITE_VLINE USING ' ' 80.

PERFORM WRITE_VLINE USING ' ' 1.

PERFORM WRITE_VLINE USING ' ' 102.

HIDE: BDCLD, BDCLD#.

ENDLOOP.

*

IF TFOUND = 0.

RETURN = 324. " keine Protokolle gefunden

ELSE.

PERFORM LAST_LISTLINE.

ENDIF.

LINCT0 = SY-SROWS. "seitengroesse grundliste festhalten

*

*

ENDFORM. " show_dirf.

*/

*----


*

  • FORM : del_mesl *

  • *

*----


*

FORM DEL_MESL.

*

  • IF SY-UNAME = AUTOR. BREAK-POINT 1. ENDIF.

*

IF LOG-MODUS NE 'Q'.

*

IF D0220-FCODE NE 'DEL'.

CLEAR: D0220-FCODE.

EXIT.

ENDIF.

*

RETURN = 0.

*

IF SY-LISEL(10) EQ SPACE.

EXIT.

ELSE.

CLEAR: SY-LISEL.

MODIFY CURRENT LINE .

ENDIF.

ENDIF.

DELETE FROM APQL WHERE MANDANT = BDCLD-MANDANT AND

TEMSEID = BDCLD-TEMSEID.

CALL FUNCTION 'COMMON_LOG_REMOVE'

EXPORTING

CLIENT = BDCLD-MANDANT

LOGNAME = BDCLD-TEMSEID

EXCEPTIONS

OTHERS = 20.

COMMIT WORK.

*

IF SY-SUBRC GT 0. " Fehler beim Loeschen der Partition

RETURN = 387.

ELSE.

RETURN = 386.

DELETE BDCLD INDEX BDCLD-CNT.

ENDIF.

PERFORM SEND_MSG.

*

ENDFORM. " del_mesl.

*/

*----


*

  • FORM : mdel_mesl *

  • *

*----


*

FORM MDEL_MESL.

*

  • IF SY-UNAME = AUTOR. BREAK-POINT 1. ENDIF.

*

IF LOG-MODUS NE 'Q'.

IF D0220-FCODE NE 'DEL'.

CLEAR: D0220-FCODE.

EXIT.

ENDIF.

RETURN = 0.

ENDIF.

*

SAVE_CUROW8 = SY-CUROW. "gehoert zu liste neu ....

SAVE_PAGE8 = SY-CPAGE.

SAVE_STARO = SY-STARO.

SAVE_STACO = SY-STACO.

*

CLEAR: DCOUNT,

RETURN.

LOOP AT BDCLD WHERE ACTIVE EQ X.

DCOUNT = DCOUNT + 1.

MOVE BDCLD-GROUPID TO MTAB-GROUPID.

PERFORM BIM_BERECHTIGUNG USING BIM-DELE X.

IF SY-SUBRC EQ 0. "berechtigung ok

MOVE BDCLD-LOGNAME TO LOGNAME. "vh3914

DELETE FROM APQL WHERE MANDANT = BDCLD-MANDANT AND

TEMSEID = BDCLD-TEMSEID.

CALL FUNCTION 'COMMON_LOG_REMOVE'

EXPORTING

CLIENT = BDCLD-MANDANT

LOGNAME = BDCLD-TEMSEID

EXCEPTIONS

OTHERS = 20.

COMMIT WORK.

*

IF SY-SUBRC GT 0. " Fehler beim Loeschen der Partition

RETURN = 387.

ELSE.

RETURN = 386.

DELETE BDCLD INDEX BDCLD-CNT.

ENDIF.

ENDIF.

ENDLOOP. "bdcld

*

IF RETURN GE 0.

DEL_RETURN = RETURN.

CLEAR: RETURN,

BLOCK.

SY-LSIND = 0.

CASE SHOWTYP.

WHEN 'DIR '.

PERFORM SHOW_DIR.

WHEN 'DIRP '.

PERFORM SHOW_DIRP.

WHEN 'DIRQ '.

PERFORM SHOW_DIRQ.

WHEN 'DIRE '.

PERFORM SHOW_DIRE.

WHEN 'DIRM '.

PERFORM SHOW_DIRM.

WHEN OTHERS.

PERFORM SHOW_DIR.

ENDCASE.

SY-LSIND = 0.

SCROLL LIST INDEX 1 TO: PAGE SAVE_PAGE8

LINE SAVE_STARO,

COLUMN SAVE_STACO.

SET CURSOR 2 3.

RETURN = DEL_RETURN.

IF RETURN EQ 386.

RETURN = 315.

ENDIF.

PERFORM SEND_MSG.

ENDIF.

*

*

ENDFORM. " mdel_mesl.

*/

*----


*

  • FORM : write_date *

  • *

*----


*

FORM WRITE_DATE USING VALUE(DAT1).

*

      • Aufbereiten Datum

*

DATE1 = DAT1.

  • MOVE SPACE TO DATE.

  • MOVE DAT1 TO DATE.

  • MOVE-CORRESPONDING DATE TO DATE1.

*

ENDFORM. " write_date.

*/

*----


*

  • FORM : make_date *

  • *

*----


*

FORM MAKE_DATE USING VALUE(FDATI)

CHANGING VALUE(FDATO).

*

      • Aufbereiten Datum

*

MOVE SPACE TO DAT .

MOVE FDATI TO DAT .

MOVE-CORRESPONDING DAT TO DATE.

MOVE DATE TO FDATO.

*

ENDFORM. " make_date.

*/

*----


*

  • FORM : send_msg *

  • *

*----


*

FORM SEND_MSG.

*

      • Ausgabe von Bildschirmnachrichten

*

*

CASE RETURN.

WHEN 0.

WHEN 306. " Keine Mappe gefunden.

MESSAGE S306.

WHEN 308. " Die Batch-Input Datei ist leer

MESSAGE S308.

WHEN 309. " Die angeforderte Mappe ist belegt

MESSAGE S309.

WHEN 310. " Ungueltiger Verarbeitungsmodus

MESSAGE S310.

WHEN 312. " System beschaeftigt, bitte warten

MESSAGE S312.

WHEN 313. " Wird bisher nicht unterstuetzt

MESSAGE S313.

WHEN 301. " Cursor nicht innerhalb der Liste

MESSAGE S301.

WHEN 303. " Mehrfachverarbeitung nicht moeglich

MESSAGE S303.

WHEN 315. " $ Protokolle geloescht

MESSAGE S315 WITH DCOUNT.

CLEAR: DCOUNT.

WHEN 316. " Dynpro nicht gefunden

MESSAGE S316 WITH Z-PROG Z-DYN.

WHEN 317. " Protokoll Verzeichnis nicht gefunden

MESSAGE S325.

WHEN 318. " Protokoll Verzeichnis ist leer

MESSAGE S324.

WHEN 319. " Holen des Profile Parameters 'bdc/logfile'

MESSAGE S319 WITH PARAMNAME. "misslungen

WHEN 321. " $ Protokolle markiert

MESSAGE S321 WITH DCOUNT.

CLEAR: DCOUNT.

WHEN 322. " Message Verzeichnis ist leer

MESSAGE S324.

WHEN 323. " Mehrfachverarbeitung nicht moeglich

MESSAGE S323.

WHEN 324. " Keine Protokolle vorhanden

MESSAGE S324.

WHEN 325. " Kein Protokollverzeichnis vorhanden

MESSAGE S106 WITH LOGNAME.

CLEAR LOGNAME.

WHEN 328. " Blocknummer ist falsch

MESSAGE I328 WITH ANAL-MAXBLK.

WHEN 384. " Anfang der Mappe erreicht

MESSAGE S384.

WHEN 385. " Ende der Mappe errreicht

MESSAGE S385.

WHEN 386. " Protokoll $ wurde geloescht

MESSAGE S386 WITH BDCLD-GROUPID.

WHEN 387. " Fehler bei loeschen des Protokolles $

MESSAGE S387 WITH BDCLD-GROUPID.

WHEN OTHERS.

MESSAGE S399.

ENDCASE.

*

CLEAR: RETURN.

*

ENDFORM. " send_msg.

*/

*----


*

  • FORM : get_stat *

  • *

*----


*

FORM GET_STAT USING VALUE(STATI1) CHANGING VALUE(STATI2).

*

      • aufbereiten des Mappenstatus

*

*

CASE STATI1.

WHEN 'B'. STATI2 = SPACE. "freigegeben

WHEN 'E'. STATI2 = 'fehlerhaft'(009). "fehlerhaft

WHEN 'F'. STATI2 = 'verarbeitet'(010)."verarbeitet

WHEN 'R'. STATI2 = 'aktiv'(011). "aktiv

WHEN 'C'. STATI2 = 'angelegt'(012). "angelegt

WHEN 'S'. STATI2 = 'geloescht'(013). "geloescht nur Transakt.

WHEN 'D'. STATI2 = 'geloescht'(013)."geloescht nur Transakt.

WHEN OTHERS. STATI2 = STATI1. "unbekannter status

ENDCASE.

*

ENDFORM. " get_stat

*/

*----


*

  • FORM : check_param *

  • *

*----


*

FORM CHECK_PARAM.

*

  • pruefen der parameter im standalone-betrieb

*

IF MAPPE CA '*'.

WRITE '%' TO MAPPE+SY-FDPOS(1).

ENDIF.

*

IF MAPPE(01) EQ '*' AND

QUEUE_ID(01) EQ '0'.

LOG-MODUS = 'A'.

ELSE.

IF QUEUE_ID(01) NE '0'.

LOG-QUID = QUEUE_ID.

LOG-MODUS = 'E'.

ELSE.

IF MAPPE NE SPACE.

LOG-MAPN = MAPPE .

LOG-MODUS = 'B'.

ENDIF.

ENDIF.

ENDIF.

*

ENDFORM. "check_param.

*----


*

*----


n e u----


*

*----


*

*/

*----


*

  • FORM : mappen_analyse.

  • *

*----


*

FORM MAPPEN_ANALYSE.

*

*

PERFORM MAPPEN_EMULATION.

IF RETURN = 306.

PERFORM SEND_MSG.

EXIT.

ENDIF.

*******************erster Block*************************************

IF SYST-XCODE EQ 'ANM'.

PERFORM DYNAMIC_SQL USING 1.

ANAL-FKT1 = MTAB-MSGCNT + MTAB-TRANSCNT. "vh

IF QCOUNT NE ANAL-FKT1. "vh

REFRESH ITRAN. "vh

CLEAR ITRAN. "vh

ITRAN-FRAGM = X. "vh

PERFORM FILL_ITRAN. "vh

ELSE. "vh

ITRAN-FRAGM = ' '. "vh

ENDIF. "vh

*

CLEAR: ANAL.

ANAL-FKT1 = MTAB-MSGCNT + MTAB-TRANSCNT.

ANAL-MAXBLK = QCOUNT / APQD-MAXA.

ANAL-BLK# = 1.

IF QCOUNT GT APQD-MAXA. "maximale db-zugriffe = 500

ANAL-FKT2 = QCOUNT - ( ANAL-MAXBLK * APQD-MAXA ).

IF ANAL-FKT2 GT 0. "nur fuer blockanzeige

ANAL-MAXBLK = ANAL-MAXBLK + 1.

ENDIF.

CLEAR: ANAL-FKT2.

ANAL-FKT1 = MTAB-MSGCNT / MTAB-TRANSCNT.

ANAL-FKT1 = ANAL-FKT1 + 1 .

IF APQD-MAXA GT ANAL-FKT1. "fkt1 darf nicht > sein

ANAL-FKT2 = APQD-MAXA / ANAL-FKT1. "sonst leere mappe

ELSE.

ANAL-FKT2 = 1.

ENDIF.

ANAL-BE = ANAL-FKT2.

IF ITRAN-FRAGM NE SPACE. "mappen fragmentiert vh

IF ANAL-BA EQ 0.

ANAL-BA = 1.

ENDIF.

PERFORM READ_ITRAN USING ANAL-FKT2 "vh

' ' "vh

CHANGING ANAL-BA "vh

ANAL-BE. "vh

ELSE.

ANAL-BA = 1. " blockanfang

PERFORM FIND_BLOCKFAKTOR CHANGING ANAL-BA " blockanfang

ANAL-BE

ANAL-FKT2.

ENDIF.

ELSE.

ANAL-BA = 1.

ANAL-BE = ANAL-FKT1.

ENDIF.

IF ANAL-BE LT ANAL-BA.

ANAL-BE = ANAL-BA.

ENDIF.

ANAL-OBA = ANAL-BA.

ANAL-OBE = ANAL-BE.

ENDIF.

*************+nächster Block*****************************

IF SYST-XCODE EQ 'ANM+'.

SY-LSIND = 1.

ANAL-OBA = ANAL-BA.

ANAL-OBE = ANAL-BE.

IF ITRAN-FRAGM NE SPACE. "mappen fragmentiert

PERFORM READ_ITRAN USING ANAL-FKT2 "vh

'+' "vh

CHANGING ANAL-BA "vh

ANAL-BE. "vh

ELSE. "vh

ANAL-BA = ANAL-BA + ANAL-FKT2. "vh

ANAL-BE = ANAL-BA + ANAL-FKT2. "vh

ENDIF. "vh

IF ANAL-COUNT GE QCOUNT.

ANAL-BA = ANAL-BA - ANAL-FKT2.

ANAL-BE = ANAL-BA + ANAL-FKT2.

ANAL-BA = ANAL-OBA.

ANAL-BE = ANAL-OBE.

RETURN = 385. " ende der mappe erreicht

PERFORM SEND_MSG.

EXIT.

ELSE.

ANAL-BLK# = ANAL-BLK# + 1.

IF ANAL-BLK# GT ANAL-MAXBLK.

ANAL-BLK# = ANAL-MAXBLK.

ANAL-BA = ANAL-OBA.

ANAL-BE = ANAL-OBE.

RETURN = 385. " ende der mappe erreicht

PERFORM SEND_MSG.

EXIT.

ENDIF.

ENDIF.

ENDIF.

******************voriger Block*****************************

IF SYST-XCODE EQ 'ANM-'.

SY-LSIND = 1.

ANAL-OBA = ANAL-BA.

ANAL-OBE = ANAL-BE.

IF ITRAN-FRAGM NE SPACE. "mappen fragmentiert

PERFORM READ_ITRAN USING ANAL-FKT2 "vh

'-' "vh

CHANGING ANAL-BA "vh

ANAL-BE. "vh

ELSE. "vh

ANAL-BA = ANAL-BA - ANAL-FKT2. "vh

ANAL-BE = ANAL-BA + ANAL-FKT2. "vh

ENDIF. "vh

IF ANAL-BA LE 0.

ANAL-BA = 1.

ANAL-BE = ANAL-FKT2.

ANAL-COUNT = ANAL-ECOUNT.

RETURN = 384. " anfang der mappe erreicht

PERFORM SEND_MSG.

EXIT.

ELSE.

ANAL-BLK# = ANAL-BLK# - 1.

IF ANAL-BLK# LE 0.

ANAL-BLK# = 1.

RETURN = 384. " anfang der mappe erreicht

PERFORM SEND_MSG.

EXIT.

ENDIF.

ENDIF.

ENDIF.

****************anderer Block**************************************

IF SYST-XCODE EQ 'ANMI'.

SY-LSIND = 1.

*

ANAL-OBA = ANAL-BA.

ANAL-OBE = ANAL-BE.

*

CALL SCREEN 320 "modale dialogbox

STARTING AT D320-L D320-O

ENDING AT D320-R D320-U.

IF D0320-FCODE EQ 'CONT'.

EXIT . .

ELSE.

IF D0300-BLOCKNR EQ ANAL-BLK#.

EXIT. " nothing to do

ENDIF.

IF D0300-BLOCKNR LT ANAL-BLK#.

ANAL-BA = ( ( D0300-BLOCKNR - 1 ) * ANAL-FKT2 ) + 1.

ANAL-BE = ANAL-BA + ANAL-FKT2 .

ANAL-BLK# = D0300-BLOCKNR .

IF D0300-BLOCKNR EQ 0.

ANAL-BLK# = D0300-BLOCKNR .

ANAL-BA = 0.

ENDIF.

ENDIF.

IF D0300-BLOCKNR GT ANAL-BLK#.

ANAL-BA = ( ( D0300-BLOCKNR - 1 ) * ANAL-FKT2 ) + 1.

ANAL-BE = ANAL-BA + ANAL-FKT2 .

ANAL-BLK# = D0300-BLOCKNR .

IF D0300-BLOCKNR GT ANAL-MAXBLK.

ANAL-BLK# = ANAL-MAXBLK.

ANAL-BA = ( ( ANAL-MAXBLK - 1 ) * ANAL-FKT2 ).

ANAL-BE = ( ANAL-MAXBLK * ANAL-FKT2 ).

ENDIF.

ENDIF.

ENDIF.

IF ITRAN-FRAGM NE SPACE. "mappen fragmentiert

PERFORM READ_ITRAN USING ANAL-FKT2 "vh

'+' "vh

CHANGING ANAL-BA "vh

ANAL-BE. "vh

ENDIF. "vh

IF ANAL-COUNT GE QCOUNT.

ANAL-BA = ANAL-BA - ANAL-FKT2.

ANAL-BE = ANAL-BA + ANAL-FKT2.

ANAL-BLK# = ANAL-MAXBLK.

ANAL-BA = ANAL-OBA.

ANAL-BE = ANAL-OBE.

RETURN = 385. " ende der mappe erreicht

EXIT.

ELSE.

IF ANAL-BLK# GT ANAL-MAXBLK.

ANAL-BLK# = ANAL-MAXBLK.

ANAL-BA = ANAL-OBA.

ANAL-BE = ANAL-OBE.

RETURN = 385. " ende der mappe erreicht

EXIT.

ENDIF.

ENDIF.

ENDIF.

*

IF ANAL-BA LE 0.

ANAL-BA = 1.

ANAL-BE = ANAL-FKT2.

ANAL-COUNT = ANAL-ECOUNT.

RETURN = 384. " anfang der mappe erreicht

EXIT.

ELSE.

IF ANAL-BLK# LE 0. "vh

ANAL-BLK# = 1. "vh

RETURN = 384. " anfang der mappe erreicht

EXIT. "vh

ENDIF. "vh

ENDIF.

*

IF ANAL-BLK# EQ ANAL-MAXBLK.

ANAL-BE = MTAB-TRANSCNT.

ENDIF.

*

DTRANCNT = ANAL-BA - 1.

*

IF BDCLM-MCNT GT 1. " siehe mappen_emulation

MODUS = 'DYNPRO'. " mappe = 0

PERFORM ANZEIGEN_MAPPE_1. " dynpro > 1

ELSE.

IF BDCLM-MCNT EQ 1.

MODUS = 'TRANSAKTION'. " transaktion = 1

PERFORM ANZEIGEN_MAPPE_2.

ELSE.

MODUS = 'MAPPE'.

PERFORM ANZEIGEN_MAPPE.

ENDIF.

ENDIF.

*

CASE SYST-XCODE.

WHEN 'ANM '.

ANAL-COUNT = ANAL-ECOUNT.

WHEN 'ANM+'.

ANAL-COUNT = ANAL-COUNT + ANAL-ECOUNT.

WHEN 'ANM-'.

ANAL-COUNT = ANAL-COUNT - ANAL-ECOUNT.

ENDCASE.

*

IF HCOUNT = 0.

IF MODUS = DYNPRO.

SET PF-STATUS '0131'.

SET TITLEBAR 'ANM' WITH MTAB-GROUPID.

ENDIF.

ELSE.

SET PF-STATUS '0131'.

SET TITLEBAR 'ANM' WITH MTAB-GROUPID.

ENDIF.

*

IF ANAL-MAXBLK GT 0.

SET PF-STATUS '0132'.

SET TITLEBAR 'ANM' WITH MTAB-GROUPID.

ENDIF.

*

ENDFORM. " mappen_analyse

*/

*----


*

  • FORM : anzeigen_mappe *

  • *

*----


*

FORM ANZEIGEN_MAPPE.

*

      • Anzeigen einer ausgewaehlten Batch-Input Mappe

      • aufbereiten Transaktionsliste pro Mappe

*

*

REFRESH: TF.

*

CLEAR: HCOUNT,

APQD,

ANAL-ECOUNT,

APQDVARLEN,

FOLGESEGMENT,

TF,

SOFFS .

*

BDCMHLEN = 20.

*

PERFORM CHECK_VARCHAR_LEN CHANGING MAXVARDATALEN.

*

SELECT * FROM APQD " selection von daten

WHERE QID = MTAB-QID " einer mappe

AND TRANS BETWEEN ANAL-BA AND ANAL-BE.

*

CHECK APQD-TRANS NE OLD-TCNT.

ANAL-ECOUNT = ANAL-ECOUNT + 1 .

*

      • Ermitteln der enthaltenen Transaktionen und Dynpros (messages)

*

CLEAR: BDCTH, BDCMH.

IF APQD-VARDATA(1) = 'S'. " Transaktion Header

IF APQD-VARLEN < BDCTHLEN.

RETURN = 320.

EXIT.

ENDIF.

  • initialisierung für segmentierung

FOLGESEGMENT = 0.

CLEAR: APQDVARDATA,

SOFFS.

  • initialisierung für segmentierung

MOVE APQD-VARDATA TO BDCTH.

TRANSLATE BDCTH TO UPPER CASE.

FORMAT RESET.

WRITE:/09(11) BDCTH-TCODE

COLOR COL_GROUP INTENSIFIED OFF.

DTRANCNT = DTRANCNT + 1.

WRITE: 02(06) DTRANCNT COLOR COL_GROUP INTENSIFIED OFF.

PERFORM WRITE_VLINE USING ' ' 1.

PERFORM WRITE_VLINE USING ' ' 8.

PERFORM WRITE_VLINE USING ' ' 20.

PERFORM GET_STAT USING BDCTH-STATE ITAB-STATD.

WRITE: 21(11) ITAB-STATD

COLOR COL_GROUP INTENSIFIED OFF.

MOVE BDCTH-TCODE TO TF-TRCD.

HIDE: TF-STAT, TF-TRCD, APQD-TRANS.

CLEAR: HCOUNT.

HCOUNT = APQD-BLOCK + 1.

ENDIF.

*

IF APQD-VARDATA(1) = 'M' OR " Message Header

FOLGESEGMENT GT 0.

IF APQD-VARLEN < BDCMHLEN.

RETURN = 321.

EXIT.

ENDIF.

IF FOLGESEGMENT EQ 0.

SET CURSOR 3 4.

IF APQD-BLOCK NE HCOUNT.

WRITE:/09(23) SPACE

COLOR COL_NORMAL INTENSIFIED OFF.

WRITE: 02(06) SPACE COLOR COL_NORMAL INTENSIFIED OFF.

PERFORM WRITE_VLINE USING ' ' 1 .

PERFORM WRITE_VLINE USING ' ' 8 .

PERFORM WRITE_VLINE USING ' ' 20.

ENDIF.

MOVE APQD-VARDATA TO BDCMH.

TRANSLATE BDCMH TO UPPER CASE.

BDCMHSEPC = BDCMH-SEPC.

*

PERFORM WRITE_VLINE USING ' ' 32.

PERFORM WRITE_VLINE USING ' ' 46.

*

IF APQD-BLOCK NE HCOUNT.

WRITE: 33(09) BDCMH-PROG

COLOR COL_NORMAL INTENSIFIED OFF,

42(04) BDCMH-DYNR

COLOR COL_NORMAL INTENSIFIED OFF.

ELSE.

WRITE: 33(09) BDCMH-PROG

COLOR COL_GROUP INTENSIFIED OFF,

42(04) BDCMH-DYNR

COLOR COL_GROUP INTENSIFIED OFF.

ENDIF.

*

MOVE BDCMH-PROG TO TF-PGM.

MOVE BDCMH-DYNR TO TF-DYN.

TF-COUNT = TF-COUNT + 1.

  • WRITE: 80(05) TF-COUNT.

HIDE: TF-COUNT, TF-PGM, TF-DYN, APQD-BLOCK.

ENDIF.

*

IF APQD-SEGMT EQ 1.

TCOUNT2 = 0.

PERFORM DYNAMIC_SQL USING 3.

IF TCOUNT2 GT 1.

FOLGESEGMENT = 1.

ELSE.

FOLGESEGMENT = 0.

ENDIF.

ENDIF.

CLEAR: WCOUNT.

MOVE-CORRESPONDING APQD TO *APQD.

IF FOLGESEGMENT GT 0.

WRITE APQD-VARDATA TO APQDVARDATA+SOFFS(APQD-VARLEN).

SOFFS = SOFFS + APQD-VARLEN.

APQDVARLEN = APQDVARLEN + APQD-VARLEN.

CHECK APQD-SEGMT EQ TCOUNT2 .

FOLGESEGMENT = 0.

  • CHECK APQD-VARLEN NE MAXVARDATALEN.

ELSE.

MOVE APQD-VARDATA TO APQDVARDATA. "vh090594

APQDVARLEN = APQD-VARLEN.

ENDIF.

MOVE APQDVARDATA TO *APQDVARDATA. "vh090594

SHIFT *APQDVARDATA BY BDCMHLEN PLACES. "bdcmhdrlen = 20

ADD BDCMHLEN TO WCOUNT.

MFSTART = WCOUNT.

MOVE 'FN' TO MFART.

PERFORM PROGRESS_INDICATOR USING 'VARD'.

WHILE WCOUNT LE APQDVARLEN. "Feldname und -wert in TF bringen

IF *APQDVARDATA(1) = BDCMHSEPC.

MFENDE = WCOUNT.

  • PERFORM PROGRESS_INDICATOR USING 'VARC'.

PERFORM MOVE_TF.

ENDIF.

SHIFT *APQDVARDATA.

WCOUNT = WCOUNT + 1.

ENDWHILE.

PERFORM PROGRESS_INDICATOR USING 'READY'.

*

IF WCOUNT = 21. "Messageheader ohne Felder

CLEAR: TF-FNAME,

TF-FARG.

APPEND TF.

ENDIF.

*

ENDIF.

ENDSELECT.

*

WRITE:/01(46) SY-ULINE.

*

IF SY-SUBRC NE 0.

RETURN = 308.

EXIT.

ENDIF.

*

*

ENDFORM. " anzeigen_mappe.

*/

*----


*

  • FORM : anzeigen_mappe_1 *

  • *

*----


*

FORM ANZEIGEN_MAPPE_1.

*

      • Anzeigen einer ausgewaehlten Batch-Input Mappe

      • aufbereiten eines dynpros der Mappe

*

*

REFRESH: TF.

*

CLEAR: HCOUNT,

APQD,

ANAL-ECOUNT,

APQDVARLEN,

FOLGESEGMENT,

TF,

SOFFS .

*

BDCMHLEN = 20.

*

PERFORM CHECK_VARCHAR_LEN CHANGING MAXVARDATALEN.

*

SELECT * FROM APQD " selection von daten

WHERE QID = MTAB-QID " einer mappe

AND TRANS = BDCLM-TCNT

AND BLOCK = BDCLM-MCNT.

*

  • CHECK APQD-TRANS NE OLD-TCNT.

ANAL-ECOUNT = ANAL-ECOUNT + 1 .

*

      • Ermitteln der enthaltenen Transaktionen und Dynpros (messages)

*

CLEAR: BDCTH, BDCMH.

IF APQD-VARDATA(1) = 'S'. " Transaktion Header

IF APQD-VARLEN < BDCTHLEN.

RETURN = 320.

EXIT.

ENDIF.

  • initialisierung für segmentierung

FOLGESEGMENT = 0.

CLEAR: APQDVARDATA,

SOFFS.

  • initialisierung für segmentierung

MOVE APQD-VARDATA TO BDCTH.

TRANSLATE BDCTH TO UPPER CASE.

FORMAT RESET.

WRITE:/09(11) BDCTH-TCODE

COLOR COL_GROUP INTENSIFIED OFF.

DTRANCNT = DTRANCNT + 1.

WRITE: 02(06) DTRANCNT COLOR COL_GROUP INTENSIFIED OFF.

PERFORM WRITE_VLINE USING ' ' 1 .

PERFORM WRITE_VLINE USING ' ' 8 .

PERFORM WRITE_VLINE USING ' ' 20.

PERFORM GET_STAT USING BDCTH-STATE ITAB-STATD.

WRITE: 21(11) ITAB-STATD

COLOR COL_GROUP INTENSIFIED OFF.

MOVE BDCTH-TCODE TO TF-TRCD.

HIDE: TF-STAT, TF-TRCD, APQD-TRANS.

CLEAR: HCOUNT.

HCOUNT = APQD-BLOCK + 1.

ENDIF.

*

IF APQD-VARDATA(1) = 'M' OR " Message Header

FOLGESEGMENT GT 0.

IF APQD-VARLEN < BDCMHLEN.

RETURN = 321.

EXIT.

ENDIF.

IF FOLGESEGMENT EQ 0.

SET CURSOR 3 4.

IF APQD-BLOCK NE HCOUNT.

WRITE:/09(23) SPACE

COLOR COL_NORMAL INTENSIFIED OFF.

WRITE: 02(06) SPACE COLOR COL_NORMAL INTENSIFIED OFF.

PERFORM WRITE_VLINE USING ' ' 1 .

PERFORM WRITE_VLINE USING ' ' 8 .

PERFORM WRITE_VLINE USING ' ' 20.

ENDIF.

IF MODUS EQ DYNPRO.

WRITE:/09(11) BDCLM-TCODE

COLOR COL_GROUP INTENSIFIED OFF.

WRITE: 02(06) SPACE COLOR COL_GROUP INTENSIFIED OFF.

WRITE: 21(11) ITAB-STATD

COLOR COL_GROUP INTENSIFIED OFF.

PERFORM WRITE_VLINE USING ' ' 1 .

PERFORM WRITE_VLINE USING ' ' 8 .

PERFORM WRITE_VLINE USING ' ' 20.

MOVE BDCLM-TCODE TO TF-TRCD.

HIDE: TF-STAT, TF-TRCD, APQD-TRANS.

ENDIF.

MOVE APQD-VARDATA TO BDCMH.

TRANSLATE BDCMH TO UPPER CASE.

BDCMHSEPC = BDCMH-SEPC.

*

PERFORM WRITE_VLINE USING ' ' 32.

PERFORM WRITE_VLINE USING ' ' 46.

*

IF APQD-BLOCK NE HCOUNT.

WRITE: 33(09) BDCMH-PROG

COLOR COL_NORMAL INTENSIFIED OFF,

42(04) BDCMH-DYNR

COLOR COL_NORMAL INTENSIFIED OFF.

ELSE.

WRITE: 33(09) BDCMH-PROG

COLOR COL_GROUP INTENSIFIED OFF,

42(04) BDCMH-DYNR

COLOR COL_GROUP INTENSIFIED OFF.

ENDIF.

*

MOVE BDCMH-PROG TO TF-PGM.

MOVE BDCMH-DYNR TO TF-DYN.

TF-COUNT = TF-COUNT + 1.

  • WRITE: 80(05) TF-COUNT.

HIDE: TF-COUNT, TF-PGM, TF-DYN, APQD-BLOCK.

ENDIF.

*

IF APQD-SEGMT EQ 1.

TCOUNT2 = 0.

PERFORM DYNAMIC_SQL USING 3.

IF TCOUNT2 GT 1.

FOLGESEGMENT = 1.

ELSE.

FOLGESEGMENT = 0.

ENDIF.

ENDIF.

CLEAR: WCOUNT.

MOVE-CORRESPONDING APQD TO *APQD.

IF FOLGESEGMENT GT 0.

WRITE APQD-VARDATA TO APQDVARDATA+SOFFS(APQD-VARLEN).

SOFFS = SOFFS + APQD-VARLEN.

APQDVARLEN = APQDVARLEN + APQD-VARLEN.

CHECK APQD-SEGMT EQ TCOUNT2 .

FOLGESEGMENT = 0.

  • CHECK APQD-VARLEN NE MAXVARDATALEN.

ELSE.

MOVE APQD-VARDATA TO APQDVARDATA. "vh090594

APQDVARLEN = APQD-VARLEN.

ENDIF.

MOVE APQDVARDATA TO *APQDVARDATA. "vh090594

SHIFT *APQDVARDATA BY BDCMHLEN PLACES. "bdcmhdrlen = 20

ADD BDCMHLEN TO WCOUNT.

MFSTART = WCOUNT.

MOVE 'FN' TO MFART.

PERFORM PROGRESS_INDICATOR USING 'VARD'.

WHILE WCOUNT LE APQDVARLEN. "Feldname und -wert in TF bringen

IF *APQDVARDATA(1) = BDCMHSEPC.

MFENDE = WCOUNT.

PERFORM PROGRESS_INDICATOR USING 'VARC'.

PERFORM MOVE_TF.

ENDIF.

SHIFT *APQDVARDATA.

WCOUNT = WCOUNT + 1.

ENDWHILE.

PERFORM PROGRESS_INDICATOR USING 'READY'.

*

IF WCOUNT = 21. "Messageheader ohne Felder

CLEAR: TF-FNAME,

TF-FARG.

APPEND TF.

ENDIF.

*

ENDIF.

ENDSELECT.

*

WRITE:/01(46) SY-ULINE.

*

IF SY-SUBRC NE 0.

RETURN = 308.

EXIT.

ENDIF.

*

*

ENDFORM. " anzeigen_mappe_1.

*/

*----


*

  • FORM : anzeigen_mappe_2 *

  • *

*----


*

FORM ANZEIGEN_MAPPE_2.

*

      • Anzeigen einer ausgewaehlten Batch-Input Mappe

      • aufbereiten eines dynpros der Mappe

*

*

REFRESH: TF.

*

CLEAR: HCOUNT,

APQD,

ANAL-ECOUNT,

APQDVARLEN,

FOLGESEGMENT,

TF,

SOFFS .

*

BDCMHLEN = 20.

*

PERFORM CHECK_VARCHAR_LEN CHANGING MAXVARDATALEN.

*

SELECT * FROM APQD " selection von daten

WHERE QID = MTAB-QID " einer mappe

AND TRANS = BDCLM-TCNT.

*

  • CHECK APQD-TRANS NE OLD-TCNT.

ANAL-ECOUNT = ANAL-ECOUNT + 1 .

*

      • Ermitteln der enthaltenen Transaktionen und Dynpros (messages)

*

CLEAR: BDCTH, BDCMH.

IF APQD-VARDATA(1) = 'S'. " Transaktion Header

IF APQD-VARLEN < BDCTHLEN.

RETURN = 320.

EXIT.

ENDIF.

  • initialisierung für segmentierung

FOLGESEGMENT = 0.

CLEAR: APQDVARDATA,

SOFFS.

  • initialisierung für segmentierung

MOVE APQD-VARDATA TO BDCTH.

TRANSLATE BDCTH TO UPPER CASE.

FORMAT RESET.

WRITE:/09(11) BDCTH-TCODE

COLOR COL_GROUP INTENSIFIED OFF.

DTRANCNT = DTRANCNT + 1.

WRITE: 02(06) DTRANCNT COLOR COL_GROUP INTENSIFIED OFF.

PERFORM WRITE_VLINE USING ' ' 1 .

PERFORM WRITE_VLINE USING ' ' 8 .

PERFORM WRITE_VLINE USING ' ' 20.

PERFORM GET_STAT USING BDCTH-STATE ITAB-STATD.

WRITE: 21(11) ITAB-STATD

COLOR COL_GROUP INTENSIFIED OFF.

MOVE BDCTH-TCODE TO TF-TRCD.

HIDE: TF-STAT, TF-TRCD, APQD-TRANS.

CLEAR: HCOUNT.

HCOUNT = APQD-BLOCK + 1.

ENDIF.

*

IF APQD-VARDATA(1) = 'M' OR " Message Header

FOLGESEGMENT GT 0.

IF APQD-VARLEN < BDCMHLEN.

RETURN = 321.

EXIT.

ENDIF.

IF FOLGESEGMENT EQ 0.

SET CURSOR 3 4.

IF APQD-BLOCK NE HCOUNT.

WRITE:/09(23) SPACE

COLOR COL_NORMAL INTENSIFIED OFF.

WRITE: 02(06) SPACE COLOR COL_NORMAL INTENSIFIED OFF.

PERFORM WRITE_VLINE USING ' ' 1 .

PERFORM WRITE_VLINE USING ' ' 8 .

PERFORM WRITE_VLINE USING ' ' 20.

ENDIF.

IF MODUS EQ DYNPRO.

WRITE:/09(11) BDCLM-TCODE

COLOR COL_GROUP INTENSIFIED OFF.

WRITE: 02(06) SPACE COLOR COL_GROUP INTENSIFIED OFF.

WRITE: 21(11) ITAB-STATD

COLOR COL_GROUP INTENSIFIED OFF.

PERFORM WRITE_VLINE USING ' ' 1 .

PERFORM WRITE_VLINE USING ' ' 8 .

PERFORM WRITE_VLINE USING ' ' 20.

MOVE BDCLM-TCODE TO TF-TRCD.

HIDE: TF-STAT, TF-TRCD, APQD-TRANS.

ENDIF.

MOVE APQD-VARDATA TO BDCMH.

TRANSLATE BDCMH TO UPPER CASE.

BDCMHSEPC = BDCMH-SEPC.

*

PERFORM WRITE_VLINE USING ' ' 32.

PERFORM WRITE_VLINE USING ' ' 46.

*

IF APQD-BLOCK NE HCOUNT.

WRITE: 33(09) BDCMH-PROG

COLOR COL_NORMAL INTENSIFIED OFF,

42(04) BDCMH-DYNR

COLOR COL_NORMAL INTENSIFIED OFF.

ELSE.

WRITE: 33(09) BDCMH-PROG

COLOR COL_GROUP INTENSIFIED OFF,

42(04) BDCMH-DYNR

COLOR COL_GROUP INTENSIFIED OFF.

ENDIF.

*

MOVE BDCMH-PROG TO TF-PGM.

MOVE BDCMH-DYNR TO TF-DYN.

TF-COUNT = TF-COUNT + 1.

  • WRITE: 80(05) TF-COUNT.

HIDE: TF-COUNT, TF-PGM, TF-DYN, APQD-BLOCK.

ENDIF.

*

IF APQD-SEGMT EQ 1.

TCOUNT2 = 0.

PERFORM DYNAMIC_SQL USING 3.

IF TCOUNT2 GT 1.

FOLGESEGMENT = 1.

ELSE.

FOLGESEGMENT = 0.

ENDIF.

ENDIF.

CLEAR: WCOUNT.

MOVE-CORRESPONDING APQD TO *APQD.

IF FOLGESEGMENT GT 0.

WRITE APQD-VARDATA TO APQDVARDATA+SOFFS(APQD-VARLEN).

SOFFS = SOFFS + APQD-VARLEN.

APQDVARLEN = APQDVARLEN + APQD-VARLEN.

CHECK APQD-SEGMT EQ TCOUNT2 .

FOLGESEGMENT = 0.

  • CHECK APQD-VARLEN NE MAXVARDATALEN.

ELSE.

MOVE APQD-VARDATA TO APQDVARDATA. "vh090594

APQDVARLEN = APQD-VARLEN.

ENDIF.

MOVE APQDVARDATA TO *APQDVARDATA. "vh090594

SHIFT *APQDVARDATA BY BDCMHLEN PLACES. "bdcmhdrlen = 20

ADD BDCMHLEN TO WCOUNT.

MFSTART = WCOUNT.

MOVE 'FN' TO MFART.

PERFORM PROGRESS_INDICATOR USING 'VARD'.

WHILE WCOUNT LE APQDVARLEN. "Feldname und -wert in TF bringen

IF *APQDVARDATA(1) = BDCMHSEPC.

MFENDE = WCOUNT.

PERFORM PROGRESS_INDICATOR USING 'VARC'.

PERFORM MOVE_TF.

ENDIF.

  • SHIFT *APQD-VARDATA.

SHIFT *APQDVARDATA.

WCOUNT = WCOUNT + 1.

ENDWHILE.

PERFORM PROGRESS_INDICATOR USING 'READY'.

*

IF WCOUNT = 21. "Messageheader ohne Felder

CLEAR: TF-FNAME,

TF-FARG.

APPEND TF.

ENDIF.

*

ENDIF.

ENDSELECT.

*

WRITE:/01(46) SY-ULINE.

*

IF SY-SUBRC NE 0.

RETURN = 308.

EXIT.

ENDIF.

*

*

ENDFORM. " anzeigen_mappe_2.

*/

*----


*

  • FORM : fill_itran *

  • *

*----


*

FORM FILL_ITRAN.

*

      • besonderer fall bei aufbau der mappenanalyse

*

CLEAR: ITRAN-CNT,

ITRAN-TRANS.

*

SELECT * FROM APQD " selection daten

WHERE QID = MTAB-QID " einer mappe

AND BLOCK = 1. " fuer aufbau transaktionsliste

ITRAN-CNT = ITRAN-CNT + 1.

MOVE APQD-TRANS TO ITRAN-TRANS.

MOVE APQD-QID TO ITRAN-QID.

APPEND ITRAN.

ENDSELECT.

*

ENDFORM. " fill_itran

*/

*----


*

  • FORM : read_itran *

  • *

*----


*

FORM READ_ITRAN USING VALUE(BSTEP)

VALUE(BMOD)

CHANGING VALUE(BSTART)

VALUE(BENDE).

      • besonderer fall bei aufbau der mappenanalyse

      • lesen der hilfstabelle

*

CASE BMOD.

*

WHEN ' '.

ISTEP = BSTEP.

IND = BSTART.

READ TABLE ITRAN WITH KEY IND BINARY SEARCH.

IF SY-SUBRC EQ 0.

ISTART = BSTART.

BSTART = ITRAN-TRANS.

ELSE.

BSTART = ISTART.

ENDIF.

IND = BENDE.

READ TABLE ITRAN WITH KEY IND BINARY SEARCH.

IF SY-SUBRC EQ 0.

IENDE = BENDE.

BENDE = ITRAN-TRANS.

ELSE.

BENDE = IENDE .

ENDIF.

*

WHEN '+'.

BSTART = ISTART + BSTEP.

IND = BSTART.

READ TABLE ITRAN WITH KEY IND BINARY SEARCH.

IF SY-SUBRC EQ 0.

ISTART = BSTART.

BSTART = ITRAN-TRANS.

ELSE.

BSTART = ISTART.

IND = BSTART.

READ TABLE ITRAN WITH KEY IND BINARY SEARCH.

IF SY-SUBRC EQ 0.

BSTART = ITRAN-TRANS.

ENDIF.

ENDIF.

BENDE = IENDE + BSTEP.

IND = BENDE.

IF IND GT SY-TFILL. "vh14091995

IND = SY-TFILL. "vh14091995

ENDIF. "vh14091995

READ TABLE ITRAN WITH KEY IND BINARY SEARCH.

IF SY-SUBRC EQ 0.

IENDE = BENDE.

BENDE = ITRAN-TRANS.

ELSE.

IENDE = ITRAN-CNT + 1.

BENDE = BSTART + BSTEP.

ENDIF.

*

WHEN '-'.

BSTART = ISTART - BSTEP.

IND = BSTART.

READ TABLE ITRAN WITH KEY IND BINARY SEARCH.

IF SY-SUBRC EQ 0.

ISTART = BSTART.

BSTART = ITRAN-TRANS.

ELSE.

BSTART = ISTART.

ENDIF.

BENDE = IENDE - BSTEP.

IND = BENDE.

READ TABLE ITRAN WITH KEY IND BINARY SEARCH.

IF SY-SUBRC EQ 0.

IENDE = BENDE.

BENDE = ITRAN-TRANS.

ELSE.

BENDE = IENDE .

IND = BENDE.

READ TABLE ITRAN WITH KEY IND BINARY SEARCH.

IF SY-SUBRC EQ 0.

BENDE = ITRAN-TRANS.

ENDIF.

ENDIF.

*

WHEN OTHERS.

*

ENDCASE. "BMOD.

*

ENDFORM. " read_itran

*/

*----


*

  • move_tf *

*----


*

FORM MOVE_TF.

*

      • gefundener feldname oder feldargument in interne tabelle tf stellen

*

  • IF SY-UNAME EQ AUTOR. BREAK-POINT 1. ENDIF.

MFLEN = MFENDE - MFSTART.

*

CASE MFART.

WHEN 'FN'.

CLEAR: TF-FNAME, UDAT.

TF-FSTART = MFSTART.

  • TF-FENDE = MFENDE.

  • MOVE APQD-VARDATA TO UDAT.

MOVE APQDVARDATA 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-FSTART = MFSTART.

TF-FENDE = MFENDE.

  • MOVE APQD-VARDATA TO UDAT.

MOVE APQDVARDATA TO UDAT.

SHIFT UDAT BY MFSTART PLACES.

WRITE UDAT TO TF-FARG+0(MFLEN).

APPEND TF.

MFSTART = MFENDE + 1.

MFENDE = 0.

MOVE 'FN' TO MFART.

WHEN OTHERS.

RETURN = 323.

ENDCASE. " mfart.

*

*

ENDFORM. " move_field.

*/

*----


*

  • mappen_emulation *

*----


*

FORM MAPPEN_EMULATION.

*

      • emulation der mappenanalyse

*

CLEAR: APQI,

MTAB.

*

SELECT * FROM APQI " selection info

WHERE QID = BDCLD-QID " einer mappe

AND MANDANT = SY-MANDT. " mandantenabhängig

MOVE-CORRESPONDING APQI TO BDCLD.

MOVE-CORRESPONDING APQI TO MTAB.

ENDSELECT.

*

IF SY-SUBRC GT 0.

RETURN = 306.

EXIT.

ELSE.

RETURN = 0.

ENDIF.

*

CLEAR: BDCLM.

  • READ LINE SY-LILLI INDEX 0.

READ LINE SAVE_LILLI1 INDEX 0.

*

IF BDCLM-MCNT GT 1.

SELECT * FROM APQD " selection data

WHERE QID = MTAB-QID " einer mappe

AND TRANS = BDCLM-TCNT

AND BLOCK = 1.

MOVE APQD-VARDATA TO BDCTH.

PERFORM GET_STAT USING BDCTH-STATE ITAB-STATD.

ENDSELECT.

ENDIF.

*

ENDFORM. " mappen_emulation

*

*/

*----


*

  • listen_ueberschrift *

*----


*

FORM LISTEN_UEBERSCHRIFT.

*

      • Ausgabe Ueberschriften

*

  • SUMMARY.

FORMAT INTENSIFIED.

WRITE:/02(18) 'Transaktion'(014),

21(06) 'Status'(017),

33(13) 'Dynpro '(007).

WRITE:/02(18) ULINE,

21(06) ULINE,

33(13) ULINE.

  • ULINE (79).

  • WRITE:/.

ENDFORM. " listen_ueberschrift.

*/

*----


*

  • FORM : get_daten *

  • *

*----


*

FORM GET_DATEN.

*

      • Batch-Input Daten anzeigen

*

IF RETURN GT 0.

EXIT.

ENDIF.

*

TFCOUNT = 0.

*

MOVE SY-LISEL TO Z.

ZCOUNT = TF-COUNT. " zcount wird in get_eafields benutzt

*

IF Z-PROG EQ SPACE AND

Z-DYN EQ SPACE.

RETURN = 301.

EXIT.

ENDIF.

  • gezieltes lesen in interner tabelle

  • mit read table ... with key .. binary search

  • und loop at ... from sy-tabix

READ TABLE TF WITH KEY TF-COUNT BINARY SEARCH.

TABIND1 = SY-TABIX. "benoetigt bei search-okcode

TABIND = SY-TABIX.

*

MOVE PFSTATUS TO OLDSTATUS.

MOVE '000A' TO PFSTATUS.

*

  • DETAIL.

FORMAT RESET.

CLEAR: BILD-ZEILE.

WRITE 'Transaktion '(014) TO BILD-ZEILE+01(13).

WRITE TF-TRCD TO BILD-ZEILE+13(4).

WRITE 'Dynpro '(007) TO BILD-ZEILE+21(7).

WRITE TF-PGM TO BILD-ZEILE+28(8).

WRITE TF-DYN TO BILD-ZEILE+37(4).

PERFORM SEARCH_OKCODE.

IF BDC-OKCODE NE SPACE.

WRITE 'OKCode '(015) TO BILD-ZEILE+46(7).

WRITE BDC-OKCODE TO BILD-ZEILE+54(5).

ENDIF.

IF BDC-CURSOR NE SPACE.

WRITE 'Cursor '(016) TO BILD-ZEILE+60(7).

WRITE BDC-CURSOR TO BILD-ZEILE+68(35).

ENDIF.

*

  • SUMMARY.

FORMAT INTENSIFIED.

WRITE:/01(102) SY-ULINE.

PERFORM WRITE_VLINE USING 'T' 1 .

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/02(120) BILD-ZEILE COLOR COL_HEADING.

PERFORM WRITE_VLINE USING 'T' 1 .

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/01(102) SY-ULINE.

  • Ueberschrift selbst gemacht

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/02(120) SPACE COLOR COL_HEADING INTENSIFIED OFF.

WRITE: 02(35) 'Feldname '(018) COLOR COL_HEADING INTENSIFIED OFF,

38(35) 'Feldinhalt'(019) COLOR COL_HEADING INTENSIFIED OFF.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 36.

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/02(34) ULINE,

37(85) ULINE.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 36.

PERFORM WRITE_VLINE USING 'T' 102.

*

LOOP AT TF FROM TABIND.

  • DETAIL.

FORMAT RESET.

IF TF-COUNT GT ZCOUNT.

EXIT.

ENDIF.

WRITE:/02(35) TF-FNAME COLOR COL_NORMAL INTENSIFIED ON,

37(01) SPACE COLOR COL_NORMAL INTENSIFIED OFF,

38(85) TF-FARG COLOR COL_NORMAL INTENSIFIED OFF.

PERFORM WRITE_VLINE USING ' ' 36.

PERFORM WRITE_VLINE USING 'T' 1 .

PERFORM WRITE_VLINE USING 'T' 102.

IF TF-FNAME NE SPACE.

TFCOUNT = TFCOUNT + 1.

ENDIF.

ENDLOOP.

WRITE:/01(102) SY-ULINE.

*

MOVE OLDSTATUS TO PFSTATUS.

*

SET TITLEBAR 'ANM' WITH MTAB-GROUPID.

*

SET PF-STATUS '1131'.

*

IF TFCOUNT EQ 0.

DO 6 TIMES.

WRITE:/.

ENDDO.

FORMAT RESET.

WRITE:/01(102) SY-ULINE.

PERFORM WRITE_VLINE USING 'T' 1 .

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/02(102)

'ES SIND KEINE BATCH-INPUT-DATEN FUER DIESES DYNPRO VORHANDEN'(044)

COLOR COL_NEGATIVE INTENSIFIED ON.

PERFORM WRITE_VLINE USING 'T' 1 .

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/01(102) SY-ULINE.

ENDIF.

*

ENDFORM. " get_daten.

*/

*----


*

  • FORM : get_daten_131 *

  • *

*----


*

FORM GET_DATEN_131.

*

      • Batch-Input Daten anzeigen

*

IF RETURN GT 0.

EXIT.

ENDIF.

*

TFCOUNT = 0.

*

READ TABLE TF WITH KEY ZCOUNT BINARY SEARCH.

TABIND1 = SY-TABIX. "benoetigt bei search-okcode

TABIND = SY-TABIX.

*

MOVE PFSTATUS TO OLDSTATUS.

MOVE '000A' TO PFSTATUS.

*

CLEAR: BILD-ZEILE.

WRITE 'Transaktion '(014) TO BILD-ZEILE+01(13).

WRITE TF-TRCD TO BILD-ZEILE+13(4).

WRITE 'Dynpro '(007) TO BILD-ZEILE+21(7).

WRITE TF-PGM TO BILD-ZEILE+28(8).

WRITE TF-DYN TO BILD-ZEILE+37(4).

PERFORM SEARCH_OKCODE.

IF BDC-OKCODE NE SPACE.

WRITE 'OKCode '(015) TO BILD-ZEILE+46(7).

WRITE BDC-OKCODE TO BILD-ZEILE+54(5).

ENDIF.

IF BDC-CURSOR NE SPACE.

WRITE 'Cursor '(016) TO BILD-ZEILE+60(7).

WRITE BDC-CURSOR TO BILD-ZEILE+68(35).

ENDIF.

*

  • SUMMARY.

FORMAT INTENSIFIED.

WRITE:/01(102) SY-ULINE.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/01(120) BILD-ZEILE COLOR COL_HEADING.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/01(102) SY-ULINE.

  • Ueberschrift selbst gemacht

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/01(120) SPACE COLOR COL_HEADING INTENSIFIED OFF.

WRITE: 02(35) 'Feldname '(018) COLOR COL_HEADING INTENSIFIED OFF,

38(35) 'Feldinhalt'(019) COLOR COL_HEADING INTENSIFIED OFF.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 36.

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/02(34) ULINE,

37(85) ULINE.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 36.

PERFORM WRITE_VLINE USING 'T' 102.

*

LOOP AT TF FROM TABIND.

  • DETAIL.

FORMAT RESET.

IF TF-COUNT GT ZCOUNT.

EXIT.

ENDIF.

WRITE:/02(35) TF-FNAME COLOR COL_NORMAL INTENSIFIED ON,

37(01) SPACE COLOR COL_NORMAL INTENSIFIED OFF,

38(85) TF-FARG COLOR COL_NORMAL INTENSIFIED OFF.

PERFORM WRITE_VLINE USING ' ' 36.

PERFORM WRITE_VLINE USING ' ' 1.

PERFORM WRITE_VLINE USING ' ' 102.

IF TF-FNAME NE SPACE.

TFCOUNT = TFCOUNT + 1.

ENDIF.

ENDLOOP.

WRITE:/01(102) SY-ULINE.

*

MOVE OLDSTATUS TO PFSTATUS.

*

SET TITLEBAR 'ANM' WITH MTAB-GROUPID.

*

SET PF-STATUS '1131'.

*

IF TFCOUNT EQ 0.

DO 6 TIMES.

WRITE:/.

ENDDO.

FORMAT RESET.

WRITE:/01(102) SY-ULINE.

PERFORM WRITE_VLINE USING 'T' 1 .

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/02(102)

'ES SIND KEINE BATCH-INPUT-DATEN FUER DIESES DYNPRO VORHANDEN'(044)

COLOR COL_NEGATIVE INTENSIFIED ON.

PERFORM WRITE_VLINE USING 'T' 1 .

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/01(102) SY-ULINE.

ENDIF.

*

ENDFORM. " get_daten_131.

*/

*----


*

  • FORM : get_dynpro_131 *

  • *

*----


*

FORM GET_DYNPRO_131.

*

      • dynpros mit batch-input-daten abmischen und anzeigen

*

IF RETURN GT 0.

EXIT.

ENDIF.

*

IF SYST-XCODE EQ 'DYN+'.

TF-COUNT = TCOUNT.

ELSE.

TF-COUNT = ZCOUNT.

ENDIF.

READ TABLE TF WITH KEY TF-COUNT BINARY SEARCH.

TABIND1 = SY-TABIX.

*

MOVE: TF-PGM TO DYNAME(08),

TF-PGM TO Z-PROG.

MOVE: TF-DYN TO DYNAME+8(04),

TF-DYN TO Z-DYN.

*

SET BLANK LINES ON.

REFRESH: DYF, DYA, DYM, BILD, BILDE.

CLEAR: DYH, DYF, DYA, DYM, BILD, BILDE, BDC.

*

  • IMPORT DYNPRO DYH DYF DYA DYM ID DYNAME(12). "alt

  • IF SY-SUBRC NE 0.

  • RETURN = 316.

  • EXIT.

  • ENDIF.

*

PERFORM GET_DYNPROLOAD USING TF-PGM TF-DYN 'A'. "neu

IF RETURN EQ 316.

EXIT.

ENDIF.

*

MAXLINE = DYH-NOLI + 1.

*

PERFORM LOOP_GETINFO.

*

DO MAXLINE TIMES. "maximale Anzahl an Zeilen

APPEND BILD. "loeschen der internen Tabelle

ENDDO.

*

LOOP AT DYF.

PERFORM LOOPINFO_INFELD.

*

MOVE: DYF-LINE TO PZEILE,

DYF-COLN TO PCOLN,

DYF-LENG TO PLENG,

DYF-LANF TO PLANF,

DYF-LBLK TO PLBLK,

DYF-LREP TO PLREP.

*

CASE DYF-COLN.

WHEN 0.

  • do nothing

WHEN 1.

PCOLN = PCOLN - 1.

WHEN OTHERS.

PCOLN = PCOLN - 2.

ENDCASE.

*

*

IF PZEILE GT MAXLINE.

  • do nothing

ELSE .

PERFORM GET_EAFIELDS.

ENDIF.

*

ENDLOOP.

*

SET TITLEBAR 'ANM' WITH MTAB-GROUPID.

*

SET PF-STATUS '0131'.

*

PERFORM ERSTE_BILD_ZEILE.

*

PERFORM BILD_AUSGABE.

*

ENDFORM. " get_dynpro_131.

*/

*----


*

  • FORM : get_dynpro *

  • *

*----


*

FORM GET_DYNPRO.

*

      • dynpros mit batch-input-daten abmischen und anzeigen

*

IF RETURN GT 0.

EXIT.

ENDIF.

*

MOVE SY-LISEL TO Z.

ZCOUNT = TF-COUNT. " zcount wird in get_eafields benutzt

TCOUNT = TF-COUNT. " tcount wird in get_next_dynpro

TCOUNT1 = TF-COUNT. " tcount wird in get_next_dynpro

*

IF Z-PROG EQ SPACE AND

Z-DYN EQ SPACE.

RETURN = 301.

EXIT.

ENDIF.

*

READ TABLE TF WITH KEY TF-COUNT BINARY SEARCH.

TABIND1 = SY-TABIX.

*

MOVE TF-TRCD TO Z-TRCD.

*

MOVE: TF-PGM TO DYNAME(08),

TF-PGM TO Z-PROG.

MOVE: TF-DYN TO DYNAME+8(04),

TF-DYN TO Z-DYN.

MOVE Z-PROG TO DYNAME.

MOVE Z-DYN TO DYNAME+8(04).

*

SET BLANK LINES ON.

REFRESH: DYF, DYA, DYM, BILD, BILDE.

CLEAR: DYH, DYF, DYA, DYM, BILD, BILDE, BDC.

*

  • IMPORT DYNPRO DYH DYF DYA DYM ID DYNAME(12). "alt

  • IF SY-SUBRC NE 0.

  • RETURN = 316.

  • EXIT.

  • ENDIF.

*

PERFORM GET_DYNPROLOAD USING TF-PGM TF-DYN 'A'. "neu

IF RETURN EQ 316.

EXIT.

ENDIF.

*

MAXLINE = DYH-NOLI + 1.

*

PERFORM LOOP_GETINFO.

*

DO MAXLINE TIMES. "maximale Anzahl an Zeilen

APPEND BILD. "loeschen der internen Tabelle

ENDDO.

*

LOOP AT DYF.

*

PERFORM LOOPINFO_INFELD.

*

MOVE: DYF-LINE TO PZEILE,

DYF-COLN TO PCOLN,

DYF-LENG TO PLENG,

DYF-LANF TO PLANF,

DYF-LBLK TO PLBLK,

DYF-LREP TO PLREP.

*

CASE DYF-COLN.

WHEN 0.

  • do nothing

WHEN 1.

PCOLN = PCOLN - 1.

WHEN OTHERS.

PCOLN = PCOLN - 2.

ENDCASE.

*

*

IF PZEILE GT MAXLINE.

  • do nothing

ELSE .

PERFORM GET_EAFIELDS.

ENDIF.

*

ENDLOOP.

*

  • READ TABLE TF WITH KEY TF-COUNT BINARY SEARCH.

*

SET TITLEBAR 'ANM' WITH MTAB-GROUPID.

*

SET PF-STATUS '0131'.

*

PERFORM ERSTE_BILD_ZEILE.

*

PERFORM BILD_AUSGABE.

*

ENDFORM. " get_dynpro.

*/

*----


*

  • FORM : get_next_dynpro *

  • *

*----


*

FORM GET_NEXT_DYNPRO.

*

      • naechstes dynpro anzeigen

*

  • IF SY-UNAME EQ AUTOR. BREAK-POINT 1. ENDIF.

*

IF RETURN GT 0.

EXIT.

ENDIF.

*

TCOUNT = TCOUNT + 1.

*

READ TABLE TF WITH KEY TCOUNT BINARY SEARCH.

IF SY-SUBRC NE 0.

TCOUNT = 1.

ENDIF.

*

PERFORM GET_DYNPRO_131.

*

*

ENDFORM. " get_next_dynpro.

*

*/

*----


*

  • FORM : get_prev_dynpro *

  • *

*----


*

FORM GET_PREV_DYNPRO.

*

      • voriges dynpro anzeigen

*

IF RETURN GT 0.

EXIT.

ENDIF.

*

TCOUNT = TCOUNT - 1.

*

READ TABLE TF WITH KEY TCOUNT BINARY SEARCH.

IF SY-SUBRC NE 0.

TCOUNT = 1.

ENDIF.

*

PERFORM GET_DYNPRO_131.

*

ENDFORM. " get_prev_dynpro.

*/

*----


*

  • FORM : get_dynproload *

  • *

*----


*

FORM GET_DYNPROLOAD USING DYNPRO

NUMMER

REQUEST.

*

DATA: NUMMER1(4) TYPE C.

*

      • dynproload lesen

*

*

NUMMER1 = NUMMER.

*

CALL FUNCTION 'IMPORT_DYNPRO' EXPORTING DYNAME = DYNPRO

DYNUMB = NUMMER1

DYLANG = SY-LANGU

REQUEST = REQUEST

IMPORTING HEADER = DYH

TABLES FTAB = DYF

EXCEPTIONS DYNAME_INVALID = 1

DYNUMB_INVALID = 2

REQUEST_INVALID = 3

NO_DYNPRO = 4

HEADER_INVALID = 5

FTAB_INVALID = 6

DYLANGUAGE_INVALID = 7

INTERNAL_ERROR = 8

NO_MEMORY = 9

DYNPROLOAD_NOT_FOUND = 10

NO_FTAB_ROW = 11

DYLANGUAGE_NOT_INST = 12

OTHERS = 99.

IF SY-SUBRC GT 7. "lesen dynproload fehler, source nachlesen

IMPORT DYNPRO DYH DYF DYA DYM ID DYNAME(12).

ELSE.

IF SY-SUBRC NE 0.

RETURN = 316.

EXIT.

ENDIF.

ENDIF.

*

ENDFORM. " GET_DYNPROLOAD .

*

*/

*----


*

  • FORM : get_eafields *

  • *

*----


*

FORM GET_EAFIELDS.

*

      • Ein-/Ausgabefelder mit Dynpro abmischen

*

READ TABLE TF WITH KEY ZCOUNT BINARY SEARCH.

TFCNT = SY-TABIX.

*

CLEAR: TF, MOD_BILD.

*

IF DYF-LTYP = LOOP OR

DYF-LTYP = TABW. " tablewidget

DO PLREP TIMES.

IF SY-INDEX GT 1.

PZEILE = PZEILE + PLBLK.

ENDIF.

PERFORM MOD_BILD_ZEILE.

*

LOOP AT TF FROM TFCNT .

CLEAR: MOD_BILD.

IF TF-COUNT GT ZCOUNT.

EXIT.

ENDIF.

PERFORM GUI_OBJEKT.

IF MOD_BILD = GUI_OBJ AND

DYF-FLG1 LT EAFELD.

PERFORM MOD_BILD_ZEILE.

MOD_BILD = OFF.

ENDIF.

IF DYF-FLG1 GE EAFELD. "ein Eingabefeld

PERFORM LOOP_FNAME.

IF DYF-FNAM = TF-FNAME AND

ZCOUNT = TF-COUNT AND

LF-ZEILE = SY-INDEX.

WRITE TF-FARG TO DYF-STXT(DYF-LENG).

MOD_BILD = ON.

PERFORM MOD_BILD_ZEILE.

MOD_BILD = OFF.

EXIT.

ENDIF.

ENDIF.

ENDLOOP. "tf

ENDDO.

ELSE.

LOOP AT TF FROM TFCNT .

IF TF-COUNT GT ZCOUNT.

EXIT.

ENDIF.

IF TF-FNAME(10) = 'BDC_OKCODE'.

WRITE TF-FARG TO BDC-OKCODE(5).

ENDIF.

*

IF DYF-FLG1 LT EAFELD. "kein Eingabefeld

EXIT.

ENDIF.

CLEAR: MOD_BILD.

IF DYF-FNAM = TF-FNAME AND

ZCOUNT = TF-COUNT.

WRITE TF-FARG TO DYF-STXT(DYF-LENG).

MOD_BILD = ON.

EXIT.

ENDIF.

ENDLOOP. "tf

*

PERFORM GUI_OBJEKT. "ermitteln eines GUI-Objektes

PERFORM MOD_BILD_ZEILE.

ENDIF.

*

*

ENDFORM. " get_eafields.

*/

*----


*

  • FORM : gui_objekt *

  • *

*----


*

FORM GUI_OBJEKT.

*

IF MOD_BILD EQ ON.

EXIT.

ENDIF.

*

CASE DYF-FILL.

WHEN 'A' . "radiobox

IF DYF-FLG1 GE EAFELD.

MOD_BILD = GUI_OBJ.

ENDIF.

WHEN 'C' . "checkbox

IF DYF-FLG1 GE EAFELD.

MOD_BILD = GUI_OBJ.

ENDIF.

WHEN 'P' . "pushbutton

MOD_BILD = GUI_OBJ.

WHEN 'R' . "frame

MOD_BILD = GUI_OBJ.

WHEN 'B' . "subscreen --- sorry

MOD_BILD = GUI_OBJ.

WHEN OTHERS.

ENDCASE.

*

ENDFORM. " gui_objekt .

*/

*----


*

  • FORM : loop_fname *

  • *

*----


*

FORM LOOP_FNAME.

*

      • loopfelder im Dynpro abhandeln

*

  • IF SY-UNAME EQ AUTOR. BREAK-POINT 1. ENDIF.

*

CLEAR: FLD-FNAME, SY-FDPOS, LF.

*

IF TF-FNAME CA '('. "Kennung fuer loopfelder '('

MOVE TF-FNAME TO FLD-FNAME.

SHIFT FLD-FNAME BY SY-FDPOS PLACES.

MOVE FLD-FNAME TO LF.

WRITE ' ' TO TF-FNAME+SY-FDPOS(4).

IF LF-ZEILE CA ')'. "falsche angabe des loop

SHIFT LF-ZEILE RIGHT BY 1 PLACES. "index

WRITE '0' TO LF-ZEILE+0(1).

ENDIF.

ELSE.

EXIT.

ENDIF.

*

ENDFORM. " loop_fname.

*/

*----


*

  • FORM : mod_bild_zeile *

  • *

*----


*

FORM MOD_BILD_ZEILE.

*

      • bild wird zeilenweise mit eingabewerten abgemischt

*

*

*

CLEAR: ZEILE.

ZEILE = PZEILE + 1.

READ TABLE BILD INDEX ZEILE.

*

IF DYF-STXT EQ SPACE.

TRANSLATE DYF-STXT USING ' _'.

ENDIF.

*

CLEAR: BILDE-PCOLN,

BILDE-PLENG,

BILDE-FLD,

BILDE-PREP.

WRITE: DYF-STXT TO BILD-ZEILE+PCOLN(PLENG).

*

IF MOD_BILD = ON.

BILD-FLAG = ON.

WRITE: DYF-STXT TO BILDE-FLD.

MOVE : PCOLN TO BILDE-PCOLN,

PLENG TO BILDE-PLENG.

BILDE-ZEILE = ZEILE.

BILDE-GUIOBJ = SPACE.

BILDE-PREP = 0.

APPEND BILDE.

ENDIF.

*

IF MOD_BILD = GUI_OBJ.

BILD-FLAG = ON.

WRITE: DYF-STXT TO BILDE-FLD.

MOVE : PCOLN TO BILDE-PCOLN,

PLENG TO BILDE-PLENG.

BILDE-ZEILE = ZEILE.

BILDE-GUIOBJ = DYF-FILL. "gui object

IF BILDE-GUIOBJ EQ 'B' OR "subscreen

BILDE-GUIOBJ EQ 'R'. "rahmen

BILDE-PREP = DYF-DIDX.

ENDIF.

APPEND BILDE.

*

IF BILDE-GUIOBJ EQ 'R' . "rahmen

PERFORM MOD_BILD_ZEILE_RAHMEN.

ENDIF.

*

IF BILDE-GUIOBJ EQ 'B' . "subscreen

PERFORM MOD_BILD_ZEILE_SUBSCREEN.

ENDIF.

ENDIF.

*

MODIFY BILD INDEX ZEILE.

CLEAR DYF-STXT.

*

ENDFORM. " mod_bild_zeile.

*/

*----


*

  • FORM : mod_bild_zeile_rahmen *

  • *

*----


*

FORM MOD_BILD_ZEILE_RAHMEN .

*

      • wenn das grafische object ein rahmen ist

      • müssen zusatzarbeiten gemacht werden

*

DATA: RLENG TYPE I,

ROFFS TYPE I,

RCOLN TYPE I.

*

RLENG = DYF-DIDX - 2.

ROFFS = ( PCOLN + PLENG ) - 1.

DO RLENG TIMES.

CLEAR: BILDE-FLD.

WRITE: SY-VLINE TO BILDE-FLD+0(01).

MOVE : PCOLN TO BILDE-PCOLN,

1 TO BILDE-PLENG.

BILDE-ZEILE = BILDE-ZEILE + 1.

BILDE-GUIOBJ = DYF-FILL.

APPEND BILDE.

MOVE: ROFFS TO BILDE-PCOLN.

APPEND BILDE.

ENDDO.

WRITE: SY-ULINE TO BILDE-FLD+0(120).

WRITE: SY-VLINE TO BILDE-FLD+0(01).

MOVE : PCOLN TO BILDE-PCOLN,

PLENG TO BILDE-PLENG.

BILDE-ZEILE = BILDE-ZEILE + 1.

BILDE-GUIOBJ = DYF-FILL.

APPEND BILDE.

*

ENDFORM. " mod_bild_zeile_rahmen.

*/

*----


*

  • FORM : mod_bild_zeile_subscreen *

  • *

*----


*

FORM MOD_BILD_ZEILE_SUBSCREEN.

*

      • wenn ein subscreen vorhanden ist

      • müssen zusatzarbeiten gemacht werden

*

DATA: RLENG TYPE I,

ROFFS TYPE I,

RCOLN TYPE I.

*

  • RLENG = DYF-DIDX - 2.

RLENG = DYF-DIDX - 1.

ROFFS = ( PCOLN + PLENG ) - 1.

DO RLENG TIMES.

CLEAR: BILDE-FLD.

WRITE: SY-VLINE TO BILDE-FLD+0(01).

MOVE : PCOLN TO BILDE-PCOLN,

  • 1 TO BILDE-PLENG.

PLENG TO BILDE-PLENG.

BILDE-ZEILE = BILDE-ZEILE + 1.

BILDE-GUIOBJ = DYF-FILL.

APPEND BILDE.

  • MOVE: ROFFS TO BILDE-PCOLN.

  • APPEND BILDE.

ENDDO.

  • WRITE: SY-ULINE TO BILDE-FLD+0(120).

  • WRITE: SY-VLINE TO BILDE-FLD+0(01).

  • MOVE : PCOLN TO BILDE-PCOLN,

  • PLENG TO BILDE-PLENG.

  • BILDE-ZEILE = BILDE-ZEILE + 1.

  • BILDE-GUIOBJ = DYF-FILL.

  • APPEND BILDE.

*

ENDFORM. " mod_bild_zeile_subscreen

*/

*----


*

  • FORM : erste_bild_zeile *

  • *

*----


*

FORM ERSTE_BILD_ZEILE.

*

      • Erste Zeile des Dynpros wird mit den Feldern

      • Transaktionscode Dynpro und OKCODE gebildet.

*

PERFORM MOD_BILD_FRAME. "rahmen im bild markieren

*

CLEAR: BILD-ZEILE, ZEILE.

ZEILE = 1.

BILD-FLAG = ON.

WRITE 'Transaktion '(014) TO BILD-ZEILE+1(13).

WRITE Z-TRCD TO BILD-ZEILE+13(4).

WRITE 'Dynpro '(007) TO BILD-ZEILE+21(7).

WRITE DYNAME TO BILD-ZEILE+28(8).

WRITE DYNAME8 TO BILD-ZEILE37(4).

PERFORM SEARCH_OKCODE.

IF BDC-OKCODE NE SPACE.

WRITE 'OKCode '(015) TO BILD-ZEILE+46(7).

WRITE BDC-OKCODE TO BILD-ZEILE+54(5).

ENDIF.

IF BDC-CURSOR NE SPACE.

WRITE 'Cursor '(016) TO BILD-ZEILE+60(7).

WRITE BDC-CURSOR TO BILD-ZEILE+68(35).

ENDIF.

*

MODIFY BILD INDEX ZEILE.

*

ENDFORM. " erste_bild_zeile.

*/

*----


*

  • FORM : bild_ausgabe *

  • *

*----


*

FORM BILD_AUSGABE.

*

      • Dynpro ausgeben

*

*

SORT BILDE BY ZEILE .

SET BLANK LINES ON.

RESERVE 23 LINES.

FORMAT RESET.

LOOP AT BILD.

IF SY-TABIX > MAXLINE .

EXIT.

ENDIF.

IF SY-TABIX EQ 1.

WRITE:/01(102) SY-ULINE.

PERFORM WRITE_VLINE USING 'T' 1 .

PERFORM WRITE_VLINE USING 'T' 102.

WRITE 😕 BILD-ZEILE COLOR COL_HEADING INTENSIFIED ON.

PERFORM WRITE_VLINE USING 'T' 1 .

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/01(102) SY-ULINE.

PERFORM WRITE_VLINE USING 'T' 1 .

PERFORM WRITE_VLINE USING 'T' 102.

BILD-FLAG = OFF.

ELSE.

FORMAT RESET.

WRITE :/02 BILD-ZEILE.

PERFORM WRITE_VLINE USING 'T' 1 .

PERFORM WRITE_VLINE USING 'T' 102.

ENDIF.

IF BILD-FLAG = ON .

BILDE-ZEILE = SY-TABIX.

SY-SUBRC = 0.

READ TABLE BILDE WITH KEY BILDE-ZEILE BINARY SEARCH.

IF SY-SUBRC EQ 0.

TABIND = SY-TABIX.

REF-ZEILE = BILDE-ZEILE.

LOOP AT BILDE FROM TABIND.

IF BILDE-ZEILE GT REF-ZEILE.

EXIT.

ELSE.

BILDE-PCOLN = BILDE-PCOLN + 1.

IF BILDE-GUIOBJ EQ SPACE.

PERFORM WRITE_HELL USING BILDE-PCOLN

BILDE-PLENG

BILDE-FLD .

ELSE.

PERFORM WRITE_GUI USING BILDE-PCOLN

BILDE-PLENG

BILDE-FLD

BILDE-GUIOBJ.

ENDIF.

ENDIF.

ENDLOOP.

ENDIF.

ELSE.

  • DETAIL.

FORMAT RESET.

ENDIF.

ENDLOOP.

WRITE:/01(102) SY-ULINE.

ENDFORM. "bild_ausgabe

*/

*----


*

  • FORM write_hell *

*----


*

*----


*

FORM WRITE_HELL USING SPALTE LAENGE FELD .

*

DATA: FLDPOS TYPE I,

ZEICHEN(1) TYPE C.

*

FLDPOS = SPALTE + 1.

DO LAENGE TIMES.

MOVE FELD TO ZEICHEN.

SHIFT FELD.

POSITION FLDPOS.

WRITE ZEICHEN COLOR COL_NORMAL INTENSIFIED OFF.

FLDPOS = FLDPOS + 1.

ENDDO.

*

ENDFORM. "write_hell.

*/

*----


*

  • FORM write_gui *

*----


*

*----


*

FORM WRITE_GUI USING SPALTE LAENGE FELD OBJECT.

*

DATA: FLDPOS TYPE I,

ZEICHEN(1) TYPE C,

CHAR(120) TYPE C,

INITIAL(1) TYPE C VALUE '_'.

*

MOVE FELD TO CHAR.

IF CHAR(01) NE INITIAL AND

( OBJECT EQ 'A' OR

OBJECT EQ 'C' ).

OBJECT = X.

ENDIF.

*

IF OBJECT EQ 'R'.

TRANSLATE FELD USING ' -'.

ENDIF.

*

FLDPOS = SPALTE + 1.

DO LAENGE TIMES.

CASE OBJECT.

WHEN 'A'.

MOVE '^' TO ZEICHEN.

WHEN 'B'.

  • MOVE 'V' TO ZEICHEN.

WHEN 'C'.

MOVE '.' TO ZEICHEN.

WHEN OTHERS.

MOVE FELD TO ZEICHEN.

ENDCASE.

SHIFT FELD.

POSITION FLDPOS.

CASE OBJECT .

WHEN 'R'.

WRITE ZEICHEN INTENSIFIED OFF.

WHEN 'B'.

WRITE ZEICHEN COLOR COL_KEY INTENSIFIED OFF.

WHEN OTHERS.

WRITE ZEICHEN COLOR COL_TOTAL INTENSIFIED OFF.

ENDCASE.

FLDPOS = FLDPOS + 1.

ENDDO.

*

ENDFORM. "write_gui

*/

*----


*

  • FORM : mod_bild_frame *

  • *

*----


*

FORM MOD_BILD_FRAME .

*

      • rahmen im dynpro anzeigen

      • vorbereitung für die ausgabe

*

DATA: BZEILE TYPE I.

*

SORT BILDE BY ZEILE .

*

LOOP AT BILDE WHERE GUIOBJ EQ 'R'.

IF BILDE-PREP GT 0.

BZEILE = BILDE-ZEILE.

DO BILDE-PREP TIMES.

READ TABLE BILD INDEX BZEILE.

IF SY-SUBRC EQ 0.

BILD-FLAG = ON.

MODIFY BILD INDEX BZEILE.

ENDIF.

ENDDO.

ENDIF.

ENDLOOP.

*

LOOP AT BILDE WHERE GUIOBJ EQ 'B'.

IF BILDE-PREP GT 0.

BZEILE = BILDE-ZEILE.

DO BILDE-PREP TIMES.

READ TABLE BILD INDEX BZEILE.

IF SY-SUBRC EQ 0.

BILD-FLAG = ON.

MODIFY BILD INDEX BZEILE.

ENDIF.

ENDDO.

ENDIF.

ENDLOOP.

*

ENDFORM. "MOD_BILD_FRAME .

*/

*----


*

  • FORM LOOP_GETINFO *

*----


*

  • Loopinformation fuer alle Steploopfelder in die interne Tabelle L *

  • lesen. D.h. ueber alle Felder (F) gehen und nach Headerloopfeld *

  • suchen. Falls vorhanden, dann die Loopinfo F-LREP mal verviel- *

  • f}ltigen und in Struktur L laden. *

*----


*

  • --> *

  • <-- *

  • *

  • Subforms: *

  • *

  • Interne Tabellen: F, L *

  • Globale Variablen: COUNTX *

*----


*

FORM LOOP_GETINFO.

DATA: ZWX TYPE I.

CLEAR DYL.

REFRESH DYL.

DO DYH-NOLI TIMES.

APPEND DYL.

ENDDO.

LOOP AT DYF.

IF DYF-FILL = 'T'.

CLEAR DYT.

DYT = DYF.

ENDIF.

IF DYF-LTYP = 'T'.

DO DYT-DIDX TIMES.

DYL-LTYP = 'T'.

DYL-LANF = DYT-LINE .

DYL-LBLK = DYF-LBLK.

ZWX = DYT-DIDX.

DYL-LREP = ZWX.

CLEAR COUNTY.

COUNTY = DYT-LINE + DYF-LINE - 1.

MODIFY DYL INDEX COUNTY.

ENDDO.

ENDIF.

IF DYF-LTYP = 'L'.

DO DYF-LREP TIMES.

IF SY-INDEX = 1.

DYL-LTYP = 'L'.

ELSE.

DYL-LTYP = 'F'.

ENDIF.

DYL-LANF = DYF-LANF.

DYL-LBLK = DYF-LBLK.

DYL-LREP = DYF-LREP.

COUNTX = SY-INDEX - 1.

COUNTX = DYF-LBLK * COUNTX.

COUNTX = DYF-LINE + COUNTX.

MODIFY DYL INDEX COUNTX.

ENDDO.

ENDIF.

ENDLOOP.

ENDFORM.

*/

*----


*

  • FORM LOOPINFO_INFELD *

*----


*

  • Loopinformation aus Tabelle DYL in Tabelle DYF (Felder) uebernehmen.*

*----


*

FORM LOOPINFO_INFELD.

IF DYF-LTYP = 'T'.

DYF-LINE = DYT-LINE .

ENDIF.

CLEAR DYL.

READ TABLE DYL INDEX DYF-LINE.

DYF-LTYP = DYL-LTYP.

DYF-LANF = DYL-LANF.

DYF-LBLK = DYL-LBLK.

DYF-LREP = DYL-LREP.

ENDFORM.

*/

*----


*

  • FORM : search_okcode *

  • *

*----


*

FORM SEARCH_OKCODE.

*

CLEAR: BDC-OKCODE,

BDC-CURSOR.

READ TABLE TF WITH KEY TABIND1 BINARY SEARCH.

LOOP AT TF FROM TABIND1.

  • DETAIL.

FORMAT RESET.

IF TF-COUNT GT ZCOUNT.

EXIT.

ENDIF.

IF TF-FNAME(10) = 'BDC_OKCODE'.

WRITE TF-FARG TO BDC-OKCODE(5).

ENDIF.

IF TF-FNAME(10) = 'BDC_CURSOR'.

WRITE TF-FARG TO BDC-CURSOR(35).

ENDIF.

*

ENDLOOP.

*

ENDFORM. "search_okcode.

*/

*----


*

  • FORM bim_berechtigung *

*----


*

*----


*

FORM BIM_BERECHTIGUNG USING AKTIVITY

MSGART.

*

  • IF SY-UNAME(05) EQ AUTOR . BREAK-POINT 1. ENDIF.

*

AUTHORITY-CHECK OBJECT 'S_BDC_MONI'

ID 'BDCAKTI' FIELD AKTIVITY

ID 'BDCGROUPID' FIELD MTAB-GROUPID.

*

IF SY-SUBRC > 0.

CASE AKTIVITY.

WHEN BIM-AONL. "keine berechtig. fuer abspielen/onl

MESSAGE E391 WITH MTAB-GROUPID.

WHEN BIM-ABTC. "keine berechtig. fuer abspielen/btc

IF MSGART EQ E.

MESSAGE E392 WITH MTAB-GROUPID.

ELSE.

MESSAGE S392 WITH MTAB-GROUPID.

ENDIF.

WHEN BIM-FREE. "keine berechtig. fuer freigeben

MESSAGE S393 WITH MTAB-GROUPID.

WHEN BIM-LOCK. "keine berechtig. fuer sperren/entsp.

MESSAGE S394 WITH MTAB-GROUPID.

WHEN BIM-DELE. "keine berechtig. fuer loeschen

MESSAGE S395 WITH MTAB-GROUPID.

WHEN BIM-ANAL. "keine berechtig. fuer analyse

MESSAGE S396 WITH MTAB-GROUPID.

ENDCASE.

ENDIF.

*

ENDFORM. "bim_berechtigung

*/

*----


*

  • FORM : read_listzeile

  • *

*----


*

FORM READ_LISTZEILE USING VALUE(LINE_NR)

VALUE(LIST_ID).

*

      • hide-bereich der grundliste loeschen

      • lesen der grundliste

*

CLEAR: BDCLD, BDCLD#.

*

READ LINE LINE_NR INDEX LIST_ID.

*

ENDFORM.

*/

*----


*

  • FORM : del_popup

  • *

*----


*

FORM DEL_POPUP.

*

      • Loeschen von markierten Mappen

*

LINCT = LINCT0 / 2.

IF SY-CUROW LE LINCT.

D220-O = SY-CUROW + 2.

D220-U = D220-O + 5.

ELSE.

D220-O = SY-CUROW - 10.

D220-U = D220-O + 5.

ENDIF.

*

CLEAR: D0220-FCODE.

*

  • CALL SCREEN 220 "modale dialogbox

  • STARTING AT D220-L D220-O

  • ENDING AT D220-R D220-U.

*

PERFORM POPUP_TO_CONFIRM USING '220'.

*

ENDFORM. " del_popup.

*/

*----


*

  • FORM : reset_block *

  • *

*----


*

FORM RESET_BLOCK.

*

  • reset_block setzt alle listzeilen auf 'reset'

  • ausser den kopfzeilen ( bdcld-QID = space ).

*

DATA: Z TYPE I.

*

  • IF SY-UNAME EQ AUTOR. BREAK-POINT 1. ENDIF.

*

*

Z = 0.

*

DO. "reset von markierungen

Z = Z + 1.

PERFORM READ_LISTZEILE USING Z 0.

IF SY-SUBRC GT 0.

SY-SUBRC = 0.

EXIT.

ENDIF.

IF BDCLD-CNT NE 0.

PERFORM MARKIERE_BDCLD USING BDCLD-CNT ' ' Z 0 .

MODIFY CURRENT LINE

LINE FORMAT RESET COLOR COL_NORMAL

FIELD FORMAT: BDCLD-GROUPID

COLOR COL_KEY INTENSIFIED ON.

ENDIF.

ENDDO.

*

*

ENDFORM. " reset_block

*/

*----


*

  • FORM : helldunkel *

  • *

*----


*

FORM HELLDUNKEL USING VALUE(AKTZ)

CHANGING VALUE(Z)

VALUE(LSIND).

*

  • achtung aktz ist nicht mehr zeile auf dem dynpro

  • sondern relative listzeile

*

  • IF SY-UNAME EQ AUTOR. BREAK-POINT 1. ENDIF.

*

PERFORM RESET_BLOCK.

*

Z = AKTZ.

*

PERFORM READ_LISTZEILE USING AKTZ LSIND.

IF SYST-XCODE EQ 'ANM+' OR

SYST-XCODE EQ 'ANM-' OR

SYST-XCODE EQ 'ANMI' OR

SYST-XCODE EQ 'DAT ' OR

SYST-XCODE EQ 'DYNP'.

  • nichts markieren

ELSE.

IF BDCLD-CNT NE 0.

PERFORM MARKIERE_BDCLD USING BDCLD-CNT X AKTZ LSIND.

MODIFY CURRENT LINE

LINE FORMAT COLOR COL_KEY RESET.

ENDIF.

ENDIF.

*

ENDFORM. " helldunkel

*----


*

  • FORM : show_ltext *

  • *

*----


*

FORM SHOW_LTEXT.

*

  • IF SY-UNAME EQ AUTOR. BREAK-POINT 1. ENDIF.

*

DATA: DOCNT TYPE I.

CLEAR: BDCLM.

PERFORM READ_LISTZEILE USING SAVE_LILLI2 SAVE_LSIND.

IF BDCLM-MID EQ '00' AND

BDCLM-MNR EQ '000'.

RETURN = 301.

EXIT.

ENDIF.

*

*

  • feststellen, ob es sich um eine RABAX- oder T100-Meldung handelt

  • und danach den Eintrag entsprechend anzeigen

*

IF BDCLM-MID EQ '00' AND "Rabaxauswertung

BDCLM-MNR EQ '341'.

CLEAR: PAR.

MOVE BDCLM-MPAR TO PAR.

ASSIGN PAR-TEXT(PAR-LEN) TO TO SNAP.

CALL DIALOG 'RS_RUN_TIME_ERROR'

EXPORTING SNAP-MANDT

SNAP-DATUM

SNAP-UZEIT

SNAP-AHOST

SNAP-UNAME

SNAP-MODNO.

EXIT.

ENDIF.

*

  • variable teile in die sy-felder stellen. "

DOCNT = 0.

*

CLEAR: MY.

IF BDCLM-MPARCNT CN DIGITS. "Korrupter Datensatz:

BDCLM-MPARCNT = 0. "z.B. Hexnullen

ENDIF.

*

DO BDCLM-MPARCNT TIMES.

IF BDCLM-MPAR(1) EQ SPACE.

EXIT.

ENDIF.

DOCNT = DOCNT + 1.

CLEAR PAR.

MOVE BDCLM-MPAR TO PAR.

*

IF PAR-LEN CN DIGITS. "convert_no_number

PAR-LEN = 1. "entschärfen

ENDIF.

*

CASE DOCNT.

WHEN 1.

WRITE PAR-TEXT TO MY-MSGV1(PAR-LEN).

WHEN 2.

WRITE PAR-TEXT TO MY-MSGV2(PAR-LEN).

WHEN 3.

WRITE PAR-TEXT TO MY-MSGV3(PAR-LEN).

WHEN 4.

WRITE PAR-TEXT TO MY-MSGV4(PAR-LEN).

ENDCASE.

PAR-LEN = PAR-LEN + 2.

SHIFT BDCLM-MPAR BY PAR-LEN PLACES.

ENDDO.

MSG_ARBGB = BDCLM-MID.

MSG_NR = BDCLM-MNR.

MSG_TEXT = MTEXT.

MSG_TITLE = SY-TITLE.

CALL FUNCTION 'HELPSCREEN_NA_CREATE'

EXPORTING

MELDUNG = MSG_TEXT

MELD_ID = MSG_ARBGB

MELD_NR = MSG_NR

MSGV1 = MY-MSGV1

MSGV2 = MY-MSGV2

MSGV3 = MY-MSGV3

MSGV4 = MY-MSGV4

TITEL = MSG_TITLE.

*

ENDFORM. " show_ltext.

*----


*

  • FORM dynamic_sql *

*----


*

*----


*

FORM DYNAMIC_SQL USING ACCES.

*

  • in case of performance: dynamic-sql

CASE ACCES.

WHEN 1. "ermitteln anzahl apqd-saetze

EXEC SQL.

SELECT COUNT(*) FROM APQD

WHERE QID = :MTAB-QID

INTO :QCOUNT

ENDEXEC.

WHEN 2. "ermitteln anzahl apqd-saetze

EXEC SQL.

SELECT COUNT(*) FROM APQD

WHERE QID = :MTAB-QID

AND TRANS = :APQD-TRANS

INTO :T-COUNT

ENDEXEC.

WHEN 3.

EXEC SQL.

SELECT COUNT(*) FROM APQD

WHERE QID = :MTAB-QID

AND TRANS = :APQD-TRANS

AND BLOCK = :APQD-BLOCK

INTO :TCOUNT2

ENDEXEC.

ENDCASE.

*

ENDFORM. "dynamic_sql

*/

*----


*

  • FORM : markieren_block *

  • *

*----


*

FORM MARKIEREN_BLOCK USING VALUE(AKTZ)

CHANGING VALUE(Z).

*

*

  • IF SY-UNAME EQ AUTOR. BREAK-POINT 1. ENDIF.

*

*

*----


blockanfang--block-mark = 0--


*

IF BLOCK-MARK = 0.

PERFORM RESET_BLOCK.

CLEAR: BLOCK, DCOUNT.

CLEAR: Z.

BLOCK-ZA = AKTZ.

BLOCK-SA = 0.

PERFORM READ_LISTZEILE USING BLOCK-ZA 0.

IF BDCLD-CNT GT 0.

PERFORM MARKIERE_BDCLD USING BDCLD-CNT X BLOCK-ZA BLOCK-SA. "m5

ENDIF.

MODIFY CURRENT LINE

LINE FORMAT COLOR COL_KEY RESET.

  • FIELD FORMAT MARKE INPUT.

BLOCK-MARK = 1.

SET PF-STATUS '0131'.

*----


blockende----block-mark = 1--markieren--*

ELSE.

BLOCK-ZE = AKTZ.

BLOCK-SE = 0.

IF BLOCK-ZA GT BLOCK-ZE.

Z = BLOCK-ZE.

BLOCK-ZE = BLOCK-ZA. "block-intervall umdrehen

BLOCK-ZA = Z . "

ELSE.

Z = BLOCK-ZA.

ENDIF.

*

CLEAR: DCOUNT.

WHILE BLOCK-MARK EQ 1. "liste markieren

IF Z GT BLOCK-ZE.

EXIT.

ENDIF.

PERFORM READ_LISTZEILE USING Z 0.

IF SY-SUBRC GT 0.

SY-SUBRC = 0.

EXIT.

ENDIF.

IF BDCLD-CNT GT 0.

PERFORM MARKIERE_BDCLD USING BDCLD-CNT X Z 0. "m6

DCOUNT = DCOUNT + 1.

MODIFY CURRENT LINE

LINE FORMAT COLOR COL_KEY RESET.

ENDIF.

Z = Z + 1.

ENDWHILE.

*

RETURN = 321.

BLOCK-MARK = 0.

*

ENDIF.

*

IF DCOUNT GT 0.

PERFORM SEND_MSG.

ENDIF.

*

ENDFORM. " markieren_block

*/

*----


*

  • FORM : markiere_BDCLD *

  • *

*----


*

FORM MARKIERE_BDCLD USING VALUE(IND) "i-tabellenindex

VALUE(KZ) "markierungskz

VALUE(LILLI) "lilli

VALUE(PG). "seite

*

      • markieren von tabelleneintraegen

*

IF IND EQ 0.

EXIT.

ENDIF.

*

READ TABLE BDCLD WITH KEY IND BINARY SEARCH.

MOVE KZ TO BDCLD-ACTIVE.

MODIFY BDCLD INDEX IND.

*

ENDFORM. " MARKIERE_BDCLD

*/

*----


*

  • FORM : check_BDCLD_for_mark *

  • *

*----


*

FORM CHECK_BDCLD_FOR_MARK USING VALUE(MOD).

*

      • Pruefen ob mehr als eine mappe markiert wurde

*

*IF SY-UNAME = AUTOR. BREAK-POINT 1. ENDIF.

*

CLEAR: CHECKCNT,

RETURN.

LOOP AT BDCLD WHERE ACTIVE(1) EQ X.

CHECKCNT = CHECKCNT + 1.

ENDLOOP. " BDCLD

*

IF CHECKCNT GT 1 AND

MOD EQ 'M'.

RETURN = 323.

  • PERFORM SEND_MSG.

ENDIF.

*

ENDFORM. " check_BDCLD_for_mark

*/

*----


*

  • FORM : last_listline *

  • *

*----


*

FORM LAST_LISTLINE .

*

      • Grundliste abschließen

*

  • IF SY-UNAME EQ AUTOR. BREAK-POINT 1. ENDIF.

*

  • FORMAT RESET.

WRITE:/01(102) SY-ULINE.

  • WRITE:/90(01) '.'.

*

ENDFORM. " last_listline

*/

*----


*

  • FORM : popup_to_confirm

  • *

*----


*

FORM POPUP_TO_CONFIRM USING DYNNR.

*

DATA: ANZAHL(04).

*

      • aufruf des globalen funktionsbausteines

      • popup_to_confirm_step

      • vorbereitung

*

CASE DYNNR.

WHEN '220'.

CLEAR: SPOP-TEXTLINE1,

SPOP-TEXTLINE2,

SPOP-TITEL,

DECISION, ANZAHL.

MOVE: TEXT-044 TO SPOP-TEXTLINE1,

TEXT-045 TO SPOP-TEXTLINE2,

TEXT-043 TO SPOP-TITEL.

DCOUNT = CHECKCNT.

IF DCOUNT EQ 0.

DCOUNT = 1.

ENDIF.

MOVE DCOUNT TO ANZAHL.

REPLACE '&' WITH ANZAHL INTO SPOP-TEXTLINE1.

PERFORM POPUP_TO_CONFIRM_STEP.

IF DECISION EQ JA. " ja

D0220-FCODE = 'DEL'.

ELSE.

D0220-FCODE = 'CONT'.

ENDIF.

*

ENDCASE. "dynnr

*

ENDFORM. "popup_to_confirm

*/

*----


*

  • FORM : popup_to_confirm_step

  • *

*----


*

FORM POPUP_TO_CONFIRM_STEP.

*

      • aufruf des globalen funktionsbausteines

      • popup_to_confirm_step

*

CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'

EXPORTING DEFAULTOPTION = 'N'

TEXTLINE1 = SPOP-TEXTLINE1

TEXTLINE2 = SPOP-TEXTLINE2

TITEL = SPOP-TITEL

IMPORTING ANSWER = DECISION.

*

ENDFORM. "popup_to_confirm_step

*/

*----


*

  • FORM : find_blockfaktor *

  • *

*----


*

FORM FIND_BLOCKFAKTOR CHANGING VALUE(BFSTART)

VALUE(BFENDE)

VALUE(BFBLOCK).

*

DATA: SAVE-TRANS LIKE APQD-TRANS.

*

      • finden von block-anfang und dem blockungsfaktor

*

*

SAVE-TRANS = APQD-TRANS.

APQD-TRANS = 1.

DO.

T-COUNT = 0.

PERFORM DYNAMIC_SQL USING 2.

IF T-COUNT NE 0.

BFSTART = APQD-TRANS.

EXIT.

ENDIF.

APQD-TRANS = APQD-TRANS + 1.

IF APQD-TRANS GT MTAB-TRANSCNT.

EXIT.

ENDIF.

ENDDO.

APQD-TRANS = SAVE-TRANS.

*

ENDFORM. " FIND_BLOCKFAKTOR.

*/

*----


*

  • FORM : protokoll_reorg *

  • *

*----


*

FORM PROTOKOLL_REORG .

*

SUBMIT (REOREPORT) VIA SELECTION-SCREEN

AND RETURN.

*

ENDFORM. " PROTOKOLL_REORG .

*/

*----


*

  • FORM : TST01_CHECK

  • *

*----


*

FORM TST01_CHECK .

*

SUBMIT (TSTREPORT) AND RETURN.

*

ENDFORM. " TST01_CHECK .

*/

*----


*

  • FORM : APQL_CHECK *

  • *

*----


*

FORM APQL_CHECK .

*

SUBMIT (APLREPORT) AND RETURN.

*

ENDFORM. " APQL_CHECK .

*/

*----


*

  • FORM : anm_header *

  • *

*----


*

FORM ANM_HEADER .

*

FORMAT INTENSIFIED.

WRITE:/01(46) SY-ULINE.

PERFORM WRITE_VLINE USING 'T' 1 .

PERFORM WRITE_VLINE USING 'T' 46.

WRITE:/02(18) 'Transaktion'(014) COLOR COL_HEADING,

  • 02(06) 'Nr. '(064) COLOR COL_HEADING,

21(11) 'Status'(017) COLOR COL_HEADING,

33(13) 'Dynpro'(007) COLOR COL_HEADING.

FORMAT RESET.

PERFORM WRITE_VLINE USING 'T' 1 .

  • PERFORM WRITE_VLINE USING 'T' 8 .

PERFORM WRITE_VLINE USING 'T' 20.

PERFORM WRITE_VLINE USING 'T' 32.

PERFORM WRITE_VLINE USING 'T' 46.

IF ANAL-MAXBLK GT 0.

FORMAT INTENSIFIED.

WRITE: 60(15) SPACE COLOR COL_TOTAL .

WRITE: 60(05) 'Block'(042) COLOR COL_TOTAL ,

67(05) ANAL-BLK# COLOR COL_TOTAL ,

73(01) '/' COLOR COL_TOTAL ,

75(05) ANAL-MAXBLK COLOR COL_TOTAL .

FORMAT RESET.

ENDIF.

WRITE:/02(18) ULINE,

21(20) ULINE,

33(13) ULINE.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 8.

PERFORM WRITE_VLINE USING 'T' 20.

PERFORM WRITE_VLINE USING 'T' 32.

PERFORM WRITE_VLINE USING 'T' 46.

*

ENDFORM. " ANM_HEADER

*/

*----


*

  • FORM : check_varchar_len *

  • *

*----


*

FORM CHECK_VARCHAR_LEN CHANGING FIELDLEN.

DATA: TABNAME(10),

FIELDNAME(30),

REQUEST(01).

  • FIELDLEN TYPE I.

TABNAME = 'APQD'.

FIELDNAME = 'VARDATA'.

REQUEST = 'L'.

CLEAR FIELDLEN.

CALL 'HELP_GET_FIELDLEN' ID 'TABLE' FIELD TABNAME

ID 'FIELD' FIELD FIELDNAME

ID 'REQUEST' FIELD REQUEST

ID 'LEN' FIELD FIELDLEN.

*

ENDFORM. " CHECK_VARCHAR_LEN.

*/

*----


*

  • FORM : progress_indicator *

  • *

*----


*

FORM PROGRESS_INDICATOR USING MOD.

*

      • Anzeigen listenaufbereitung in %

*

DATA: LPERCENT TYPE I,

LTEXT(80) .

*

IF SY-SYSID NE 'BIN'.

EXIT.

ENDIF.

*

CLEAR LPERCENT.

*

CASE MOD.

*

WHEN 'APQD'.

LTEXT = ' gelesene APQD-Sätze , Trans#....'.

WRITE ANAL-ECOUNT TO LTEXT+0(05).

WRITE APQD-TRANS TO LTEXT+38(05).

*

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING PERCENTAGE = LPERCENT

TEXT = LTEXT.

  • TEXT = TEXT-055.

WHEN 'VARD'.

LTEXT = 'I scan Bytes Data, please wait..... '.

WRITE APQDVARLEN TO LTEXT+08(05).

WRITE MAXVARDATALEN TO LTEXT+40(05).

*

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING PERCENTAGE = LPERCENT

TEXT = LTEXT.

  • TEXT = TEXT-055.

WHEN 'VARC'.

LTEXT = 'I scan Bytes Data, please wait..... '.

WRITE APQDVARLEN TO LTEXT+08(05).

WRITE WCOUNT TO LTEXT+40(05).

*

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING PERCENTAGE = LPERCENT

TEXT = LTEXT.

  • TEXT = TEXT-055.

WHEN 'READY'.

LTEXT = 'I am ready .................................... '.

*

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING PERCENTAGE = LPERCENT

TEXT = LTEXT.

  • TEXT = TEXT-055.

ENDCASE.

*

ENDFORM. " PROGRESS_INDICATOR .

*#

*----


*

            • ZEITPUNKTE DER LISTVERARBEITUNG ******************************

*----


*

*

*----


*

  • TOP OF PAGE - EREIGNIS *

*----


*

TOP-OF-PAGE.

*

      • Ausgabe Ueberschriften

*

FORMAT INTENSIFIED.

CASE SY-PFKEY(3).

WHEN 'ALP'.

IF LOG-MODUS = ' ' OR

LOG-MODUS = 'A' OR

LOG-MODUS = 'B' OR

LOG-MODUS = 'F'.

WRITE:/01(102) SY-ULINE.

WRITE:/02(101) SPACE COLOR COL_HEADING.

WRITE: 24(12) 'Mappenname '(003) COLOR COL_HEADING.

WRITE: 02(10) 'Datum '(006) COLOR COL_HEADING,

13(08) 'Zeit '(001) COLOR COL_HEADING,

52(12) 'User '(005) COLOR COL_HEADING.

PERFORM WRITE_VLINE USING 'T' 12.

PERFORM WRITE_VLINE USING 'T' 23.

PERFORM WRITE_VLINE USING 'T' 51.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/24(28) SY-ULINE ,

02(10) SY-ULINE ,

13(11) SY-ULINE ,

52(52) SY-ULINE.

PERFORM WRITE_VLINE USING 'T' 12.

PERFORM WRITE_VLINE USING 'T' 23.

PERFORM WRITE_VLINE USING 'T' 51.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 102.

ENDIF.

WHEN 'MES'.

PERFORM WRITE_DATE USING BDCLD-CREDATE.

WRITE:/01(102) SY-ULINE.

WRITE:

/01(102) SPACE COLOR COL_HEADING.

WRITE:

01 'Zeit '(001) COLOR COL_HEADING,

23 'Nachricht'(002) COLOR COL_HEADING,

63 DATE1 DD/MM/YYYY COLOR COL_HEADING.

PERFORM WRITE_VLINE USING 'T' 22.

PERFORM WRITE_VLINE USING 'T' 62.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:

/01 '-----',

23 '----

-


',

63 '----

-


'.

PERFORM WRITE_VLINE USING 'T' 22.

PERFORM WRITE_VLINE USING 'T' 62.

ENDCASE.

  • ULINE/.

  • " top-of-page.

*/

*----


*

  • TOP-OF-PAGE DURING LINE-SELECTION- EREIGNIS

*----


*

TOP-OF-PAGE DURING LINE-SELECTION.

*

      • Ueberschrift der selektierten Partition

*

CASE SYST-XCODE.

WHEN 'ANM' .

PERFORM ANM_HEADER.

WHEN 'ANM+' .

PERFORM ANM_HEADER.

WHEN 'ANM-' .

PERFORM ANM_HEADER.

WHEN 'ANMI' .

PERFORM ANM_HEADER.

WHEN 'DAT '.

WHEN 'DYNP'.

WHEN 'PICK'.

WHEN OTHERS.

IF SY-LSIND = 1.

PERFORM WRITE_DATE USING BDCLD-CREDATE.

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 COLOR COL_HEADING INTENSIFIED OFF.

PERFORM WRITE_VLINE USING 'T' 10.

PERFORM WRITE_VLINE USING 'T' 15.

PERFORM WRITE_VLINE USING 'T' 29.

PERFORM WRITE_VLINE USING 'T' 62.

WRITE:

/02(08) SY-ULINE,

11(04) SY-ULINE,

16(13) SY-ULINE,

30(10) SY-ULINE,

63(40) 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' 62.

ELSE.

WRITE:/01 SY-ULINE.

WRITE:/01(102) SPACE COLOR COL_HEADING INTENSIFIED.

WRITE: 24(12) 'Mappenname '(003) COLOR COL_HEADING INTENSIFIED,

02(10) 'Datum '(006) COLOR COL_HEADING INTENSIFIED,

12(08) 'Zeit '(001) COLOR COL_HEADING INTENSIFIED,

52(50) 'User '(005) COLOR COL_HEADING INTENSIFIED.

PERFORM WRITE_VLINE USING 'T' 23.

PERFORM WRITE_VLINE USING 'T' 51.

PERFORM WRITE_VLINE USING 'T' 11.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 102.

WRITE:/24(40) SY-ULINE,

02(13) SY-ULINE,

12(13) SY-ULINE,

52(40) SY-ULINE.

PERFORM WRITE_VLINE USING 'T' 11.

PERFORM WRITE_VLINE USING 'T' 51.

PERFORM WRITE_VLINE USING 'T' 23.

PERFORM WRITE_VLINE USING 'T' 1.

PERFORM WRITE_VLINE USING 'T' 102.

ENDIF.

ENDCASE.

*/

*----


*

  • AT LINE-SELECTION- EREIGNIS (PF2 oder Doppelklick) *

*----


*

AT LINE-SELECTION.

*

      • Lesen der selektierten Batch-Input Protokolle

*

RETURN = 0.

CASE SY-LSIND.

WHEN 1.

PERFORM CHECK_BDCLD_FOR_MARK USING 'M'.

IF RETURN GT 0.

PERFORM SEND_MSG.

EXIT.

ENDIF.

PERFORM READ_LISTZEILE USING SY-LILLI 0.

IF BDCLD-CNT EQ 0.

RETURN = 301.

PERFORM SEND_MSG.

EXIT.

ELSE.

PERFORM HELLDUNKEL USING SY-LILLI SAVE_LILLI1 0.

ENDIF.

*

MTAB-GROUPID = BDCLD-GROUPID.

*

PERFORM BIM_BERECHTIGUNG USING BIM-ANAL X.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

*

SET TITLEBAR 'MSG' WITH BDCLD-GROUPID.

SET PF-STATUS 'MESS'.

*

LOG-QUID = BDCLD-QID.

PERFORM SHOW_DIRM. "neue listausgabe wegen drucken

PERFORM SEND_MSG.

WHEN 2.

PERFORM GET_DYNPRO.

WHEN 3.

PERFORM GET_DYNPRO.

WHEN OTHERS.

ENDCASE.

*

PERFORM SEND_MSG.

*

*/

*----


*

  • AT USER-COMMAND - EREIGNIS *

*----


*

  • Auswerten gedrueckter Funktionstasten in Listverarbeitung *

*----


*

AT USER-COMMAND.

*

  • IF SY-UNAME(05) EQ AUTOR. BREAK-POINT 1. ENDIF.

*

SAVE_LSIND = SY-LSIND - 1.

*

IF LOG-MODUS EQ 'A' OR

LOG-MODUS EQ 'B' OR

LOG-MODUS EQ 'C' OR

LOG-MODUS EQ 'F'.

IF SAVE_LSIND EQ 1.

SAVE_LILLI2 = SY-LILLI.

SY-LILLI = SAVE_LILLI1.

ENDIF.

IF SY-PFKEY EQ 'ALPO'.

SAVE_LILLI2 = SY-LILLI.

SY-LILLI = SAVE_LILLI1.

ENDIF.

IF SAVE_LSIND EQ 0 AND

LOG-MODUS NE 'C' AND

SYST-XCODE NE 'REOG'.

PERFORM CHECK_BDCLD_FOR_MARK USING 'I'.

IF CHECKCNT EQ 0.

PERFORM HELLDUNKEL USING SY-LILLI SAVE_LILLI1 0.

ENDIF.

ENDIF.

ENDIF.

*

RETURN = 0.

CASE SYST-XCODE.

WHEN 'RET '.

LOG-RETC = SYST-XCODE.

SET PARAMETER ID 'BDC' FIELD LOG.

LEAVE.

EXIT.

WHEN 'ANM '.

IF CHECKCNT LE 1.

MTAB-GROUPID = BDCLD-GROUPID.

PERFORM BIM_BERECHTIGUNG USING BIM-ANAL X.

IF SY-SUBRC EQ 0.

IF LOG-MODUS EQ 'B' OR

LOG-MODUS EQ 'C'.

BDCLD-QID = LOG-QUID.

ENDIF.

IF BDCLD-QID NE SPACE.

WHICHTRAN = 'ALL'.

DTRANCNT = 0.

PERFORM MAPPEN_ANALYSE.

ELSE.

RETURN = 301.

PERFORM SEND_MSG.

ENDIF.

ENDIF.

ELSE.

RETURN = 323.

PERFORM SEND_MSG.

ENDIF.

WHEN 'ANM+'.

WHICHTRAN = 'ALL'.

PERFORM MAPPEN_ANALYSE.

WHEN 'ANM-'.

WHICHTRAN = 'ALL'.

PERFORM MAPPEN_ANALYSE.

WHEN 'ANMI'.

WHICHTRAN = 'ALL'.

PERFORM MAPPEN_ANALYSE.

WHEN 'DAT '.

IF SY-LSIND = 2.

PERFORM GET_DATEN.

ELSE.

SY-LSIND = SY-LSIND - 1 .

ZCOUNT = TF-COUNT.

PERFORM GET_DATEN_131.

ENDIF.

WHEN 'DYNP'.

SY-LSIND = SY-LSIND - 1 .

PERFORM GET_DYNPRO_131.

WHEN 'DEL '.

IF CHECKCNT EQ 0.

MOVE BDCLD-GROUPID TO MTAB-GROUPID.

PERFORM BIM_BERECHTIGUNG USING BIM-DELE X.

IF SY-SUBRC EQ 0. "berechtigung ok

IF SY-LISEL(10) NE SPACE.

IF BDCLD-QID NE SPACE.

PERFORM DEL_POPUP.

PERFORM DEL_MESL.

ELSE.

RETURN = 301.

PERFORM SEND_MSG.

ENDIF.

ELSE.

RETURN = 301.

PERFORM SEND_MSG.

ENDIF.

ENDIF.

ELSE.

PERFORM DEL_POPUP.

PERFORM MDEL_MESL. " Protokolle loeschen n-mal

PERFORM SEND_MSG.

ENDIF.

WHEN 'LTXT'.

PERFORM SHOW_LTEXT.

PERFORM SEND_MSG.

WHEN 'AMRK'.

BLOCK-ZA = 1. "blockanfang

BLOCK-ZE = 99999. "blockende

BLOCK-MARK = 1. "block markieren

PERFORM MARKIEREN_BLOCK USING BLOCK-ZE

CHANGING SAVE_CUROW2.

WHEN 'DBLK'.

PERFORM RESET_BLOCK.

WHEN 'MBLK'.

PERFORM MARKIEREN_BLOCK USING SY-LILLI

CHANGING SAVE_CUROW2.

WHEN 'REOG'.

PERFORM PROTOKOLL_REORG.

WHEN 'TST1'.

PERFORM TST01_CHECK.

WHEN 'APQL'.

PERFORM APQL_CHECK.

WHEN OTHERS.

LOG-RETC = SYST-XCODE.

SET PARAMETER ID 'BDC' FIELD LOG.

ENDCASE.

***********************************************************************

  • Ende des Reports RSBDCLOG

0 Kudos

Hi Abdul,

Thanks for ur reply.

I found that program is existing on 4.6c but not on 4.7 .

Also when I gave the session name it gave me a short dump.

So that means I am still where I was...

Any other ideas..

Thanks & Regards,

Ankur

andreas_mann3
Active Contributor
0 Kudos

Hi Ankur ,

another possibility is to run the wrong records again,

in mode batch proc.

-> then you'll get a new protocol , which you can download to excel per alv-function

regards Andreas

0 Kudos

Hi Andreas,

I got what you want to say, but as per the requirement I need the data like material no , plant etc also.

So I think I need to create a report for this.

I did found that table APQD is used to store the screen data, but again it is showing me for all transaction and I want only for error ones.

Thanks & Regards,

Ankur

Former Member

Read this post.

Srinivas

Wandersonwos
Participant