Report mit logischer Datenbank PNM

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Report mit logischer Datenbank PNM

Beitrag von Nautilus (ForumUser / 45 / 0 / 0 ) »
Hallo, ich habe ein Problem mit einem Report.

Und zwar soll ich für einen Kunden einen Report erstellen, welcher nach Eingabe der Komponentennummer die Materialien und den Materialkurztext anzeigt, die die vorgegebene Komponente beinhalten.

Ich wollte das mit der logischen Datenbank PNM selektieren. Soweit schon mal kein Problem.

Ich hole mir mit Hilfe des "GET"-Befehls die Daten aus der PLKOD, PLPOD und der PLMZD.

Womit ich dann auch schon bei meinem Fehler wäre.

Wenn ich die PLMZD nämlich mit benutze, so funktioniert, die ganze Abfrage nicht. Sogar ein "BREAK-POINT" Befehl, welcher nach dem Befehl stand, wurde nicht beachtet. Sprich: Alle Befehle zwischen "GET PLMZD" und "END-OF-SELECTION" werden nicht berücksichtigt. Erst danach funktioniert die Ausgabe wieder.

Ich habe den Quelltext mal als Anhang mit bei gepackt.

Vielleicht habt Ihr ja eine Idee, warum das nicht funktioniert. Die PLMZD muss ja nach Ausführung der Selektion auf die logische Datenbank alle entsprechenden Daten enthalten.

Gibt es evtl. noch eine andere Möglichkeit, die Materialien anhand der Komponentennummer, des Arbeitsplatzes, Status des Arbeitsplans, Status der Stückliste zu selektieren? Gibt es ggf. Funktionsbausteine? Ich habe nämlich keine entsprechenden gefunden.

Für eine Hilfe, oder einen Wink mit dem zaunpfahl wäre ich sehr dankbar.

Christian

Code: Alles auswählen.

REPORT ZPTARBPLDAT001.

TABLES: PLMZD,
        PLKOD,
        PLPOD,
        STKO.


* Deklaration der internen Tabelle für die Daten.
 TYPES: BEGIN OF TYP_DATEN,
      MATNR LIKE MARA-MATNR,         "Materialnummer
      MAKTX LIKE MAKT-MAKTX,         "Materialkurztext
      ARBPL LIKE PLKOD-ARBPL,        "Arbeitsplatz
      PLNSTATU LIKE PLKOD-STATU,     "Status Plan
      KOMPO LIKE PLMZD-BOMAT,        "Komponente
      STCKLST LIKE PLMZD-STLNR,      "Stücklistennummer
      STCKSTAT LIKE STKO-STLST,       "Status Stückliste
END   OF TYP_DATEN.


DATA: INT_DATEN TYPE TYP_DATEN OCCURS 10 WITH HEADER LINE.


SELECTION-SCREEN BEGIN OF BLOCK DATEN WITH FRAME TITLE TEXT-001.
  PARAMETERS: ARBPL LIKE PLPOD-ARBPL OBLIGATORY.
  PARAMETERS: PLSTATUS LIKE PLKOD-STATU DEFAULT 'K' OBLIGATORY.
  SELECT-OPTIONS KOMPON FOR PLMZD-BOMAT OBLIGATORY.
  PARAMETERS: STSTATUS LIKE STKO-STLST.
SELECTION-SCREEN END OF BLOCK DATEN.

* Plantyp N wird als Default und
* das aktuelle Datum als Stichtag gesetzt
INITIALIZATION.
  PN_PLNTY = 'N' .
  PN_DATUV = SY-DATUM.
  PN_WERKS-LOW = '0001'.


* Ausblenden einiger Eingabefelder der log. DB PNM
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF SCREEN-NAME = 'PN_PLNTY' OR
       SCREEN-NAME = '%_PN_PLNTY_%_APP_%-TEXT' OR
*       SCREEN-NAME = '%_PN_MATNR_%_APP_%-OPTI_PUSH' OR
*       SCREEN-NAME = '%_PN_MATNR_%_APP_%-VALU_PUSH' OR
       SCREEN-NAME = '%_PN_WERKS_%_APP_%-OPTI_PUSH' OR
       SCREEN-NAME = '%_PN_WERKS_%_APP_%-VALU_PUSH' OR

*       SCREEN-NAME = '%_PN_MATNR_%_APP_%-TEXT' OR
*       SCREEN-NAME = 'PN_MATNR-LOW' OR

       SCREEN-NAME = '%_PN_WERKS_%_APP_%-TEXT' OR
       SCREEN-NAME = 'PN_WERKS-LOW' OR

       SCREEN-NAME = '%_PN_DATUV_%_APP_%-TEXT' OR
       SCREEN-NAME = 'PN_DATUV' OR

       SCREEN-NAME = '%_PN_PLNNR_%_APP_%-TEXT' OR
       SCREEN-NAME = '%_PN_PLNNR_%_APP_%-OPTI_PUSH' OR
       SCREEN-NAME = 'PN_PLNNR-LOW' OR
       SCREEN-NAME = '%_PN_PLNNR_%_APP_%-TO_TEXT' OR
       SCREEN-NAME = 'PN_PLNNR-HIGH' OR
       SCREEN-NAME = '%_PN_PLNNR_%_APP_%-VALU_PUSH' OR

       SCREEN-NAME = '%_PN_PLNAL_%_APP_%-TEXT' OR
       SCREEN-NAME = '%_PN_PLNAL_%_APP_%-OPTI_PUSH' OR
       SCREEN-NAME = 'PN_PLNAL-LOW' OR
       SCREEN-NAME = '%_PN_PLNAL_%_APP_%-TO_TEXT' OR
       SCREEN-NAME = 'PN_PLNAL-HIGH' OR
       SCREEN-NAME = '%_PN_PLNAL_%_APP_%-VALU_PUSH' OR

       SCREEN-NAME = 'PN_WERKS-HIGH' OR
       SCREEN-NAME = 'MAT'           OR
       SCREEN-NAME = '%CP05008_1000' OR
       SCREEN-NAME = 'PN_ALL'        OR
       SCREEN-NAME = '%CP01013_1000' OR
       SCREEN-NAME = 'PN_ALT'        OR
       SCREEN-NAME = '%CP02018_1000' OR
       SCREEN-NAME = '%CP03023_1000' OR
       SCREEN-NAME = 'PN_CAP'        OR
       SCREEN-NAME = '%CP04030_1000' OR
       SCREEN-NAME = 'NOT_MAT'       OR
       SCREEN-NAME = '%CP06037_1000' OR
       SCREEN-NAME = 'PN_MEHRS'      OR
       SCREEN-NAME = '%CP07042_1000' OR
       SCREEN-NAME = 'PN_STLAL'      OR
       SCREEN-NAME = 'PN_STLAN'      OR
       SCREEN-NAME = 'PN_CAPID'.

*      SCREEN-NAME = 'PN_MATNR-HIGH'.
      SCREEN-INVISIBLE = '1'.
      SCREEN-INPUT = '0'.
      SCREEN-OUTPUT = '0'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

START-OF-SELECTION.


GET PLKOD.
  CLEAR INT_DATEN.
  CHECK PLKOD-STATU EQ PLSTATUS.
  MOVE PLKOD-STATU TO INT_DATEN-PLNSTATU.
  MOVE PLKOD-STLNR TO INT_DATEN-STCKLST.

  GET PLPOD.
    CHECK PLPOD-ARBPL EQ ARBPL.
      MOVE PLPOD-ARBPL TO INT_DATEN-ARBPL.

    GET PLMZD.
      CHECK PLMZD-BOMAT IN KOMPON.
        MOVE PLMZD-BOMAT TO INT_DATEN-KOMPO.

APPEND INT_DATEN.

END-OF-SELECTION.

* Falls der Status der Stückliste gegeben ist, so wird die Auswahl auf
* diese beschränkt.
IF STSTATUS NE ''.
  LOOP AT INT_DATEN.
    SELECT SINGLE STLST FROM STKO INTO INT_DATEN-STCKLST WHERE STLNR EQ
    INT_DATEN-STCKSTAT.

  ENDLOOP.

  DELETE INT_DATEN WHERE STCKSTAT =''.
ENDIF.

  WRITE: / 'Ausgabe der Daten:'.
  SKIP.
  LOOP AT INT_DATEN.
*    BREAK-POINT.
    WRITE: / INT_Daten-MATNR,     "Materialnummer
             INT_DATEN-MAKTX,     "Materialkurztext
             INT_DATEN-KOMPO,     "Komponente
             INT_DATEN-PLNSTATU,  "Planstatus
             INT_DATEN-ARBPL.     "Arbeitsplatz
  ENDLOOP.

* Nun müssen die Materialkurztexte hinzugelesen werden...

LOOP AT INT_DATEN.
  SELECT SINGLE MAKTX FROM MAKT INTO INT_DATEN-MAKTX WHERE MATNR EQ
  INT_DATEN-KOMPO.
ENDLOOP.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Hallo Christian,

wäre nett wenn du nochmal beschreibst, in welchem Zusammenhang du von Komponenten sprichst. Denn die Aufgabenbeschreibung am Anfang entspricht in etwa der Transaktion "CS15" - Verwendungsnachweis von Materialien in Stücklisten. Und wenn du das im Programm weiterverwenden möchtest gibt es den FB "CS_WHERE_USED_MAT" ( oder die anderen FB, die genauso anfangen wie dieser ).
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Nautilus (ForumUser / 45 / 0 / 0 ) »
Vielen Dank ersteinmal für die schnelle Antwort.

Also, mit Komponenten meine ich die einzelnen Materialien, die zur Fertigung des Ursprungsmaterials benötigt werden.

Das ganze kann unter der Transaktion CA03 angeschaut werden:
Material und Werk vorgeben
Oben in der Leiste auf "Pläne" klicken
einen Arbeitsplan markieren
Oben in der Leiste auf "KompZuord" klicken

--> Nun werden alle Komponenten angezeigt.

Die von Dir angezeigte Transaktion kenne ich nicht, werde mich aber mal damit beschäftigen, genau wie mit den Funktionsbausteinen.

Soweit ich weiss, nutzen die User bei uns die Transaktion CA80. Dort kann man aber afaik nicht nach Status der stückliste selektieren.

Für weitere Tips und Ratschläge bin ich sehr dankbar.

Christian

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Hi Christian,

wenn du die "theoretisch" möglichen Materialien lesen möchtest, führt der Weg über die Stückliste wie vorher schon beschrieben.

Wenn du hingegen die "tatsächlich" im FAuf benötigten Materialien haben möchtest, würde ich dir raten über die Tabelle "RESB" zu gehen - die hat normalerweise einen Index auf dem Material.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

6
Antw.
3606
Views
Report für Logische Datenbank (Über mehrere Tabellen)
von franz-ho » 20.07.2015 14:48 • Verfasst in ABAP® für Anfänger
1
Antw.
384
Views
Logischer Dateiname
von L0w-RiDer » 25.09.2019 16:37 • Verfasst in ABAP® für Anfänger
6
Antw.
3747
Views
Fehlerhafter logischer Ausdruck
von mineabap » 14.04.2009 13:28 • Verfasst in ABAP® für Anfänger
1
Antw.
1524
Views
Probleme mit logischer Datenbannk DDF
von vhoffe » 10.10.2006 06:43 • Verfasst in Financials

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 6 Stunden von tar 8 / 189
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 6 Stunden von tar 8 / 189
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822