Report zu Rückmeldungen Fertigungsauftrag

Getting started ... Alles für einen gelungenen Start.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Report zu Rückmeldungen Fertigungsauftrag

Beitrag von christof (Specialist / 122 / 6 / 0 ) »
Hallo zusammen
Wir möchten wenn bei einer Vorgang-Endrückmeldung nicht alle Komponenten bezogen sind, die Endrückmeldung sperren, so dass eine Fehlermeldung auftritt.
Dazu habe ich nun einen Report erstellt. Kann man diesen Report im Customizing irgendwo hinterlegen? So das dieser aufgerufen wird sobald Rückgemeldet wird? Selektiert wird über die Rückmeldung. Unten habe ich noch den Report hochgeladen, er ist noch nicht ganz fertig, aber wenn ihr beim durchlesen Verbesserungen vorschlagen könnt, wäre ich dafür sehr dankbar. Ich probierte eine sehr schnelle und einfache Durchlaufzeit zu erreichen.

Ich habe im Internet diesen Link gefunden: http://www.dv-treff.de/yaf_postst8508_M ... trage.aspx

Vielen Dank

Code: Alles auswählen.

REPORT ZR_TEST1.


  TABLES: RESB,
          AFRU,
          AFKO,
          SPOP,
          AFVC,
          JEST.


*--------------------------------------------------------------------*
*Felder deklarieren*
*--------------------------------------------------------------------*
DATA: zeilen_itab01 TYPE i.
DATA: zeilen_itab02 TYPE i.


*--------------------------------------------------------------------*
*Datentypen für Zeilen deklarieren*
*--------------------------------------------------------------------*

TYPES: BEGIN OF zeile01_typ,
        AUFNR LIKE RESB-AUFNR, "Auftragsnummer
        XWAOK LIKE RESB-XWAOK, "Bewegung erlaubt
        KZEAR LIKE RESB-KZEAR, "Endausgefasst
        XLOEK LIKE RESB-XLOEK, "Löschkennzeichen
        AUERU LIKE AFRU-AUERU, "Endrückgemeldet (Vorgang)
        RGEKZ LIKE RESB-RGEKZ, "retrograde entnahme
        VORNR LIKE RESB-VORNR, "Vorgangsnummer Komponenten
        MATNR LIKE RESB-MATNR, "Materialnummer Komponente
END OF zeile01_typ.

TYPES: BEGIN OF zeile02_typ,
        OBJNR LIKE JEST-OBJNR, "Objektnummer Vorgang
        STAT  LIKE JEST-STAT,  "Status Vorgang
        INACT LIKE JEST-INACT, "Stastus Vorgang inaktiv?
        VORNR LIKE AFRU-VORNR, "Vorgangsnummer
END OF zeile02_typ.


Data :    pop(3) TYPE n,
          txt(4) TYPE n,
       answer(1) TYPE c.


*--------------------------------------------------------------------*
*Datentypen für interne Tabellen deklarieren*
*--------------------------------------------------------------------*
TYPES itab01_typ TYPE STANDARD TABLE OF zeile01_typ.
TYPES itab02_typ TYPE STANDARD TABLE OF zeile02_typ.


*--------------------------------------------------------------------*
*Interne Tabellen deklarieren ohne Kopfzeile*
*--------------------------------------------------------------------*
DATA itab01 TYPE itab01_typ.
DATA itab02 TYPE itab02_typ.


*--------------------------------------------------------------------*
*Workareas für interen Tabellen deklarieren*
*--------------------------------------------------------------------*
DATA wa_itab01 TYPE zeile01_typ.
DATA wa_itab02 TYPE zeile02_typ.


*--------------------------------------------------------------------*
*Selektionsbild gestalten*
*--------------------------------------------------------------------*
PARAMETERS S_RUECK TYPE AFRU-RUECK OBLIGATORY.


*--------------------------------------------------------------------*
*Start of Selection*
*--------------------------------------------------------------------*
START-OF-SELECTION.


*--------------------------------------------------------------------*
*Interne Tabelle itab02 füllen - Vorgang Endrückgemeldet???*
*--------------------------------------------------------------------*
     SELECT *
    INTO CORRESPONDING FIELDS OF TABLE itab02
       FROM AFRU

           JOIN  AFVC
      ON  AFVC~AUFPL = AFRU~AUFPL
     AND  AFVC~APLZL = AFRU~APLZL

          JOIN  JEST
      ON  JEST~OBJNR = AFVC~OBJNR

     WHERE AFRU~RUECK = S_RUECK.


*--------------------------------------------------------------------*
*Interne Tabelle itab01 füllen*
*--------------------------------------------------------------------*
     SELECT *
    INTO CORRESPONDING FIELDS OF TABLE itab01
       FROM AFRU

           JOIN  AFKO
      ON  AFKO~AUFNR = AFRU~AUFNR

          JOIN  RESB
      ON  RESB~RSNUM = AFKO~RSNUM

     WHERE AFRU~RUECK = S_RUECK.

END-OF-SELECTION.


*--------------------------------------------------------------------*
*Loop itab02 - Vorgang Endrückgemeldet?*
*--------------------------------------------------------------------*
  LOOP AT itab02 INTO wa_itab02.
         IF wa_itab02-STAT = 'I0009'    "Vorgang Rückgemeldet
            AND wa_itab02-INACT = ' '.  "Vorgangstatus aktiv?
     txt = txt + 1.
ENDIF.
  ENDLOOP.


*--------------------------------------------------------------------*
*Loop itab01 - Nicht bezogene Komponenten zu Vorgang selektieren*
*--------------------------------------------------------------------*
IF txt NE ' '.


  LOOP AT itab01 INTO wa_itab01.

                   IF wa_itab01-XWAOK = 'X'                 "Bewegung erlaubt
                  AND wa_itab01-KZEAR = ' '                 "Endausgefasst
                  AND wa_itab01-XLOEK = ' '                 "Löschkennzeichen
                  AND wa_itab01-RGEKZ = ' '                 "Retrograde entnahme
                  AND wa_itab01-VORNR = wa_itab02-VORNR.    "Komponentne zu Vorgang

                   WRITE:/ wa_itab01-VORNR, wa_itab01-matnr.

           pop = pop + 1.
         ELSE.
           pop = pop + 0.
        ENDIF.

ENDLOOP.


  IF pop NE '0'.
     SPOP-TEXTLINE1  = pop.
     SPOP-TEXTLINE2  = 'Komponenten sind nicht gebucht'(A02).
     CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
          EXPORTING TITEL        = 'Abbruch'
                    TEXTLINE1    = SPOP-TEXTLINE1
                    TEXTLINE2    = SPOP-TEXTLINE2
          IMPORTING ANSWER       = ANSWER.
     PERFORM ANSWER USING ANSWER.
  ENDIF.


ENDIF.


IF txt = ' '.
      WRITE:/ 'End-Rückmeldung ok'.
ENDIF.


*--------------------------------------------------------------------*
*Popup deklarieren*
*--------------------------------------------------------------------*
  FORM ANSWER USING ANSWER.
  CASE ANSWER.
    WHEN 'J'.
        LEAVE.
    WHEN 'N'.
          LEAVE TO TRANSACTION '/ns000'.
    WHEN 'A'.
      WRITE: / 'Sie haben den phantastischen Test abgebrochen'(012).
  ENDCASE.
ENDFORM.

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


Re: Report zu Rückmeldungen Fertigungsauftrag

Beitrag von erp-bt (Specialist / 163 / 4 / 21 ) »
Hallo christof,

Ich empfehle Dir zunächst dringend folgenden Link und die dazugehörigen Empfehlungen durchzulesen und wenn möglich auch zu befolgen. Für den Anfang sollte das Kapitel 'Aufbau und Stil' reichen. :wink:

ABAP - Offizielle Programmierichtlinien

Jetzt zu Deiner konkreten Frage. Eine Customizing-Einstellung wird es wahrscheinlich nicht geben wo Du Deinen Report zuordnen kannst. Wenn ich euer Szenario richtig verstehe, möchtest Du bei der End-Rückmeldung zum Fertigungsauftrag eine Prüfung durchführen, ob auch alle Komponenten zum Fertigungsauftrag gebucht wurden?

Hier musst Du Dir einen User-Exit oder Badi suchen der bei der Transaktion zur End-Rückmeldung aufgerufen wird. Ich denke mal der Badi WORKORDER_CONFIRM bietet sich hier an. Hier gibt es mehrere Methoden die zur Verfügung gestellt werden. Methode AT_SAVE bzw. BEFORE_UPDATE scheinen zu passen. Dort kannst Du dann Deine Prüfung einbauen. Am einfachsten mal einen Break-Point in beiden Methoden setzen und eine End-Rückmeldung durchführen und dann schauen welche Methode am geeignetsten ist.

Liebe Grüße,
...entwickelnder Berater...beratender Entwickler

Re: Report zu Rückmeldungen Fertigungsauftrag

Beitrag von christof (Specialist / 122 / 6 / 0 ) »
Hallo

Vielen Dank, leider habe ich bisher nicht viel mit Methoden gearbeitet.
Im Internet habe ich folgenden Link gefunden. Kann ich nach dieser Anleitung arbeiten?

http://www.saptechnical.com/Tutorials/O ... /page1.htm

Freundlche Grüsse

Re: Report zu Rückmeldungen Fertigungsauftrag

Beitrag von erp-bt (Specialist / 163 / 4 / 21 ) »
Hallo christof,

Grundsätzlich lässt sich mit Interfaces so arbeiten, wenn Du selbst ein Interface definieren möchtest. Bei der von mir erwähnten Badi-Technologie gibt es aber schon ein vordefiniertes Interface. Mit der Transaktion SE18 legst Du zum Badi ( und damit auch zu dem Badi gehörenden Interface) eine Implementierende Klasse an. In diesen Methoden kannst Du dann die Break-Points setzen.

Aber ganz ehrlich, ich glaube Dir fehlt noch einen Haufen Grundlagen. Ich bin mir jetzt nicht ganz sicher, ob Du irgendwo als Angestellter tätig bist. Falls dem so ist, solltest Du Deinen Chef bitten, das er Dich zunächst mal auf eine Schulung schickt. Die dürfte sich relativ schnell bezahlt machen.

Liebe Grüße,
...entwickelnder Berater...beratender Entwickler

Re: Report zu Rückmeldungen Fertigungsauftrag

Beitrag von christof (Specialist / 122 / 6 / 0 ) »
Hallo

Ehrlich gesagt ist dies eine reisen Herausforderung für mich. Aber der Mensch muss meiner Meinung nach gefordert werden so lernt er am meisten :D
Nun ist alles angelegt, mein Problem ist nun mein Programm mit der Methode IF_EX_WORKORDER_CONFIRM~AT_SAVE zu koppeln.

Leider kommt die Fehler-Meldung:
S_RUECK ist nicht typkompatibel zum formalen Parameter IS_CONFIRMATION.
Wie kann ich dies Lösen, ich probierte es schon mit dem Befehl ASSIGN, hat aber nicht funktioniert?
Ich habe unten mein Programm reingestellt.

Code: Alles auswählen.

REPORT ZR_TEST1.

DATA: OBJ TYPE REF TO ZCL_IM__SPERREN_FEAUF. "CL_EX_WORKORDER_CONFIRM.


*--------------------------------------------------------------------*
*Tabellen*
*--------------------------------------------------------------------*
  TABLES: RESB,
             AFRU,
             ....
       
*--------------------------------------------------------------------*
*Felder deklarieren*
*--------------------------------------------------------------------*
DATA: zeilen_itab01 TYPE i.
DATA: zeilen_itab02 TYPE i.

*--------------------------------------------------------------------*
*Datentypen für Zeilen deklarieren*
*--------------------------------------------------------------------*

TYPES: BEGIN OF zeile01_typ,
        AUFNR LIKE RESB-AUFNR, "Auftragsnummer
        .....
END OF zeile01_typ.

TYPES: BEGIN OF zeile02_typ,
        OBJNR LIKE JEST-OBJNR, "Objektnummer Vorgang
         .......
END OF zeile02_typ.


Data :    pop(3) TYPE n,
             txt(4) TYPE n,
            answer(1) TYPE c,
            S_RUECK(10) TYPE n.


*--------------------------------------------------------------------*
*Datentypen für interne Tabellen deklarieren*
*--------------------------------------------------------------------*
TYPES itab01_typ TYPE STANDARD TABLE OF zeile01_typ.
TYPES itab02_typ TYPE STANDARD TABLE OF zeile02_typ.


*--------------------------------------------------------------------*
*Interne Tabellen deklarieren ohne Kopfzeile*
*--------------------------------------------------------------------*
DATA itab01 TYPE itab01_typ.
DATA itab02 TYPE itab02_typ.


*--------------------------------------------------------------------*
*Workareas für interen Tabellen deklarieren*
*--------------------------------------------------------------------*
DATA wa_itab01 TYPE zeile01_typ.
DATA wa_itab02 TYPE zeile02_typ.


*--------------------------------------------------------------------*
*Start of Selection*
*--------------------------------------------------------------------*
START-OF-SELECTION.

CREATE OBJECT: OBJ.

CALL METHOD OBJ->IF_EX_WORKORDER_CONFIRM~AT_SAVE
EXPORTING
  I_TYPE = 'P'
  IS_CONFIRMATION = S_RUECK.

Im Moment möchte ich die Methode in meinem Report aufrufen, ist dies eigentlich richtig?
Oder müsste man den Report in die Methode schreiben.

Code: Alles auswählen.

method IF_EX_WORKORDER_CONFIRM~AT_SAVE.


endmethod.

Re: Report zu Rückmeldungen Fertigungsauftrag

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi,

s_rueck ist ein Feld und is_confirmation ist eine Struktur. Das ist der Fehler.
Gruß,
der Matze

Re: Report zu Rückmeldungen Fertigungsauftrag

Beitrag von erp-bt (Specialist / 163 / 4 / 21 ) »
christof hat geschrieben: Im Moment möchte ich die Methode in meinem Report aufrufen, ist dies eigentlich richtig?
Nein, ist nicht richtig.
christof hat geschrieben: Oder müsste man den Report in die Methode schreiben.

Code: Alles auswählen.

method IF_EX_WORKORDER_CONFIRM~AT_SAVE.
endmethod.
Die Methode wird beim Erfassen, bzw. beim sichern einer Rückmeldung aufgerufen. Innerhalb der Methode musst Du Deine Prüfung durchführen. Hast Du denn mal einen Break-Point in die Methode gesetzt und dann eine Rückmeldung durchgeführt, z.B. mit Transaktion CO11N? Du müsstest dann in dieser Methode stehen bleiben. Innerhalb dieser Methode kannst Du dann Deine Prüfung machen.

Liebe Grüße,
...entwickelnder Berater...beratender Entwickler

Re: Report zu Rückmeldungen Fertigungsauftrag

Beitrag von christof (Specialist / 122 / 6 / 0 ) »
Super, nun funktioniert fast alles.

Einziges Problem ist noch, es sollte nur selektieren wenn eine Endrückmeldung erfolgt.
Ich habe es folgend gelöst. Aber der Aktivitätstyp in der Transaktion (I_TYPE) kann nur Rückmeldungen selektieren.
Hat jemand eine Idee dass es nur bei End-Rückmeldungen selektiert und nicht auch noch bei Teil-Rückmeldungen?

Code: Alles auswählen.

*--------------------------------------------------------------------*
*Loop itab01 - Nicht bezogene Komponenten zu Vorgang selektieren*
*--------------------------------------------------------------------*
  IF I_TYPE = 'H'.  "Rückmeldung

    LOOP AT itab01 INTO wa_itab01.

      IF wa_itab01-XWAOK = 'X'                 "Bewegung erlaubt
     AND wa_itab01-KZEAR = ' '                 "Endausgefasst
     AND wa_itab01-XLOEK = ' '                 "Löschkennzeichen
     AND wa_itab01-RGEKZ = ' '                 "Retrograde entnahme
     AND wa_itab01-VORNR = wa_itab02-VORNR.     "Komponentne zu Vorgang



        pop = pop + 1.
      ELSE.
        pop = pop + 0.
      ENDIF.

    ENDLOOP.

Seite 1 von 1

Vergleichbare Themen

7
Antw.
7426
Views
Fertigungsauftrag Report, der m. Auftragsart PP01 selektiert
von juve00 » 11.04.2012 14:39 • Verfasst in ABAP® Core
1
Antw.
1451
Views
0
Antw.
1372
Views
CS-Rückmeldungen zu SD-Faktura
von Sandra » 28.04.2005 18:50 • Verfasst in ABAP® für Anfänger

Ü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 edwin 7 / 163
Daten an Tabelle binden
vor 19 Stunden von Bright4.5 3 / 1487

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 edwin 7 / 163
Daten an Tabelle binden
vor 19 Stunden von Bright4.5 3 / 1487

Unbeantwortete Forenbeiträge

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