*---------------------------------------------------------------------* * Report ZMATDARK * *---------------------------------------------------------------------* * Testprogramm zum Fubau MATERIAL_MAINTAIN_DARK * Thorsten Neubüser www.4ap.de *---------------------------------------------------------------------* REPORT ZMATDARK.
* allgemeine Datendeklarationen TABLES: MAKT. DATA: BEGIN OF FEHLER_TAB OCCURS 0, " Tabelle für Fehlermeldungen LINE LIKE SY-LISEL, " 255 Char END OF FEHLER_TAB, RETURNCODE(2).
* an den Fubau MATERIAL_MAINTAIN_DARK zu übergebende Daten DATA: AMARA_UEB LIKE MARA_UEB OCCURS 0 WITH HEADER LINE, AMARC_UEB LIKE MARC_UEB OCCURS 0 WITH HEADER LINE, AMAKT_UEB LIKE MAKT_UEB OCCURS 0 WITH HEADER LINE, AMBEW_UEB LIKE MBEW_UEB OCCURS 0 WITH HEADER LINE, AMVKE_UEB LIKE MVKE_UEB OCCURS 0 WITH HEADER LINE, AMERRDAT LIKE MERRDAT OCCURS 0 WITH HEADER LINE, * vom Fubau MATERIAL_MAINTAIN_DARK beschriebene Daten MATNR_LAST LIKE MARA-MATNR, MATNR_LAST_SAVE LIKE MARA-MATNR, NUMBER_ERRORS_TRANSACTION LIKE TBIST-NUMERROR, BLANK, FEST_X VALUE 'X', FEST_E VALUE 'E', ZAEHLER LIKE AMARA_UEB-TRANC. " jede Zeile = ein Material
* Selektionsbildschirm SELECTION-SCREEN BEGIN OF BLOCK MAT1 WITH FRAME TITLE TEXT-001. PARAMETERS: P1_MATNR(10)," like mara-matnr, " Material P1_BISMT LIKE MARA-BISMT, " Alte Materialnummer P1_WRKST(4), " like mara-wrkst, " Werkstoff P1_WERKS LIKE MARC-WERKS, " Werk P1_STAWN LIKE MARC-STAWN, " Statistische Warennummer P1_WEBAZ LIKE MARC-WEBAZ DEFAULT '1', P1_MAKTX LIKE MAKT-MAKTX, " Materialkurztext P1_BWKEY LIKE MBEW-BWKEY, " Bewertungskreis P1_BWTAR LIKE MBEW-BWTAR, " Bewertungsart P1_VERPR LIKE MBEW-VERPR. " gleitender Preis SELECTION-SCREEN END OF BLOCK MAT1.
SELECTION-SCREEN BEGIN OF BLOCK MAT2 WITH FRAME TITLE TEXT-002. PARAMETERS: P2_MATNR(10)," like mara-matnr, " Material P2_BISMT LIKE MARA-BISMT, " Alte Materialnummer P2_WRKST(4), " like mara-wrkst, " Werkstoff P2_WERKS LIKE MARC-WERKS, " Werk P2_STAWN LIKE MARC-STAWN, " Statistische Warennummer P2_WEBAZ LIKE MARC-WEBAZ DEFAULT '1', P2_MAKTX LIKE MAKT-MAKTX, " Materialkurztext P2_BWKEY LIKE MBEW-BWKEY, " Bewertungskreis P2_BWTAR LIKE MBEW-BWTAR, " Bewertungsart P2_VERPR LIKE MBEW-VERPR. " gleitender Preis SELECTION-SCREEN END OF BLOCK MAT2.
* LOS GEHT´s START-OF-SELECTION.
* Daten zuordnen / das ist hier nur ein Test :-) * die einzelnen internen Tabellen können natürlich x Zeilen enthalten * Material 1 ZAEHLER = ZAEHLER + 1. AMARA_UEB-MANDT = SY-MANDT. UNPACK P1_MATNR TO AMARA_UEB-MATNR. " Simulation CharacterString MOVE P1_BISMT TO AMARA_UEB-BISMT. MOVE P1_WRKST TO AMARA_UEB-WRKST. AMARA_UEB-TCODE = 'MM02'. " nicht vergessen!!! AMARA_UEB-TRANC = ZAEHLER. " Zuordnung Zeilen = Material APPEND AMARA_UEB. AMARC_UEB-MANDT = SY-MANDT. AMARC_UEB-MATNR = AMARA_UEB-MATNR. UNPACK P1_WERKS TO AMARC_UEB-WERKS. MOVE P1_STAWN TO AMARC_UEB-STAWN. MOVE P1_WEBAZ TO AMARC_UEB-WEBAZ. AMARC_UEB-TRANC = ZAEHLER. APPEND AMARC_UEB. AMAKT_UEB-MANDT = SY-MANDT. AMAKT_UEB-MATNR = AMARA_UEB-MATNR. MOVE P1_MAKTX TO AMAKT_UEB-MAKTX. AMAKT_UEB-SPRAS = SY-LANGU. AMAKT_UEB-TRANC = ZAEHLER. APPEND AMAKT_UEB. AMBEW_UEB-MANDT = SY-MANDT. AMBEW_UEB-MATNR = AMARA_UEB-MATNR. UNPACK P1_BWKEY TO AMBEW_UEB-BWKEY. AMBEW_UEB-BWTAR = P1_BWTAR. AMBEW_UEB-VERPR = P1_VERPR. AMBEW_UEB-TRANC = ZAEHLER. APPEND AMBEW_UEB.
* Material 2 ZAEHLER = ZAEHLER + 1. AMARA_UEB-MANDT = SY-MANDT. UNPACK P2_MATNR TO AMARA_UEB-MATNR. " Simulation CharacterString MOVE P2_BISMT TO AMARA_UEB-BISMT. MOVE P2_WRKST TO AMARA_UEB-WRKST. AMARA_UEB-TCODE = 'MM02'. " nicht vergessen!!! AMARA_UEB-TRANC = ZAEHLER. " Transaktionszähler APPEND AMARA_UEB. AMARC_UEB-MANDT = SY-MANDT. AMARC_UEB-MATNR = AMARA_UEB-MATNR. UNPACK P2_WERKS TO AMARC_UEB-WERKS. MOVE P2_STAWN TO AMARC_UEB-STAWN. MOVE P2_WEBAZ TO AMARC_UEB-WEBAZ. AMARC_UEB-TRANC = ZAEHLER. APPEND AMARC_UEB. AMAKT_UEB-MANDT = SY-MANDT. AMAKT_UEB-MATNR = AMARA_UEB-MATNR. MOVE P2_MAKTX TO AMAKT_UEB-MAKTX. AMAKT_UEB-SPRAS = SY-LANGU. AMAKT_UEB-TRANC = ZAEHLER. APPEND AMAKT_UEB. AMBEW_UEB-MANDT = SY-MANDT. AMBEW_UEB-MATNR = AMARA_UEB-MATNR. UNPACK P2_BWKEY TO AMBEW_UEB-BWKEY. AMBEW_UEB-BWTAR = P2_BWTAR. AMBEW_UEB-VERPR = P2_VERPR. AMBEW_UEB-TRANC = ZAEHLER. APPEND AMBEW_UEB.
* letze matnr speichern MATNR_LAST_SAVE = AMARA_UEB-MATNR.
* Materialstammpflege ohne Bilder * Der Funktionsbaustein kann aus jeder beliebigen Anwendung heraus * aufgerufen werden. * Die Übergabe der zu pflegenden Materialdaten erfolgt mittels der * Tabellen AMARA_UEB, AMARC_UEB, ... im internen Format. * Weiteres in der FUBAU-Doku [ ja, es gibt auch dokumentierte :-)) ] CALL FUNCTION 'MATERIAL_MAINTAIN_DARK' EXPORTING KZ_ACTIV_CAD = BLANK FLAG_MUSS_PRUEFEN = FEST_X SPERRMODUS = FEST_E MAX_ERRORS = 0 " Anzahl akzeptierte fehler P_KZ_NO_WARN = FEST_X KZ_PRF = BLANK KZ_VERW = FEST_X KZ_AEND = FEST_X KZ_DISPO = FEST_X KZ_TEST = BLANK KZ_MDIP = BLANK KZ_MPRP = BLANK KZ_ALE = BLANK KZ_ACTV = BLANK IMPORTING MATNR_LAST = MATNR_LAST " letzte prozessierte MATNR NUMBER_ERRORS_TRANSACTION = NUMBER_ERRORS_TRANSACTION TABLES AMARA_UEB = AMARA_UEB " Materialstamm: allgemeine Daten AMAKT_UEB = AMAKT_UEB " Materialkurztexte AMARC_UEB = AMARC_UEB " Materialstamm-C-Segment * AMARD_UEB = " Materialstamm-Lager/Chargen-Segment * AMFHM_UEB = " FHM-Felder im Materialstamm * AMARM_UEB = " Mengeneinheiten * AMEA1_UEB = " Verwaltung der EANs zum Material:DI AMBEW_UEB = AMBEW_UEB " Materialbewertung * ASTEU_UEB = " für Steuern: Datenübernahme * ASTMM_UEB = " * AMLGN_UEB = " Materialdaten pro Lagernummer * AMLGT_UEB = " Materialdaten pro Lagertyp * AMPGD_UEB = " Änderungsbelegstruktur für Material- * stamm/Produktgruppe * AMPOP_UEB = " Prognoseparameter * AMVEG_UEB = " Materialstamm: Gesamtsverbräuche * AMVEU_UEB = " Materialstamm: ungeplante Verbräuche AMVKE_UEB = AMVKE_UEB " Materialstamm: Verkaufsdaten * ALTX1_UEB = " Datenübernahme: Datenteil Langtexte * AMPRW_UEB = " Datenübernahme: Prognosewerte * AMFIELDRES = " Felder, die pro Transaktion zu * " initialisieren sind AMERRDAT = AMERRDAT " Struktur für Rückgabe von Fehlermeld. EXCEPTIONS KSTATUS_EMPTY = 1 TKSTATUS_EMPTY = 2 T130M_ERROR = 3 INTERNAL_ERROR = 4 TOO_MANY_ERRORS = 5 UPDATE_ERROR = 6 OTHERS = 7. IF SY-SUBRC NE 0. MOVE SY-SUBRC TO RETURNCODE. CONCATENATE 'MATERIAL_MAINTAIN_DARK:'(004) RETURNCODE INTO FEHLER_TAB-LINE SEPARATED BY ' '. APPEND FEHLER_TAB. ELSE. COMMIT WORK. ENDIF. IF NOT MATNR_LAST = MATNR_LAST_SAVE. * das darf eigentlich nicht passieren! Dann ganze Verarbeitung fehlerh. CONCATENATE 'MATERIAL_MAINTAIN_DARK:'(004) 'Materialnummern ungleich'(005) P1_MATNR MATNR_LAST INTO FEHLER_TAB-LINE SEPARATED BY ' '. APPEND FEHLER_TAB. ENDIF. IF NOT NUMBER_ERRORS_TRANSACTION IS INITIAL. CONCATENATE 'MATERIAL_MAINTAIN_DARK:'(004) 'anzahl Fehler:'(007) NUMBER_ERRORS_TRANSACTION INTO FEHLER_TAB-LINE SEPARATED BY ' '. APPEND FEHLER_TAB. ENDIF. " number_errors_transaction is initial IF NOT AMERRDAT[] IS INITIAL. * Auswertung der Antwort CONCATENATE 'MATERIAL_MAINTAIN_DARK:'(004) 'Meldungsliste'(006) INTO FEHLER_TAB-LINE SEPARATED BY ' '. APPEND FEHLER_TAB. DATA: AMERRDAT_INDEX(3). LOOP AT AMERRDAT. MOVE SY-TABIX TO AMERRDAT_INDEX. * Fehlermeldung nachschlagen CALL FUNCTION 'RPY_MESSAGE_COMPOSE' EXPORTING LANGUAGE = SY-LANGU MESSAGE_ID = AMERRDAT-MSGID MESSAGE_NUMBER = AMERRDAT-MSGNO MESSAGE_VAR1 = AMERRDAT-MSGV1 MESSAGE_VAR2 = AMERRDAT-MSGV2 MESSAGE_VAR3 = AMERRDAT-MSGV3 MESSAGE_VAR4 = AMERRDAT-MSGV4 IMPORTING MESSAGE_TEXT = SY-LISEL " fehler_tab-line * tables * longtext = EXCEPTIONS MESSAGE_NOT_FOUND = 1 OTHERS = 2. IF SY-SUBRC = 0. CONCATENATE AMERRDAT_INDEX SY-LISEL INTO FEHLER_TAB-LINE SEPARATED BY BLANK. APPEND FEHLER_TAB. ELSE. CONCATENATE 'RPY_MESSAGE_COMPOSE'(008) AMERRDAT_INDEX AMERRDAT-MSGID AMERRDAT-MSGNO AMERRDAT-MSGV1(10) AMERRDAT-MSGV2(10) AMERRDAT-MSGV3(10) AMERRDAT-MSGV4(10) INTO FEHLER_TAB-LINE SEPARATED BY ' '. APPEND FEHLER_TAB. ENDIF. ENDLOOP. " at amerrdat APPEND INITIAL LINE TO FEHLER_TAB. ENDIF. " not amerrdat[] is initial
END-OF-SELECTION. LOOP AT FEHLER_TAB. WRITE / FEHLER_TAB. ENDLOOP.
ULINE. WRITE: / 'letzte Materialnummer:'. SELECT SINGLE * FROM MAKT WHERE MATNR = MATNR_LAST_SAVE. WRITE: / MAKT-MATNR, MAKT-MAKTX. ULINE. WRITE: / '** Listende **'.
|