Code: Alles auswählen.
PERFORM DYNPRO USING:
'X' 'SAPLMGMM' '0060', " Materialfenster
' ' 'RMMG1-MATNR' V_MATNR, " Materialnummern
' ' 'BDC_OKCODE' 'ENTR', " Bestätigung
'X' 'SAPLMGMM' '0070', " Sichtenauswahl
' ' 'MSICHTAUSW-KZSEL(01)' 'X', " Grunddaten selektieren
' ' 'BDC_OKCODE' 'ENTR', " Bestätigung
'X' 'SAPLMGMM' '3005',
' ' 'BDC_OKCODE' 'ZU01',
'X' 'SAPLMGMM' '3010', " Springen zu Register Mengeneinheiten
' ' 'BDC_OKCODE' 'ZU02',
'X' 'SAPLMGMM' '3100'. " Mengeneinheiten
IF V_COUNTER < 12.
CONCATENATE 'SMEINH-HOEHE(' V_COUNTER ')' INTO V_SMTEXTH.
CONCATENATE 'SMEINH-MEABM(' V_COUNTER ')' INTO V_SMTEXTM.
PERFORM DYNPRO USING:
' ' V_SMTEXTH V_HOEHE, " geänderte Höhe
' ' V_SMTEXTM V_MEABM, " geänderter Mass
' ' 'BDC_OKCODE' 'BU'. " Sichern
ELSE.
V_COUNTER = V_COUNTER - 11.
CONCATENATE 'SMEINH-HOEHE(' V_COUNTER ')' INTO V_SMTEXTH.
CONCATENATE 'SMEINH-MEABM(' V_COUNTER ')' INTO V_SMTEXTM.
PERFORM DYNPRO USING:
' ' 'BDC_CURSOR' 'SMEINH-UMREN(01)',
' ' 'FCODE_VOBI' 'VOBI',
* ' ' 'BDC_OKCODE' 'P++',
' ' V_SMTEXTH V_HOEHE, " geänderte Höhe
' ' V_SMTEXTM V_MEABM, " geänderter Mass
' ' 'BDC_OKCODE' 'BU'. " Sichern
ENDIF.Code: Alles auswählen.
CALL FUNCTION 'BAPI_MATERIAL_MAINTAINDATA_RT'
EXPORTING
HEADDATA = '000000000000005117'
UNITSOFMEASURE = P_KM
* IMPORTING
* E_AMOUNT =
* EXCEPTIONS
* FAILED = 1
* OTHERS = 2Code: Alles auswählen.
FORM HOEHE_FUELLEN.
DATA:
LT_BAPIE1MARMRT LIKE BAPIE1MARMRT OCCURS 0 WITH HEADER LINE,
LT_BAPIE1MARMRTX LIKE BAPIE1MARMRTX OCCURS 0 WITH HEADER LINE,
LT_CLIENTDATA LIKE BAPIE1MARART OCCURS 0 WITH HEADER LINE,
LT_CLIENTDATAX LIKE BAPIE1MARARTX OCCURS 0 WITH HEADER LINE,
L_HEADDATA LIKE BAPIE1MATHEAD,
L_RETURN LIKE BAPIRETURN1.
* Kopfsatz füllen (headdata ist eine Struktur, die nicht nur die matnr enthält!)
* Die matnr wird später gefüllt
L_HEADDATA-BASIC_VIEW = 'X'. "Sicht Grunddaten
L_HEADDATA-NO_APPL_LOG = ' '. "Applikationslog
L_HEADDATA-NO_CHANGE_DOC = ' '. "Änderungsbelege
CLEAR: I_DATEN, I_DATEN_CL, V_MATNR.
LOOP AT I_DATEN.
IF V_MATNR NE I_DATEN-MATNR.
L_HEADDATA-MATERIAL = I_DATEN-MATNR.
LT_CLIENTDATA-MATERIAL = I_DATEN-MATNR.
APPEND LT_CLIENTDATA.
LT_CLIENTDATAX-MATERIAL = I_DATEN-MATNR.
APPEND LT_CLIENTDATAX.
LOOP AT I_DATEN_CL WHERE MATNR = I_DATEN-MATNR
AND UMREZ NE I_DATEN-UMREZ.
* Datensatz für Änderung an der MARM
LT_BAPIE1MARMRT-MATERIAL = I_DATEN-MATNR. "key:matnr
LT_BAPIE1MARMRT-ALT_UNIT = I_DATEN_CL-UMREZ. "key:me
LT_BAPIE1MARMRT-HEIGHT = I_DATEN_CL-HOEHE. "Höhe
LT_BAPIE1MARMRT-UNIT_DIM = I_DATEN_CL-MEABM. "Längen-Einheit
APPEND LT_BAPIE1MARMRT.
* Ankreuzfelder (die Schlüsselfelder genauso wie bei den Datenfeldern
* belegen, die restlichen Felder mit 'X')
LT_BAPIE1MARMRTX-MATERIAL = I_DATEN-MATNR.
LT_BAPIE1MARMRTX-ALT_UNIT = I_DATEN_CL-UMREZ.
LT_BAPIE1MARMRTX-HEIGHT = 'X'.
LT_BAPIE1MARMRTX-UNIT_DIM = 'X'.
APPEND LT_BAPIE1MARMRTX.
ENDLOOP.
* Änderungen durchführen je Material
CALL FUNCTION 'BAPI_MATERIAL_MAINTAINDATA_RT'
EXPORTING
HEADDATA = L_HEADDATA
IMPORTING
RETURN = L_RETURN
TABLES
CLIENTDATA = LT_CLIENTDATA
CLIENTDATAX = LT_CLIENTDATAX
UNITSOFMEASURE = LT_BAPIE1MARMRT
UNITSOFMEASUREX = LT_BAPIE1MARMRTX.
MOVE I_DATEN-MATNR TO V_MATNR.
ENDIF.
ENDLOOP.
WRITE: / L_RETURN.
Die Auswertung von Return solltest du noch in der Loop-Schleife machen in der auch das BAPI aufgerufen wird so bekommst du alle Meldungen mit und nicht nur die letzte.kostonstyle hat geschrieben:wenn jemand mit weiter helfen könnten.
Code: Alles auswählen.
537Meldungen zum Material 000000000000000006: Lognummer 0000000000000185
Code: Alles auswählen.
FORM HOEHE_FUELLEN.
DATA:
LT_BAPIE1MARMRT LIKE BAPIE1MARMRT OCCURS 0 WITH HEADER LINE,
LT_BAPIE1MARMRTX LIKE BAPIE1MARMRTX OCCURS 0 WITH HEADER LINE,
LT_CLIENTDATA LIKE BAPIE1MARART OCCURS 0 WITH HEADER LINE,
LT_CLIENTDATAX LIKE BAPIE1MARARTX OCCURS 0 WITH HEADER LINE,
L_HEADDATA LIKE BAPIE1MATHEAD,
L_RETURN LIKE BAPIRETURN1,
WAIT LIKE BAPITA-WAIT,
RETURN LIKE BAPIRET2.
* Kopfsatz füllen (headdata ist eine Struktur, die nicht nur die matnr enthält!)
* Die matnr wird später gefüllt
L_HEADDATA-BASIC_VIEW = 'X'. "Sicht Grunddaten
L_HEADDATA-NO_APPL_LOG = ' '. "Applikationslog
L_HEADDATA-NO_CHANGE_DOC = ' '. "Änderungsbelege
CLEAR: I_DATEN, I_DATEN_CL, V_MATNR.
LOOP AT I_DATEN.
IF V_MATNR NE I_DATEN-MATNR.
L_HEADDATA-MATERIAL = I_DATEN-MATNR.
LT_CLIENTDATA-MATERIAL = I_DATEN-MATNR.
APPEND LT_CLIENTDATA.
LT_CLIENTDATAX-MATERIAL = I_DATEN-MATNR.
APPEND LT_CLIENTDATAX.
LOOP AT I_DATEN_CL WHERE MATNR = I_DATEN-MATNR
AND UMREZ NE I_DATEN-UMREZ.
* Datensatz für Änderung an der MARM
LT_BAPIE1MARMRT-MATERIAL = I_DATEN-MATNR. "key:matnr
LT_BAPIE1MARMRT-ALT_UNIT = I_DATEN_CL-UMREZ. "key:me
LT_BAPIE1MARMRT-HEIGHT = I_DATEN_CL-HOEHE. "Höhe
LT_BAPIE1MARMRT-UNIT_DIM = I_DATEN_CL-MEABM. "Längen-Einheit
APPEND LT_BAPIE1MARMRT.
* Ankreuzfelder (die Schlüsselfelder genauso wie bei den Datenfeldern
* belegen, die restlichen Felder mit 'X')
LT_BAPIE1MARMRTX-MATERIAL = I_DATEN-MATNR.
LT_BAPIE1MARMRTX-ALT_UNIT = I_DATEN_CL-UMREZ.
LT_BAPIE1MARMRTX-HEIGHT = 'X'.
LT_BAPIE1MARMRTX-UNIT_DIM = 'X'.
APPEND LT_BAPIE1MARMRTX.
ENDLOOP.
* Änderungen durchführen je Material
CALL FUNCTION 'BAPI_MATERIAL_MAINTAINDATA_RT'
EXPORTING
HEADDATA = L_HEADDATA
IMPORTING
RETURN = L_RETURN
TABLES
CLIENTDATA = LT_CLIENTDATA
CLIENTDATAX = LT_CLIENTDATAX
UNITSOFMEASURE = LT_BAPIE1MARMRT
UNITSOFMEASUREX = LT_BAPIE1MARMRTX.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = WAIT
IMPORTING
RETURN = RETURN
EXCEPTIONS
OTHERS = 01.
MOVE I_DATEN-MATNR TO V_MATNR.
ENDIF.
WRITE: / L_RETURN.
SKIP.
SKIP.
ENDLOOP.
ENDFORM.
Code: Alles auswählen.
FORM HOEHE_FUELLEN.
* Kopfsatz füllen (headdata ist eine Struktur, die nicht nur die matnr enthält!)
* Die matnr wird später gefüllt
L_HEADDATA-BASIC_VIEW = 'X'. "Sicht Grunddaten
L_HEADDATA-NO_APPL_LOG = ' '. "Applikationslog
L_HEADDATA-NO_CHANGE_DOC = ' '. "Änderungsbelege
CLEAR: I_DATEN, I_DATEN_CL, V_MATNR.
LOOP AT I_DATEN.
IF V_MATNR NE I_DATEN-MATNR.
*** BEGIN Daten initialisieren
CLEAR: LT_CLIENTDATA, LT_CLIENTDATAX, LT_BAPIE1MARMRT, LT_BAPIE1MARMRTX.
REFRESH: LT_CLIENTDATA, LT_CLIENTDATAX, LT_BAPIE1MARMRT, LT_BAPIE1MARMRTX.
*** ENDE Daten initialisieren
L_HEADDATA-MATERIAL = I_DATEN-MATNR.
LT_CLIENTDATA-MATERIAL = I_DATEN-MATNR.
APPEND LT_CLIENTDATA.
LT_CLIENTDATAX-MATERIAL = I_DATEN-MATNR.
APPEND LT_CLIENTDATAX.
LOOP AT I_DATEN_CL WHERE MATNR = I_DATEN-MATNR
AND UMREZ NE I_DATEN-UMREZ.
* Datensatz für Änderung an der MARM
LT_BAPIE1MARMRT-MATERIAL = I_DATEN-MATNR. "key:matnr
LT_BAPIE1MARMRT-ALT_UNIT = I_DATEN_CL-UMREZ. "key:me
LT_BAPIE1MARMRT-HEIGHT = I_DATEN_CL-HOEHE. "Höhe
LT_BAPIE1MARMRT-UNIT_DIM = I_DATEN_CL-MEABM. "Längen-Einheit
APPEND LT_BAPIE1MARMRT.
* Ankreuzfelder (die Schlüsselfelder genauso wie bei den Datenfeldern
* belegen, die restlichen Felder mit 'X')
LT_BAPIE1MARMRTX-MATERIAL = I_DATEN-MATNR.
LT_BAPIE1MARMRTX-ALT_UNIT = I_DATEN_CL-UMREZ.
LT_BAPIE1MARMRTX-HEIGHT = 'X'.
LT_BAPIE1MARMRTX-UNIT_DIM = 'X'.
APPEND LT_BAPIE1MARMRTX.
ENDLOOP.
* Änderungen durchführen je Material
CALL FUNCTION 'BAPI_MATERIAL_MAINTAINDATA_RT'
EXPORTING
HEADDATA = L_HEADDATA
IMPORTING
RETURN = L_RETURN
TABLES
CLIENTDATA = LT_CLIENTDATA
CLIENTDATAX = LT_CLIENTDATAX
UNITSOFMEASURE = LT_BAPIE1MARMRT
UNITSOFMEASUREX = LT_BAPIE1MARMRTX.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = WAIT
IMPORTING
RETURN = RETURN
EXCEPTIONS
OTHERS = 01.
MOVE I_DATEN-MATNR TO V_MATNR.
ENDIF.
*** Dieser BLOCK sollte vor das ENDIF in der Zeile darüber.
WRITE: / L_RETURN.
SKIP.
SKIP.
*** BLOCK ENDE
ENDLOOP.
ENDFORM.