[ABAP] Daten zum Material anzeigen

* siehe auch Report RMMMTREE
PARAMETERS: p_mat TYPE matnr.

START-OF-SELECTION.

* Allgemeine Materialdaten
  SELECT
    FROM mara
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_mara).

* Werksdaten zum Material
  SELECT
    FROM marc
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_marc).

  IF lines( it_marc ) > 0.
* Lagerortdaten zum Material
    SELECT
      FROM mard AS m
      FIELDS *
      FOR ALL ENTRIES IN @it_marc
      WHERE m~matnr EQ @p_mat
        AND m~werks EQ @it_marc-werks
      ORDER BY PRIMARY KEY
      INTO TABLE @DATA(it_mard).
  ENDIF.

* Materialkurztexte
  SELECT
    FROM makt
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_makt).

* STXD SAPscript Text-Datei Header
  SELECT
    FROM stxh
    FIELDS *
    WHERE tdobject EQ 'MATERIAL'
      AND tdname EQ @( |{ p_mat WIDTH = 18 ALPHA = IN }| )
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_stxh).
      
* Reservierung/Sekundärbedarf
  SELECT
    FROM resb
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_resb).

* Bestellanforderung
  SELECT
    FROM eban
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_eban).

* Einkaufsbelegposition
  SELECT
    FROM ekpo
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_ekpo).

  IF lines( it_ekpo ) > 0.
* Einkaufsbelegkopf
    SELECT
      FROM ekko AS e
      FIELDS *
      FOR ALL ENTRIES IN @it_ekpo
      WHERE e~ebeln EQ @it_ekpo-ebeln
      ORDER BY PRIMARY KEY
      INTO TABLE @DATA(it_ekko).
  ENDIF.

* Materialstamm: Standardfelder und spezielle Retail-Felder
  SELECT
    FROM maw1
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_maw1).

  IF lines( it_makt ) > 0.
* Materialstamm-Texte je Mengeneinheit und Text-Id
    SELECT
      FROM mamt AS m
      FIELDS *
      FOR ALL ENTRIES IN @it_makt
      WHERE m~matnr EQ @p_mat
        AND m~spras EQ @it_makt-spras
      ORDER BY PRIMARY KEY
      INTO TABLE @DATA(it_mamt).
  ENDIF.

* Mengeneinheiten zum Material
  SELECT
    FROM marm
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_marm).

  IF lines( it_marm ) > 0.
* Europäische Artikelnummern zum Material
    SELECT
      FROM mean AS m
      FIELDS *
      FOR ALL ENTRIES IN @it_marm
      WHERE m~matnr EQ @p_mat
        AND m~meinh EQ @it_marm-meinh
      ORDER BY PRIMARY KEY
      INTO TABLE @DATA(it_mean).

* Zuordnung von Layoutbausteinen zu Materialien
    SELECT
      FROM malg AS m
      FIELDS *
      FOR ALL ENTRIES IN @it_marm
      WHERE matnr EQ @p_mat
        AND m~meinh EQ @it_marm-meinh
      ORDER BY PRIMARY KEY
      INTO TABLE @DATA(it_malg).
  ENDIF.

* Verkaufsdaten zum Material
  SELECT
    FROM mvke
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_mvke).

* Materialbewertung
  SELECT
    FROM mbew
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_mbwe).

* Materialdaten pro Lagernummer
  SELECT
    FROM mlgn
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_mlgn).

  IF lines( it_mlgn ) > 0.
* Materialdaten pro Lagertyp
    SELECT
      FROM mlgt AS m
      FIELDS *
      FOR ALL ENTRIES IN @it_mlgn
      WHERE m~matnr EQ @p_mat
        AND m~lgnum EQ @it_mlgn-lgnum
      ORDER BY PRIMARY KEY
      INTO TABLE @DATA(it_mlgt).
  ENDIF.

* Einkaufsinfosatz - allgemeine Daten
  SELECT
    FROM eina
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_eina).

  IF lines( it_eina ) > 0.
* Einkaufsinfosatz - Einkaufsorganisationsdaten
    SELECT
      FROM eine AS e
      FIELDS *
      FOR ALL ENTRIES IN @it_eina
      WHERE e~infnr EQ @it_eina-infnr
      ORDER BY PRIMARY KEY
      INTO TABLE @DATA(it_eine).
  ENDIF.

* Materialstammstatus
  SELECT
    FROM msta
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_msta).

* noch offene Materialstaemme
  SELECT
    FROM moff
    FIELDS *
    WHERE matnr EQ @p_mat
      ORDER BY statm
      INTO TABLE @DATA(it_moff).

* Planauftrag
  SELECT
    FROM plaf
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_plaf).

* Kopfsatz für Bedarfssummensätze im MRP
  SELECT
    FROM rqhd
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_rqhd).

* Positionssatz für Bedarfssummensätze im MRP
  SELECT
    FROM rqit
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_rqit).

* Material (Konditionssätze)
  SELECT
    FROM a004
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY PRIMARY KEY
    INTO TABLE @DATA(it_a004).

  IF lines( it_a004 ) > 0.
* Konditionen (Kopf)
    SELECT
      FROM konh
      FIELDS *
      FOR ALL ENTRIES IN @it_a004
      WHERE knumh EQ @it_a004-knumh
      ORDER BY PRIMARY KEY
      INTO TABLE @DATA(it_konh).

* Konditionen (Position)
    SELECT
      FROM konp
      FIELDS *
      FOR ALL ENTRIES IN @it_a004
      WHERE knumh EQ @it_a004-knumh
      ORDER BY PRIMARY KEY
      INTO TABLE @DATA(it_konp).
  ENDIF.

  cl_demo_output=>next_section( 'Materialstamm' ).
  cl_demo_output=>write_data( value = it_mara name = 'MARA (Allgemeine Materialdaten)' ).
  cl_demo_output=>write_data( value = it_marc name = 'MARC (Werksdaten zum Material)' ).
  cl_demo_output=>write_data( value = it_mard name = 'MARD (Lagerortdaten zum Material)').
  cl_demo_output=>next_section( 'Texte' ).
  cl_demo_output=>write_data( value = it_makt name = 'MAKT (Materialkurztexte)').
  cl_demo_output=>write_data( value = it_stxh name = 'STXH (STXD SAPscript Text-Datei Header)').
  cl_demo_output=>next_section( 'Einkauf' ).
  cl_demo_output=>write_data( value = it_resb name = 'RESB (Reservierung/Sekundärbedarf)').
  cl_demo_output=>write_data( value = it_eban name = 'EBAN (Bestellanforderung)').
  cl_demo_output=>write_data( value = it_ekko name = 'EKKO (Einkaufsbelegkopf)').
  cl_demo_output=>write_data( value = it_ekpo name = 'EKPO (Einkaufsbelegposition)').
  cl_demo_output=>next_section( 'Infosatz' ).
  cl_demo_output=>write_data( value = it_eina name = 'EINA (Einkaufsinfosatz - allgemeine Daten)').
  cl_demo_output=>write_data( value = it_eine name = 'EINE (Einkaufsinfosatz - Einkaufsorganisationsdaten)').
  cl_demo_output=>next_section( 'Konditionen' ).
  cl_demo_output=>write_data( value = it_a004 name = 'A004 (Material (Konditionssätze)').
  cl_demo_output=>write_data( value = it_konh name = 'KONH (Konditionen (Kopf))').
  cl_demo_output=>write_data( value = it_konp name = 'KONP (Konditionen (Position))').
  cl_demo_output=>next_section( 'Bewertung' ).
  cl_demo_output=>write_data( value = it_mbwe name = 'MBEW (Materialbewertung)').
  cl_demo_output=>next_section( 'Verkaufsdaten' ).
  cl_demo_output=>write_data( value = it_mvke name = 'MVKE (Verkaufsdaten zum Material)').
  cl_demo_output=>next_section( 'Mengeneinheiten' ).
  cl_demo_output=>write_data( value = it_marm name = 'MARM (Mengeneinheiten zum Material)').
  cl_demo_output=>next_section( 'Materialdaten' ).
  cl_demo_output=>write_data( value = it_mlgn name = 'MLGN (Materialdaten pro Lagernummer)').
  cl_demo_output=>write_data( value = it_mlgt name = 'MLGT (Materialdaten pro Lagertyp)').
  cl_demo_output=>next_section( 'Planaufträge' ).
  cl_demo_output=>write_data( value = it_plaf name = 'PLAF (Planauftrag)').
  cl_demo_output=>next_section( 'MRP' ).
  cl_demo_output=>write_data( value = it_rqhd name = 'RQHD (Kopfsatz für Bedarfssummensätze im MRP)').
  cl_demo_output=>write_data( value = it_rqit name = 'RQIT (Positionssatz für Bedarfssummensätze im MRP)').
  cl_demo_output=>next_section( 'Materialstammstatus' ).
  cl_demo_output=>write_data( value = it_msta name = 'MSTA (Materialstammstatus)').
  cl_demo_output=>write_data( value = it_moff name = 'MOFF (noch offene Materialstaemme)').
  cl_demo_output=>next_section( 'Sonstges' ).
  cl_demo_output=>write_data( value = it_maw1 name = 'MAW1 (Materialstamm: Standardfelder und spezielle Retail-Felder)').
  cl_demo_output=>write_data( value = it_mamt name = 'MAMT (Materialstamm-Texte je Mengeneinheit und Text-Id)').
  cl_demo_output=>write_data( value = it_mean name = 'MEAN (Europäische Artikelnummern zum Material)').
  cl_demo_output=>write_data( value = it_malg name = 'MALG (Zuordnung von Layoutbausteinen zu Materialien)').

*   HTML-Code vom Demo-Output holen
  DATA(lv_html) = cl_demo_output=>get( ).

*   Daten im Inline-Browser im SAP-Fenster anzeigen
  cl_abap_browser=>show_html( EXPORTING title       = 'Material'
                                        html_string = lv_html
                                        container   = cl_gui_container=>default_screen ).

* leere Standard-Toolbar ausblenden
  cl_abap_list_layout=>suppress_toolbar( ).

* cl_gui_container=>default_screen erzwingen
  WRITE: space.

[ABAP] MM: BAPI_MATERIAL_SAVEDATA – Anlegen und Ändern von Materialstammdaten

TYPES: ty_it_materialdescription TYPE STANDARD TABLE OF bapi_makt WITH DEFAULT KEY.

* Kopfdaten
DATA(lv_headdata) = VALUE bapimathead( material      = '123456'             " MATNR
                                       ind_sector    = CONV mbrsh( 'A' )    " Branche (Tabelle T137)
                                       matl_type     = CONV mtart( 'VERP' ) " Materialart (Tabelle T134)

                                       basic_view    = abap_true            " Sicht Grundddaten anlegen
                                       purchase_view = abap_true            " Sicht Einkauf anlegen
                                       account_view  = abap_true            " Sicht Buchhaltung
                                     ).
* Mandantenebene (MARA)
* Daten
DATA(lv_clientdata) = VALUE bapi_mara( del_flag   = abap_false               " Löschvormerkung auf Mandantenebene
                                       matl_group = CONV matkl( '00100000' ) " Warengruppe (Tabelle T023)
                                       base_uom   = CONV meins( 'KG' )       " Basismengeneinheit (Tabelle T006)
                                     ).

* Speicherflags
DATA(lv_clientdatax) = VALUE bapi_marax( del_flag   = abap_true " Löschvormerkung auf Mandantenebene setzen
                                         matl_group = abap_true " Warengruppe setzen
                                         base_uom   = abap_true " Basismengeneinheit setzen
                                       ).
* Werksebene (MARC)
* Daten
DATA(lv_plantdata) = VALUE bapi_marc( plant     = CONV werks_d( '0001' ) " Werk (Tabelle T001W)
                                      del_flag  = abap_false             " Löschvormerkung auf Werksebene
                                      pur_group = CONV ekgrp( '001' )    " Einkäufergruppe (Tabelle T024)
                                    ).

* Speicherflags
DATA(lv_plantdatax) = VALUE bapi_marcx( plant     = CONV werks_d( '0001' ) " Werk (Tabelle T001W)
                                        del_flag  = abap_true              " Löschvormerkung auf Werksebene setzen
                                        pur_group = abap_true              " Einkäufergruppe setzen
                                      ).

* Materialbewertung (MBEW)
* Daten
DATA(lv_valuationdata) = VALUE bapi_mbew( val_area  = CONV bwkey( '0001' )  " Bewertungskreis (Tabelle T001K)
                                          val_type  = CONV bwtar_d( 'ABC' ) " Bewertungsarten (Tabelle T149D)
                                          val_class = CONV bklas( '1234' )  " Bewertungsklasse (Tabelle T025)
                                          del_flag  = abap_false            " Löschvormerkung für alle Materialdaten einer Bewertungsart
                                        ).

* Speicherflags
DATA(lv_valuationdatax) = VALUE bapi_mbewx( val_area = CONV bwkey( '0001' )  " Bewertungskreis (Tabelle T001K)
                                            val_type = CONV bwtar_d( 'ABC' ) " Bewertungsarten (Tabelle T149D)
                                            val_class = abap_true            " Bewertungsklasse setzen
                                            del_flag  = abap_true            " Löschvormerkung setzen
                                          ).

* Lagerort (MARD)
* Daten
DATA(lv_storagelocationdata) = VALUE bapi_mard( plant    = CONV werks_d( '0001' ) " Werk (Tabelle T001W)
                                                stge_loc = CONV lgort_d( '1000' ) " Lagerort (Tabelle T001L)
                                                del_flag = abap_false             " Material auf Lagerortebene zum Löschen vormerken
                                              ).

* Speicherflags
DATA(lv_storagelocationdatax) = VALUE bapi_mardx( plant    = CONV werks_d( '0001' ) " Werk (Tabelle T001W)
                                                  stge_loc = CONV lgort_d( '1000' ) " Lagerort (Tabelle T001L)
                                                  del_flag = abap_false             " Löschvormerkung setzen
                                                ).

* Materialkurztext
DATA(it_materialdescription) = VALUE ty_it_materialdescription( ( langu     = sy-langu
                                                                  langu_iso = cl_i18n_languages=>sap1_to_sap2( im_lang_sap1 = sy-langu )
                                                                  matl_desc = 'Schraube 70mm' ) ).

DATA: lv_return TYPE bapiret2.
DATA: it_returnmessages TYPE STANDARD TABLE OF bapi_matreturn2 WITH DEFAULT KEY.

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
  EXPORTING
    headdata             = lv_headdata
    clientdata           = lv_clientdata
    clientdatax          = lv_clientdatax
    plantdata            = lv_plantdata
    plantdatax           = lv_plantdatax
    valuationdata        = lv_valuationdata
    valuationdatax       = lv_valuationdatax
    storagelocationdata  = lv_storagelocationdata
    storagelocationdatax = lv_storagelocationdatax
  IMPORTING
    return               = lv_return
  TABLES
    materialdescription  = it_materialdescription
    returnmessages       = it_returnmessages.

* Meldungen des Bausteins ausgeben
LOOP AT it_returnmessages ASSIGNING FIELD-SYMBOL(<m>).
  WRITE: / <m>-type,
           <m>-id,
           <m>-number,
           <m>-message,
           <m>-log_no,
           <m>-log_msg_no,
           <m>-message_v1,
           <m>-message_v2,
           <m>-message_v3,
           <m>-message_v4,
           <m>-parameter,
           <m>-row,
           <m>-field,
           <m>-system.
ENDLOOP.

* Fehlerauswertung
* Meldungstyp auswerten, Baustein gibt nur S - Success oder E - Error zurück
IF lv_return-type = 'E'.
* Fehler -> ROLLBACK
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
    IMPORTING
      return = lv_return.

  WRITE: / lv_return-type, lv_return-id, lv_return-message.
ELSE.
* kein Fehler -> COMMIT
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*      EXPORTING
*       wait   = abap_true
    IMPORTING
      return = lv_return.

  WRITE: / lv_return-type, lv_return-id, lv_return-message.
ENDIF.

[ABAP] MM: Materialdaten lesen

DATA: lv_matnr TYPE bapi_mara_ga-material VALUE '000000001234567890'.
DATA: lv_clientdata TYPE bapi_mara_ga.

DATA: it_materialdescription TYPE STANDARD TABLE OF bapi_makt_ga WITH DEFAULT KEY.
DATA: it_return TYPE STANDARD TABLE OF bapireturn WITH DEFAULT KEY.

CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
  EXPORTING
    material            = lv_matnr
*   COMP_CODE           =
*   VAL_AREA            =
*   VAL_TYPE            =
*   PLANT               =
*   STGE_LOC            =
*   SALESORG            =
*   DISTR_CHAN          =
*   WHSENUMBER          =
*   STGE_TYPE           =
*   LIFO_VALUATION_LEVEL =
*   KZRFB_ALL           =
  IMPORTING
    clientdata          = lv_clientdata
*   PLANTDATA           =
*   FORECASTPARAMETERS  =
*   PLANNINGDATA        =
*   STORAGELOCATIONDATA =
*   VALUATIONDATA       =
*   WAREHOUSENUMBERDATA =
*   SALESDATA           =
*   STORAGETYPEDATA     =
*   PRTDATA             =
*   LIFOVALUATIONDATA   =
  TABLES
    materialdescription = it_materialdescription
*   UNITSOFMEASURE      =
*   INTERNATIONALARTNOS =
*   MATERIALLONGTEXT    =
*   TAXCLASSIFICATIONS  =
*   EXTENSIONOUT        =
    return              = it_return.

* Fehlermeldungen ausgeben
LOOP AT it_return ASSIGNING FIELD-SYMBOL(<r>).
  WRITE: / <r>-type, <r>-code, <r>-message.
ENDLOOP.

* Materialdaten (MARA)
WRITE: / lv_clientdata-material,
         lv_clientdata-matl_type,
         lv_clientdata-mat_status,
         lv_clientdata-del_flag,
         lv_clientdata-matl_group,
         lv_clientdata-base_uom.

* Materialkurztexte (MAKT)
LOOP AT it_materialdescription ASSIGNING FIELD-SYMBOL(<d>).
  WRITE: / <d>-langu, <d>-langu_iso, <d>-matl_desc.
ENDLOOP.

[SAP] Material (Materialstammsatz)

Transaktionen

MM01 (anlegen)

  • Material: neue MatNr eingeben
  • Branche: einstellen
  • Materialart: einstellen
  • Vorlage Material: evtl. MatNr angeben von der Daten kopiert werden sollen
  • Button „Sichtenauswahl“ klicken
  • gewünschte Sichten markieren
  • Haken bei „Markierte Sichten anlegen“
  • Grünen Haken klicken
  • Organisationsebenen
  • Werk: eingeben, evtl. bei Vorlage auch
  • Lagerort: eingeben, evtl. bei Vorlage auch
  • Verkaufsorg.: eingeben, evtl. bei Vorlage auch
  • Vertiebsweg: eingeben, evtl. bei Vorlage auch
  • Alle Sichten durchgehen (Button Pfeil <- / ->, Menü->Springen …) und ggf. anpassen, Warnungen mit Enter bestätigen
  • mit Button „Speichern“ (blaue Diskette) das Material anlegen

MM02 (ändern, z.B. Materialkurztext)

  • Material: Materialnummer eingeben
  • Button „Sichtenauswahl“ klicken
  • Grunddaten wählen
  • Kurztext ändern
  • Button „Sichern“ (Diskette) klicken

MM03 (anzeigen)

MM04 (Änderungsbelege anzeigen)

  • zeigt Datum, Nutzer, Transaktion bei Änderungen am Material

MM06 (löschen / entlöschen)
MM60 (Materialverzeichnis)
MMCC (Material kopieren)
CKM3N (Materialpreisanalyse)

  • Preissteuerung
  • Periodischer Verrechnungspreis
  • ML-Preise

S_P00_07000139 (Lagerkarten- und Lagermaterialreport)

Report

MBMAPCHANGES (Unexpected changes in the Moving Average Price)

Tabellen

MARA (Allgemeine Materialdaten)
MARC (Werksdaten zum Material)
MARD (Lagerortdaten zum Material)
MARM (Mengeneinheiten zum Material)
MAKT (Materialkurztexte)
MBEW (Materialbewertung)

Views

V_OLR3_MARX (Werksmaterial: Konsistenzprüfung)

  • MARA, MARC mit Selektionsbedingung MARC LVORM EQ ‚ ‚

MC29V (Datenbankview aus MARA und MARC für Stücklisten)

  • MARA, MARC für Stücklisten

MA07V (Materialstamm: DB-View Bestandsführung)

  • MARA, MARC

MARU (Projektion auf die MARA,von der Materialstammpflege upgedat.)

  • MARA

Links