[SAP] Buchungskreis, Werk, Bewertungskreis, Kostenrechnungskreis, Einkaufsorganisation, Lagerort

Transaktionen

OMWD (C MM-IV Gruppierung Bewertungskreis)
OX01 (Buchungskreis->Einkaufsorganisation)
OX02 (Buchungskreis einr. Customize)
V_T001 (Buchungskreis)
OX06 (Kostenrechnungskreis: Grunddaten)
OB52 (C FI Pflege Tabelle T001B)
OX08 (Einkaufsorganisation einr. Customize)
OX09 (Lagerorte einrichten)
OX10 (Werk einrichten Customize)
V_T001W (Werke)
OX14 (C MM-IV Bw.kreis-Bewertungsebene)
OX17 (Werke->Einkaufsorganisation)
OX18 (Zuordnung Werke->Buchungskreis)

Tabellen

T001 (Buchungskreise)
T001B (Erlaubte Buchungsperioden)
T001W (Werke/Niederlassungen)
T001K (Bewertungskreis)
T001L (Lagerorte)
T024E (Einkaufsorganisationen)
TKA01 (Kostenrechnungskreise .)

Suchhilfen

MM_PUR_PR_SH_PLANT (Suchhilfe für Werk)

Views

V_T001K_ASSIGN (Zuordnung Werk – Buchungskreis)

Links

[ABAP] Fabrikkalender: Anzahl Arbeitstage zu Fabrikkalenderdatum hinzurechnen

* Transaktion: SCAL (Fabrikkalender mit CUA-Oberfläche)
* Tabelle: TFACD (Fabrikkalenderdefinitionen)

* Werk
PARAMETERS: p_werks TYPE t001w-werks DEFAULT '10'.
* zu prüfendes Datum
PARAMETERS: p_date TYPE scal-date DEFAULT '20190101'.
* Kennzeichen, wie Arbeitstag berechnet werden soll:
* '+' nächster Arbeitstag
* '-' vorheriger Arbeitstag
PARAMETERS: p_corr TYPE scal-indicator DEFAULT '+'.
* Anzahl Arbeitstage, die zum Fabrikkalenderdatum dazugerechnet werden sollen
PARAMETERS: p_days TYPE i DEFAULT 3.

START-OF-SELECTION.

* Fabrikkalender zum Werk ermitteln
  SELECT SINGLE *
    INTO @DATA(lv_t001w)
    FROM t001w WHERE werks = @p_werks.

  IF sy-subrc = 0.
    DATA: lv_fabkldate TYPE scal-date.
    DATA: lv_factorydate TYPE scal-facdate.
    DATA: lv_workingday_indicator TYPE scal-indicator.

* Kalenderfunktion Fabrikkalenderdatum zu einem Datum geben
    CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
      EXPORTING
        factory_calendar_id          = lv_t001w-fabkl " Schlüssel des Fabrikkalenders
        correct_option               = p_corr         " Kennzeichen, wie Arbeitstag berechnet werden soll
        date                         = p_date         " Datum, das in Fabrikkalenderdatum umzuwandeln ist
      IMPORTING
        date                         = lv_fabkldate            " Fabrikkalenderdatum
        factorydate                  = lv_factorydate          " Nummer des Arbeitstags im angegebenen Kalender
        workingday_indicator         = lv_workingday_indicator " Kennzeichen, ob Datum ein Arbeitstag ist
      EXCEPTIONS
        calendar_buffer_not_loadable = 1
        correct_option_invalid       = 2
        date_after_range             = 3
        date_before_range            = 4
        date_invalid                 = 5
        factory_calendar_not_found   = 6
        OTHERS                       = 7.

    IF sy-subrc = 0.
      WRITE: / 'Ursprgl. Datum:', p_date.
      WRITE: / 'Fabrikkalenderdatum:', lv_fabkldate.
      WRITE: / 'Nummer des Arbeitstags:', lv_factorydate.

* Anzahl Tage zu Fabrikkalenderdatum hinzuzurechnen
      lv_factorydate = lv_factorydate + p_days.

      WRITE: / 'Korrigierter Arbeitstag:', lv_factorydate.

      DATA: lv_new_date TYPE scal-date.

* Kalenderfunktion Datum zu einem Fabrikkalenderdatum geben
      CALL FUNCTION 'FACTORYDATE_CONVERT_TO_DATE'
        EXPORTING
          factorydate                  = lv_factorydate
          factory_calendar_id          = lv_t001w-fabkl
        IMPORTING
          date                         = lv_new_date
        EXCEPTIONS
          calendar_buffer_not_loadable = 1
          factorydate_after_range      = 2
          factorydate_before_range     = 3
          factorydate_invalid          = 4
          factory_calendar_id_missing  = 5
          factory_calendar_not_found   = 6
          OTHERS                       = 7.

      IF sy-subrc = 0.
        WRITE: / 'Neues Fabrikkalenderdatum:', lv_new_date.
      ENDIF.

    ENDIF.
  ELSE.
    WRITE: / |Kein Fabrikkalender zum Werk { p_werks } verfügbar.|.
  ENDIF.

[ABAP] Fabbrikkalender zum Werk lesen

* Transaktion: SCAL (Fabrikkalender mit CUA-Oberfläche)
* Tabelle: TFACD (Fabrikkalenderdefinitionen)

* Werk
PARAMETERS: p_werks TYPE t001w-werks DEFAULT '10'.
* zu prüfendes Datum
PARAMETERS: p_date TYPE scal-date DEFAULT '20190101'.
* Kennzeichen, wie Arbeitstag berechnet werden soll:
* '+' nächster Arbeitstag
* '-' vorheriger Arbeitstag
PARAMETERS: p_corr TYPE scal-indicator DEFAULT '+'.

START-OF-SELECTION.

* Fabrikkalender zum Werk ermitteln
  SELECT SINGLE *
    INTO @DATA(lv_t001w)
    FROM t001w WHERE werks = @p_werks.

  IF sy-subrc = 0.
    DATA: lv_fabkldate TYPE scal-date.
    DATA: lv_factorydate TYPE scal-facdate.
    DATA: lv_workingday_indicator TYPE scal-indicator.

* Kalenderfunktion Fabrikkalenderdatum zu einem Datum geben
    CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
      EXPORTING
        factory_calendar_id          = lv_t001w-fabkl " Schlüssel des Fabrikkalenders
        correct_option               = p_corr         " Kennzeichen, wie Arbeitstag berechnet werden soll
        date                         = p_date         " Datum, das in Fabrikkalenderdatum umzuwandeln ist
      IMPORTING
        date                         = lv_fabkldate            " Fabrikkalenderdatum
        factorydate                  = lv_factorydate          " Nummer des Arbeitstags im angegebenen Kalender
        workingday_indicator         = lv_workingday_indicator " Kennzeichen, ob Datum ein Arbeitstag ist
      EXCEPTIONS
        calendar_buffer_not_loadable = 1
        correct_option_invalid       = 2
        date_after_range             = 3
        date_before_range            = 4
        date_invalid                 = 5
        factory_calendar_not_found   = 6
        OTHERS                       = 7.

    IF sy-subrc = 0.
      WRITE: / 'Werk:', p_werks.
      WRITE: / 'ID Fabrikkalender:', lv_t001w-fabkl.
      WRITE: / 'Datum:', p_date.
      WRITE: / 'Fabrikkalenderdatum:', lv_fabkldate.
      WRITE: / 'Nummer des Arbeitstags:', lv_factorydate.
      WRITE: / 'Datum ist Arbeitstag:', lv_workingday_indicator.
    ENDIF.
  ELSE.
    WRITE: / |Kein Fabrikkalender zum Werk { p_werks } verfügbar.|.
  ENDIF.