MATERIAL_MAINTAIN_DARK testen

www.4AP.de - alles über ABAP  -  Syntaxbeispiel Testen Funktionsbaustein MATERIAL_MAINTAIN_DARK

Beispielcoding: Testen Funktionsbaustein MATERIAL_MAINTAIN_DARK (kopieren erlaubt aber auf eigene Gefahr :-))



*---------------------------------------------------------------------*
* 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 **'.