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.
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.
Code: Alles auswählen.
method IF_EX_WORKORDER_CONFIRM~AT_SAVE.
endmethod.
Nein, ist nicht richtig.christof hat geschrieben: Im Moment möchte ich die Methode in meinem Report aufrufen, ist dies eigentlich richtig?
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.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.
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.