You are on page 1of 14

*find check_sender-----------------------------------------------------*

*& Report ZKAUFT94 *


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

REPORT ZKAUFT94 .
DATA ECHTLAUF VALUE 'J'.
DATA NULL(9) VALUE '000000000'.
*****delete by borag
*DATA BUKRS LIKE COAS-BUKRS VALUE '0800'.
*****delete by borag
*****append by borag
DATA BUKRS LIKE COAS-BUKRS VALUE '1000'.
*****append by borag
INCLUDE RCNCON03.
*parameters: kennz(3) default 'EGK',
* liste default 'J' ,
* abauft like coas-aufnr default '000000000000',
* von like coas-erdat default '20000701',
* bis like coas-erdat default '20000831'.

DATA: KENNZ(3) VALUE 'EGK',


LISTE VALUE 'N' ,
ABAUFT LIKE COAS-AUFNR VALUE '000000000000',
VON LIKE COAS-ERDAT VALUE '20000701',
BIS LIKE COAS-ERDAT VALUE '20000831'.
TABLES: ZSIS_AUFT,ZSI_DATEIEN, "SI-Auftr�ge
COAS, "Controlling-Auftragsstamm
AUFK, "Auftragsstamm
RSTXT. "dynpro-felder standardtexte

DATA O_FILE LIKE RLGRAP-FILENAME "verarbeitungsprotokoll


VALUE '/home/siegk/output/RKSIINFD.TXT'.

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.
DATA PARA_IN_FILE LIKE RLGRAP-FILENAME "Anforderung
VALUE '/home/siegk/input/RKSIINFU.TXT'.
DATA PARA_OUT_FILE LIKE RLGRAP-FILENAME "Parameter output
VALUE '/home/siegk/output/RKSIINFD.TXT'.
*****delete by borag
*DATA KOKRS LIKE COAS-KOKRS VALUE '0800'.
*****delete by borag
*****append by borag
DATA KOKRS LIKE COAS-KOKRS VALUE '1000'.
*****append by borag
DATA BEGIN OF TABF OCCURS 1 .
DATA FEHLER(080).
DATA END OF TABF.
*****delete by borag
*DATA: BEGIN OF Z_PITAB,
* KOKRS(2) VALUE '80',
* FILL1 ,
* WERKS(2) ,
* FILL2 ,
* KENNZ(3) VALUE 'EGK',
* FILL3 ,
* VONDAT LIKE AUFK-ERDAT VALUE '20021015',
* FILL4 ,
* BISDAT LIKE AUFK-ERDAT VALUE '20021231',
* FILL5 ,
** ZPID(5) , "AIX-Process-ID"huick 200603
* ZPID(7) , "AIX-Process-ID "huick 200603
* FILL6 ,
* PSTATUS(2) ,
* END OF Z_PITAB.
*DATA: BEGIN OF PITAB,
* KOKRS(2) ,
* FILL1 ,
* WERKS(2) ,
* FILL2 ,
* KENNZ(3) ,
* FILL3 ,
* VONDAT LIKE AUFK-ERDAT,
* FILL4 ,
* BISDAT LIKE AUFK-ERDAT,
* FILL5 ,
** ZPID(5) , "AIX-Process-ID"huick 200603
* ZPID(7) , "AIX-Process-ID"huick 200603
* FILL6 ,
* PSTATUS(2) ,
* END OF PITAB.
*****delete by borag
*****append by borag
DATA: BEGIN OF Z_PITAB,
KOKRS(4) VALUE '80',
FILL1 ,
WERKS(4) ,
FILL2 ,
KENNZ(3) VALUE 'EGK',
FILL3 ,
VONDAT LIKE AUFK-ERDAT VALUE '20021015',
FILL4 ,
BISDAT LIKE AUFK-ERDAT VALUE '20021231',
FILL5 ,
* ZPID(5) , "AIX-Process-ID"huick 200603
ZPID(7) , "AIX-Process-ID "huick 200603
FILL6 ,
PSTATUS(2) ,
END OF Z_PITAB.
DATA: BEGIN OF PITAB,
KOKRS(4) ,
FILL1 ,
WERKS(4) ,
FILL2 ,
KENNZ(3) ,
FILL3 ,
VONDAT LIKE COAS-ERDAT,
FILL4 ,
BISDAT LIKE COAS-ERDAT,
FILL5 ,
* ZPID(5) , "AIX-Process-ID"huick 200603
ZPID(7) , "AIX-Process-ID "huick 200603
FILL6 ,
PSTATUS(2) ,
END OF PITAB.
*****append by borag
DATA SUBRC LIKE SY-SUBRC.
DATA ABBRUCH.
DATA BEGIN OF FEHLTAB OCCURS 1.
DATA FEHLER(50).
DATA STANDORT(3).
DATA AUFTRAG LIKE AUFK-AUFNR.
DATA TRENNZ(2) VALUE '//'.
DATA BEGIN OF SATZ.
INCLUDE STRUCTURE ZSIS_AUFT.
DATA END OF SATZ.
DATA END OF FEHLTAB.
DATA BEGIN OF AUSGABE.
DATA BEGIN OF SATZ.
INCLUDE STRUCTURE ZSIS_AUFT.
DATA END OF SATZ.
DATA TRENNZ VALUE '/'.
DATA FEHLER(50).
DATA END OF AUSGABE.
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.
TABLES T950W.
FIELD-SYMBOLS <F1>.
DATA AUART LIKE ZSIS_AUFT-ART.
DATA LNG_AUART(2) TYPE P.
DATA 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 TXT-STAUART LIKE KLDAT-SMBEZ VALUE 'STEAG-Auftragsart '.
DATA: TXT-KKS LIKE KLDAT-SMBEZ VALUE 'KKS-Schl�ssel',
TXT-PGS LIKE KLDAT-SMBEZ VALUE 'Personalgestellungsachl�ssel',
TXT-BMS LIKE KLDAT-SMBEZ VALUE 'Betriebsmittel-Schl�ssel'.
DATA TXT-EINZMAS LIKE KLDAT-SMBEZ VALUE 'Instandhaltungsma�nahmen'.
DATA BEGIN OF AUFTRAGS_NUMMERN OCCURS 1.
DATA AUFNR LIKE COAS-AUFNR.
DATA END OF AUFTRAGS_NUMMERN.
TABLES: THEAD,T001.
DATA TDID LIKE THEAD-TDID VALUE 'LTXT'.
DATA TDOBJECT LIKE THEAD-TDOBJECT VALUE 'AUFK'.
DATA TDNAME LIKE THEAD-TDNAME.
DATA BEGIN OF TLINETAB OCCURS 2.
INCLUDE STRUCTURE TLINE.
DATA END OF TLINETAB.
DATA TXT02 LIKE ZSIS_AUFT-TXT02.
DATA SATZ_ZAEHLER_OUT(3) TYPE P.
DATA EINZMAS LIKE ZSIS_AUFT-EINZMASSN.
DATA KKS(2).
DATA BMS(2).
DATA PGS(2).
DATA BEGIN OF OUT_SI OCCURS 1.
INCLUDE STRUCTURE ZSIS_AUFT.
DATA END OF OUT_SI.
DATA BEGIN OF EIN .
INCLUDE STRUCTURE ZSIS_AUFT.
DATA END OF EIN.
DATA Z_OUT(4) TYPE P.
DATA OBJECT LIKE COAS-OBJNR VALUE 'OR'.
DATA UMBUCH_U(6) VALUE '999001'.
DATA UMBUCH_H(6) VALUE '999899'.
*----------------------------------------------------------------------
* Programm-Anfang
START-OF-SELECTION.
PERFORM INITIALISIERUNG.
PERFORM STARTSATZ_OUT.
PERFORM SELECT_DATEN CHANGING SUBRC.
PERFORM ENDESATZ.
PERFORM AUSGABE_DATEN. "zu guter letzt alles ausgeben
IF LISTE = 'J'.
PERFORM SI-LISTE. "eventuell noch eine liste dazu
ENDIF.
*---------------------------------------------------------------------*
* FORM INITIALISIERUNG *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM INITIALISIERUNG.
DESCRIBE FIELD ZSIS_AUFT-ART LENGTH LNG_AUART .
IF ECHTLAUF = 'J'.
PERFORM EVENT.
ELSE.
PERFORM PARA_INPUT.
* z_pitab-kennz = kennz.
* z_pitab-vondat = von .
* z_pitab-bisdat = bis .
* pitab = z_pitab.
ENDIF.
ENDFORM. " INITIALISIERUNG
*---------------------------------------------------------------------*
* FORM EVENT *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM EVENT.
***delete by borag
* 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 200603
* PITAB-ZPID = '0000000'. "huick 200603
* EXIT.
* ENDIF.
** PITAB-ZPID = L_EVENTPARM(5). "huick 200603
* PITAB-ZPID = L_EVENTPARM(7). "huick 200603
***delete by borag

* Anforderung
*----------------
SELECT SINGLE * FROM ZSI_DATEIEN WHERE
ZSI_AUFGB = 'AUD'
AND ZSI_DATNR = '1'. " input
IF SY-SUBRC NE 0.
WRITE: / SY-DATUM,SY-UZEIT,'kein Anforderung input (AUD/1)'.
EXIT.
ELSE.
PARA_IN_FILE = ZSI_DATEIEN-ZSI_DATNAM.
ENDIF.

* Protokoll output
*----------------
SELECT SINGLE * FROM ZSI_DATEIEN WHERE
ZSI_AUFGB = 'AUD'
AND ZSI_DATNR = '2'. " Output
IF SY-SUBRC NE 0.
WRITE: / SY-DATUM,SY-UZEIT,'kein Eintrag Output(AUD/2)'.
EXIT.
ELSE.
O_FILE = ZSI_DATEIEN-ZSI_DATNAM.
ENDIF.
* Synchronisation
*----------------
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)'.
EXIT.
ELSE.
CONCATENATE
ZSI_DATEIEN-ZSI_DATNAM PITAB-ZPID '.erg' INTO PARA_OUT_FILE.
ENDIF.
PERFORM PARA_INPUT.
ENDFORM. " EVENT

*---------------------------------------------------------------------*
* FORM PARA_INPUT *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM PARA_INPUT.
data : dumy_vondat like pitab-vondat,
dumy_bisdat like pitab-bisdat.
OPEN DATASET PARA_IN_FILE FOR INPUT IN TEXT MODE.
IF SY-SUBRC NE 0.
WRITE: / 'Fehler beim OPEN Dataset',PARA_IN_FILE.
ABBRUCH = 'J'.
EXIT.
ENDIF.
READ DATASET PARA_IN_FILE INTO PITAB.
IF SY-SUBRC NE 0.
WRITE: / 'Fehler beim Lesen Dataset',PARA_IN_FILE.
ABBRUCH = 'J'.
EXIT.
ENDIF.

PITAB-KOKRS = '80'.

*****append by borag.
dumy_vondat(4) = PITAB-VONDAT+4(4).
dumy_vondat+4(2) = PITAB-VONDAT+2(2).
dumy_vondat+6(2) = PITAB-VONDAT(2).
PITAB-VONDAT = dumy_vondat.
dumy_bisdat(4) = PITAB-BISDAT+4(4).
dumy_bisdat+4(2) = PITAB-BISDAT+2(2).
dumy_bisdat+6(2) = PITAB-BISDAT(2).
PITAB-BISDAT = dumy_bisdat.
*****append by borag.

PITAB-PSTATUS = ' '.


CLOSE DATASET PARA_IN_FILE.
IF SY-SUBRC NE 0.
ABBRUCH = 'J'.
WRITE: / 'Fehler beim CLOSE Dataset',PARA_IN_FILE.
EXIT.
ENDIF.
ENDFORM. " PARA_INPUT
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form SELECT_DATEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SELECT_DATEN CHANGING P_SUBRC.
P_SUBRC = 04.
SELECT * FROM COAS WHERE
ERDAT >= PITAB-VONDAT
AND ERDAT <= PITAB-BISDAT.
*umbuchungauftr�ge �berlesen
* check coas-aufnr+6(6) lt umbuch_u or
* coas-aufnr+6(6) gt umbuch_h .
PERFORM CHECK_SENDER USING COAS-AUART+0(2) COAS-AUART+2(2)
CHANGING SUBRC .
P_SUBRC = SUBRC.
IF SUBRC = 0. " auftrag relevant ?
CLEAR AUART.
* perform lesen_klassifizierung changing auart.
AUART = COAS-AUART(2).
PERFORM GENERIERE_SI_AUFTRAG.
READ TABLE AUFTRAGS_NUMMERN WITH KEY COAS-AUFNR BINARY SEARCH.
CASE SY-SUBRC.
WHEN 0. BREAK-POINT.
WHEN 4.
INSERT COAS-AUFNR INTO AUFTRAGS_NUMMERN
INDEX SY-TABIX.
WHEN 8. APPEND COAS-AUFNR TO AUFTRAGS_NUMMERN.
ENDCASE.
ENDIF.
ENDSELECT.
SELECT * FROM COAS WHERE
AEDAT >= PITAB-VONDAT
AND AEDAT <= PITAB-BISDAT.
PERFORM CHECK_SENDER USING COAS-AUART+0(2) COAS-AUART+2(2)
CHANGING SUBRC .
P_SUBRC = SUBRC.
IF SUBRC = 0. " auftrag relevant ?
READ TABLE AUFTRAGS_NUMMERN WITH KEY COAS-AUFNR BINARY SEARCH.
IF SY-SUBRC NE 0.
* perform lesen_klassifizierung changing auart.
PERFORM GENERIERE_SI_AUFTRAG.
ENDIF.
ELSE.
* write: / coas-aufnr,'mehrfach'.
ENDIF.

ENDSELECT.

ENDFORM. " SELECT_DATEN


*&---------------------------------------------------------------------*
*& Form CHECK_SENDER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_SENDER USING P_AUART P_AUART1
CHANGING P_SUBRC.
DATA GEFU.
P_SUBRC = 04.
CLEAR GEFU.
SELECT SINGLE * FROM T950W
WHERE KENNZ = PITAB-KENNZ
AND KOKRS = KOKRS .
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'Falsche Anforderung(KOKRS)/Standort'
PITAB.
ABBRUCH = 'J'.
ELSE.
ASSIGN T950W-AUA01 TO <F1>.
DO 19 TIMES.
IF <F1> = SPACE.
P_SUBRC = 04.
EXIT.
ENDIF.
IF P_AUART = <F1> AND
P_AUART1 = SPACE.
P_SUBRC = 00.
EXIT.
ENDIF.
ASSIGN <F1>+LNG_AUART TO <F1>.
ENDDO.
ENDIF.
ENDFORM. " CHECK_SENDER
*---------------------------------------------------------------------*
* FORM APPEND_FEHLTAB *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> FEHLER *
* --> PITAB *
*---------------------------------------------------------------------*
FORM APPEND_FEHLTAB USING FEHLER PITAB.
FEHLTAB-FEHLER = FEHLER.
FEHLTAB-SATZ = PITAB.
APPEND FEHLTAB.
ADD 1 TO Z_EINGABE_FEHL. "eingaben fehlerhaft

ENDFORM. " APPEND_FEHLTAB


*&---------------------------------------------------------------------*
*& Form AUSGABE_DATEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM AUSGABE_DATEN.
IF 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.
ENDIF.
LOOP AT TABF.
CLEAR AUSGABE.
AUSGABE(80) = TABF-FEHLER.
APPEND AUSGABE TO OUT_SI.
ENDLOOP.
CLEAR AUSGABE.
AUSGABE(30) = 'Anzahl Startsatz............:'.
UNPACK Z_STARTSATZ TO AUSGABE+30(6).
APPEND AUSGABE TO OUT_SI.
AUSGABE(30) = 'Anzahl Endsatz..............:'.
UNPACK Z_ENDESATZ TO AUSGABE+30(6).
APPEND AUSGABE TO OUT_SI.
AUSGABE(30) = 'Anzahl Datens�tze...........:'.
UNPACK Z_EINGABE TO AUSGABE+30(6).
APPEND AUSGABE TO OUT_SI.
CLEAR AUSGABE.
IF ECHTLAUF = 'J'.
LOOP AT OUT_SI.
TRANSFER OUT_SI TO O_FILE.
ENDLOOP.
CLEAR AUSGABE.
AUSGABE(18) = 'Ende der Durchsage'.
TRANSFER AUSGABE TO O_FILE.
AUSGABE(31) = 'Wir befinden uns im Mandanten:'.
SELECT SINGLE * FROM T001
WHERE BUKRS = BUKRS.
IF SY-SUBRC EQ 0.
WRITE T001-MANDT TO AUSGABE+31(4).
ELSE.
WRITE '***' TO AUSGABE+31(4).
ENDIF.
TRANSFER AUSGABE TO O_FILE.
CLOSE DATASET O_FILE.
IF SY-SUBRC NE 0.
WRITE: / 'Fehler beim CLOSE Dataset',O_FILE.
EXIT.
ENDIF.
PERFORM AUSGABE_PARAMETER.
ENDIF.
ENDFORM. " AUSGABE_RETOUREN
*---------------------------------------------------------------------*
* 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 LESEN_KLASSIFIZIERUNG *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> P_AUART *
*---------------------------------------------------------------------*
FORM LESEN_KLASSIFIZIERUNG CHANGING P_AUART.
CLEAR EINZMAS.
CLEAR P_AUART.
OBJNR = COAS-OBJNR.
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
CLASSTYPE = '013'
OBJECT = OBJNR
TABLES
T_CLASS = KLASSE
T_OBJECTDATA = KLADAT
EXCEPTIONS
NO_CLASSIFICATION = 01
OTHERS = 2.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'Klassifizierung fehlt'
OBJNR.

ELSE.
CLEAR: KKS,PGS,BMS.
LOOP AT KLADAT.
CHECK KLADAT-AUSP1(1) NE '?'.

IF TXT-KKS = KLADAT-SMBEZ.
KKS = KLADAT-AUSP1(2).
ENDIF.

IF TXT-PGS = KLADAT-SMBEZ.
PGS = KLADAT-AUSP1(2).
ENDIF.

IF TXT-BMS = KLADAT-SMBEZ.
BMS = KLADAT-AUSP1(2).
ENDIF.

IF TXT-STAUART = KLADAT-SMBEZ.
P_AUART = KLADAT-AUSP1(2).
ENDIF.
IF TXT-EINZMAS = KLADAT-SMBEZ.
EINZMAS(3) = KLADAT-AUSP1(3).
ENDIF.

ENDLOOP.
ENDIF.
ENDFORM. " LESEN_KLASSIFIZIERUNG
*---------------------------------------------------------------------*
* FORM GENERIERE_SI_AUFTRAG *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM GENERIERE_SI_AUFTRAG.
DATA Z_USER4(5) TYPE P.
ADD 1 TO SATZ_ZAEHLER_OUT.
PERFORM BEARBEITEN_DATUM CHANGING COAS-USER5. "datum-autor
PERFORM BEARBEITEN_DATUM CHANGING COAS-USER7.
PERFORM BEARBEITEN_DATUM CHANGING COAS-USER8.
CLEAR AUSGABE.
PERFORM LESEN_TEXT.
AUSGABE-SATZ-TXT02 = TXT02.
AUSGABE-SATZ-TXT01 = COAS-KTEXT.
UNPACK SATZ_ZAEHLER_OUT TO AUSGABE-SATZ-SATZNR.

AUSGABE-SATZ-PRFKZ = '305'.
AUSGABE-SATZ-DATUM+4(4) = SY-DATUM(4).
AUSGABE-SATZ-DATUM+2(2) = SY-DATUM+4(2).
AUSGABE-SATZ-DATUM+0(2) = SY-DATUM+6(2).
AUSGABE-SATZ-JAHR = COAS-ERDAT+2(2).
AUSGABE-SATZ-GSAUFGEB = COAS-BUKRS.
AUSGABE-SATZ-GSAUFNEH = COAS-BUKRS.
AUSGABE-SATZ-WKAUFGEB = COAS-WERKS.
AUSGABE-SATZ-WKAUFNEH = COAS-WERKS.
AUSGABE-SATZ-KSAUFGEB = COAS-KOSTV+2(8).
AUSGABE-SATZ-KSAUFNEH = COAS-USER1+2(8).
AUSGABE-SATZ-AUFNR = COAS-AUFNR+4(8).
AUSGABE-SATZ-AUFPOS = '01'.
AUSGABE-SATZ-RKA_AUF = COAS-AUFNR+4(8).
AUSGABE-SATZ-RKA_POS = '01'.
AUSGABE-SATZ-ART = COAS-AUART+0(2).
AUSGABE-SATZ-PROJEKTNR = EINZMAS(3).
AUSGABE-SATZ-KKS = COAS-USER2. "KKS.
AUSGABE-SATZ-BMS = COAS-USER3.
AUSGABE-SATZ-AV = COAS-AUTYP.
AUSGABE-SATZ-STAUTOR = COAS-USER6.
AUSGABE-SATZ-NAMEAUTOR = COAS-USER0.
AUSGABE-SATZ-DATUMAUTO = COAS-USER5. "antragsdatum
AUSGABE-SATZ-BEGINN = COAS-USER7. "auftragsbeginn
AUSGABE-SATZ-ENDE = COAS-USER8. "auftragsende
Z_USER4 = COAS-USER4.
* unpack z_user4 to ausgabe-satz-planleist.
AUSGABE-SATZ-PLANLEIST = NULL. "planleistungen
AUSGABE-SATZ-PLANLIEF = NULL. "planlieferungen
AUSGABE-SATZ-PLANSONST = NULL. "plan sonstiges
PERFORM ERMITTELN_BEARBKZ.
AUSGABE-SATZ-ENDKZ = '^'. "endezeichen
APPEND AUSGABE TO OUT_SI.
ADD 1 TO Z_EINGABE.
ENDFORM. " GENERIERE_SI_AUFTRAG
*&---------------------------------------------------------------------*
*& Form LESEN_TEXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LESEN_TEXT.
CLEAR TXT02.
CHECK NOT COAS-LTEXT IS INITIAL.
TDNAME = COAS-AUFNR.
REFRESH TLINETAB.
CLEAR TLINETAB.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = TDID
LANGUAGE = SY-LANGU
OBJECT = TDOBJECT
NAME = TDNAME
IMPORTING
HEADER = THEAD
TABLES
LINES = TLINETAB
EXCEPTIONS
NOT_FOUND = 1.
IF SY-SUBRC = 0.
LOOP AT TLINETAB.
IF NOT TLINETAB-TDLINE IS INITIAL.
TXT02 = TLINETAB-TDLINE.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.

ENDFORM. " LESEN_TEXT


*&---------------------------------------------------------------------*
*& Form SI-LISTE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SI-LISTE.
LOOP AT OUT_SI.
EIN = OUT_SI.
IF EIN+6(4) EQ 'STAR' OR
EIN+6(4) EQ 'ENDE'.
ELSE.
WRITE: /01 'Datum.....................', EIN-DATUM.
WRITE: /01 'Pr�fziffer................', EIN-PRFKZ,
50 'Hierarchie.................', EIN-HIERAR.
WRITE: /01 'Jahr......................', EIN-JAHR.
WRITE: /01 'Buchungskreis Auftraggeber.', EIN-GSAUFGEB,
50 'Buchungskreis Auftragnehmer', EIN-GSAUFNEH.
WRITE: /01 'Werk Auftraggeber..........', EIN-WKAUFGEB,
50 'Werk Auftragnehmer.........', EIN-GSAUFNEH.
WRITE: /01 'Kostenstelle Auftraggeber..', EIN-KSAUFGEB,
50 'Kostenstelle Auftragnehmer.', EIN-KSAUFNEH.
WRITE: /01 'SI-Auftragsnummer..........', EIN-AUFNR,
50 'Si Auftragsposition........', EIN-AUFPOS.
WRITE: /01 'CO-Auftragsnummer..........', EIN-RKA_AUF,
50 'CO-Auftragsposition........', EIN-RKA_POS.
WRITE: /01 'Zielbuchungskreis Auftr.Geb', EIN-ZIAGESAG,
50 'Zielbuchungskreis Auftr.Neh', EIN-ZIAGESAN.
WRITE: /01 'Zielwerk Auftraggeber......', EIN-ZIAWRKAG,
50 'Zielwerk Auftragnehmer.....', EIN-ZIAWRKAN.
WRITE: /01 'Zielkostenstelle Auftraggeb', EIN-ZIAKSTST,
50 'Zielkostenstelle Auftragneh', EIN-ZIALKSTST.
WRITE: /01 'Zielauftrag................', EIN-ZIANR,
50 'Zielauftrag-Position.......', EIN-ZIAPOS.
WRITE: /01 'SI-Auftragsart.............', EIN-ART,
50 'Einzelma�nahme.............', EIN-EINZMASSN.
WRITE: /01 'SI-Projektnummer...........', EIN-PROJEKTNR,
50 'Sachkonto..................', EIN-KONTONR.
WRITE: /01 'SI-Arbeitsvorbereitung.....', EIN-AV,
50 'CO-Projektnummer...........', EIN-INVESTNR.
WRITE: /01 'SI-KKS-Schl�ssel...........', EIN-KKS,
50 'SI-BMS-Schl�ssel...........', EIN-BMS.
WRITE: /01 'Stelle verantwortlich......', EIN-STVERANTW,
50 'Stelle Bearbeiter..........', EIN-STBEARB.
WRITE: /01 '�nderungskennzeichen.......', EIN-AEKZ.
WRITE: /01 'Auftragstext Zeile 01......', EIN-TXT01,
50 'Auftragstext Zeile 02......', EIN-TXT02.
WRITE: /01 'Auftragsbeginn.............', EIN-BEGINN,
50 'Auftragsende...............', EIN-ENDE.
WRITE: /01 'Planleistung...............', EIN-PLANLEIST,
50 'Planlieferung..............', EIN-PLANLIEF.
WRITE: /01 'Plan_Sonstiges.............', EIN-PLANSONST.
WRITE: /01 'Stelle Autor...............', EIN-STAUTOR,
50 'Name Autor.................', EIN-NAMEAUTOR.
WRITE: /01 'Datum Autor................', EIN-DATUMAUTO.
WRITE: /01 'Bearbeitungskennzeichen....', EIN-BEARB_KZ.
WRITE: /01 'Satzende-Kennung...........', EIN-ENDKZ.
ULINE.
ENDIF.
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 SATZ_ZAEHLER_OUT TO ENDESATZ+10(6). " nur echte retouren
WRITE SY-DATUM TO ENDESATZ+16(8).
APPEND ENDESATZ TO OUT_SI.
ADD 1 TO Z_ENDESATZ.

ENDFORM. " ENDESATZ


*&---------------------------------------------------------------------*
*& Form CHECK_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_OBJECT text *
* -->P_CON_STAT_FREI text *
*----------------------------------------------------------------------*
FORM CHECK_STATUS USING P_OBJECT
P_STATUS CHANGING P_SUBRC.
CALL FUNCTION 'STATUS_CHECK'
EXPORTING
BYPASS_BUFFER = 'X'
OBJNR = P_OBJECT
STATUS = P_STATUS
EXCEPTIONS
OBJECT_NOT_FOUND = 01
STATUS_NOT_ACTIVE = 02.
IF SY-SUBRC = 01.
WRITE: 'Programmfehler CHECK_STATUS'.
STOP.
ENDIF.
P_SUBRC = SY-SUBRC.
ENDFORM. " CHECK_STATUS
*&---------------------------------------------------------------------*
*& Form ERMITTELN_BEARBKZ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ERMITTELN_BEARBKZ.
OBJECT+2(12) = COAS-AUFNR.
*technisch abgeschlossen
PERFORM CHECK_STATUS USING OBJECT CON_STAT_TABG CHANGING SUBRC.
IF SUBRC = 0.
AUSGABE-SATZ-BEARB_KZ = 'TF '.
EXIT.
ENDIF.
*abgeschlossen/kaufm�nnisch abgeschlossen
PERFORM CHECK_STATUS USING OBJECT CON_STAT_ABGS CHANGING SUBRC.
IF SUBRC = 0.
AUSGABE-SATZ-BEARB_KZ = 'KF '.
EXIT.
ENDIF.
IF NOT COAS-AEDAT IS INITIAL.
AUSGABE-SATZ-BEARB_KZ = 'UPD '.
EXIT.
ENDIF.
*frei
PERFORM CHECK_STATUS USING OBJECT CON_STAT_FREI CHANGING SUBRC.
IF SUBRC = 0.
AUSGABE-SATZ-BEARB_KZ = 'NEU '.
EXIT.
ENDIF.
* ge�ndert
AUSGABE-SATZ-BEARB_KZ = 'UPD'.
ENDFORM. " ERMITTELN_BEARBKZ

You might also like