Overblog Folge diesem Blog
Edit post Administration Create my blog
SAPManDoo - SAP Resource

Programmierer-Merkblatt SAP-Konsolidierung (EC-CS)

17. Februar 2011 , Geschrieben von sapmandoo Veröffentlicht in #EC-CS, #SAP Reports

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.

Diesen Post teilen

Repost 0
Um über die neuesten Artikel informiert zu werden, abonnieren:

Kommentiere diesen Post