Sie sind auf Seite 1von 43

INCLUDE ZKAUFTOP.

" global Data*

START-OF-SELECTION.
PERFORM INITIALISIERUNG.
CHECK ABBRUCH IS INITIAL.
PERFORM OPEN_DATASET CHANGING SUBRC.
IF SUBRC NE 0.
PITAB-PSTATUS = 'N'.
EXIT. "abbruch
ENDIF.
PERFORM CHECK_PARAMETER CHANGING SUBRC.
IF SUBRC NE 0.
EXIT. "abbruch
ENDIF.
PERFORM LESEN_EINGABE CHANGING SUBRC.
PERFORM CHECK_WEITERVERARBEITUNG CHANGING SUBRC.
IF SUBRC NE 0.
PERFORM FEHLERPROTOKOLL.
EXIT. "nicht weiter
ENDIF.

PERFORM VERARBEITUNG_INTAB USING 'NEU ' CHANGING SUBRC. "1.lf.neuanl.


PERFORM VERARBEITUNG_INTAB USING 'UPD ' CHANGING SUBRC. "2.lf.�nder. s
PERFORM VERARBEITUNG_INTAB USING 'PLAN' CHANGING SUBRC. "3.lf.plan�nd.
****append by borag begin
perform verarbeitung_intab using 'TF ' changing subrc. "4.lf.techn.fm
****append by borag begin
PERFORM VERARBEITUNG_INTAB USING 'KF ' CHANGING SUBRC. "5.lf.kfm fm.
REFRESH INTAB.
PERFORM FEHLERPROTOKOLL.
PERFORM PROTOKOLL.
*&---------------------------------------------------------------------*
*& Form CHECK_PARAMETER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM CHECK_PARAMETER CHANGING P_SUBRC.
CLEAR P_SUBRC.
IF TRANSAKT EQ 'J' AND
BTCI_AUS EQ 'J'.
WRITE: / 'Parameter -BTCI_AUS und CALL TRANSACTION nicht m�glich'.
P_SUBRC = 04.
ENDIF.

ENDFORM. " CHECK_PARAMETER


*&---------------------------------------------------------------------*
*& Form FEHLERPROTOKOLL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FEHLERPROTOKOLL.
IF ECHTLAUF = 'J'.
PERFORM AUSGABE_RETOUREN.
PERFORM AUSGABE_T950F.
EXIT.
ENDIF.
LOOP AT TABF.
WRITE : / TABF-FEHLER.
ENDLOOP.
ULINE.
LOOP AT FEHLTAB.
WRITE: / FEHLTAB-STANDORT,FEHLTAB-BEARBKZ,FEHLTAB-AUFTRAG,
FEHLTAB-TRENNZ,FEHLTAB-FEHLER.
WRITE: / FEHLTAB-SATZ.
ENDLOOP.
ENDFORM. " FEHLERPROTOKOLL
*&---------------------------------------------------------------------*
*& Form OPEN_DATASET
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM OPEN_DATASET CHANGING P_SUBRC.
CLEAR P_SUBRC.
OPEN DATASET P_FILE FOR INPUT IN TEXT MODE. " si-daten
* OPEN DATASET P_FILE FOR INPUT. " si-daten
IF SY-SUBRC NE 0.
WRITE: / 'Fehler OPEN Eingabe-Datset.',P_FILE.
P_SUBRC = SY-SUBRC.
ENDIF.
ENDFORM. " OPEN_DATASET
*&---------------------------------------------------------------------*
*& Form LESEN_EINGABE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM LESEN_EINGABE CHANGING P_SUBRC.

*****append by borag A2 begin


* DO.
* READ DATASET P_FILE INTO EIN.
* IF SY-SUBRC NE 0.
* EXIT.
* ENDIF.
* MOVE-CORRESPONDING EIN TO T_EIN.
* APPEND T_EIN.
* ENDDO.
* T_EIN_DUMMY[] = T_EIN[].
* DELETE ADJACENT DUPLICATES FROM T_EIN
* COMPARING DATUM
* PRFKZ
* HIERAR
* JAHR
* GSAUFGEB
* GSAUFNEH
* WKAUFGEB
* WKAUFNEH
* KSAUFGEB
* KSAUFNEH
* AUFNR
* AUFPOS
* RKA_AUF
* RKA_POS
* ZIAGESAG
* ZIAGESAN
* ZIAWRKAG
* ZIAWRKAN
* ZIAKSTST
* ZIALKSTST
* ZIANR
* ZIAPOS
* ART
* KATEGORIE
* EINZMASSN
* PROJEKTNR
* KONTONR
* AV
* INVESTNR
* KKS
* BMS
* STVERANTW
* STBEARB
* AEKZ
* TXT01
* TXT02
* BEGINN
* ENDE
* PLANLEIST
* PLANLIEF
* PLANSONST
* STAUTOR
* NAMEAUTOR
* DATUMAUTO.
*
* LOOP AT T_EIN_DUMMY.
* READ TABLE T_EIN WITH KEY SATZNR = T_EIN_DUMMY-SATZNR.
* IF SY-SUBRC EQ 0.
* DELETE T_EIN_DUMMY.
* ENDIF.
* ENDLOOP.
* LOOP AT T_EIN_DUMMY WHERE BEARB_KZ NE 'UPD'.
* MOVE-CORRESPONDING T_EIN_DUMMY TO T_EIN.
* APPEND T_EIN.
* DELETE T_EIN_DUMMY.
* ENDLOOP.

* LOOP AT T_EIN WHERE BEARB_KZ EQ 'TF'.


* T_EIN-BEARB_KZ = 'KF'.
* MODIFY T_EIN.
* ENDLOOP.
*****append by borag A2 end

*****append by borag A3 begin


DO.
READ DATASET P_FILE INTO EIN.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
* LOOP AT T_EIN INTO EIN.
*****append by borag A3 end
PERFORM MANIPULIERE_AUFNR. " Auftrags-Nummer hochsetzen
IF SI_LISTE = 'J' . "eingabe listen ?
PERFORM LISTE_SI.
ENDIF.
PERFORM ANPASSEN_SI.
ADD 1 TO Z_EINGABE. "eingaben insgesamt
PERFORM CHECK_EINGABE.
IF SUBRC EQ 0.
INTAB-AUFTRAG = AUFTRAG.
INTAB-INVESTNR = INVESTNR.
INTAB-KOSTL_AG = KOSTL_AG.
INTAB-KOSTL_AN = KOSTL_AN.
INTAB-KOSTL_ZAG = KOSTL_ZAG.
INTAB-KOSTL_ZAN = KOSTL_ZAN.
INTAB-KKS = KKS.
INTAB-BMS = BMS.
INTAB-PGS = PGS.
INTAB-MASSN = MASSN.
INTAB-SATZ = EIN.
INTAB-SAKNR = SAKNR.
APPEND INTAB. "eingaben ok,werden weiterverarb.
ADD 1 TO Z_EINGABE_OK. "eingaben fehlerfrei
ENDIF.
*****append by borag A4 begin
* ENDLOOP.
ENDDO.
*****append by borag A4 end
ENDFORM. " LESEN_EINGABE
*&---------------------------------------------------------------------*
*& Form CHECK_EINGABE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM CHECK_EINGABE .
IF EIN+6(4) = 'STAR'. "Startsatz ?
ADD 1 TO Z_STARTSATZ.
STARTSATZ = EIN.
SUBRC = 04.
EXIT. "keine weiter Pr�fungen
ENDIF.
IF EIN+6(4) = 'ENDE'. "Endesatz ?
ADD 1 TO Z_ENDESATZ.
ENDESATZ = EIN.
SUBRC = 04.
EXIT. "keine weiter Pr�fungen
ENDIF.
CLEAR SUBRC.
PERFORM NUMBER-CHECK USING AUFTRAG AUFART
CHANGING SUBRC.
IF SUBRC > 0.
EXIT.
ENDIF.
CASE EIN-BEARB_KZ.
WHEN UPD .
PERFORM CHECK_AENDERUNG .
WHEN PLAN .
PERFORM CHECK_PLANUNG .
WHEN NEU .
PERFORM CHECK_NEUER_AUFTRAG.
****append by borag begin 1
* when tf .
* perform check_technisch_fertig.
when tf .
perform check_technisch_fertig.
****append by borag end 1
WHEN KF .
PERFORM CHECK_KAUFMAENN_FERTIG .
****append by borag begin 2
****TF gelirse KF gibi davran
* WHEN TF .
* PERFORM CHECK_KAUFMAENN_FERTIG .
****append by borag end 2
WHEN OTHERS .
PERFORM APPEND_FEHLTAB USING
'Falsches Bearbeitungskennzeichen'
EIN.
SUBRC = 04.
ENDCASE.

ENDFORM. " CHECK_EINGABE


*&---------------------------------------------------------------------*
*& Form LISTE_SI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LISTE_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.
ENDFORM. " LISTE_SI
*&---------------------------------------------------------------------*
*& Form CHECK_AENDERUNG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM CHECK_AENDERUNG .
CLEAR:FEHLER_MERK.
PERFORM CHECK_AUFTRAG1.
IF SUBRC NE 0.
EXIT.
ENDIF.
PERFORM CHECK_STATUS .
PERFORM CHECK_SENDER .
PERFORM CHECK_KOSTENSTELLEN .
* perform check_projekt_auftrag_kostl.
PERFORM CHECK_SACHKONTO .
ENDFORM. " CHECK_AENDERUNG
*&---------------------------------------------------------------------*
*& Form CHECK_PLANUNG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM CHECK_PLANUNG.
CLEAR:FEHLER_MERK.
PERFORM CHECK_AUFTRAG1.
IF SUBRC NE 0.
EXIT.
ENDIF.
PERFORM CHECK_SENDER .
PERFORM CHECK_KOSTENSTELLEN .
* perform check_projekt_auftrag_kostl.
PERFORM CHECK_SACHKONTO .
ENDFORM. " CHECK_PLANUNG
*&---------------------------------------------------------------------*
*& Form CHECK_NEUER_AUFTRAG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM CHECK_NEUER_AUFTRAG.
CLEAR:FEHLER_MERK.
PERFORM READ_AUFTRAG USING AUFTRAG .
IF SY-SUBRC EQ 0.
PERFORM APPEND_FEHLTAB USING
'Auftrag schon vorhanden'
EIN.
SUBRC = 04.

EXIT.
ENDIF.
PERFORM CHECK_SENDER .
PERFORM CHECK_KOSTENSTELLEN .
* perform check_projekt_auftrag_kostl.
PERFORM CHECK_SACHKONTO .
ENDFORM. " CHECK_NEUER_AUFTRAG
*&---------------------------------------------------------------------*
*& Form CHECK_TECHNISCH_FERTIG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM CHECK_TECHNISCH_FERTIG.
CLEAR:FEHLER_MERK.
EXIT.
PERFORM CHECK_AUFTRAG1.
IF SUBRC NE 0.
EXIT.
ENDIF.
PERFORM CHECK_STATUS .
PERFORM CHECK_SENDER .
PERFORM CHECK_KOSTENSTELLEN .
* perform check_projekt_auftrag_kostl.
PERFORM CHECK_SACHKONTO .
ENDFORM. " CHECK_TECHNISCH_FERTIG
*&---------------------------------------------------------------------*
*& Form CHECK_KAUFMAENN_FERTIG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM CHECK_KAUFMAENN_FERTIG.
CLEAR:FEHLER_MERK.
PERFORM CHECK_AUFTRAG1.
IF SUBRC NE 0.
EXIT.
ENDIF.
PERFORM CHECK_STATUS .
PERFORM CHECK_SENDER .
PERFORM CHECK_KOSTENSTELLEN .
* perform check_projekt_auftrag_kostl.
PERFORM CHECK_SACHKONTO .
PERFORM CHECK-OBLIGO.
ENDFORM. " CHECK_KAUFMAENN_FERTIG
*&---------------------------------------------------------------------*
*& Form VERARBEITUNG_INTAB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM VERARBEITUNG_INTAB USING ART CHANGING P_SUBRC.
LOOP AT INTAB.
CHECK INTAB-SATZ-BEARB_KZ EQ ART.
IF ART NE NEU.
PERFORM READ_AUFTRAG USING INTAB-AUFTRAG.
IF SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'Auftrag nicht vorhanden'
EIN.
ENDIF.
ENDIF.
CHECK SUBRC = 0. "fehlerhaft ueberlesen
AUFTRAG = INTAB-AUFTRAG.
KOSTL_AG = INTAB-KOSTL_AG.
KOSTL_AN = INTAB-KOSTL_AN.
KOSTL_ZAN = INTAB-KOSTL_ZAN.
KOSTL_ZAG = INTAB-KOSTL_ZAG.
INVESTNR = INTAB-INVESTNR.
KKS = INTAB-KKS .
BMS = INTAB-BMS .
PGS = INTAB-PGS .
MASSN = INTAB-MASSN .
SAKNR = INTAB-SAKNR .

CASE INTAB-SATZ-BEARB_KZ.

WHEN NEU.
REFRESH BDCDATA.
PERFORM GRUNDDATEN.
PERFORM CALL_TRANSACTION USING TRANSACTION_HINZ.
IF NOT PLANKOSTEN IS INITIAL.
REFRESH BDCDATA.
PERFORM PLANUNG.
PERFORM CALL_TRANSACTION USING TRANSACTION_PLAN.
ENDIF.
WHEN UPD.
REFRESH BDCDATA.
PERFORM GENERIERE_AENDERUNGEN.
PERFORM CALL_TRANSACTION USING TRANSACTION_AEND .
WHEN PLAN.
REFRESH BDCDATA.
CLEAR UPDT.
PERFORM ERMITTELN_PLANKOSTEN.
PERFORM PLANUNG.
PERFORM CALL_TRANSACTION USING TRANSACTION_PLAN.
WHEN KF.
PERFORM KAUFMAENN_ABSCHLIESSEN .
PERFORM CALL_TRANSACTION USING TRANSACTION_AEND .
****append by borag begin 1
* WHEN TF.
* PERFORM KAUFMAENN_ABSCHLIESSEN .
* PERFORM CALL_TRANSACTION USING TRANSACTION_AEND .
****append by borag end 1
****append by borag begin 2
* when tf.
* perform technisch_abschliessen.
* perform call_transaction using transaction_aend .
when tf.
perform technisch_abschliessen.
perform call_transaction using transaction_aend .
****append by borag end 2
WHEN OTHERS.
PERFORM APPEND_FEHLTAB USING
'Bearbeitungskenziffer nicht vorgesehen'
EIN.
ENDCASE.

ENDLOOP.
P_SUBRC = 0.
ENDFORM. " VERARBEITUNG_INTAB
*&---------------------------------------------------------------------*
*& Form READ_AUFTRAG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_AUFTRAG text *
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM READ_AUFTRAG USING P_AUFTRAG.
SELECT SINGLE * FROM COAS
WHERE AUFNR = P_AUFTRAG.

ENDFORM. " READ_AUFTRAG


*&---------------------------------------------------------------------*
*& Form APPEND_FEHLTAB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM APPEND_FEHLTAB USING FEHLER SATZ .
***delete by borag
FEHLTAB-STANDORT = STARTSATZ+11(3).
***delete by borag
* FEHLTAB-STANDORT = STARTSATZ+12(3).
FEHLTAB-BEARBKZ = EIN-BEARB_KZ.
FEHLTAB-AUFTRAG = AUFTRAG.
FEHLTAB-FEHLER = FEHLER.
FEHLTAB-SATZ = SATZ.
APPEND FEHLTAB.
ADD 1 TO Z_EINGABE_FEHL. "eingaben fehlerhaft

ENDFORM. " APPEND_FEHLTAB


*&---------------------------------------------------------------------*
*& Form CHECK_WEITERVERARBEITUNG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM CHECK_WEITERVERARBEITUNG CHANGING P_SUBRC.
CLEAR P_SUBRC.
IF Z_EINGABE_OK < 1.
PERFORM APPEND_FEHLTAB USING
'Kein fehlerfreier Satz vorhanden'
' '.
PERFORM APPEND_FEHLTAB USING
'Abbruch '
' '.
P_SUBRC = 04.
ENDIF.
IF Z_STARTSATZ NE 1.
PERFORM APPEND_FEHLTAB USING
'Kein Startsatz empfangen'
' '.
PERFORM APPEND_FEHLTAB USING
'Abbruch '
' '.
P_SUBRC = 04.
ENDIF.
IF Z_ENDESATZ NE 1.
PERFORM APPEND_FEHLTAB USING
'Kein Endesatz empfangen'
' '.
PERFORM APPEND_FEHLTAB USING
'Abbruch '
' '.
P_SUBRC = 04.
ENDIF.

ENDFORM. " CHECK_WEITERVERARBEITUNG


*&---------------------------------------------------------------------*
*& Form PROTOKOLL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PROTOKOLL.
CHECK ECHTLAUF NE 'J'.
* WRITE: / 'Anzahl Startsatz............:',Z_STARTSATZ.
* WRITE: / 'Anzahl Endesatz.............:',Z_ENDESATZ .
* WRITE: / 'Anzahl Datens�tze insgesamt :',Z_EINGABE .
* WRITE: / '--davon fehlerfrei..........:',Z_EINGABE_OK.
* WRITE: / '--davon fehlerhaft..........:',Z_EINGABE_FEHL.
WRITE: / 'Number of start lines............:',Z_STARTSATZ.
WRITE: / 'Number of end lines..............:',Z_ENDESATZ .
WRITE: / 'Number of lines total............:',Z_EINGABE .
WRITE: / '--without errors.................:',Z_EINGABE_OK.
WRITE: / '--with errors....................:',Z_EINGABE_FEHL.

ENDFORM. " PROTOKOLL


*&---------------------------------------------------------------------*
*& Form ANPASSEN_SI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ANPASSEN_SI.
IF EIN+6(4) NE 'STAR'.
IF EIN+6(4) NE 'ENDE'.
AUFTRAG = NULL.
AUFTRAG+4(8) = EIN-AUFNR.
IF EIN-JAHR LT FUENFZIG.
JAHR(2) = '20'.
ELSE.
JAHR(2) = '19'.
ENDIF.
JAHR+2(2) = EIN-JAHR.
BUKRS_AG = NULL.
BUKRS_AG+2(2) = EIN-GSAUFGEB.
ZBUKRS_AG = BUKRS_AG.
BUKRS_AN = NULL.
BUKRS_AN+2(2) = EIN-GSAUFNEH.
KOSTL_AG = NULL.
KOSTL_AG+2(8) = EIN-KSAUFGEB.
KOSTL_AN = NULL.
KOSTL_AN+2(8) = EIN-KSAUFNEH.
BUKRS_ZAG = NULL.
AUFART+0(2) = EIN-ART.
IF EIN-ZIAGESAG NE SPACE.
BUKRS_ZAG+2(2) = EIN-ZIAGESAG.
ENDIF.
BUKRS_ZAN = NULL.
IF EIN-ZIAGESAN NE SPACE.
BUKRS_ZAN+2(2) = EIN-ZIAGESAN.
ENDIF.
KOSTL_ZAG = NULL.
IF EIN-ZIAKSTST NE SPACE.
KOSTL_ZAG+2(8) = EIN-ZIAKSTST.
ENDIF.
KOSTL_ZAN = NULL.
IF EIN-ZIALKSTST NE SPACE.
KOSTL_ZAN+2(8) = EIN-ZIALKSTST.
ENDIF.
INVESTNR = NULL.
IF EIN-INVESTNR NE SPACE.
INVESTNR(16) = EIN-INVESTNR.
ELSE.
IF EIN-ZIANR(1) BETWEEN A AND Z .
INVESTNR(8) = EIN-ZIANR.
CLEAR EIN-ZIANR.
ENDIF.
ENDIF.
AUFTRAG_ZI = NULL.
IF EIN-ZIANR NE SPACE.
AUFTRAG_ZI+4(8) = EIN-ZIANR.
ENDIF.
ASSIGN EIN-PLANLEIST(1) TO <F1>.
DO LNG_PLANLEIST TIMES.
IF <F1> CN NUMERISCH.
<F1> = '0'.
ENDIF.
ASSIGN <F1>+1 TO <F1>.
ENDDO.
ASSIGN EIN-PLANLIEF(1) TO <F1>.
DO LNG_PLANLIEF TIMES.
IF <F1> CN NUMERISCH.
<F1> = '0'.
ENDIF.
ASSIGN <F1>+1 TO <F1>.
ENDDO.
ASSIGN EIN-PLANSONST(1) TO <F1>.
DO LNG_PLANSON TIMES.
IF <F1> CN NUMERISCH.
<F1> = '0'.
ENDIF.
ASSIGN <F1>+1 TO <F1>.
ENDDO.
SAKNR = NULL.
IF NOT EIN-KONTONR IS INITIAL.
SAKNR+2(8) = EIN-KONTONR+0(8).
ENDIF.
PERFORM ANPASSEN_KOSTENSTELLEN CHANGING KOSTL_AG.
PERFORM ANPASSEN_KOSTENSTELLEN CHANGING KOSTL_AN.
PERFORM ANPASSEN_KOSTENSTELLEN CHANGING KOSTL_ZAG.
PERFORM ANPASSEN_KOSTENSTELLEN CHANGING KOSTL_ZAN.
PERFORM SONDERLOCKEN.
ENDIF.

ENDIF.
ENDFORM. " ANPASSEN_SI
*&---------------------------------------------------------------------*
*& Form INITIALISIERUNG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM INITIALISIERUNG.
SET PARAMETER ID 'CAC' FIELD KOKRS.
DESCRIBE FIELD EIN-PLANLEIST LENGTH LNG_PLANLEIST.
DESCRIBE FIELD EIN-PLANLIEF LENGTH LNG_PLANLIEF.
DESCRIBE FIELD EIN-PLANSONST LENGTH LNG_PLANSON .
DESCRIBE FIELD EIN-AV LENGTH LNG_AUART .
DESCRIBE FIELD AUFK-KOSTL LENGTH LNG_KOSTL .
DESCRIBE FIELD COSP-MEG001 LENGTH LNG_MEG001N .
ANF-UZEIT = SY-UZEIT.
IF ECHTLAUF = 'J'.
PERFORM EVENT.
CHECK ABBRUCH IS INITIAL.
ENDIF.
ENDFORM. " INITIALISIERUNG
*&---------------------------------------------------------------------*
*& Form SONDERLOCKEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SONDERLOCKEN.
IF EIN-KKS+14(2) EQ SPACE AND
EIN-ART GE NULL2 AND
EIN-ART LE NULL7.
EIN-KKS+14(1) = STERN.
ENDIF.
IF EIN-KKS+14(2) EQ SPACE AND
EIN-ART EQ '17' AND
EIN-KKS+14(1) = STERN.
ENDIF.
CLEAR: KKS,BMS,PGS.
PGS(1) = '!'.
IF EIN-ART = NULL8.
PGS = EIN-KKS(2).
ENDIF.
KKS = EIN-KKS+3(2).
BMS = EIN-KKS+14(2).
MASSN = EIN-PROJEKTNR.
IF MASSN LE NULL(3).
MASSN = NULL(3).
ENDIF.
* if ein-bearb_kz = kf. "si darf keine KF'S senden
* ein-bearb_kz = tf. "sie werden in TF umgetauft
* endif.

ENDFORM. " SONDERLOCKEN


*&---------------------------------------------------------------------*
*& Form CHECK_SENDER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_SENDER.
DATA GEFU.
CLEAR GEFU.
SELECT SINGLE * FROM T950W
*** delete by borag
WHERE KENNZ = STARTSATZ+11(3)
*** delete by borag
* WHERE KENNZ = STARTSATZ+12(3)
AND KOKRS = KOKRS.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'Falscher Standort '
EIN.
SUBRC = 04.
ELSE.
GEFU = 'X'.
ASSIGN T950W-AUA01 TO <F1>.
DO 19 TIMES.
IF <F1> = SPACE.
EXIT.
ENDIF.
IF EIN-ART = <F1>.
CLEAR GEFU.
EXIT.
ENDIF.
ASSIGN <F1>+LNG_AUART TO <F1>.
ENDDO.
IF NOT GEFU IS INITIAL.
PERFORM APPEND_FEHLTAB USING
'AV nicht in T950w '
EIN.
SUBRC = 04.
ENDIF.

ENDIF.
ENDFORM. " CHECK_SENDER
*&---------------------------------------------------------------------*
*& Form CHECK_KOSTENSTELLEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM CHECK_KOSTENSTELLEN.
IF ZBUKRS_AG = '0099' OR
EIN-ART = '14'.
ELSE.
CALL FUNCTION 'RK_KOSTL_READ'
EXPORTING
DATUM = SY-DATLO
KOKRS = KOKRS
KOSTL = KOSTL_AG
EXCEPTIONS
KOSTL_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'ung�ltige KOSTL Auftraggeber'
EIN.
SUBRC = 04.
ENDIF.
ENDIF.

CALL FUNCTION 'RK_KOSTL_READ'


EXPORTING
DATUM = SY-DATLO
KOKRS = KOKRS
KOSTL = KOSTL_AN
EXCEPTIONS
KOSTL_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'ung�ltige KOSTL Auftragnehmer'
EIN.
SUBRC = 04.
ENDIF.
IF KOSTL_ZAG NE NULL(10).
CALL FUNCTION 'RK_KOSTL_READ'
EXPORTING
DATUM = SY-DATLO
KOKRS = KOKRS
KOSTL = KOSTL_ZAG
EXCEPTIONS
KOSTL_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'ung�ltige KOSTL Ziel-Auftraggeber'
EIN.
SUBRC = 04.
ENDIF.
ENDIF.
IF KOSTL_ZAN NE NULL(10).
CALL FUNCTION 'RK_KOSTL_READ'
EXPORTING
DATUM = SY-DATLO
KOKRS = KOKRS
KOSTL = KOSTL_ZAN
EXCEPTIONS
KOSTL_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'ung�ltige KOSTL Ziel-Auftragnehmer'
EIN.
SUBRC = 04.
ENDIF.
ENDIF.
ENDFORM. " CHECK_KOSTENSTELLEN
*&---------------------------------------------------------------------*
*& Form CHECK_PROJEKT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM CHECK_PROJEKT_AUFTRAG_KOSTL.
CASE EIN-ART.
WHEN '01'.
PERFORM AUFBEREITEN_PRPS.
PERFORM SELECT-PRPS.
WHEN '09'.
IF INVESTNR(1) BETWEEN A AND Z .
PERFORM AUFBEREITEN_PRPS.
PERFORM SELECT-PRPS.
ELSE.
PERFORM CHECK_KOSTENSTELLEN.
ENDIF.
WHEN '19'.
IF INVESTNR(1) BETWEEN A AND Z .
PERFORM AUFBEREITEN_PRPS.
PERFORM SELECT-PRPS.
ELSE.
PERFORM CHECK_AUFTRAG.
ENDIF.
ENDCASE.
IF NOT EIN-ZIANR IS INITIAL.
PERFORM CHECK_AUFTRAG.
EXIT.
ENDIF.
ENDFORM. " CHECK_PROJEKT
*&---------------------------------------------------------------------*
*& Form CHECK_SACHKONTO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM CHECK_SACHKONTO.
IF ZBUKRS_AG = '0099' OR
EIN-ART = '14'.
ELSE.
CHECK SAKNR NE NULL(10).
ENDIF.
CALL FUNCTION 'READ_SACHKONTO'
EXPORTING
BUCHUNGSKREIS = BUKRS_AG
SACHKONTO = SAKNR
EXCEPTIONS
SACHKONTO_NOT_FOUND = 1.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'ung�ltiges Sachkonto '
EIN.
SUBRC = 04.
ENDIF.
ENDFORM. " CHECK_SACHKONTO
*---------------------------------------------------------------------*
* FORM BDC_DYNPRO *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> PROGRAM *
* --> DYNPRO *
*---------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.

ENDFORM. " BDC_DYNPRO


*---------------------------------------------------------------------*
* FORM BDC_FIELD *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> FNAM *
* --> FVAL *
*---------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM. " BDC_FIELD
*&---------------------------------------------------------------------*
*& Form GRUNDDATEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GRUNDDATEN.
IF KOKRS_GESETZT IS INITIAL.
PERFORM KOKRS_SETZEN.
ENDIF.
PERFORM BEARBEITEN_DATUM CHANGING INTAB-SATZ-DATUMAUTO.
PERFORM BEARBEITEN_DATUM CHANGING INTAB-SATZ-BEGINN.
PERFORM BEARBEITEN_DATUM CHANGING INTAB-SATZ-ENDE.
PLANKOSTEN = INTAB-SATZ-PLANLEIST + INTAB-SATZ-PLANLIEF
+ INTAB-SATZ-PLANSONST.
PLANKOSTEN = PLANKOSTEN / 100.
PERFORM CHECK_FREIGABE USING PLANKOSTEN CHANGING FREIGABE.

PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0100'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-AUART'.
PERFORM BDC_FIELD USING 'COAS-AUART'
INTAB-SATZ-ART.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
IF NOT INTAB-SATZ-TXT02 IS INITIAL.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TEXA'.
ELSE.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
ENDIF.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-KTEXT'.
PERFORM BDC_FIELD USING 'COAS-AUFNR'
AUFTRAG.
PERFORM BDC_FIELD USING 'COAS-KTEXT'
INTAB-SATZ-TXT01.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0315AREA1'.
PERFORM BDC_FIELD USING 'COAS-BUKRS'
BUKRS.
PERFORM BDC_FIELD USING 'COAS-WERKS'
INTAB-SATZ-WKAUFGEB.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA2'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
IF NOT INTAB-SATZ-TXT02 IS INITIAL.
PERFORM BDC_DYNPRO USING 'SAPLSTXX' '1100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TXBA'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(02)'
INTAB-SATZ-TXT02.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUT2'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0315AREA1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-KOSTV'.
PERFORM BDC_FIELD USING 'COAS-KOSTV'
KOSTL_AG.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA2'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0330AREA1'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0325AREA2'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-ASTKZ'.
PERFORM BDC_FIELD USING 'COAS-ASTKZ'
'X'. "immer statistisch
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
IF NOT FREIGABE IS INITIAL.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=VARI'.
ELSE.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
ENDIF.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0330AREA1'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0325AREA2'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-CYCLE'.
PERFORM BDC_FIELD USING 'COAS-CYCLE'
KOSTL_AG.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUT4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0330AREA1'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0325AREA2'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-CYCLE'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0300AREA1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-USER4'.
PERFORM BDC_FIELD USING 'COAS-USER0'
INTAB-SATZ-NAMEAUTOR.
PERFORM BDC_FIELD USING 'COAS-USER5'
INTAB-SATZ-DATUMAUTO.
PERFORM BDC_FIELD USING 'COAS-USER1'
KOSTL_AN.
PERFORM BDC_FIELD USING 'COAS-USER6'
INTAB-SATZ-STAUTOR.
PERFORM BDC_FIELD USING 'COAS-USER2'
INTAB-SATZ-KKS.
PERFORM BDC_FIELD USING 'COAS-USER7'
' '.
PERFORM BDC_FIELD USING 'COAS-USER3'
INTAB-SATZ-BMS.
PERFORM BDC_FIELD USING 'COAS-USER8'
' '.
PERFORM BDC_FIELD USING 'COAS-USER4'
' '.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA2'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0300AREA1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-USER4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA2'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
ENDFORM. " GRUNDDATEN
*&---------------------------------------------------------------------*
*& Form ANPASSEN_KOSTENSTELLEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_KOSTL_ZAN text *
*----------------------------------------------------------------------*
FORM ANPASSEN_KOSTENSTELLEN CHANGING P_KOSTL.
ASSIGN P_KOSTL(1) TO <F1>.
DO LNG_KOSTL TIMES.
IF <F1> CN NUMERISCH.
<F1> = '0'.
ENDIF.
ASSIGN <F1>+1 TO <F1>.
ENDDO.
ENDFORM. " ANPASSEN_KOSTENSTELLEN
*&---------------------------------------------------------------------*
*& Form MANIPULIERE_AUFNR
*&---------------------------------------------------------------------*
FORM MANIPULIERE_AUFNR.
DATA P_AUFNR(7) TYPE P.
IF EIN+6(4) NE 'STAR'.
IF EIN+6(4) NE 'ENDE'.
PACK EIN-AUFNR TO P_AUFNR.
ADD AUFNRPL TO P_AUFNR.
UNPACK P_AUFNR TO EIN-AUFNR.
ENDIF.
ENDIF.
ENDFORM. " MANIPULIERE_AUFNR
*---------------------------------------------------------------------*
* FORM CALL_TRANSACTION *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> P_TRANSACTION *
*---------------------------------------------------------------------*
FORM CALL_TRANSACTION USING P_TRANSACTION.
REFRESH MESSTAB.
CALL TRANSACTION P_TRANSACTION USING BDCDATA
MODE MODE
UPDATE UPDATE
MESSAGES INTO MESSTAB.
PERFORM CHECK_MESSTAB USING P_TRANSACTION.
ENDFORM. " CALL_TRANSACTION
*---------------------------------------------------------------------*
* FORM CHECK_MESSTAB *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> P_TRANSACTION *
*---------------------------------------------------------------------*
FORM CHECK_MESSTAB USING P_TRANSACTION.
LOOP AT MESSTAB.
CHECK MESSTAB-MSGTYP EQ 'E'.
SELECT SINGLE * FROM T100
WHERE SPRSL = MESSTAB-MSGSPRA
AND ARBGB = MESSTAB-MSGID
AND MSGNR = MESSTAB-MSGNR.

IF SY-SUBRC <> 0.
T100-TEXT(2) = MESSTAB-MSGID.
T100-TEXT+3(3) = MESSTAB-MSGNR.
T100-TEXT+7(50) = 'unbekannter Fehler'.
ENDIF.
CONCATENATE
MESSTAB-MSGV1(20)
T100-TEXT(50) INTO
SY-WINSL
SEPARATED BY ' '.
PERFORM APPEND_FEHLTAB USING SY-WINSL
INTAB-SATZ.
Z_EINGABE_OK = Z_EINGABE_OK - 1.
MOVE SPACE TO SY-WINSL.
ENDLOOP.
ENDFORM. " CHECK_MESSTAB
*&---------------------------------------------------------------------*
*& Form CHECK_AENDERUNGEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_UPDT text *
*----------------------------------------------------------------------*
FORM CHECK_AENDERUNGEN CHANGING P_UPDT P_SUBRC.
PERFORM BEARBEITEN_DATUM CHANGING INTAB-SATZ-DATUMAUTO.
PERFORM BEARBEITEN_DATUM CHANGING INTAB-SATZ-BEGINN.
PERFORM BEARBEITEN_DATUM CHANGING INTAB-SATZ-ENDE.
P_UPDT = 'X'.
CASE INTAB-SATZ-BEARB_KZ.
WHEN UPD.
COAS-AKSTL = KOSTL_AG.
COAS-KTEXT = INTAB-SATZ-TXT01.
COAS-USER0 = INTAB-SATZ-NAMEAUTOR.
COAS-USER6 = INTAB-SATZ-STAUTOR.
COAS-USER5 = INTAB-SATZ-DATUMAUTO.
COAS-USER2 = INTAB-SATZ-NAMEAUTOR.
COAS-USER7 = INTAB-SATZ-BEGINN.
COAS-USER8 = INTAB-SATZ-ENDE.

OBJNR = COAS-OBJNR.
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
CLASSTYPE = '013'
OBJECT = OBJNR
TABLES
T_CLASS = KLASSE
T_OBJECTDATA = KLADAT
EXCEPTIONS
OTHERS = 02.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'Klassifizierung fehlt'
EIN.
P_SUBRC = 04.
ELSE.
LOOP AT KLADAT.
CHECK KLADAT-AUSP1(1) NE '?'.
IF TXT_KKS = KLADAT-SMBEZ.
IF KKS NE KLADAT-AUSP1(2).
KKS = KLADAT-AUSP1(2).
P_UPDT = 'X'.
ENDIF.
ENDIF.

IF TXT_PGS = KLADAT-SMBEZ.
IF PGS NE KLADAT-AUSP1(2).
PGS = KLADAT-AUSP1(2).
P_UPDT = 'X'.
ENDIF.
IF TXT_BMS = KLADAT-SMBEZ.
IF BMS NE KLADAT-AUSP1(2).
BMS = KLADAT-AUSP1(2).
P_UPDT = 'X'.
ENDIF.
ENDIF.
ENDIF.
IF TXT_MASSN = KLADAT-SMBEZ.
IF MASSN NE KLADAT-AUSP1(3).
MASSN = KLADAT-AUSP1(3).
P_UPDT = 'X'.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
WHEN PLAN.
COAS-USER4 = INTAB-SATZ-PLANLEIST.
ENDCASE.
ENDFORM. " CHECK_AENDERUNGEN
*&---------------------------------------------------------------------*
*& Form CHECK_AENDERUNGEN_PLAN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_UPDT text *
*----------------------------------------------------------------------*
FORM CHECK_AENDERUNGEN_PLAN CHANGING P_UPDT.

IF INTAB-SATZ-PLANLEIST NE COAS-USER4.
COAS-USER4 = INTAB-SATZ-PLANLEIST.
P_UPDT = 'X'.
ENDIF.

ENDFORM. " CHECK_AENDERUNGEN_PLAN


*&---------------------------------------------------------------------*
*& Form GENERIERE_AENDERUNGEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GENERIERE_AENDERUNGEN.
PERFORM BEARBEITEN_DATUM CHANGING INTAB-SATZ-DATUMAUTO.
PERFORM BEARBEITEN_DATUM CHANGING INTAB-SATZ-BEGINN.
PERFORM BEARBEITEN_DATUM CHANGING INTAB-SATZ-ENDE.

PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0110'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-AUFNR'.
PERFORM BDC_FIELD USING 'COAS-AUFNR'
AUFTRAG.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
IF NOT INTAB-SATZ-TXT02 IS INITIAL.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TEXA'.
ELSE.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
ENDIF.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-KTEXT'.
PERFORM BDC_FIELD USING 'COAS-KTEXT'
INTAB-SATZ-TXT01.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0315AREA1'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA2'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
IF NOT INTAB-SATZ-TXT02 IS INITIAL.
PERFORM BDC_DYNPRO USING 'SAPLSTXX' '1100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TXBA'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(02)'
INTAB-SATZ-TXT02.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUT2'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0315AREA1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-KOSTV'.
PERFORM BDC_FIELD USING 'COAS-KOSTV'
KOSTL_AG.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA2'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0330AREA1'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0325AREA2'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0330AREA1'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0325AREA2'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-CYCLE'.
PERFORM BDC_FIELD USING 'COAS-CYCLE'
KOSTL_AG.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUT4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0330AREA1'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0325AREA2'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-CYCLE'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0300AREA1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-USER4'.
* perform bdc_field using 'COAS-USER0'
* ' '.
* perform bdc_field using 'COAS-USER5'
* ' '.
PERFORM BDC_FIELD USING 'COAS-USER1'
KOSTL_AN.
PERFORM BDC_FIELD USING 'COAS-USER2'
' '.
PERFORM BDC_FIELD USING 'COAS-USER7'
' '.
PERFORM BDC_FIELD USING 'COAS-USER3'
' '.
PERFORM BDC_FIELD USING 'COAS-USER8'
' '.
PERFORM BDC_FIELD USING 'COAS-USER4'
' '.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA2'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0300AREA1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-USER4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA2'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.

ENDFORM. " GENERIERE_AENDERUNGEN


*&---------------------------------------------------------------------*
*& Form KAUFMAENN_ABSCHLIESSEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM KAUFMAENN_ABSCHLIESSEN.
* kaufmaennisch abschliessen
REFRESH BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0110'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-AUFNR'.
PERFORM BDC_FIELD USING 'COAS-AUFNR'
AUFTRAG.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUT2'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-KTEXT'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0315AREA1'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA2'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PHS3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0330AREA1'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0325AREA2'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-WAERS'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0601AREA_FOR_601'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0330AREA1'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0325AREA2'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-WAERS'.
PERFORM BDC_FIELD USING 'COAS-WAERS'
'USD'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA3'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA4'.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPMKAUF'
& ' 0340AREA5'.

ENDFORM. " KAUFMAENN_ABSCHLIESSEN


*&---------------------------------------------------------------------*
*& Form TECHNISCH_ABSCHLIESSEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM TECHNISCH_ABSCHLIESSEN.
* technisch abschliessen
REFRESH BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0110'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-AUFNR'.
PERFORM BDC_FIELD USING 'COAS-AUFNR'
AUFTRAG.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
* PERFORM BDC_FIELD USING 'BDC_CURSOR'
* 'COAS-KTEXT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PHS2'.
PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0600'.
* PERFORM BDC_FIELD USING 'BDC_CURSOR'
* 'COAS-KTEXT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH'.
ENDFORM. " TECHNISCH_ABSCHLIESSEN
*&---------------------------------------------------------------------*
*& Form NUMBER-CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_AUFTRAG text *
* -->P_EIN-ART text *
* <--P_SUBRC text *
*----------------------------------------------------------------------*
FORM NUMBER-CHECK USING P_AUFTRAG
P_AUFART
CHANGING P_SUBRC.
CLEAR P_SUBRC.
SELECT SINGLE * FROM T003O WHERE AUART = P_AUFART.
IF SY-SUBRC > 0.
PERFORM APPEND_FEHLTAB USING
'Auftragsart aus SI nicht in T003O'
EIN.
P_SUBRC = 04.
EXIT.
ELSE.
IF T003O-AUTYP > 04.
PERFORM APPEND_FEHLTAB USING
'Auftragart keine co-Auftragsart'
EIN.
P_SUBRC = 04.
EXIT.
ENDIF.
ENDIF.
CALL FUNCTION 'NUMBER_CHECK'
EXPORTING
OBJECT = 'AUFTRAG'
NUMBER = P_AUFTRAG
NR_RANGE_NR = T003O-NUMKR
IMPORTING
RETURNCODE = ERROR
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING FTXT01 EIN. "fehler inder Nummernverg.
P_SUBRC = 04.
EXIT.
ENDIF.
IF ERROR NE SPACE.
PERFORM APPEND_FEHLTAB USING FTXT02 EIN. "auftragsnr. ungueltig
P_SUBRC = 04.
EXIT.
ENDIF.

ENDFORM. " NUMBER-CHECK


*&---------------------------------------------------------------------*
*& Form EVENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
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
* ENDIF.
*****delete by borag

* Auftraege input
*----------------
SELECT SINGLE * FROM ZSI_DATEIEN WHERE
ZSI_AUFGB = 'AUF'
AND ZSI_DATNR = '1'. "auftraege input
IF SY-SUBRC NE 0.
WRITE: / SY-DATUM,SY-UZEIT,'kein Eintrag Auftraege input (AUF/1)'.
ABBRUCH = 'J'.
ELSE.
P_FILE = ZSI_DATEIEN-ZSI_DATNAM.
ENDIF.

* Protokoll output
*----------------
SELECT SINGLE * FROM ZSI_DATEIEN WHERE
ZSI_AUFGB = 'AUF'
AND ZSI_DATNR = '2'. "Protokoll Output
IF SY-SUBRC NE 0.
WRITE: / SY-DATUM,SY-UZEIT,'kein Eintrag Protokoll Output(AUF/2)'.
ABBRUCH = 'J'.
ELSE.
O_FILE = ZSI_DATEIEN-ZSI_DATNAM.
ENDIF.
* Synchronisation
*----------------
SELECT SINGLE * FROM ZSI_DATEIEN WHERE
ZSI_AUFGB = 'RDIR'
AND ZSI_DATNR = '1'. "Protokoll Output
IF SY-SUBRC NE 0.
WRITE: / SY-DATUM,SY-UZEIT,'kein Eintrag Protokoll Synchr(RDIR/1)'.
ABBRUCH = 'J'.
ELSE.

CONCATENATE
ZSI_DATEIEN-ZSI_DATNAM PITAB-ZPID '.erg' INTO PARA_OUT_FILE.
ENDIF.
*-----------------------------------------------------------------------
ENDFORM. " EVENT
*&---------------------------------------------------------------------*
*& Form AUSGABE_RETOUREN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM AUSGABE_RETOUREN.
OPEN DATASET O_FILE FOR OUTPUT IN TEXT MODE.
IF SY-SUBRC NE 0.
WRITE: / 'Fehler beim open Dataset',O_FILE.
EXIT.
ENDIF.
AUSGABE(80) = STARTSATZ.
TRANSFER AUSGABE TO O_FILE.
LOOP AT TABF.
CLEAR AUSGABE.
AUSGABE(80) = TABF-FEHLER.
TRANSFER AUSGABE TO O_FILE.
ENDLOOP.
REFRESH TABF.
LOOP AT FEHLTAB.
CLEAR AUSGABE.
AUSGABE-SATZ = FEHLTAB-SATZ.
AUSGABE-FEHLER = FEHLTAB-FEHLER.
TRANSFER AUSGABE TO O_FILE.
IF NOT FEHLTAB-BEARBKZ IS INITIAL.
PERFORM FEHLER_PELSCHER USING FEHLTAB-FEHLER FEHLTAB-AUFTRAG
FEHLTAB-BEARBKZ.
ENDIF.
ENDLOOP.
REFRESH FEHLTAB.
CLEAR AUSGABE.
AUSGABE(80) = ENDESATZ.
break-point.
TRANSFER AUSGABE TO O_FILE.
CLEAR AUSGABE.
* AUSGABE(30) = 'Anzahl Startsatz............:'.
AUSGABE(30) = 'Number of start lines.........:'.
UNPACK Z_STARTSATZ TO AUSGABE+30(6).
TRANSFER AUSGABE TO O_FILE.
* AUSGABE(30) = 'Anzahl Endsatz..............:'.
AUSGABE(30) = 'Number of end lines...........:'.
UNPACK Z_ENDESATZ TO AUSGABE+30(6).
TRANSFER AUSGABE TO O_FILE.
* AUSGABE(30) = 'Anzahl Datens�tze insgesamt.:'.
AUSGABE(30) = 'Number of lines total.........:'.
UNPACK Z_EINGABE TO AUSGABE+30(6).
TRANSFER AUSGABE TO O_FILE.
* AUSGABE(30) = '--davon fehlerfrei..........:'.
AUSGABE(30) = '--without errors..............:'.
UNPACK Z_EINGABE_OK TO AUSGABE+30(6).
TRANSFER AUSGABE TO O_FILE.
* AUSGABE(30) = '--davon fehlerhaft..........:'.
AUSGABE(30) = '--with errors.................:'.
UNPACK Z_EINGABE_FEHL TO AUSGABE+30(6).
TRANSFER AUSGABE TO O_FILE.
CLEAR AUSGABE.

* AUSGABE(18) = 'Ende der Durchsage'.


AUSGABE(18) = 'End of information'.
TRANSFER AUSGABE TO O_FILE.
* AUSGABE(31) = 'Wir befinden uns im Mandanten:'.
AUSGABE(31) = 'Working in client:'.
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.
ENDFORM. " AUSGABE_RETOUREN
*---------------------------------------------------------------------*
* FORM AUSGABE_PARAMETER *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM AUSGABE_PARAMETER.
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.
CLOSE DATASET PARA_OUT_FILE.
IF SY-SUBRC NE 0.
WRITE: / 'Fehler beim CLOSE Dataset',PARA_OUT_FILE.
EXIT.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PARA_INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
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.
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-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 BEARBEITEN_DATUM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_INTAB-SATZ-USER5 text *
*----------------------------------------------------------------------*
FORM BEARBEITEN_DATUM CHANGING DATUM.
DATA Z_DATUM LIKE COAS-ERDAT.
IF DATUM = '00000000'.
DATUM = SPACE.
EXIT.
ENDIF.
IF DATUM IS INITIAL.
EXIT.
ENDIF.
Z_DATUM = DATUM.
IF Z_DATUM+4(4) => '1990' AND
Z_DATUM+4(4) <= '2099'.
EXIT.
ENDIF.
DATUM+4(4) = Z_DATUM(4).
DATUM+2(2) = Z_DATUM+4(2).
DATUM+0(2) = Z_DATUM+6(2).
ENDFORM. " BEARBEITEN_DATUM
*&---------------------------------------------------------------------*
*& Form SELECT-PRPS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SELECT-PRPS.
SELECT SINGLE * FROM PRPS WHERE POSID = INVESTNR.
* select count(*) from prps up to 1 rows where posid = investnr.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'ung�ltige INVESTNR(PSP-Element)'
EIN.
SUBRC = '04'.
ENDIF.

ENDFORM. " SELECT-PRPS


*&---------------------------------------------------------------------*
*& Form CHECK_AUFTRAG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_AUFTRAG.

SELECT SINGLE * FROM AUFK


WHERE AUFNR EQ AUFTRAG_ZI.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'Zielauftrag nicht vorhanden'
EIN.
SUBRC = 04.
ENDIF.
ENDFORM. " CHECK_AUFTRAG
*&---------------------------------------------------------------------*
*& Form AUFBEREITEN_PRPS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM AUFBEREITEN_PRPS.
PERFORM ERMITTELN_MASKE CHANGING INVESTNR.
TRANSLATE INVESTNR TO UPPER CASE.
CALL FUNCTION 'CONVERSION_EXIT_SPROJ_INPUT'
EXPORTING
INPUT = INVESTNR
IMPORTING
OUTPUT = INVESTNR
EXCEPTIONS
OTHERS = 1.

ENDFORM. " AUFBEREITEN_PRPS


*&---------------------------------------------------------------------*
*& Form CHECK_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_STATUS.
DATA OBJEKT LIKE AUFK-OBJNR VALUE 'OR '.
OBJEKT+2(12) = AUFTRAG.

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'.
PERFORM APPEND_FEHLTAB USING
'Auftrag schon abgeschlossen '
EIN.

SUBRC = 04.
ENDIF.

CALL FUNCTION 'STATUS_CHECK'


EXPORTING
OBJNR = OBJEKT
STATUS = CON_STAT_LOKZ
EXCEPTIONS
OBJECT_NOT_FOUND = 01
STATUS_NOT_ACTIVE = 02.
IF SY-SUBRC NE '02'.
PERFORM APPEND_FEHLTAB USING
'Auftrag schon geloescht'
EIN.
SUBRC = 04.
ENDIF.

ENDFORM. " CHECK_STATUS


*&---------------------------------------------------------------------*
*& Form ERMITTELN_MASKE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_INVESTNR text *
* -->P_RCWBS-EMASK text *
*----------------------------------------------------------------------*
FORM ERMITTELN_MASKE CHANGING P_INVESTNR.
DATA:KEY,
LAENGE(5),
INVESTNR LIKE EIN-INVESTNR,
MASKE LIKE RCWBS-EMASK.
DESCRIBE FIELD P_INVESTNR LENGTH LAENGE.
KEY = P_INVESTNR.
TRANSLATE KEY TO UPPER CASE.

SELECT SINGLE * FROM TCJED WHERE


PROID EQ KEY.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'Falsche PROJ-ID in Investnr.'
EIN.
SUBRC = 04.
* fehler einbauen
EXIT.
ENDIF.
MASKE(1) = TCJED-PROID.
MASKE+1 = TCJED-POSID.
INVESTNR = P_INVESTNR.
CLEAR P_INVESTNR.
ASSIGN: MASKE(1) TO <F1>,
P_INVESTNR(1) TO <F2>.
DO LAENGE TIMES.
IF <F1> EQ SPACE.
EXIT.
ENDIF.
IF <F1> EQ '-' OR
<F1> EQ '.'.
ELSE.
<F2> = <F1>.
ASSIGN <F2>+1 TO <F2>.
ENDIF.
ASSIGN <F1>+1 TO <F1>.
ENDDO.
ASSIGN: INVESTNR(1) TO <F1>,
P_INVESTNR(1) TO <F2>.
DO LAENGE TIMES.
IF <F1> EQ SPACE OR
<F2> EQ SPACE.
EXIT.
ENDIF.
<F2> = <F1>.
ASSIGN: <F1>+1 TO <F1>,
<F2>+1 TO <F2>.
ENDDO.
ENDFORM. " ERMITTELN_MASKE
*&---------------------------------------------------------------------*
*& Form CHECK_FREIGABE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PLANKOSTEN text *
* <--P_FREIGABE text *
*----------------------------------------------------------------------*
FORM CHECK_FREIGABE USING P_PLANKOSTEN
CHANGING P_FREIGABE.
DATA: DREHDAT LIKE SY-DATUM.
CLEAR: P_FREIGABE,FIRST.
DREHDAT(4) = INTAB-SATZ-DATUMAUTO+4(4).
DREHDAT+4(2) = INTAB-SATZ-DATUMAUTO+2(2).
DREHDAT+6(2) = INTAB-SATZ-DATUMAUTO+0(2).
SELECT * FROM T989Y WHERE
BUKRS EQ BUKRS
AND BLART EQ INTAB-SATZ-ART
AND DATUM LE DREHDAT.
FIRST = 'X'.
T989Y-GRENZE = T989Y / 100.
IF P_PLANKOSTEN LE T989Y-GRENZE.
P_FREIGABE = 'X'.
ENDIF.
EXIT.
ENDSELECT.
CHECK FIRST IS INITIAL.
SELECT * FROM T989Y WHERE
BUKRS EQ BUKRS
AND BLART EQ '++'
AND DATUM LE DREHDAT.
T989Y-GRENZE = T989Y-GRENZE / 100.
IF P_PLANKOSTEN LE T989Y-GRENZE.
P_FREIGABE = 'X'.
ENDIF.
EXIT.
ENDSELECT.

ENDFORM. " CHECK_FREIGABE


*&---------------------------------------------------------------------*
*& Form PLANUNG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PLANKOSTEN text *
*----------------------------------------------------------------------*
FORM PLANUNG .
IF KOKRS_GESETZT IS INITIAL.
AUS_AENDERUNG = 'X'.
PERFORM KOKRS_SETZEN.
CLEAR AUS_AENDERUNG.
ENDIF.
PERFORM CHECK_PLANLOESCH.
PERFORM PLANUNG_LOESCHEN.
REFRESH BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPLKPP0' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=CSUB'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KPP1B-FORPL'.
PERFORM BDC_FIELD USING 'KPP1B-FORPL'
'X'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KPP0B-VALUE(11)'.
PERFORM BDC_FIELD USING 'KPP0B-VALUE(01)'
'0'.
PERFORM BDC_FIELD USING 'KPP0B-VALUE(02)'
'001'.
PERFORM BDC_FIELD USING 'KPP0B-VALUE(03)'
'012'.
PERFORM BDC_FIELD USING 'KPP0B-VALUE(04)'
* intab-satz-beginn+4(4).
SY-DATUM(4).
PERFORM BDC_FIELD USING 'KPP0B-VALUE(06)'
AUFTRAG.
PERFORM BDC_FIELD USING 'KPP0B-VALUE(11)'
KOARGR-PLAN .
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPLKPP0'
& ' 1100APPLIKAT'.
PERFORM BDC_DYNPRO USING 'SAPLKPP2' '0112'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'BDC03(03)'.
PL8 = INTAB-SATZ-PLANSONST.
PERFORM BDC_FIELD USING 'BDC03(01)'
PL8.
PL8 = INTAB-SATZ-PLANLEIST.
PERFORM BDC_FIELD USING 'BDC03(02)'
PL8.
PL8 = INTAB-SATZ-PLANLIEF.
PERFORM BDC_FIELD USING 'BDC03(03)'
PL8.
PERFORM BDC_DYNPRO USING 'SAPLKPP2' '0112'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=CBUC'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'BDC03(03)'.

ENDFORM. " PLANUNG


*&---------------------------------------------------------------------*
*& Form KOKRS_SETZEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM KOKRS_SETZEN.
SET PARAMETER ID 'CAC' FIELD KOKRS.
KOKRS_GESETZT = 'X'.
EXIT.

IF NOT AUS_AENDERUNG IS INITIAL.


PERFORM BDC_DYNPRO USING 'SAPMKAUF' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KOKR'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COAS-AUART'.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPLSPO4' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=FURT'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'SVALD-VALUE(01)'.
PERFORM BDC_FIELD USING 'SVALD-VALUE(01)'
KOKRS.
KOKRS_GESETZT = 'X'.
ENDFORM. " KOKRS_SETZEN
*---------------------------------------------------------------------*
* FORM ERMITTELN_PLANKOSTEN *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM ERMITTELN_PLANKOSTEN.
PLANKOSTEN = INTAB-SATZ-PLANLEIST + INTAB-SATZ-PLANLIEF
+ INTAB-SATZ-PLANSONST.

ENDFORM. " ERMITTELN_PLANKOSTEN


*---------------------------------------------------------------------*
* FORM FEHLER_PELSCHER *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> P_FEHLTAB_FEHLER *
* --> P_FEHLTAB_AUFTRAG *
* --> P_FEHLTAB_BEARBKZ *
*---------------------------------------------------------------------*
FORM FEHLER_PELSCHER USING P_FEHLTAB_FEHLER
P_FEHLTAB_AUFTRAG
P_FEHLTAB_BEARBKZ.
TPELSCH-FTEXT = P_FEHLTAB_FEHLER.
TPELSCH-AUFTRAG = P_FEHLTAB_AUFTRAG.
TPELSCH-DATUM = SY-DATUM.
TPELSCH-UHRZEIT = ANF-UZEIT.
IF X-AUFTRAG NE P_FEHLTAB_AUFTRAG.
X-ZEILE = '001'.
X-AUFTRAG = P_FEHLTAB_AUFTRAG.
ELSE.
X-ZEILE = X-ZEILE + '001'.
ENDIF.
TPELSCH-ZEILE = X-ZEILE.
APPEND TPELSCH.

ENDFORM. " FEHLER_PELSCHER


*---------------------------------------------------------------------*
* FORM AUSGABE_T950F *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM AUSGABE_T950F.
LOOP AT TPELSCH.
INSERT T950F FROM TPELSCH.
ENDLOOP.

ENDFORM. " AUSGABE_T950F


*&---------------------------------------------------------------------*
*& Form CHECK-OBLIGO
*&---------------------------------------------------------------------*
FORM CHECK-OBLIGO.
DATA OBJEKT LIKE AUFK-OBJNR VALUE 'OR '.
OBJEKT+2(12) = AUFTRAG.
CLEAR SUBRC.

SELECT * FROM COSP WHERE


LEDNR = '000'
AND OBJNR = OBJEKT
AND WRTTP BETWEEN '21' AND '26'.
IF SUBRC NE 0.
EXIT.
ENDIF.
ASSIGN COSP-MEG001 TO <F1>.
DO .
IF <F1> GT 0.
SUBRC = 04.
EXIT.
ENDIF.
IF SY-INDEX = 16.
EXIT.
ENDIF.
ASSIGN <F1>+LNG_MEG001N TO <F1>.
ENDDO.
ENDSELECT.
IF SUBRC NE 0.
PERFORM CHECK_BESTELLUNG.
CHECK NOT FOBLIGO IS INITIAL.
PERFORM APPEND_FEHLTAB USING
'Auftrag hat noch ein Obligo '
EIN.
SUBRC = 04.
ENDIF.

ENDFORM. " CHECK-OBLIGO


*&---------------------------------------------------------------------*
*& Form CHECK_PLANL�SCH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_PLANLOESCH.

REFRESH PLANLOESCH.
OBJNR = 'OR'.
OBJNR+2(12) = AUFTRAG.
PERFORM SELECT_PLANUNG USING KSTAR_PLAN1.
PERFORM SELECT_PLANUNG USING KSTAR_PLAN2.
PERFORM SELECT_PLANUNG USING KSTAR_PLAN3.

ENDFORM. " CHECK_PLANL�SCH


*&---------------------------------------------------------------------*
*& Form SELECT_COSP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_KSTAR_PLAN1 text *
* -->P_PLANJAHR text *
*----------------------------------------------------------------------*
FORM SELECT_COSP USING P_KSTAR_PLAN P_PLANJAHR.
SELECT * FROM COSP
WHERE LEDNR = '00'
AND OBJNR = OBJNR
AND GJAHR = P_PLANJAHR
AND WRTTP = WRTTP_PLANUNG
AND VERSN = '000'
AND KSTAR = P_KSTAR_PLAN.
ENDSELECT.
ENDFORM. " SELECT_COSP
*&---------------------------------------------------------------------*
*& Form PLANUNG_LOESCHEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PLANUNG_LOESCHEN.
LOOP AT PLANLOESCH.
PERFORM BDC_DYNPRO USING 'SAPLKPP0' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=CSUB'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KPP1B-FORPL'.
PERFORM BDC_FIELD USING 'KPP1B-FORPL'
'X'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KPP0B-VALUE(11)'.
PERFORM BDC_FIELD USING 'KPP0B-VALUE(01)'
'0'.
PERFORM BDC_FIELD USING 'KPP0B-VALUE(02)'
'001'.
PERFORM BDC_FIELD USING 'KPP0B-VALUE(03)'
'012'.
PERFORM BDC_FIELD USING 'KPP0B-VALUE(04)'
PLANLOESCH-GJAHR.
PERFORM BDC_FIELD USING 'KPP0B-VALUE(06)'
AUFTRAG.
PERFORM BDC_FIELD USING 'KPP0B-VALUE(11)'
KOARGR-PLAN .
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SAPLKPP0'
& ' 1100APPLIKAT'.
PERFORM BDC_DYNPRO USING 'SAPLKPP2' '0112'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'BDC03(03)'.
CLEAR PL8.
PERFORM BDC_FIELD USING 'BDC03(01)'
PL8.
PERFORM BDC_FIELD USING 'BDC03(02)'
PL8.
PERFORM BDC_FIELD USING 'BDC03(03)'
PL8.
PERFORM BDC_DYNPRO USING 'SAPLKPP2' '0112'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=CBUC'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'BDC03(03)'.
ENDLOOP.
LOOP AT BDCDATA.
PERFORM CALL_TRANSACTION USING TRANSACTION_PLAN.
EXIT.
ENDLOOP.
ENDFORM. " PLANUNG_LOESCHEN
*&---------------------------------------------------------------------*
*& Form SELECT_PLANUNG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SELECT_PLANUNG USING P_KSTAR .
PLANJAHR = BEGINN_JAHR.
DO.
PERFORM SELECT_COSP USING P_KSTAR PLANJAHR.
IF SY-SUBRC = 0.
PLANLOESCH-GJAHR = PLANJAHR.
COLLECT PLANLOESCH.
ENDIF.
PLANJAHR = PLANJAHR + '1'.
IF PLANJAHR GT SY-DATUM(4).

EXIT.
ENDIF.
ENDDO.

ENDFORM. " SELECT_PLANUNG


*&---------------------------------------------------------------------*
*& Form check_auftrag1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_AUFTRAG1.
PERFORM READ_AUFTRAG USING AUFTRAG.
IF SY-SUBRC NE 0.
PERFORM APPEND_FEHLTAB USING
'Auftrag nicht vorhanden'
EIN.
SUBRC = 04.
ENDIF.
ENDFORM. " check_auftrag1

*&---------------------------------------------------------------------*
*& Form check_bestellung
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_BESTELLUNG.
CLEAR FOBLIGO.
SELECT * FROM EKKN
WHERE AUFNR EQ AUFTRAG.
SELECT * FROM EKPO
WHERE EBELN EQ EKKN-EBELN
AND EBELP EQ EKKN-EBELP.
IF EKPO-EREKZ IS INITIAL.
FOBLIGO = 'X'.
EXIT.
ENDIF.
ENDSELECT.
ENDSELECT.

ENDFORM. " check_bestellung

Das könnte Ihnen auch gefallen