Sie sind auf Seite 1von 27

*&---------------------------------------------------------------------*

*& Report ZKASIM00 *


*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*

REPORT ZKASIM00 .
DATA ECHTLAUF VALUE 'J'.
*parameters: kennz(3) default 'EGK',
* liste default 'J' ,
* jahr(4) default '2000' ,
* bumon(2) default '05',
* halt_auf like aufk-aufnr default '000000000000',
* abauftr like aufk-aufnr default '000000000000',
* jeder(3) default '000'.

DATA : KENNZ(3) VALUE 'EGK',


LISTE VALUE 'N' ,
JAHR(4) VALUE '2002',
BUMON(2) VALUE '05',
HALT_AUF LIKE AUFK-AUFNR VALUE '000000000000',
ABAUFTR(8) value '81018803',
JEDER(3) VALUE '100'.
TABLES: ZSIS_AUFT,ZSI_DATEIEN, "SI-Auftr�ge
COAS, "Controlling-Auftragsstamm
AUFK, "Auftragsstamm
ZSIS_WERTE, "structur si-werte
COSS, "sekund�r-kosten
COSP, "prim�r-kosten
T950W, "standorte steag-auftragsarten
* t950v, "
T003O,NRIV.
DATA OBJECT(10) VALUE 'AUFK'.

DATA: L_EVENTID LIKE TBTCM-EVENTID,


L_EVENTPARM LIKE TBTCM-EVENTPARM,
L_EXTERNAL_PROGRAM_ACTIVE LIKE TBTCM-XPGACTIVE,
L_JOBCOUNT LIKE TBTCM-JOBCOUNT,
L_JOBNAME LIKE TBTCM-JOBNAME,
L_STEPCOUNT LIKE TBTCM-STEPCOUNT.
*i/o files
DATA P_FILE LIKE RLGRAP-FILENAME. "Auftr�ge input
DATA O_FILE LIKE RLGRAP-FILENAME. "Protokoll output
DATA PARA_IN_FILE LIKE RLGRAP-FILENAME. "Parameter input
DATA PARA_OUT_FILE LIKE RLGRAP-FILENAME. "Parameter output

DATA BEGIN OF TABF OCCURS 1.


DATA FEHLER(080).
DATA END OF TABF.
******delete by borag
*DATA: BEGIN OF Z_PITAB,
* BUJAHR(4) VALUE '1999',
* BUMON(2) VALUE '08',
* KENNZ(3) VALUE 'WAL',
* FILL5 ,
** ZPID(5) , "AIX-Process-ID"huick 160503
* ZPID(7) , "AIX-Process-ID
* FILL6 ,
* PSTATUS(2) ,
* END OF Z_PITAB.
*DATA: BEGIN OF PITAB,
* BUJAHR(4) ,
* BUMON(2) ,
* KENNZ(3) ,
* FILL5 ,
** ZPID(5) , "AIX-Process-ID"huick 160503
* ZPID(7) , "AIX-Process-ID"huick 160503
* FILL6 ,
* PSTATUS(2) ,
* END OF PITAB.
*****delete by borag
*****append by borag
DATA: BEGIN OF Z_PITAB,
BUMON(2) VALUE '08',
BUJAHR(4) VALUE '1999',
KENNZ(3) VALUE 'WAL',
FILL5 ,
* ZPID(5) , "AIX-Process-ID"huick 160503
ZPID(7) , "AIX-Process-ID
FILL6 ,
PSTATUS(2) ,
END OF Z_PITAB.
DATA: BEGIN OF PITAB,
BUMON(2) ,
BUJAHR(4) ,
KENNZ(3) ,
FILL5 ,
* ZPID(5) , "AIX-Process-ID"huick 160503
ZPID(7) , "AIX-Process-ID"huick 160503
FILL6 ,
PSTATUS(2) ,
END OF PITAB.
*****append by borag
DATA BEGIN OF SATZ.
INCLUDE STRUCTURE ZSIS_AUFT.
DATA END OF SATZ.
DATA BEGIN OF FEHLTAB OCCURS 1.
DATA FEHLER(50).
DATA STANDORT(3).
DATA AUFTRAG LIKE AUFK-AUFNR.
DATA TRENNZ(2) VALUE '//'.
DATA END OF FEHLTAB.

DATA BEGIN OF AUSGABE.


DATA BEGIN OF SATZ.
INCLUDE STRUCTURE ZSIS_WERTE.
DATA END OF SATZ.
DATA TRENNZ VALUE '/'.
DATA FEHLER(50).
DATA END OF AUSGABE.

DATA BEGIN OF OUT_SI OCCURS 1.


INCLUDE STRUCTURE ZSIS_WERTE.
DATA END OF OUT_SI.

DATA: BEGIN OF KSTAR OCCURS 1,


KSTAR LIKE COSS-KSTAR,
WRTTP LIKE COSS-WRTTP,
WERT LIKE COSS-WOG001,
MENGE LIKE COSS-MEG001,
END OF KSTAR.

DATA: BEGIN OF KOSTEN OCCURS 1,


AUFNR LIKE AUFK-AUFNR,
KSTAR LIKE COSS-KSTAR,
WERT LIKE COSS-WOG001,
MENGE LIKE COSS-MEG001,
END OF KOSTEN.
DATA P_SETID LIKE SETHIER-SETID.
DATA: BEGIN OF SETTAB OCCURS 100,
SETID LIKE RGSMH-SETNR,
LEVEL LIKE RGSMH-LEVEL,
POINTER LIKE RGSMH-PUP,
SETNAME LIKE RGSMH-SETNR,
END OF SETTAB.

DATA: BEGIN OF VALTAB OCCURS 100,


TOVALUE LIKE RGSMV-TO,
FROMVALUE LIKE RGSMV-FROM,
SETNAME LIKE RGSMH-SETNR,
POINTER LIKE RGSMV-PUP,
END OF VALTAB.
DATA: BEGIN OF WERTE,
GJAHR LIKE COSS-GJAHR,
WRTTP LIKE COSS-WRTTP,
KSTAR LIKE COSS-KSTAR,
WOG001 LIKE COSS-WOG001,
WOG002 LIKE COSS-WOG001,
WOG003 LIKE COSS-WOG001,
WOG004 LIKE COSS-WOG001,
WOG005 LIKE COSS-WOG001,
WOG006 LIKE COSS-WOG001,
WOG007 LIKE COSS-WOG001,
WOG008 LIKE COSS-WOG001,
WOG009 LIKE COSS-WOG001,
WOG010 LIKE COSS-WOG001,
WOG011 LIKE COSS-WOG001,
WOG012 LIKE COSS-WOG001,
WOG013 LIKE COSS-WOG001,
WOG014 LIKE COSS-WOG001,
WOG015 LIKE COSS-WOG001,
WOG016 LIKE COSS-WOG001,
WOG017 LIKE COSS-WOG001,
MEG001 LIKE COSS-MEG001,
MEG002 LIKE COSS-MEG001,
MEG003 LIKE COSS-MEG001,
MEG004 LIKE COSS-MEG001,
MEG005 LIKE COSS-MEG001,
MEG006 LIKE COSS-MEG001,
MEG007 LIKE COSS-MEG001,
MEG008 LIKE COSS-MEG001,
MEG009 LIKE COSS-MEG001,
MEG010 LIKE COSS-MEG001,
MEG011 LIKE COSS-MEG001,
MEG012 LIKE COSS-MEG001,
MEG013 LIKE COSS-MEG001,
MEG014 LIKE COSS-MEG001,
MEG015 LIKE COSS-MEG001,
MEG016 LIKE COSS-MEG001,
MEG017 LIKE COSS-MEG001,
END OF WERTE.
DATA SUBRC LIKE SY-SUBRC.
DATA STARTSATZ LIKE AUSGABE VALUE '######STAR XXX'.
DATA ENDESATZ LIKE AUSGABE VALUE '######ENDE'.
DATA Z_STARTSATZ(4) TYPE P.
DATA Z_ENDESATZ LIKE Z_STARTSATZ.
DATA Z_EINGABE LIKE Z_STARTSATZ.
DATA Z_EINGABE_OK LIKE Z_STARTSATZ.
DATA Z_EINGABE_FEHL LIKE Z_STARTSATZ.
FIELD-SYMBOLS <F1>.
DATA AUART LIKE ZSIS_AUFT-ART.
DATA LNG_AUART(2) TYPE P.
*ata objnr like ausp-objek.
DATA: KLASSE LIKE SCLASS OCCURS 0, "Klassen
KLADAT LIKE CLOBJDAT OCCURS 0 WITH HEADER LINE, "Klassendaten
AEBELK LIKE CDHDR OCCURS 10 WITH HEADER LINE, "�nderungsbel.Kopf
AEBELP LIKE CDSHW OCCURS 10 WITH HEADER LINE. "�nderungsbel.Pos.
DATA SATZ_ZAEHLER_OUT(3) TYPE P.
DATA Z_OUT(4) TYPE P.
DATA AUFTRAG LIKE AUFK-AUFNR.
DATA AUFTRAGB LIKE AUFK-AUFNR.
****delete by borag
*ATA KOKRS LIKE AUFK-KOKRS VALUE '0800'.
****delete by borag
*****append by borag
DATA KOKRS LIKE AUFK-KOKRS VALUE '1000'.
*****append by borag

DATA ABBRUCH.
***delete by borag
*DATA ZEILE(3).
***delete by borag.
***append by borag
DATA ZEILE(4).
***append by borag
DATA ANZAHL(4) TYPE P.
DATA: BEGIN OF AUS ,
GIEIG(6) TYPE P DECIMALS 2,
GIFRI LIKE AUS-GIEIG,
GIFRE LIKE AUS-GIEIG,
GIMAG LIKE AUS-GIEIG,
GIFRL LIKE AUS-GIEIG,
GISON LIKE AUS-GIEIG,
SIEIG LIKE AUS-GIEIG,
SIFRI LIKE AUS-GIEIG,
SIFRE LIKE AUS-GIEIG,
SIMAG LIKE AUS-GIEIG,
SIFRL LIKE AUS-GIEIG,
SISON LIKE AUS-GIEIG,
GOFRI LIKE AUS-GIEIG,
GOFRE LIKE AUS-GIEIG,
GOFRL LIKE AUS-GIEIG,
GOSON LIKE AUS-GIEIG,
SOFRI LIKE AUS-GIEIG,
SOFRE LIKE AUS-GIEIG,
SOFRL LIKE AUS-GIEIG,
SOSON LIKE AUS-GIEIG,
GSTDE LIKE AUS-GIEIG,
GSTDF LIKE AUS-GIEIG,
SSTDE LIKE AUS-GIEIG,
SSTDF LIKE AUS-GIEIG,
END OF AUS.
FIELD-SYMBOLS <F3>.
DATA P_ANZAHL(3) TYPE P.
DATA BEGIN OF T_NRIV OCCURS 1.
INCLUDE STRUCTURE NRIV.
DATA END OF T_NRIV.
FIELD-SYMBOLS <FX>.
DATA AUFART LIKE AUFK-AUART VALUE 'AV '.
DATA LNG_AUFART(2) TYPE P.
DATA: BEGIN OF SETF OCCURS 1,
KSTAR LIKE KSTAR-KSTAR,
AUFNR LIKE AUFK-AUFNR,
END OF SETF.
TABLES T950H.
DATA NOCH_FEHLER.
DATA UMBUCH_U(6) VALUE '999001'.
DATA UMBUCH_H(6) VALUE '999899'.
TABLES USR01.
DATA ST_EMPFAENGER LIKE USR01-BNAME VALUE 'PELSCHE '.
DATA NO-KOSTENART LIKE COSS-KSTAR VALUE '0000076805'.
DATA NEHME.
CONSTANTS: CONTROL_BLOCK LIKE SY-TABIX VALUE 1.
DATA: BEGIN OF HEADER.
INCLUDE STRUCTURE RGSMH.
DATA: END OF HEADER.
DATA: SETINDEX LIKE SY-TABIX.
DATA OBJNR LIKE COSS-OBJNR VALUE 'OR'.
DATA RF(8) type p decimals 0.
data rf_obligo like rf.
DATA TABELLE(4).
DATA RF_MENGE(8) type p decimals 0.
FIELD-SYMBOLS <F2>.
* definition set
DATA: P_SET LIKE RGSMH-SETNR VALUE 'EGK_SI_GES'.
INCLUDE FGSCLASS. "Routines for handling of set name prefix
data strich(100) value
'---------------------------------------------------------------------'.
include rcncon03.
data xdat(6).
data objekt like
aufk-objnr value 'OR '.

START-OF-SELECTION.
PERFORM READ_SET USING P_SET.
PERFORM INITIALISIERUNG.
PERFORM AUFTRAGS_INTERVALL.
IF NOT ABBRUCH IS INITIAL.
WRITE: / 'Es wurden fatale Fehler festgestellt. Programmabbbruch'.
EXIT.
ENDIF.
PERFORM STARTSATZ_OUT.
PERFORM SELECT_DATEN CHANGING SUBRC.
PERFORM ENDESATZ.
IF echtlauf ne 'J'.
CLEAR ANZAHL.
PERFORM LISTE_SI. "eventuell noch eine liste dazu
ENDIF.
PERFORM AUSGABE_DATEN. "zu guter letzt alles ausgeben
SORT SETF.

PERFORM MAIL. "fehlende Kostenarten


* "versenden
*---------------------------------------------------------------------*
* FORM INITIALISIERUNG *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM INITIALISIERUNG.
PACK JEDER TO P_ANZAHL.
DESCRIBE FIELD ZSIS_AUFT-ART LENGTH LNG_AUART .
IF ECHTLAUF = 'J'.
PERFORM EVENT.
ELSE.
Z_PITAB-KENNZ = KENNZ.
Z_PITAB-BUJAHR = JAHR.
Z_PITAB-BUMON = BUMON+0(2).
PITAB = Z_PITAB.
ENDIF.
xdat = pitab.
ENDFORM.
" INITIALISIERUNG
*---------------------------------------------------------------------*
* FORM EVENT *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM EVENT.
*****delete by borag
* IF ECHTLAUF = 'J'.
* CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
* IMPORTING
* EVENTID = L_EVENTID
* EVENTPARM = L_EVENTPARM
** external_program_active = l_external_program_active
** jobcount = l_jobcount
* JOBNAME = L_JOBNAME
** stepcount = l_stepcount
* EXCEPTIONS
* NO_RUNTIME_INFO = 1
* OTHERS = 2.
**
* IF SY-SUBRC NE 0.
* WRITE: / 'Fehler bei Aufuf FB/ GET_JOB_RUNTIME_INFO/',SY-SUBRC.
* ABBRUCH = 'J'.
** PITAB-ZPID = '00000'. "huick 160603
* PITAB-ZPID = '0000000'. "huick 160603
* EXIT.
* ENDIF.
** PITAB-ZPID = L_EVENTPARM(5). "huick 160603
* PITAB-ZPID = L_EVENTPARM(7). "huick 160603
* ELSE.
* PITAB-ZPID = '1111111'. "huick 160603
* ENDIF.
*****delete by borag
* Anforderung
*----------------
SELECT SINGLE * FROM ZSI_DATEIEN WHERE
ZSI_AUFGB = 'AUM'
AND ZSI_DATNR = '1'. " input
IF SY-SUBRC NE 0.
WRITE: / SY-DATUM,SY-UZEIT,'kein Anforderung input (AUG/1)'.
ABBRUCH = 'J'.
EXIT.
ELSE.
PARA_IN_FILE = ZSI_DATEIEN-ZSI_DATNAM.
ENDIF.

* daten
*----------------
SELECT SINGLE * FROM ZSI_DATEIEN WHERE
ZSI_AUFGB = 'AUM'
AND ZSI_DATNR = '2'. "
IF SY-SUBRC NE 0.
WRITE: / SY-DATUM,SY-UZEIT,'kein Eintrag Output(AUG/2)'.
ABBRUCH = 'J'.
EXIT.
ELSE.
O_FILE = ZSI_DATEIEN-ZSI_DATNAM.
ENDIF.

* Quittung
*----------------
SELECT SINGLE * FROM ZSI_DATEIEN WHERE
ZSI_AUFGB = 'RDIR'
AND ZSI_DATNR = '1'. "Quittung Output
IF SY-SUBRC NE 0.
WRITE: / SY-DATUM,SY-UZEIT,'kein Eintrag Protokoll Synchr(RDIR/1)'.
ABBRUCH = 'J'.
EXIT.
ELSE.
CONCATENATE
ZSI_DATEIEN-ZSI_DATNAM PITAB-ZPID '.erg' INTO PARA_OUT_FILE.
ENDIF.
PERFORM PARA_INPUT.
ENDFORM. "
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form SELECT_DATEN
*&---------------------------------------------------------------------*
FORM SELECT_DATEN CHANGING P_SUBRC.
LOOP AT T_NRIV.
NRIV = T_NRIV.
SELECT * FROM AUFK WHERE AUFNR BETWEEN NRIV-FROMNUMBER(12)
AND NRIV-TONUMBER.

*umbuchungauftr�ge �berlesen
CHECK AUFK-AUFNR+6(6) LT UMBUCH_U OR
AUFK-AUFNR+6(6) GT UMBUCH_H .
IF AUFK-AUART+2(2) = '57'.
CHECK AUFK-ASTKZ IS INITIAL.
ENDIF.
objekt+2(12) = aufk-aufnr.
objnr = objekt.
call function 'STATUS_CHECK'
EXPORTING
objnr = objekt
status = con_stat_abgs
EXCEPTIONS
object_not_found = 01
status_not_active = 02.
if sy-subrc ne '02'.
check xdat le aufk-idat3(6).
endif.
IF AUFK-AUFNR = HALT_AUF.
BREAK-POINT.
ENDIF.
REFRESH KSTAR.
CLEAR AUS.
CLEAR NEHME.
PERFORM SELECT_KOSTEN.
CHECK NEHME = 'J'.
SORT KSTAR.
LOOP AT KSTAR.
CLEAR ZEILE.
LOOP AT VALTAB.
IF KSTAR-KSTAR >= VALTAB-FROMVALUE AND
KSTAR-KSTAR <= VALTAB-TOVALUE.
*********delete by borag
* ZEILE = VALTAB-SETNAME+15(3).
*********delete by borag
*********append by borag
ZEILE = VALTAB-SETNAME+4(4).
condense zeile.
*********append by borag
* kstar-menge = kstar-menge / 10.
CASE ZEILE.
* WHEN '110'.
* ADD KSTAR-WERT TO AUS-SIEIG.
* ADD KSTAR-MENGE TO AUS-SSTDE.
* EXIT.
* WHEN '120'.
* IF KSTAR-WRTTP = '11'.
* ADD KSTAR-WERT TO AUS-SIFRI.
* ADD KSTAR-MENGE TO AUS-SSTDF.
* ELSE.
* ADD KSTAR-WERT TO AUS-SOFRI.
* ENDIF.
****************************
* WHEN 'Z120'.
* IF KSTAR-WRTTP = '11'.
* ADD KSTAR-WERT TO AUS-SIFRI.
* ADD KSTAR-MENGE TO AUS-SSTDF.
* ELSE.
* ADD KSTAR-WERT TO AUS-SOFRI.
* ENDIF.
*****************************
* WHEN '130'.
* IF KSTAR-WRTTP = '11'.
* ADD KSTAR-WERT TO AUS-SIFRE.
* ELSE.
* ADD KSTAR-WERT TO AUS-SOFRE.
* ENDIF.
****************************
WHEN 'Z120'.
IF KSTAR-WRTTP = '11'.
ADD KSTAR-WERT TO AUS-SIFRE.
ELSE.
ADD KSTAR-WERT TO AUS-SOFRE.
ENDIF.
*****************************
* WHEN '140'.
* ADD KSTAR-WERT TO AUS-SIMAG.
* EXIT.
****************************
WHEN 'Z140'.
ADD KSTAR-WERT TO AUS-SIMAG.
EXIT.
***************************
* WHEN '150'.
* IF KSTAR-WRTTP = '11'.
* ADD KSTAR-WERT TO AUS-SIFRL.
* ELSE.
* ADD KSTAR-WERT TO AUS-SOFRL.
* ENDIF.
******************************
WHEN 'Z150'.
IF KSTAR-WRTTP = '11'.
ADD KSTAR-WERT TO AUS-SIFRL.
ELSE.
ADD KSTAR-WERT TO AUS-SOFRL.
ENDIF.
****************************
* WHEN '160'.
* IF KSTAR-WRTTP = '11'.
* ADD KSTAR-WERT TO AUS-SISON.
* ELSE.
* ADD KSTAR-WERT TO AUS-SOSON.
* ENDIF.
*******************************
WHEN 'Z160'.
IF KSTAR-WRTTP = '11'.
ADD KSTAR-WERT TO AUS-SISON.
ELSE.
ADD KSTAR-WERT TO AUS-SOSON.
ENDIF.
********************************
* WHEN '210'.
* ADD KSTAR-WERT TO AUS-GIEIG.
* ADD KSTAR-MENGE TO AUS-GSTDE.
* WHEN '220'.
* IF KSTAR-WRTTP = '11'.
* ADD KSTAR-WERT TO AUS-GIFRI.
* ADD KSTAR-MENGE TO AUS-GSTDF.
* ELSE.
* ADD KSTAR-WERT TO AUS-GOFRI.
* ENDIF.
*****************************
* WHEN 'Z220'.
* IF KSTAR-WRTTP = '11'.
* ADD KSTAR-WERT TO AUS-GIFRI.
* ADD KSTAR-MENGE TO AUS-GSTDF.
* ELSE.
* ADD KSTAR-WERT TO AUS-GOFRI.
* ENDIF.
*****************************
* WHEN '230'.
* IF KSTAR-WRTTP = '11'.
* ADD KSTAR-WERT TO AUS-GIFRE.
* ELSE.
* ADD KSTAR-WERT TO AUS-GOFRE.
* ENDIF.
* WHEN '240'.
* ADD KSTAR-WERT TO AUS-GIMAG.
* EXIT.
*******************************
* WHEN 'Z240'.
* ADD KSTAR-WERT TO AUS-GIMAG.
* EXIT.
******************************
* WHEN '250'.
* IF KSTAR-WRTTP = '11'.
* ADD KSTAR-WERT TO AUS-GIFRL.
* ELSE.
* ADD KSTAR-WERT TO AUS-GOFRL.
* ENDIF.
******************************
* WHEN 'Z250'.
* IF KSTAR-WRTTP = '11'.
* ADD KSTAR-WERT TO AUS-GIFRL.
* ELSE.
* ADD KSTAR-WERT TO AUS-GOFRL.
* ENDIF.
********************************
* WHEN '260'.
* IF KSTAR-WRTTP = '11'.
* ADD KSTAR-WERT TO AUS-GISON.
* ELSE.
* ADD KSTAR-WERT TO AUS-GOSON.
* ENDIF.
*******************************
* WHEN 'Z260'.
* IF KSTAR-WRTTP = '11'.
* ADD KSTAR-WERT TO AUS-GISON.
* ELSE.
* ADD KSTAR-WERT TO AUS-GOSON.
* ENDIF.
*******************************
WHEN OTHERS.
WRITE : / 'Auftrag:',AUFK-AUFNR,'ZEILE:', ZEILE,
'im Programm nicht abgedeckt'.
EXIT.
ENDCASE.
ENDIF.
ENDLOOP.
IF ZEILE IS INITIAL.
SETF-KSTAR = KSTAR-KSTAR.
SETF-AUFNR = AUFK-AUFNR.
APPEND SETF.
WRITE : / 'Auftrag:',AUFK-AUFNR,'Kostenart:', KSTAR-KSTAR,
'nicht durch SET: k_si_ges abgedeckt'.
ENDIF.
ENDLOOP.
PERFORM FILL_OUT_SI.

ENDSELECT.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
* FORM LISTEN *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM LISTEN. "tabelle kosten.
LOOP AT KOSTEN.
WRITE: / KOSTEN-AUFNR,KOSTEN-KSTAR,KOSTEN-WERT,KOSTEN-MENGE.
ADD KOSTEN-WERT TO RF.
ADD KOSTEN-MENGE TO RF_MENGE.
AT END OF AUFNR.
WRITE: / RF UNDER KOSTEN-WERT.
WRITE: RF_MENGE UNDER KOSTEN-MENGE.
CLEAR RF.
CLEAR RF_MENGE.
ENDAT.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
* FORM SELECT_KOSTEN *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM SELECT_KOSTEN.
*sekund�r
SELECT * FROM COSS INTO CORRESPONDING FIELDS OF WERTE
WHERE OBJNR = OBJNR
AND GJAHR = PITAB-BUJAHR
AND WRTTP = '11'
AND KSTAR NE NO-KOSTENART "ohne definierte kstar
AND BEKNZ NE 'A'. "nicht aus abrechnung
PERFORM MANIPULIERE_MON12.
PERFORM ADD.
ENDSELECT.
*prim�r
SELECT * FROM COSP INTO CORRESPONDING FIELDS OF WERTE
WHERE OBJNR = OBJNR
AND KSTAR NE NO-KOSTENART "ohne definierte kstar
AND BEKNZ NE 'A'. "nicht aus abrechnung
PERFORM MANIPULIERE_MON12.
IF WERTE-GJAHR = PITAB-BUJAHR.
CHECK WERTE-WRTTP = '04' OR "istk
WERTE-WRTTP = '11' OR "statistisches ist
WERTE-WRTTP = '21' OR "obligo banf
WERTE-WRTTP = '22' OR "obligo best
WERTE-WRTTP = '23' OR "obligo reservierung
WERTE-WRTTP = '24' . "obligo manuell
PERFORM ADD.
ELSEIF WERTE-GJAHR LT PITAB-BUJAHR.
CHECK WERTE-WRTTP = '21' OR "obligo banf
WERTE-WRTTP = '22' OR "obligo best
WERTE-WRTTP = '23' OR "obligo reservierung
WERTE-WRTTP = '24' . "obligo manuell
PERFORM ADD.
ENDIF.
ENDSELECT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ADD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ADD .
NEHME = 'J'.
IF WERTE-WRTTP = '04' OR
WERTE-WRTTP = '11'.
ASSIGN WERTE-WOG001 TO <F1>.
ASSIGN WERTE-MEG001 TO <F2>.
DO 16 TIMES.
IF SY-INDEX = PITAB-BUMON.
KSTAR-WRTTP = WERTE-WRTTP.
KSTAR-KSTAR = WERTE-KSTAR.
<F1> = <F1> / 100.
<F2> = <F2> / 100.
KSTAR-WERT = <F1>.
KSTAR-MENGE = <F2>.
if kstar-wert ne 0 or
kstar-menge ne 0.
COLLECT KSTAR.
endif.
ENDIF.
IF SY-INDEX = '12' or
sy-index gt pitab-bumon.
EXIT.
ENDIF.
ASSIGN <F1>+8 TO <F1>.
ASSIGN <F2>+8 TO <F2>.
ENDDO.
ELSE.
ASSIGN WERTE-WOG001 TO <F1>.
ASSIGN WERTE-MEG001 TO <F2>.
DO 16 TIMES.
KSTAR-WRTTP = WERTE-WRTTP.
KSTAR-KSTAR = WERTE-KSTAR.
<F1> = <F1> / 100.
<F2> = <F2> / 100.
KSTAR-WERT = <F1>.
KSTAR-MENGE = <F2>.
if kstar-wert ne 0 or
kstar-menge ne 0.
coLLECT KSTAR.
endif.
IF SY-INDEX = '12'.
EXIT.
ENDIF.
ASSIGN <F1>+8 TO <F1>.
ASSIGN <F2>+8 TO <F2>.
ENDDO.
ENDIF.
ENDFORM. " ADD
*---------------------------------------------------------------------*
* FORM LISTE_SI *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM LISTE_SI.
DATA HELP LIKE rf.

LOOP AT OUT_SI.
if out_si-aufnr eq abauftr.
break-point.
endif.
CLEAR AUART.
CLEAR: RF,RF_MENGE,rf_obligo.
*werte-----------------------------------------------------
ASSIGN OUT_SI-GIEIG+1(9) TO <F1>.
ASSIGN OUT_SI-GIEIG(1) TO <F2>.
DO 12 TIMES.
PACK <F1> TO HELP.
IF <F2> = '-'.
SUBTRACT HELP FROM RF.
ELSE.
ADD HELP TO RF.
ENDIF.
ASSIGN <F1>+10 TO <F1>.
ASSIGN <F2>+10 TO <F2>.
ENDDO.
*obligos--------------------------------------------------
ASSIGN OUT_SI-gofri+1(9) TO <F1>.
ASSIGN OUT_SI-gofri(1) TO <F2>.
DO 08 TIMES.
PACK <F1> TO HELP.
IF <F2> = '-'.
SUBTRACT HELP FROM RF_obligo.
ELSE.
ADD HELP TO RF_obligo.
ENDIF.
ASSIGN <F1>+10 TO <F1>.
ASSIGN <F2>+10 TO <F2>.
ENDDO.
*stunden----------------------------------------------------
ASSIGN OUT_SI-GSTDE+1(9) TO <F1>.
ASSIGN OUT_SI-GSTDE(1) TO <F2>.
DO 04 TIMES.
PACK <F1> TO HELP.
IF <F2> = '-'.
SUBTRACT HELP FROM RF_MENGE.
ELSE.
ADD HELP TO RF_MENGE.
ENDIF.
ASSIGN <F1>+10 TO <F1>.
ASSIGN <F2>+10 TO <F2>.
ENDDO.
check rf NE 0 or
rf_menge ne 0 or
rf_obligo ne 0.
ADD 1 TO ANZAHL.
CHECK ANZAHL <= P_ANZAHL.
WRITE: /01 'Satz-Nummer', OUT_SI-RECNR.
WRITE: /01 'Wert gesamt:', RF,'Std.:',RF_MENGE,'Obligo:',
rf_obligo.
write: /01 'Auftrag....'
, OUT_SI-AUFNR,
25 'BUKRS.......', OUT_SI-BUKRS,
50 'Kostl.......', OUT_SI-KOSTL.
WRITE: /01 'LKOST......', OUT_SI-LKOST,
25 'BUKRS.......', OUT_SI-BUKRS,
50 'BUMON.......', OUT_SI-BUMON.
WRITE: /01 'GIEIG......', OUT_SI-GIEIG,
25 'GIFRI.......', OUT_SI-GIFRI,
50 'GIFRE.......', OUT_SI-GIFRE.
WRITE: /01 'GIFRL......', OUT_SI-GIFRL,
25 'GISON.......', OUT_SI-GISON.
WRITE: /01 'SIEIG......', OUT_SI-SIEIG,
25 'SIFRI.......', OUT_SI-SIFRI,
50 'SIFRE.......', OUT_SI-SIFRE.
WRITE: /01 'SIMAG......', OUT_SI-SIMAG,
25 'SIFRL.......', OUT_SI-SIFRL,
50 'SISON.......', OUT_SI-SISON.
WRITE: /01 'GOFRI......', OUT_SI-GOFRI,
25 'GOFRE.......', OUT_SI-GOFRE,
50 'GOFRL.......', OUT_SI-GOFRL.
WRITE: /01 'GOSON......', OUT_SI-GOSON,
25 'SOFRI.......', OUT_SI-SOFRI,
50 'SOFRE.......', OUT_SI-SOFRE.
WRITE: /01 'SOFRL......', OUT_SI-SOFRL,
25 'SOSON.......', OUT_SI-SOSON,
50 'GSTDE.......', OUT_SI-GSTDE.
WRITE: /01 'GSTDF.......', OUT_SI-GSTDF,
25 'SSTDE.......', OUT_SI-SSTDE,
50 'SSTDF.......', OUT_SI-SSTDF.
ULINE.
ENDLOOP.
ENDFORM. " SI-LISTE
*&---------------------------------------------------------------------*
*& Form BEARBEITEN_DATUM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_COAS-USER5 text *
*----------------------------------------------------------------------*
FORM BEARBEITEN_DATUM CHANGING DATUM.
DATA Z_DATUM LIKE COAS-ERDAT.
IF DATUM = '00000000'.
DATUM = SPACE.
EXIT.
ENDIF.
Z_DATUM = DATUM.
DATUM+4(4) = Z_DATUM(4).
DATUM+2(2) = Z_DATUM+4(2).
DATUM+0(2) = Z_DATUM+6(2).

ENDFORM. " BEARBEITEN_DATUM


*&---------------------------------------------------------------------*
*& Form STARTSATZ_OUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM STARTSATZ_OUT.
STARTSATZ+11(3) = PITAB-KENNZ.

APPEND STARTSATZ TO OUT_SI.


ADD 1 TO Z_STARTSATZ.
ENDFORM. " STARTSATZ_OUT
*&---------------------------------------------------------------------*
*& Form ENDESATZ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ENDESATZ.
UNPACK ANZAHL TO ENDESATZ+10(6).
WRITE SY-DATUM TO ENDESATZ+16(8).
APPEND ENDESATZ TO OUT_SI.
ADD 1 TO Z_ENDESATZ.

ENDFORM. " ENDESATZ


*&---------------------------------------------------------------------*
*& Form AUSGABE_DATEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM AUSGABE_DATEN.
CHECK ECHTLAUF = 'J'.
OPEN DATASET O_FILE FOR OUTPUT IN TEXT MODE.
IF SY-SUBRC NE 0.
WRITE: / 'Fehler beim open Dataset',O_FILE.
EXIT.
ENDIF.
LOOP AT OUT_SI.
TRANSFER OUT_SI TO O_FILE.
ENDLOOP.
CLEAR OUT_SI.
OUT_SI(18) = 'Ende der Durchsage'.
TRANSFER OUT_SI TO O_FILE.
CLOSE DATASET O_FILE.
IF SY-SUBRC NE 0.
WRITE: / 'Fehler beim CLOSE Dataset',O_FILE.
EXIT.
ENDIF.
PERFORM AUSGABE_PARAMETER.
ENDFORM. " AUSGABE_DATEN
*---------------------------------------------------------------------*
* FORM AUSGABE_PARAMETER *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM AUSGABE_PARAMETER. "ok
CHECK ECHTLAUF EQ 'J'.
OPEN DATASET PARA_OUT_FILE FOR OUTPUT IN TEXT MODE.
IF SY-SUBRC NE 0.
WRITE: / 'Fehler beim OPEN Dataset',PARA_OUT_FILE.
EXIT.
ENDIF.
PITAB-PSTATUS = 'OK'.
TRANSFER PITAB TO PARA_OUT_FILE.
WRITE: 'Transfer PITAB TO para_out_file',PITAB. " $$
CLOSE DATASET PARA_OUT_FILE.
IF SY-SUBRC NE 0.
WRITE: / 'Fehler beim CLOSE Dataset',PARA_OUT_FILE.
EXIT.
ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
* FORM READ_SET *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM READ_SET USING U_SET.
PERFORM VORSPANN.
PERFORM INSERT_SET USING P_SETID.
SORT VALTAB.

* perform write_settab.
* perform write_valtab.
ENDFORM.
*---------------------------------------------------------------------*
* FORM INSERT_SET *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> VALUE(U_TABNAME) *
* --> VALUE(U_SETNAME) *
*---------------------------------------------------------------------*
FORM INSERT_SET USING U_SETID.

CALL FUNCTION 'G_CONTROL_BLOCK_RESET'


EXPORTING
CONTROL_BLOCK = CONTROL_BLOCK.

CALL FUNCTION 'G_BUFFER_RESET'.

CALL FUNCTION 'G_SET_INSERT'


EXPORTING
SETNAME = U_SETID
IMPORTING
HEADER = HEADER
INDEX = SETINDEX.
SETTAB-SETID = HEADER-SETNR.
SETTAB-SETNAME = HEADER-SHORTNAME.
SETTAB-LEVEL = 0.
SETTAB-POINTER = 0.
APPEND SETTAB.

IF HEADER-TYPE CA 'BD'.

PERFORM INSERT_VALUES
USING HEADER-SETNR HEADER-SEQNR.

ELSE.
CALL FUNCTION 'G_SET_GET_NEXT'
EXPORTING
CONTROL_BLOCK = CONTROL_BLOCK
INDEX = SETINDEX
IMPORTING
HEADER = HEADER
EXCEPTIONS
END_OF_SETS = 1.

WHILE SY-SUBRC EQ 0. "Until all sets of hierarchy are read


* ... Concatenate set name prefix to set name ...
PERFORM ADD_CLASS_TO_SET_NAME
USING HEADER-CLASS HEADER-SETNR.
CLEAR HEADER-CLASS.
* ... Store subset of current line ................................. *
SETTAB-SETNAME = HEADER-SETNR.
SETTAB-LEVEL = HEADER-LEVEL.
SETTAB-POINTER = HEADER-PUP.
APPEND SETTAB.

* ... Read values, if existing .....................................


IF HEADER-TYPE EQ 'B'.
PERFORM INSERT_VALUES
USING HEADER-SETNR HEADER-SEQNR.
ENDIF.
CALL FUNCTION 'G_SET_GET_NEXT'
EXPORTING
CONTROL_BLOCK = CONTROL_BLOCK
INDEX = SETINDEX
IMPORTING
HEADER = HEADER
EXCEPTIONS
END_OF_SETS = 1.
ENDWHILE.
ENDIF.

*..... Reset internal workspace of the set manager ................... *


*..... (Not necessary here, since the report is completed)............ *

CALL FUNCTION 'G_CONTROL_BLOCK_RESET'


EXPORTING
CONTROL_BLOCK = CONTROL_BLOCK.

CALL FUNCTION 'G_BUFFER_RESET'.


ENDFORM.

*---------------------------------------------------------------------*
* FORM INSERT_VALUES *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> VALUE(U_SETNAME) *
* --> VALUE(U_POINTER) *
*---------------------------------------------------------------------*
FORM INSERT_VALUES USING VALUE(U_SETNAME) LIKE RGSMH-SETNR
VALUE(U_POINTER) LIKE RGSMH-SEQNR.

*..... Constants ..................................................... *

CONSTANTS: CONTROL_BLOCK LIKE SY-TABIX VALUE 2.

*..... Information about the set line ................................ *

DATA: BEGIN OF ENTRY.


INCLUDE STRUCTURE RGSMV.
DATA: END OF ENTRY.

*..... Auxiliary fields .............................................. *

DATA: SETINDEX LIKE SY-TABIX.

*..... Transfer of the set pointer in a field with the right size .... *

SETINDEX = U_POINTER.

*..... Reset control block ........................................... *

CALL FUNCTION 'G_CONTROL_BLOCK_RESET'


EXPORTING
CONTROL_BLOCK = CONTROL_BLOCK.

*..... Read all value intervals into the table VALTAB ................ *

CALL FUNCTION 'G_INTERVAL_GET_NEXT'


EXPORTING
CONTROL_BLOCK = CONTROL_BLOCK
INDEX = SETINDEX
IMPORTING
ENTRY = ENTRY
EXCEPTIONS
END_OF_INTERVALS = 1.

WHILE SY-SUBRC EQ 0. "Until all values are read


* ... Store value interval of the current set line ...................
VALTAB-SETNAME = U_SETNAME.
VALTAB-FROMVALUE = ENTRY-FROM.
VALTAB-TOVALUE = ENTRY-TO.
VALTAB-POINTER = ENTRY-PUP.
APPEND VALTAB.

* ... Retrieve next line .............................................


CALL FUNCTION 'G_INTERVAL_GET_NEXT'
EXPORTING
CONTROL_BLOCK = CONTROL_BLOCK
INDEX = SETINDEX
IMPORTING
ENTRY = ENTRY
EXCEPTIONS
END_OF_INTERVALS = 1.
ENDWHILE.

*..... Reset internal workspace of the set manager ................... *

CALL FUNCTION 'G_CONTROL_BLOCK_RESET'


EXPORTING
CONTROL_BLOCK = CONTROL_BLOCK.

ENDFORM.
*eject
*---------------------------------------------------------------------*
* FORM WRITE_SETTAB *
*---------------------------------------------------------------------*
* Output of table SETTAB. *
*---------------------------------------------------------------------*
FORM WRITE_SETTAB.

FORMAT COLOR OFF.


SKIP.
ULINE /(63).
WRITE: / SY-VLINE NO-GAP,
(11) TEXT-001 INTENSIFIED COLOR COL_HEADING NO-GAP,
SY-VLINE NO-GAP,
(5) TEXT-002 INTENSIFIED COLOR COL_HEADING NO-GAP,
SY-VLINE NO-GAP,
(12) TEXT-003 INTENSIFIED COLOR COL_HEADING NO-GAP,
SY-VLINE NO-GAP,
(30) TEXT-004 INTENSIFIED COLOR COL_HEADING NO-GAP,
SY-VLINE NO-GAP.
ULINE /(63).

FORMAT INTENSIFIED OFF COLOR COL_NORMAL.


LOOP AT SETTAB.
WRITE: / SY-VLINE NO-GAP,
SY-TABIX COLOR COL_KEY INTENSIFIED NO-GAP,
SY-VLINE NO-GAP,
(5) SETTAB-LEVEL NO-GAP,
SY-VLINE NO-GAP,
SETTAB-SETNAME UNDER TEXT-003 NO-GAP,
SY-VLINE NO-GAP,
SETTAB-POINTER NO-GAP,
63 SY-VLINE NO-GAP.
ENDLOOP.
ULINE /(63).
SKIP.

ENDFORM.
*eject
*---------------------------------------------------------------------*
* FORM WRITE_VALTAB *
*---------------------------------------------------------------------*
* Output of table VALTAB. *
*---------------------------------------------------------------------*
FORM WRITE_VALTAB.

FORMAT COLOR OFF.


SKIP.
ULINE /(94).
WRITE: / SY-VLINE NO-GAP,
(11) TEXT-001 INTENSIFIED COLOR COL_HEADING NO-GAP,
SY-VLINE NO-GAP,
(24) TEXT-005 INTENSIFIED COLOR COL_HEADING NO-GAP,
SY-VLINE NO-GAP,
(24) TEXT-006 INTENSIFIED COLOR COL_HEADING NO-GAP,
SY-VLINE NO-GAP,
(30) TEXT-004 INTENSIFIED COLOR COL_HEADING NO-GAP,
SY-VLINE NO-GAP.
ULINE /(94).

FORMAT INTENSIFIED OFF COLOR COL_NORMAL.


LOOP AT VALTAB.
WRITE: / SY-VLINE NO-GAP,
SY-TABIX COLOR COL_KEY INTENSIFIED NO-GAP,
SY-VLINE NO-GAP,
VALTAB-FROMVALUE NO-GAP,
SY-VLINE NO-GAP,
VALTAB-TOVALUE NO-GAP,
SY-VLINE NO-GAP,
VALTAB-POINTER NO-GAP,
SY-VLINE NO-GAP,
VALTAB-SETNAME NO-GAP,
94 SY-VLINE NO-GAP.
ENDLOOP.
ULINE /(94).

ENDFORM.
*eject
*---------------------------------------------------------------------*
* FORM SEARCH_VALUE *
*---------------------------------------------------------------------*
* (This form routine is not called by other program parts. *
* It is an example for the single value search in the *
* sorted table VALTAB). *
* *
* Looks up the table VALTAB for a single value. *
* In case the value is found, the U_TABIX contains *
* the corresponding index on the table VALTAB. *
* If not, the U_TABIX contains the value 0. *
*---------------------------------------------------------------------*
* --> VALUE(U_VALUE) Value to search *
* <-- U_TABIX Corresponding index on the table VALTAB *
*---------------------------------------------------------------------*
FORM SEARCH_VALUE USING VALUE(U_VALUE) LIKE RGSMV-FROM
CHANGING U_TABIX LIKE SY-TABIX.

*..... Search key .................................................... *

DATA: SEARCHVALUE LIKE VALTAB-TOVALUE.

*..... Search for interval containing the value ...................... *


SEARCHVALUE = U_VALUE.
READ TABLE VALTAB
WITH KEY SEARCHVALUE BINARY SEARCH.
IF SY-SUBRC NE 8. "Not larger than largest TO-value
READ TABLE VALTAB INDEX SY-TABIX.
IF VALTAB-FROMVALUE LE SEARCHVALUE.
U_TABIX = SY-TABIX.
ELSE. "Between two intervals
MOVE 0 TO U_TABIX.
ENDIF.
ELSE. "Larger than largest TO-value
MOVE 0 TO U_TABIX.
ENDIF.

ENDFORM.
*---------------------------------------------------------------------*
* FORM AUFTRAGS_INTERVALL *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM AUFTRAGS_INTERVALL.
SELECT SINGLE * FROM T950W WHERE
KENNZ = PITAB-KENNZ
AND KOKRS = KOKRS.
IF SY-SUBRC NE 0.
WRITE: 'Falscher Standort in Parameter oder T950W falsch'.
ABBRUCH = 'J'.
EXIT.
ENDIF.
REFRESH T_NRIV.
ASSIGN T950W-AUA01 TO <FX>.
DO 19 TIMES.
IF <FX> = SPACE.
EXIT.
ENDIF.
AUFART+0(2) = <FX>.
PERFORM BESORGEN_INTERVALL USING AUFART CHANGING NRIV.
APPEND NRIV TO T_NRIV.
ASSIGN <FX>+LNG_AUART TO <FX>.
ENDDO.
SORT T_NRIV.
DELETE ADJACENT DUPLICATES FROM T_NRIV.
SELECT COUNT(*) FROM AUFK WHERE AUFNR BETWEEN NRIV-FROMNUMBER(12)
AND NRIV-TONUMBER.
NRIV-NRLEVEL = SY-DBCNT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILL_OUT_SI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FILL_OUT_SI.
ADD 1 TO ANZAHL.
UNPACK ANZAHL TO OUT_SI-RECNR.
OUT_SI-BUKRS = AUFK-BUKRS.
OUT_SI-WERKS = AUFK-WERKS.
OUT_SI-LKOST = AUFK-USER1+2(8).
OUT_SI-KOSTL = AUFK-KOSTV+2(8).
OUT_SI-AUFNR = AUFK-AUFNR+4(8).
OUT_SI-AUFPS = '01'.
OUT_SI-BUMON(4) = PITAB-BUJAHR.
OUT_SI-BUMON+4(2) = PITAB-BUMON.
ASSIGN AUS-GIEIG TO <F1>.
ASSIGN OUT_SI-GIEIG TO <F2>.
ASSIGN OUT_SI-GIEIG(1) TO <F3>.
DO 24 TIMES.
UNPACK <F1> TO <F2>.
IF <F1> < 0.
<F3> = '-'.
ELSE.
<F3> = '+'.
ENDIF.
ASSIGN <F1>+6 TO <F1>.
ASSIGN <F2>+10 TO <F2>.
ASSIGN <F3>+10 TO <F3>.
ENDDO.
* add: out_si-sieig to out_si-gieig,
* out_si-sifri to out_si-gifri,
* out_si-sifre to out_si-gifre,
* out_si-simag to out_si-gimag,
* out_si-sifrl to out_si-gifrl,
* out_si-sison to out_si-gison,
* out_si-sofri to out_si-gofri,
* out_si-sofre to out_si-gofre,
* out_si-sofrl to out_si-gofrl,
* out_si-soson to out_si-goson,
* out_si-sstde to out_si-gstde,
* out_si-sstdf to out_si-gstdf.
APPEND OUT_SI.
ENDFORM. " FILL_OUT_SI
*&---------------------------------------------------------------------*
*& Form BESORGEN_INTERVALL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_<F1> text *
* <--P_NRIV text *
*----------------------------------------------------------------------*
FORM BESORGEN_INTERVALL USING P_F1
CHANGING P_NRIV.
CALL FUNCTION 'READ_T003O'
EXPORTING
I_AUART = P_F1
IMPORTING
E_T003O = T003O.
CALL FUNCTION 'NUMBER_GET_INFO'
EXPORTING
NR_RANGE_NR = T003O-NUMKR
OBJECT = 'AUFTRAG'
IMPORTING
INTERVAL = P_NRIV
EXCEPTIONS
INTERVAL_NOT_FOUND = 01
OBJECT_NOT_FOUND = 02.
IF SY-SUBRC NE 0.
write:
'Es konnte kein Intervall f�r NUMKR:',T003O-NUMKR,' ermittelt werden'.
ABBRUCH = 'J'.
EXIT.
ENDIF.

ENDFORM. " BESORGEN_INTERVALL


*---------------------------------------------------------------------*
* FORM MAIL *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> KSTAR *
*---------------------------------------------------------------------*
FORM MAIL.
DATA: M_EMPFAENGER LIKE T950H-EMPFAENGER.
*
DATA: KOPFDATEN LIKE SOOD1.
*
***************************************************
** Inhalt des Mails ( Zeilen ) **
***************************************************
*
DATA: BEGIN OF MAILDATEN OCCURS 10.
INCLUDE STRUCTURE SOLI.
DATA: END OF MAILDATEN.
*
***************************************************
** Empf�nger **
***************************************************
*
DATA: BEGIN OF EMPFAENGER OCCURS 5.
INCLUDE STRUCTURE SOOS1.
DATA: END OF EMPFAENGER.
*
***************************************************
** F�llen der Strukturen / Tabellen mit Daten **
***************************************************
*
PERFORM VERARBEITEN_T950H.

CHECK NOT NOCH_FEHLER IS INITIAL.


SELECT * FROM T950H.
M_EMPFAENGER = T950H-EMPFAENGER.
EXIT.
ENDSELECT.
SELECT SINGLE * FROM USR01
WHERE BNAME = M_EMPFAENGER.
IF SY-SUBRC NE 0.
M_EMPFAENGER = ST_EMPFAENGER.
ENDIF.
CLEAR KOPFDATEN.
KOPFDATEN-OBJLA = SY-LANGU. "Sprache
KOPFDATEN-OBJNAM = 'Kostenarten fehlen'. "Name
KOPFDATEN-OBJDES = ' Kostenarten fehlen in SET: K_SI_GES'.
KOPFDATEN-SKIPS = 'X'. "1. Dynpro �berspr.
KOPFDATEN-VMTYP = 'R'. "Art Folgeverabeit.
KOPFDATEN-ACNAM = 'ZKASIM00'. "Folge-Programm
* kopfdaten-skips = ' '. "1. Dynpro �berspr.
* kopfdaten-vmtyp = ' '. "Art Folgeverabeit.
* kopfdaten-acnam = ' '. "Folge-Programm
KOPFDATEN-OBJSNS = 'F'. "Sensivit�t
*
CLEAR EMPFAENGER.
REFRESH EMPFAENGER.
EMPFAENGER-RECNAM = M_EMPFAENGER. "Empf�ngername
* empfaenger-dlinam = '????'. "Verteilerliste
EMPFAENGER-SNDEX = 'X'. "Express-Mail
APPEND EMPFAENGER.
*
*
CLEAR MAILDATEN.
REFRESH MAILDATEN.
maildaten-line =
'Bitte die fehlenden Kostenarten im Set: K_SI_GES nachpflegen'.
APPEND MAILDATEN.
CLEAR MAILDATEN-LINE.
MAILDATEN-LINE = strich.

APPEND MAILDATEN.
CLEAR MAILDATEN-LINE.
MAILDATEN-LINE+3(5) = 'KoArt'.
MAILDATEN-LINE+15(5) = 'AUFNR'.
APPEND MAILDATEN.
CLEAR MAILDATEN-LINE.
MAILDATEN-LINE+3(5) = '-----'.
MAILDATEN-LINE+15(5) = '-----'.
APPEND MAILDATEN.
LOOP AT SETF.
CLEAR MAILDATEN-LINE.
MAILDATEN-LINE(10) = SETF-KSTAR.
MAILDATEN-LINE+12(12) = SETF-AUFNR.
APPEND MAILDATEN.
ENDLOOP.
CLEAR MAILDATEN-LINE.
*
***************************************************
** Aufruf des Funtionsbausteins **
***************************************************
*
CALL FUNCTION 'SO_OBJECT_SEND'
EXPORTING
EXTERN_ADDRESS = ' '
* folder_id = ms_folder_id
* forwarder = ms_obj_forwarder
* object_fl_change = ms_obj_fl_change
OBJECT_HD_CHANGE = KOPFDATEN
* object_id = ms_obj_id_new
OBJECT_TYPE = 'RAW'
OUTBOX_FLAG = 'S'
OWNER = ' '
STORE_FLAG = ' '
DELETE_FLAG = ' '
SENDER = ' '
CHECK_ALREADY_SENT = ' '
* importing
* object_id_new = ms_obj_id_new
* sent_to_all = ms_flg_send_to_all
TABLES
OBJCONT = MAILDATEN
* objhead = ms_obj_head
*" objpara = params
* objparb = ms_obj_params_b
RECEIVERS = EMPFAENGER
* packing_list = ms_pack_list
* att_cont = ms_attach_cont
* att_head = ms_att_head_cont
EXCEPTIONS
ACTIVE_USER_NOT_EXIST = 01
COMMUNICATION_FAILURE = 02
COMPONENT_NOT_AVAILABLE = 03
FOLDER_NOT_EXIST = 04
FOLDER_NO_AUTHORIZATION = 05
FORWARDER_NOT_EXIST = 06
NOTE_NOT_EXIST = 07
OBJECT_NOT_EXIST = 08
OBJECT_NOT_SENT = 09
OBJECT_NO_AUTHORIZATION = 10
OBJECT_TYPE_NOT_EXIST = 11
OPERATION_NO_AUTHORIZATION = 12
OWNER_NOT_EXIST = 13
PARAMETER_ERROR = 14
SUBSTITUTE_NOT_ACTIVE = 15
SUBSTITUTE_NOT_DEFINED = 16
SYSTEM_FAILURE = 17
TOO_MUCH_RECEIVERS = 18
USER_NOT_EXIST = 19
X_ERROR = 20.
* OTHERS = 21.
*
* write: sy-subrc.
*
ENDFORM.
*&---------------------------------------------------------------------*
*& Form MAIL_SENDEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MAIL_SENDEN.

ENDFORM. " MAIL_SENDEN


*&---------------------------------------------------------------------*
*& Form VERARBEITEN_T950H
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM VERARBEITEN_T950H.
LOOP AT SETF.
SELECT SINGLE * FROM T950H WHERE
KSTAR = SETF-KSTAR.
IF SY-SUBRC = 0.
IF T950H-DATUM = SY-DATUM OR
NOT T950H-KZERL IS INITIAL.
DELETE SETF.
ELSE.
T950H-DATUM = SY-DATUM.
MODIFY T950H.
ENDIF.
ELSE.
T950H-KSTAR = SETF-KSTAR.
T950H-DATUM = SY-DATUM.
MODIFY T950H.
ENDIF.
ENDLOOP.
CLEAR NOCH_FEHLER.
LOOP AT SETF.
NOCH_FEHLER = 'X'.
EXIT.
ENDLOOP.
ENDFORM. " VERARBEITEN_T950H
*---------------------------------------------------------------------*
* FORM VORSPANN *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM VORSPANN.
CALL FUNCTION 'G_SET_GET_ID_FROM_NAME'
EXPORTING
SHORTNAME = P_SET
OLD_SETID = P_SETID
IMPORTING
NEW_SETID = P_SETID.

*call function 'G_RW_SET_SELECT'


* exporting
* set = p_set
* show_table_name = 'X'
* importing
* setid = p_setid
* set_name = p_set.
*

ENDFORM. " VORSPANN


*---------------------------------------------------------------------*
* FORM PARA_INPUT *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM PARA_INPUT.
OPEN DATASET PARA_IN_FILE FOR INPUT IN TEXT MODE.
IF SY-SUBRC NE 0.
WRITE: / 'Fehler beim OPEN Dataset',PARA_IN_FILE.
EXIT.
ENDIF.
READ DATASET PARA_IN_FILE INTO PITAB.
IF SY-SUBRC NE 0.
WRITE: / 'Fehler beim Lesen Dataset',PARA_IN_FILE.
EXIT.
ENDIF.

PITAB-PSTATUS = ' '.


CLOSE DATASET PARA_IN_FILE.
IF SY-SUBRC NE 0.
WRITE: / 'Fehler beim CLOSE Dataset',PARA_IN_FILE.
EXIT.
ENDIF.
ENDFORM. " PARA_INPUT
*&---------------------------------------------------------------------*
*& Form MANIPULIERE_MON12
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MANIPULIERE_MON12.
ADD: WERTE-WOG016 TO WERTE-WOG012,
WERTE-WOG015 TO WERTE-WOG012,
WERTE-WOG014 TO WERTE-WOG012,
WERTE-WOG013 TO WERTE-WOG012.
ADD: WERTE-MEG016 TO WERTE-MEG012,
WERTE-MEG015 TO WERTE-MEG012,
WERTE-MEG014 TO WERTE-MEG012,
WERTE-MEG013 TO WERTE-MEG012.

ENDFORM. " MANIPULIERE_MON12

Das könnte Ihnen auch gefallen