Sie sind auf Seite 1von 12

*title CO-Planung (Generiererversion vom 01.04.

1994)
*---------------------------------------------------------------------*
*
Beteiligte Dimensionen
*
---------------------*
KSTAR Cost Element
*
VERSN Version
*
GJAHR Fiscal Year
*
KOSTL Cost Center
* Dimensionsverwendung:
* P12A05000001
*
*
*
*
*---------------------------------------------------------------------*
REPORT COCC1001 MESSAGE-ID K9.
*---------------------------------------------------------------------*
*
Generiert von : PWCCO
*
Datum
: 12082008
*
Zeit
: 141542
*---------------------------------------------------------------------*
* Variablen
*ATA: ZEIT_FROM LIKE RKPLN-PERBL,
*
ZEIT_TO
LIKE RKPLN-PERBL.
* Feldleisten
* Feldleiste Planungsobjekt (Key von ITOBJECT und ITDAT1)
DATA: BEGIN OF OBJECT ,
KOSTL LIKE CCSS-KOSTL, "C000020"Cost Center
END OF OBJECT.
* Tabelle der Ausprgungen + Attribute
DATA: BEGIN OF ITAUSPR_FIX.
INCLUDE STRUCTURE KPP0A.
*
Attribute der Dim. "WERTE"
DATA: UATTR_EHT
LIKE KPP0U-UATTR,
"Attributnr. zur Einheit
UATTR_AZ_EHT LIKE KPP0U-UATTR,
"Attributnr. zur Anzeige Eht
UATTR_SIGN LIKE KPP0U-UATTR,
"Attributnr. zum Vorzeichen
MWKZ
LIKE KPP0L-MWKZ,
"Kz.: Feld ist Menge/Whrung
INTLEN
LIKE KPP0DD-INTLEN, "Interne Lnge
OUTPUTLEN
LIKE KPP0DD-OUTPUTLEN,"Ausgabelnge
INTTYPE
LIKE KPP1L-INTTYPE, "Interner Typ
DATATYPE
LIKE KPP1L-DATATYPE, "Dictionary Datentyp
INIVAL
LIKE KPP1L-INIVAL,
"Initialwert des DB-Feldes
F1_FIELDNAME LIKE KPP0D-FIELDNAME, "Feldname fr F1-Hilfe
ACHECK(1)
TYPE C,
"Kz.:Spezieller Appl.-Check
END OF ITAUSPR_FIX.
DATA: BEGIN OF ITAUSPR OCCURS 0.
INCLUDE STRUCTURE ITAUSPR_FIX.
*
Daten Userfelder
DATA: OBJNR LIKE CSKS-OBJNR, "C000044"Object number
KWAER LIKE TKA01-WAERS, "C000010"Currency
BWAER LIKE CCSS-KWAER, "C000010"COarea currency
UDUMMY LIKE KPP1B-UNIT, "C000012"Unit
END OF ITAUSPR.
* Key von ITAUSPR "=KPP0A_KEY aus KPPXI003

* Tabelle der Planungsobjekte + Attribute


DATA: BEGIN OF ITDAT1 OCCURS 0,
*
Schlssel
KOSTL LIKE CCSS-KOSTL, "C000020"Cost Center
*
Daten Userfelder
TXFLG LIKE COKP-TXFLG, "C000002"Text exists
TXTUP LIKE RKPLN-TXTUP, "C000002"Text changed
OBJNR LIKE COSS-OBJNR, "C000044"Object number
WRTTP LIKE COKP-WRTTP, "C000004"Value Type
VRGNG LIKE COKP-VRGNG, "C000008"Bus.Transaction
PLGKZ LIKE CCSS-PLGKZ, "C000002"Plan line items
PLINT LIKE CCSS-PLINT, "C000002"Integ. planning
PSTAT LIKE RKPLN-PSTAT, "C000002"
DPLUP LIKE RKPLN-DPLUP, "C000002"DetailPl chngd
MEINH LIKE COKA-MEINH, "C000006"Unit of Measure
I_MEINH LIKE KPP0A-INPUT, "C000001"Input-Flag zum Attri
MEINH_OLD LIKE COKA-MEINH, "C000006"Unit of Measure
MGEFL LIKE COKA-MGEFL, "C000002"Record Quantity
I_MGEFL LIKE KPP0A-INPUT, "C000001"Input-Flag zum Attri
EIGEN LIKE COKA-EIGEN, "C000016"Attribute mix
I_EIGEN LIKE KPP0A-INPUT, "C000001"Input-Flag zum Attri
KALNR LIKE COKP-KALNR, "N000024"Costing number
WSWTE LIKE RKPLN-WSWTE, "C000002"Valuation type
USPOB LIKE COSS-USPOB, "C000044"Source Object
BEKNZ LIKE COSS-BEKNZ, "C000002"DrCr indicator
TWAER LIKE COSS-TWAER, "C000010"Trans. Currency
KSTAR LIKE COKL-VKSTA, "C000020"Alloc. CElem
ADRSS LIKE RK70K-ADRSS, "C000064"Memory ID EI
KKART LIKE RK70K-KKART, "C000008"Costing Variant
DPLEX LIKE RKPLN-DPLEX, "C000002"DetailPl avail.
ICOKA LIKE RKPLN-ICOKA, "C000002"
PLICC LIKE CCSS-PLICC, "C000002"IP w. CCAABC
VPDIO LIKE CCSS-VPDIO, "C000006"Version for IAA
SWAER LIKE CCSS-SWAER, "C000010"Object Currency
OWAER LIKE CSKS-WAERS, "C000010"Currency
KATYP LIKE CSKB-KATYP, "C000004"CElem category
RWAER LIKE TKA01-WAERS, "C000010"Currency
RZTYP LIKE COKP-RZTYP, "C000002"Dependency Type
I_RZTYP LIKE KPP0A-INPUT, "C000001"Input-Flag zum Attri
RZVAR LIKE KRZVAR-RZVAR, "C000012"Depend.SType
I_RZVAR LIKE KPP0A-INPUT, "C000001"Input-Flag zum Attri
RZVEH LIKE KRZVAR-MEINH, "C000006"Unit of measure
TXTUPL LIKE RKPLN-TXTUPL, "C000064"Text Upload
I_TXTUPL LIKE KPP0A-INPUT, "C000001"Input-Flag zum Attri
*
Daten feste Felder
&STATUS(1),
"Satzstatus
* Status: 1 = vernderter Satz, war schon auf der Datenbank
(3 -> 1)
*
2 = vernderter Satz, war vorher nicht auf Datenbank (4 -> 2)
*
3 = unvernderter Satz, war schon auf der Datenbank
*
4 = unvernderter Satz, ist noch nicht auf der Datenbank
&INPUT LIKE KPP0A-INPUT, "Eingabebereitschaft
END OF ITDAT1.
* Tabelle der Planungsobjekte + Dim."Werte" + Attribute
DATA: BEGIN OF ITDAT2 OCCURS 0,
*
Schlssel
KOSTL LIKE CCSS-KOSTL, "C000020"Cost Center
&KKENNZAHL LIKE KPP0D-FIELDNAME, "C000030"Feldgr./Wertk
*
Daten Userfelder
SPRED LIKE SPRED_APPLI-SPRED, "C000008"Distribution key

ACTION LIKE RGPLN-ACTION, "C000002"Action


KURST LIKE TKA07-KURST, "C000008"Exch. Rate Type
PLDAT LIKE TKA07-PLDAT, "D000016"Value Date
*
Daten feste Felder
&STATUS(1), "Satzstatus
&INPUT LIKE KPP0A-INPUT, "Eingabebereitschaft
&MODIFY LIKE KPP0A-INPUT, "Modifizierbarkeit
END OF ITDAT2.
* Key von ITDAT2
* Anmerkung: Die Definition des Keys mu hinter der Tabelle sein,
* damit der Aufbau der Nametab funktioniert !!!!
DATA: BEGIN OF ITDAT2_KEY.
INCLUDE STRUCTURE OBJECT.
DATA: &KKENNZAHL LIKE KPP0D-FIELDNAME, "C000030"Feldgr./Wertk
END OF ITDAT2_KEY.
* Tabelle der Planungsobjekte + Dim."Werte" + Dim."Zeit" + Attribute
DATA: BEGIN OF ITDAT3 OCCURS 0,
*
Schlssel
KOSTL LIKE CCSS-KOSTL, "C000020"Cost Center
&KKENNZAHL LIKE KPP0D-FIELDNAME, "C000030"Feldgr./Wertk
PERBL LIKE RKPLN-PERBL, "N000006"Zeiteinheit
*
Daten feste Felder
&VALUE LIKE KPP0B-VALUE,
"Wert-/Mengenfeld
&DUMMY(1) TYPE C,
"Kz: Dummy-Eintrag
&MODIFY LIKE KPP1L-MODIFY,"Vernderbarkeit f. period.Formeln
* vgl. auch Kommentar im GD01 bei den anderen Tabellen der period.Form.
END OF ITDAT3.
* Key von ITDAT3
* Anmerkung: Die Definition des Keys mu hinter der Tabelle sein,
* damit der Aufbau der Nametab funktioniert !!!!
DATA: BEGIN OF ITDAT3_KEY.
INCLUDE STRUCTURE OBJECT.
DATA: &KKENNZAHL LIKE KPP0D-FIELDNAME, "C000030"Feldgr./Wertk
PERBL LIKE RKPLN-PERBL, "N000006"Zeiteinheit
END OF ITDAT3_KEY.
* Schlssel fr Zugriff mit Binary Search beim Aufbau des Kopfes n
DATA: BEGIN OF ITDAT_HDKEY,
KOSTL LIKE CCSS-KOSTL, "C000020"Cost Center
END OF ITDAT_HDKEY.
* Schlssel fr Zugriff mit Binary Search beim Aufbau der FSpalten
DATA: BEGIN OF ITDAT_LCKEY,
KOSTL LIKE CCSS-KOSTL, "C000020"Cost Center
END OF ITDAT_LCKEY.
* Tabelle mit den Zeilenausprgungen
DATA: BEGIN OF ITROW OCCURS 0,
ROW LIKE KPP1LG-ROW,
END OF ITROW.

"N000004"Zeile

* Tabelle mit den Zeilenausprgungen zur Sortierung


DATA: BEGIN OF ITROW_SORT OCCURS 0,
DUMMY LIKE SYST-BATCH, "000000"Dummy Feld wg. Synta
END OF ITROW_SORT.
* Tabelle mit den SpaltenAusprgungen
DATA: BEGIN OF ITCOL OCCURS 0,
COL LIKE KPP1LG-COL,

"N000004"Spalte

&KKENNZAHL LIKE KPP0D-FIELDNAME, "C000030"Feldgr._Wertk.


END OF ITCOL.
* Rangestabellen
RANGES R_KOSTL FOR CCSS-KOSTL. "Cost Center
RANGES R__KKENNZAHL FOR KPP0D-FIELDNAME. "Feldgr./Wertk.
RANGES R_PERBL FOR RKPLN-PERBL. "Zeiteinheit
DATA:
NO_APPEND_KOSTL(1),
"Cost Center
NO_APPEND_DUMMY.
"Wg. Syntax

* Allgemeine Konstanten
INCLUDE KPPXI001.
* Allgemeine Variablen
INCLUDE KPPXI002.
* Allgemeine Typen
INCLUDE KPPXI003.
* Variablen
INCLUDE KPP0GD01.
* Common-Part Planungsprozessor FBaustein <--> generierter Report
INCLUDE KPP0COMM.
* Extern aufgerufene (nichtgenerierte) Formroutinen
INCLUDE KPP0GE00.
INCLUDE KPP0GE01.
INCLUDE KPP0GE02.
INCLUDE KPP0GE03.
INCLUDE KPP0GE04.
* Intern aufgerufene (nichtgenerierte) Formroutinen
INCLUDE KPP0GI00.
INCLUDE KPP0GI01.
INCLUDE KPP0GI02.
INCLUDE KPP0GI03.
* Applikationsspezifische Exits
INCLUDE RKCCAI01.
* Extern aufgerufene (generierte) Formroutinen
*---------------------------------------------------------------------*
*
FORM EC300_REFRESH_RANGES
*---------------------------------------------------------------------*
*
Intialisieren smtlicher Rangestabellen
*---------------------------------------------------------------------*
FORM EC300_REFRESH_RANGES.
REFRESH R_KOSTL.
REFRESH R__KKENNZAHL.
REFRESH R_PERBL.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM EC301_KOSTL
*---------------------------------------------------------------------*
*
Fllen einer Zeile in die Ranges-Tabelle fr
*
Feld Cost Center
*---------------------------------------------------------------------*
* --> EC301_REFR
Kz: Ranges-Tabelle vorher intialisieren
* --> EC301_OPTION Option
* --> EC301_LOW
Low-Wert
* --> EC301_HIGH
High-Wert

* <-- R_KOSTL
*---------------------------------------------------------------------*
FORM EC301_KOSTL USING EC301_REFR TYPE CHAR1
EC301_OPTION TYPE OPT
EC301_LOW
TYPE VALUE
EC301_HIGH TYPE VALUE.
IF NOT EC301_REFR IS INITIAL.
REFRESH R_KOSTL.
CLEAR NO_APPEND_KOSTL.
ENDIF.
IF EC301_LOW = AUSPR_GEN.
NO_APPEND_KOSTL = 'X'.
REFRESH R_KOSTL.
ENDIF.
CHECK NO_APPEND_KOSTL IS INITIAL.
R_KOSTL-SIGN = 'I'.
R_KOSTL-OPTION = EC301_OPTION.
R_KOSTL-LOW
= EC301_LOW.
R_KOSTL-HIGH = EC301_HIGH.
APPEND R_KOSTL.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM EC301_&KKENNZAHL
*---------------------------------------------------------------------*
*
Fllen einer Zeile in die Ranges-Tabelle fr
*
Feld Feldgr./Wertk.
*---------------------------------------------------------------------*
* --> EC301_REFR
Kz: Ranges-Tabelle vorher intialisieren
* --> EC301_OPTION Option
* --> EC301_LOW
Low-Wert
* --> EC301_HIGH
High-Wert
* <-- R_&KKENNZAHL
*---------------------------------------------------------------------*
FORM EC301__KKENNZAHL
USING EC301_REFR TYPE CHAR1
EC301_OPTION TYPE OPT
EC301_LOW
TYPE VALUE
EC301_HIGH TYPE VALUE.
IF NOT EC301_REFR IS INITIAL.
REFRESH R__KKENNZAHL.
ENDIF.
R__KKENNZAHL-SIGN = 'I'.
R__KKENNZAHL-OPTION = EC301_OPTION.
R__KKENNZAHL-LOW
= EC301_LOW.
R__KKENNZAHL-HIGH = EC301_HIGH.
APPEND R__KKENNZAHL.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM EC301_PERBL
*---------------------------------------------------------------------*
*
Fllen einer Zeile in die Ranges-Tabelle fr
*
Feld Zeiteinheit
*---------------------------------------------------------------------*
* --> EC301_REFR
Kz: Ranges-Tabelle vorher intialisieren
* --> EC301_OPTION Option
* --> EC301_LOW
Low-Wert
* --> EC301_HIGH
High-Wert
* <-- R_PERBL

*---------------------------------------------------------------------*
FORM EC301_PERBL
USING EC301_REFR TYPE CHAR1
EC301_OPTION TYPE OPT
EC301_LOW
TYPE VALUE
EC301_HIGH TYPE VALUE.
IF NOT EC301_REFR IS INITIAL.
REFRESH R_PERBL.
ENDIF.
R_PERBL-SIGN = 'I'.
R_PERBL-OPTION = EC301_OPTION.
R_PERBL-LOW
= EC301_LOW.
R_PERBL-HIGH = EC301_HIGH.
APPEND R_PERBL.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM EC302_LOOP_AT_ITDAT3
*---------------------------------------------------------------------*
*
Suchen von Eintrgen in ITDAT3-Tabelle
*---------------------------------------------------------------------*
* <-> EC302_DDDRI Tabelle mit Kombi. von datg. Objektdimensionen
* <-- EC302_DUMMY Kz.: gefundener Eintrag ist Dummy-Eintrag
* <-- EC302_SUBRC Returncode 0:richtigen Daten3-Eintrag gefunden
*
4:Daten1+Dummy-Daten3
*
8:kein Daten1+Dummy-Daten3
*
12:kein Daten3
*---------------------------------------------------------------------*
FORM EC302_LOOP_AT_ITDAT3 TABLES EC302_DDDRI STRUCTURE AUSPR_STRUC
USING EC302_DUMMY TYPE
CHAR1
EC302_SUBRC TYPE
SUBRC.
*
LOCAL SAVE_SUBRC.

*
*
*
*

LOOP AT ITDAT3 WHERE


KOSTL IN R_KOSTL AND
&KKENNZAHL IN R__KKENNZAHL AND
PERBL IN R_PERBL.
CHECK ITDAT3-&DUMMY IS INITIAL.
EXIT.
ENDLOOP.
SAVE_SUBRC = SY-SUBRC.
Test, ob Daten3-Eintrag gefunden
IF SAVE_SUBRC = 0.
ja, Eintrag gefunden
EC302_DUMMY = ITDAT3-&DUMMY.
Kombination zur Verfgung stellen
DESCRIBE TABLE EC302_DDDRI LINES SY-TFILL.
IF SY-TFILL > 0.
Pro Eintrag in EC302_DDDRI den Feldinhalt aus ITDAT3 bereitstellen
LOOP AT EC302_DDDRI.
ASSIGN COMPONENT EC302_DDDRI-FIELDNAME OF STRUCTURE ITDAT3
TO <HELP_VALUE>.
IF SY-SUBRC > 0.
RAISE PROGRAM_ERROR.
ENDIF.
Suchen Eintrag in ITAUSPR zum Wertfeld
LOOP AT ITAUSPR WHERE FIELDNAME EQ EC302_DDDRI-FIELDNAME
AND VALUE
EQ <HELP_VALUE>.
EC302_DDDRI = ITAUSPR.

MODIFY EC302_DDDRI.
EXIT.
ENDLOOP.
IF SY-SUBRC > 0.
*
kein Eintrag in Auspr.tab., obwohl Wert in ITDAT3
RAISE PROGRAM_ERROR.
ENDIF.
ENDLOOP.
ENDIF. "SY-TFILL > 0
* Test, ob Dummy-Eintrag gefunden
IF NOT EC302_DUMMY IS INITIAL.
*
ja
*
Test, ob Daten1-Eintrag existiert
LOOP AT ITDAT1 WHERE
KOSTL IN R_KOSTL .
EXIT.
ENDLOOP.
IF SY-SUBRC = 0.
EC302_SUBRC = EC302_SUBRC_DAT1_DUMMY_DAT3.
ELSE.
EC302_SUBRC = EC302_SUBRC_NO_DAT1_DUMMY_DAT3.
ENDIF.
ELSE.
*
nein, richtiger Daten3
EC302_SUBRC = EC302_SUBRC_DAT3.
ENDIF. "Test, ob Dummy-Eintrag gefunden
ELSE.
* nein
CLEAR EC302_DUMMY.
EC302_SUBRC = EC302_SUBRC_NO_DAT3.
ENDIF. "Daten3-Eintrag gefunden
ENDFORM.
*---------------------------------------------------------------------*
*
FORM EC303_MEINH
*---------------------------------------------------------------------*
*
Update von Daten1-Attributen, die nur Teilkey besitzen
*
Es werden alle diejenigen Daten1-Eintrge upgedatet,
*
die den gleichen Teilschlssel wie der Daten1-Satz, der
*
durch das ndern des Attributs MEINH zuerst in der
*
ATR-Kette upgedatet wurde, haben
*---------------------------------------------------------------------*
* --> EC303_ROW
Zeilennr. der aktuellen ATR-Kette
* --> EC303_COL
Spaltennr. der aktuellen ATR-Kette
* --> EC303_UATTR Attributnr.
*---------------------------------------------------------------------*
FORM EC303_MEINH
USING EC303_ROW TYPE ROW
EC303_COL TYPE COL
EC303_UATTR TYPE UATTR.
* Variablen
DATA: ITDAT1_TABIX LIKE SY-TABIX,
SAVE_MEINH LIKE ITDAT1-MEINH,
SUBRC_DIM_IN_KEY LIKE SY-SUBRC,
SUBRC_UPD_ITDAT1 LIKE SY-SUBRC.
* Feldleisten
DATA: SAVE_OBJECT LIKE OBJECT.
* Feststellen, ob die identifizierenden Dim. berhaupt im Schlssel
PERFORM IC026_CHECK_KEY_FOR_UATTR_DAT1 USING EC303_UATTR

SUBRC_DIM_IN_KEY.
* Lesen des orginal vernderten ITDAT1-Eintrages
PERFORM IC025_READ_ITDAT1_FOR_ROW_COL USING EC303_ROW
EC303_COL
ITDAT1_TABIX.
* Merken Schlssel + neuer Attributwert
SAVE_OBJECT = ITDAT1.
SAVE_MEINH = ITDAT1-MEINH.
*
LOOP AT ITDAT1.
OBJECT = ITDAT1.
CHECK OBJECT NE SAVE_OBJECT.
* Test, ob alle ITDAT1-Eintrge mit neuem Attributwert zu versorgen
IF SUBRC_DIM_IN_KEY = 0.
*
nein -> Test: ITDAT1-Satz upzudaten
PERFORM IC026_CHECK_UPD_FOR_UATTR_DAT1 USING EC303_UATTR
SAVE_OBJECT
OBJECT
SUBRC_UPD_ITDAT1.
CHECK SUBRC_UPD_ITDAT1 = 0.
ENDIF.
ITDAT1-MEINH = SAVE_MEINH.
MODIFY ITDAT1.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM EC303_MGEFL
*---------------------------------------------------------------------*
*
Update von Daten1-Attributen, die nur Teilkey besitzen
*
Es werden alle diejenigen Daten1-Eintrge upgedatet,
*
die den gleichen Teilschlssel wie der Daten1-Satz, der
*
durch das ndern des Attributs MGEFL zuerst in der
*
ATR-Kette upgedatet wurde, haben
*---------------------------------------------------------------------*
* --> EC303_ROW
Zeilennr. der aktuellen ATR-Kette
* --> EC303_COL
Spaltennr. der aktuellen ATR-Kette
* --> EC303_UATTR Attributnr.
*---------------------------------------------------------------------*
FORM EC303_MGEFL
USING EC303_ROW TYPE ROW
EC303_COL TYPE COL
EC303_UATTR TYPE UATTR.
* Variablen
DATA: ITDAT1_TABIX LIKE SY-TABIX,
SAVE_MGEFL LIKE ITDAT1-MGEFL,
SUBRC_DIM_IN_KEY LIKE SY-SUBRC,
SUBRC_UPD_ITDAT1 LIKE SY-SUBRC.
* Feldleisten
DATA: SAVE_OBJECT LIKE OBJECT.
* Feststellen, ob die identifizierenden Dim. berhaupt im Schlssel
PERFORM IC026_CHECK_KEY_FOR_UATTR_DAT1 USING EC303_UATTR
SUBRC_DIM_IN_KEY.
* Lesen des orginal vernderten ITDAT1-Eintrages
PERFORM IC025_READ_ITDAT1_FOR_ROW_COL USING EC303_ROW
EC303_COL
ITDAT1_TABIX.
* Merken Schlssel + neuer Attributwert
SAVE_OBJECT = ITDAT1.
SAVE_MGEFL = ITDAT1-MGEFL.

*
LOOP AT ITDAT1.
OBJECT = ITDAT1.
CHECK OBJECT NE SAVE_OBJECT.
* Test, ob alle ITDAT1-Eintrge mit neuem Attributwert zu versorgen
IF SUBRC_DIM_IN_KEY = 0.
*
nein -> Test: ITDAT1-Satz upzudaten
PERFORM IC026_CHECK_UPD_FOR_UATTR_DAT1 USING EC303_UATTR
SAVE_OBJECT
OBJECT
SUBRC_UPD_ITDAT1.
CHECK SUBRC_UPD_ITDAT1 = 0.
ENDIF.
ITDAT1-MGEFL = SAVE_MGEFL.
MODIFY ITDAT1.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM EC303_EIGEN
*---------------------------------------------------------------------*
*
Update von Daten1-Attributen, die nur Teilkey besitzen
*
Es werden alle diejenigen Daten1-Eintrge upgedatet,
*
die den gleichen Teilschlssel wie der Daten1-Satz, der
*
durch das ndern des Attributs EIGEN zuerst in der
*
ATR-Kette upgedatet wurde, haben
*---------------------------------------------------------------------*
* --> EC303_ROW
Zeilennr. der aktuellen ATR-Kette
* --> EC303_COL
Spaltennr. der aktuellen ATR-Kette
* --> EC303_UATTR Attributnr.
*---------------------------------------------------------------------*
FORM EC303_EIGEN
USING EC303_ROW TYPE ROW
EC303_COL TYPE COL
EC303_UATTR TYPE UATTR.
* Variablen
DATA: ITDAT1_TABIX LIKE SY-TABIX,
SAVE_EIGEN LIKE ITDAT1-EIGEN,
SUBRC_DIM_IN_KEY LIKE SY-SUBRC,
SUBRC_UPD_ITDAT1 LIKE SY-SUBRC.
* Feldleisten
DATA: SAVE_OBJECT LIKE OBJECT.
* Feststellen, ob die identifizierenden Dim. berhaupt im Schlssel
PERFORM IC026_CHECK_KEY_FOR_UATTR_DAT1 USING EC303_UATTR
SUBRC_DIM_IN_KEY.
* Lesen des orginal vernderten ITDAT1-Eintrages
PERFORM IC025_READ_ITDAT1_FOR_ROW_COL USING EC303_ROW
EC303_COL
ITDAT1_TABIX.
* Merken Schlssel + neuer Attributwert
SAVE_OBJECT = ITDAT1.
SAVE_EIGEN = ITDAT1-EIGEN.
*
LOOP AT ITDAT1.
OBJECT = ITDAT1.
CHECK OBJECT NE SAVE_OBJECT.
* Test, ob alle ITDAT1-Eintrge mit neuem Attributwert zu versorgen
IF SUBRC_DIM_IN_KEY = 0.
*
nein -> Test: ITDAT1-Satz upzudaten
PERFORM IC026_CHECK_UPD_FOR_UATTR_DAT1 USING EC303_UATTR

SAVE_OBJECT
OBJECT
SUBRC_UPD_ITDAT1.
CHECK SUBRC_UPD_ITDAT1 = 0.
ENDIF.
ITDAT1-EIGEN = SAVE_EIGEN.
MODIFY ITDAT1.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM EC303_SWAER
*---------------------------------------------------------------------*
*
Update von Daten1-Attributen, die nur Teilkey besitzen
*
Es werden alle diejenigen Daten1-Eintrge upgedatet,
*
die den gleichen Teilschlssel wie der Daten1-Satz, der
*
durch das ndern des Attributs SWAER zuerst in der
*
ATR-Kette upgedatet wurde, haben
*---------------------------------------------------------------------*
* --> EC303_ROW
Zeilennr. der aktuellen ATR-Kette
* --> EC303_COL
Spaltennr. der aktuellen ATR-Kette
* --> EC303_UATTR Attributnr.
*---------------------------------------------------------------------*
FORM EC303_SWAER
USING EC303_ROW TYPE ROW
EC303_COL TYPE COL
EC303_UATTR TYPE UATTR.
* Variablen
DATA: ITDAT1_TABIX LIKE SY-TABIX,
SAVE_SWAER LIKE ITDAT1-SWAER,
SUBRC_DIM_IN_KEY LIKE SY-SUBRC,
SUBRC_UPD_ITDAT1 LIKE SY-SUBRC.
* Feldleisten
DATA: SAVE_OBJECT LIKE OBJECT.
* Feststellen, ob die identifizierenden Dim. berhaupt im Schlssel
PERFORM IC026_CHECK_KEY_FOR_UATTR_DAT1 USING EC303_UATTR
SUBRC_DIM_IN_KEY.
* Lesen des orginal vernderten ITDAT1-Eintrages
PERFORM IC025_READ_ITDAT1_FOR_ROW_COL USING EC303_ROW
EC303_COL
ITDAT1_TABIX.
* Merken Schlssel + neuer Attributwert
SAVE_OBJECT = ITDAT1.
SAVE_SWAER = ITDAT1-SWAER.
*
LOOP AT ITDAT1.
OBJECT = ITDAT1.
CHECK OBJECT NE SAVE_OBJECT.
* Test, ob alle ITDAT1-Eintrge mit neuem Attributwert zu versorgen
IF SUBRC_DIM_IN_KEY = 0.
*
nein -> Test: ITDAT1-Satz upzudaten
PERFORM IC026_CHECK_UPD_FOR_UATTR_DAT1 USING EC303_UATTR
SAVE_OBJECT
OBJECT
SUBRC_UPD_ITDAT1.
CHECK SUBRC_UPD_ITDAT1 = 0.
ENDIF.
ITDAT1-SWAER = SAVE_SWAER.
MODIFY ITDAT1.
ENDLOOP.

ENDFORM.
*---------------------------------------------------------------------*
*
FORM EC303_OWAER
*---------------------------------------------------------------------*
*
Update von Daten1-Attributen, die nur Teilkey besitzen
*
Es werden alle diejenigen Daten1-Eintrge upgedatet,
*
die den gleichen Teilschlssel wie der Daten1-Satz, der
*
durch das ndern des Attributs OWAER zuerst in der
*
ATR-Kette upgedatet wurde, haben
*---------------------------------------------------------------------*
* --> EC303_ROW
Zeilennr. der aktuellen ATR-Kette
* --> EC303_COL
Spaltennr. der aktuellen ATR-Kette
* --> EC303_UATTR Attributnr.
*---------------------------------------------------------------------*
FORM EC303_OWAER
USING EC303_ROW TYPE ROW
EC303_COL TYPE COL
EC303_UATTR TYPE UATTR.
* Variablen
DATA: ITDAT1_TABIX LIKE SY-TABIX,
SAVE_OWAER LIKE ITDAT1-OWAER,
SUBRC_DIM_IN_KEY LIKE SY-SUBRC,
SUBRC_UPD_ITDAT1 LIKE SY-SUBRC.
* Feldleisten
DATA: SAVE_OBJECT LIKE OBJECT.
* Feststellen, ob die identifizierenden Dim. berhaupt im Schlssel
PERFORM IC026_CHECK_KEY_FOR_UATTR_DAT1 USING EC303_UATTR
SUBRC_DIM_IN_KEY.
* Lesen des orginal vernderten ITDAT1-Eintrages
PERFORM IC025_READ_ITDAT1_FOR_ROW_COL USING EC303_ROW
EC303_COL
ITDAT1_TABIX.
* Merken Schlssel + neuer Attributwert
SAVE_OBJECT = ITDAT1.
SAVE_OWAER = ITDAT1-OWAER.
*
LOOP AT ITDAT1.
OBJECT = ITDAT1.
CHECK OBJECT NE SAVE_OBJECT.
* Test, ob alle ITDAT1-Eintrge mit neuem Attributwert zu versorgen
IF SUBRC_DIM_IN_KEY = 0.
*
nein -> Test: ITDAT1-Satz upzudaten
PERFORM IC026_CHECK_UPD_FOR_UATTR_DAT1 USING EC303_UATTR
SAVE_OBJECT
OBJECT
SUBRC_UPD_ITDAT1.
CHECK SUBRC_UPD_ITDAT1 = 0.
ENDIF.
ITDAT1-OWAER = SAVE_OWAER.
MODIFY ITDAT1.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM EC303_KATYP
*---------------------------------------------------------------------*
*
Update von Daten1-Attributen, die nur Teilkey besitzen
*
Es werden alle diejenigen Daten1-Eintrge upgedatet,
*
die den gleichen Teilschlssel wie der Daten1-Satz, der
*
durch das ndern des Attributs KATYP zuerst in der

*
ATR-Kette upgedatet wurde, haben
*---------------------------------------------------------------------*
* --> EC303_ROW
Zeilennr. der aktuellen ATR-Kette
* --> EC303_COL
Spaltennr. der aktuellen ATR-Kette
* --> EC303_UATTR Attributnr.
*---------------------------------------------------------------------*
FORM EC303_KATYP
USING EC303_ROW TYPE ROW
EC303_COL TYPE COL
EC303_UATTR TYPE UATTR.
* Variablen
DATA: ITDAT1_TABIX LIKE SY-TABIX,
SAVE_KATYP LIKE ITDAT1-KATYP,
SUBRC_DIM_IN_KEY LIKE SY-SUBRC,
SUBRC_UPD_ITDAT1 LIKE SY-SUBRC.
* Feldleisten
DATA: SAVE_OBJECT LIKE OBJECT.
* Feststellen, ob die identifizierenden Dim. berhaupt im Schlssel
PERFORM IC026_CHECK_KEY_FOR_UATTR_DAT1 USING EC303_UATTR
SUBRC_DIM_IN_KEY.
* Lesen des orginal vernderten ITDAT1-Eintrages
PERFORM IC025_READ_ITDAT1_FOR_ROW_COL USING EC303_ROW
EC303_COL
ITDAT1_TABIX.
* Merken Schlssel + neuer Attributwert
SAVE_OBJECT = ITDAT1.
SAVE_KATYP = ITDAT1-KATYP.
*
LOOP AT ITDAT1.
OBJECT = ITDAT1.
CHECK OBJECT NE SAVE_OBJECT.
* Test, ob alle ITDAT1-Eintrge mit neuem Attributwert zu versorgen
IF SUBRC_DIM_IN_KEY = 0.
*
nein -> Test: ITDAT1-Satz upzudaten
PERFORM IC026_CHECK_UPD_FOR_UATTR_DAT1 USING EC303_UATTR
SAVE_OBJECT
OBJECT
SUBRC_UPD_ITDAT1.
CHECK SUBRC_UPD_ITDAT1 = 0.
ENDIF.
ITDAT1-KATYP = SAVE_KATYP.
MODIFY ITDAT1.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM EC304_SORT_ITDAT1
*---------------------------------------------------------------------*
*
Sortieren ITDAT1 nach Schlssel
*---------------------------------------------------------------------*
* <-> ITDAT1 Tab. mit Daten1-Eintrgen
*---------------------------------------------------------------------*
FORM EC304_SORT_ITDAT1.
SORT ITDAT1 BY KOSTL.
ENDFORM. "EC304_SORT_ITDAT1

Das könnte Ihnen auch gefallen