ec-cs
Programmierer-Merkblatt SAP-Konsolidierung (EC-CS)
Programmierer-Merkblatt SAP-Konsolidierung (EC-CS).
Häufig benötigte Tabellen:
| Name | Beschreibung |
| ECMCT | Summensätze |
| ECMCA | Einzelposten |
| TF100 TF101 | Stammdaten Konsolidierungspositionen + Texte |
| TF115 TF116 | Unterpositionen + Texte |
| TF160 TF161 TF16* | Konsolidierungseinheiten + Texte Jahres- und versionsabhängige Daten |
| TF180 TF181 ff. | Konsolidierungskreise+ Texte |
| TF189 | Zuordnung Konsolidierungseinheiten zu Kons.Kreisen |
| TF200 ff | Versionen |
| TFIN010 | Integrationstabelle FI « EC-CS (Buchungskreis – Gesellschaft FI – Kons.Einheit EC-CS) |
| GLT3 | Konsolidierungsvorbereitungsledger (Fortschreibung aus FI) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nützliche Funktionsbausteine:
| Name | Beschreibung |
| FC_GLOBAL_PARAMETERS_IMPORT | Einlesen der globalen Parameter in eigene Felder |
| FC_CONGR_DISMANTLE | Konsolidierungskreis in die enthaltenen Konsolidierungseinheiten auflösen (Aufruf siehe Musterprogramm) |
| FC_GET_ITEM_HRCHY | Positionshierarchie flach auflösen (siehe Musterprogramm) |
| FC_TOTALS_SELECT | Nachlesen der Summensätze (ECMCT) in eine bel. Interne Tabelle unter Verwendung von bel. Selektionskriterien |
| FC_AUTHORITY_CHECK | Berechtigungsprüfungen aller relevanten Konsol.Objekte |
| FC_ITCLG_IMPORT | Einlesen Positionshierarchie (z.B. für ALV Tree Control) |
|
|
|
|
|
|
|
|
|
Typgruppen (Type-Pools):
| Name | Beschreibung |
| FC01 | Strukturen und Tabellentypen für die EC-CS Tabellen |
| FC02 | Typen für Status, Versionen, Abschlußarten |
|
|
|
Nachrichtenklassen:
| Name | Beschreibung |
| G0, G00, G01, GK | Nachrichten der SAP-Konsolidierung |
|
|
|
|
|
|
Programmvorlagen
| Name | Beschreibung |
| ZDEMOECCS | Musterprogramm für häufig verwendete EC-CS Tabellen, FuBa’s etc. |
|
| |
Quelltext ZDEMOECCS
*&---------------------------------------------------------------------*
*& Report ZDEMOECCS *
*& *
*&---------------------------------------------------------------------*
*& Demoprogramm für häufig benötigte Tabellen und FuBas im EC-CS *
*& *
*&---------------------------------------------------------------------*
REPORT zdemoeccs.
*&---------------------------------------------------------------------*
TABLES: ecmct, "Summensätze EC-CS
tf100, "Stammdaten Position
tf101, "Positionstexte
tf181. "Texte Kons.Kreise
*&---------------------------------------------------------------------*
TYPE-POOLS: fc01.
*&---------------------------------------------------------------------*
DATA ld_dimen TYPE fc_dimen.
DATA ld_congr TYPE fc_congr.
DATA ld_bunit TYPE fc_bunit.
DATA ld_itclg TYPE fc_itclg.
DATA ld_rldnr TYPE fc_rldnr.
DATA ld_rvers TYPE fc_rvers.
DATA ld_ryear TYPE fc_ryear.
DATA ld_perid TYPE fc_perid.
DATA: i_tf160 TYPE fc01_t_tf160.
DATA: i_tf161 TYPE fc01_t_tf161.
DATA: wa_tf160 TYPE fc01_s_tf160.
DATA: wa_tf161 TYPE fc01_s_tf161.
DATA: lt_item_hrchy LIKE fc03itab03 OCCURS 0 WITH HEADER LINE.
DATA: ecmct_saldo LIKE ecmct-kslvt.
*&---------------------------------------------------------------------*
PARAMETERS: pa_congr LIKE tf180-congr, "Konsolidierungskreis
pa_itclg LIKE tf100-itclg, "Positionskatalog
pa_sitem LIKE tf100-item, "Summenposition
pa_rvers LIKE tf200-rvers, "Version
pa_ryear TYPE fc_ryear, "Geschäftsjahr
pa_perid TYPE fc_perid. "Periode
*&---------------------------------------------------------------------*
INITIALIZATION.
*&---------------------------------------------------------------------*
* Selektionsbild mit globalen Parametern vorbelegen - immer cool!
CALL FUNCTION 'FC_GLOBAL_PARAMETERS_IMPORT'
IMPORTING
i_dimen = ld_dimen
i_itclg = ld_itclg
i_rldnr = ld_rldnr
i_rvers = ld_rvers
i_ryear = ld_ryear
i_perid = ld_perid.
pa_itclg = ld_itclg.
pa_rvers = ld_rvers.
pa_ryear = ld_ryear.
pa_perid = ld_perid.
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
*&---------------------------------------------------------------------*
* Prüfen, ob im Parameter "Summenposition" auch wirklich eine
* gültige Summenposition eingegeben wurde...
IF NOT pa_sitem IS INITIAL.
SELECT SINGLE * FROM tf100 "Stammdaten zur Pos. lesen
WHERE itclg = pa_itclg
AND item = pa_sitem.
IF sy-subrc NE 0.
MESSAGE e111(gk) WITH pa_sitem. "Position gibt's nicht
ELSE.
* TF100-ITCGY = Positionsart 1 = Wertpos., 2 = Summenpos.
IF tf100-itcgy NE '2'. "Keine Summenpos.
MESSAGE e195(g00) WITH pa_sitem pa_itclg.
ENDIF.
ENDIF.
ENDIF.
* Berechtigungsprüfung - hier können alle möglichen Felder
* abgefragt werden
* Bspw. Positionsplan
CALL FUNCTION 'FC_AUTHORITY_CHECK'
EXPORTING
e_id = 'ITCLG'
* E_DIMEN = ''
* E_CONGR = ''
* E_BUNIT = ''
* E_RVERS = ''
* E_CACTT = ''
* E_CACTI = ''
* E_ACTVT = '03' "Anzeigeberechtigung
e_itclg = pa_itclg
* E_FIELD = ''
* ET_BUNIT =
* ET_RA_BUNIT =
* IMPORTING
* I_RETURNCODE =
* EXCEPTIONS
* EXC_NO_PERMISSION = 1
* EXC_WRONG_USAGE = 2
* OTHERS = 3
.
IF sy-subrc <> 0.
* Keine Berechtigung für ...
MESSAGE e051(gk) WITH 'Anzeigen' 'Positionsplan' pa_itclg.
ENDIF.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*&---------------------------------------------------------------------*
* Konsolidierungskreis in seine Bestandteile (sprich: Kons.Einheiten)
* zerlegen.
CALL FUNCTION 'FC_CONGR_DISMANTLE'
EXPORTING
e_dimen = ld_dimen
e_congr = pa_congr
e_rvers = ld_rvers
e_ryear = ld_ryear
e_perid = ld_perid
e_tf160 = 'X'
e_tf161 = 'X'
IMPORTING
it_tf160 = i_tf160 "Tabelle mit den Kons.Einheiten
it_tf161 = i_tf161. " + Texte gleich dazu !!
* Positionshierarchie erstmal komplett einlesen
CALL FUNCTION 'FC_GET_ITEM_HRCHY'
EXPORTING
e_itclg = pa_itclg
e_complete = 'X' "X = alles auflösen,
"space = nur bis zur nächsten
"Hierarchiestufe
TABLES
t_item_hrchy = lt_item_hrchy.
* Dann Nur die Positionen übrig lassen, die zur eingegebenen
* Summenposition gehören
DELETE lt_item_hrchy WHERE sumitem NE pa_sitem.
* Ausgabe Konsolidierungseinheiten
SELECT SINGLE * FROM tf181 "Text zum Kons.Kreis holen
WHERE langu = sy-langu "Hätte man sich auch vom FB
AND dimen = ld_dimen "FC_CONGR_DISMANTLE
AND congr = pa_congr. "besorgen lassen können
WRITE: / 'Zum Konsolidierungskreis',
pa_congr,
tf181-txtmi,
'gehören folgende Einheiten:'.
LOOP AT i_tf161 INTO wa_tf161.
WRITE: / wa_tf161-bunit,
wa_tf161-txtmi. "Mitteltext
ENDLOOP.
SKIP 2.
* Ausgabe Positionen
SELECT SINGLE * FROM tf101
WHERE langu = sy-langu
AND itclg = pa_itclg
AND item = pa_sitem.
WRITE: / 'Zur Summenposition',
pa_sitem,
tf101-txtmi,
'gehören folgende Wertpositionen:'.
LOOP AT lt_item_hrchy.
SELECT SINGLE * FROM tf101
WHERE langu = sy-langu
AND itclg = pa_itclg
AND item = lt_item_hrchy-item.
WRITE: / lt_item_hrchy-item,
tf101-txtmi.
ENDLOOP.
* Nachlesen und Ausgabe Saldo
NEW-PAGE.
WRITE: / 'Zu den selektierten Kons.Einheiten und Positionen',
/ 'sind folgende Summensätze vorhanden:'.
SKIP 3.
* Geht auch mit FuBa FC_TOTALS_SELECT
* Aufrufbeispiel siehe FB-Doku und Report FICLST00
* Hier mal eine händische Selektion...
SELECT * FROM ecmct
FOR ALL ENTRIES IN lt_item_hrchy
WHERE ritem = lt_item_hrchy-item
AND rldnr = ld_rldnr
AND rrcty = '0'
AND rvers = pa_rvers
AND ryear = pa_ryear
AND rdimen = ld_dimen
AND ritclg = pa_itclg.
* Nachgucken, ob die Kons.Einheit angefordert wurde...
READ TABLE i_tf160 WITH KEY bunit = ecmct-rbunit
TRANSPORTING NO FIELDS.
CHECK sy-subrc = 0.
* Addition der Werte in Konzernwährung (KSLxx)
ADD ecmct-ksl01 FROM 1 TO pa_perid GIVING ecmct_saldo.
WRITE: / ecmct-rldnr,
ecmct-rvers,
ecmct-ryear,
ecmct-rdimen,
ecmct-rbunit,
ecmct-ritclg,
ecmct-ritem,
ecmct-plevl,
ecmct_saldo.
ENDSELECT.
/image%2F1473637%2F20170207%2Fob_adae32_profilbild.png)