Code: Alles auswählen.
FUNCTION Z_RFC_EDIT_LGPBE.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(CMATERIAL) TYPE MATNR
*" VALUE(CWERK) TYPE WERKS_D
*" VALUE(CLAGERORT) TYPE LGORT_D
*" VALUE(CLGPBE) TYPE LGPBE
*"----------------------------------------------------------------------
********************************************************
*STRUCTURE
********************************************************
TABLES:
BAPIMATHEAD, "Headerdata
BAPI_MARA, "Clientdata
BAPI_MARAX, "Clientdatax
BAPI_MARC, "Plantdata
BAPI_MARCX, "Plantdatax
BAPI_MARD, " Storage-location-specific material data
BAPI_MARDX, " Information on update for STORAGELOCATIONDA
BAPIRET2. "Return messages
********************************************************
*INTERNAL TABLE
********************************************************
*for materialtext
DATA:BEGIN OF BAPI_MATERIALDESC OCCURS 0.
INCLUDE STRUCTURE BAPI_MAKT .
DATA:END OF BAPI_MATERIALDESC.
*to return messages
DATA:BEGIN OF BAPI_RETURN2 OCCURS 0.
INCLUDE STRUCTURE BAPIRET2.
DATA:END OF BAPI_RETURN2.
DATA:BEGIN OF BAPI_RETURN OCCURS 0.
INCLUDE STRUCTURE BAPIRET1.
DATA:END OF BAPI_RETURN.
********************************************************
*PROCESSING
********************************************************
BAPIMATHEAD-MATERIAL = CMATERIAL.
* BAPIMATHEAD-IND_SECTOR = 'S'.
* BAPIMATHEAD-MATL_TYPE = 'ZRHD'.
BAPIMATHEAD-BASIC_VIEW = 'X'.
BAPIMATHEAD-PURCHASE_VIEW = 'X'.
* BAPI_MARA-MATL_GROUP = 'RH01'.
* BAPI_MARA-OLD_MAT_NO = '0815'.
* BAPI_MARA-BASE_UOM = 'FM'.
* MARD Table Details
BAPI_MARD-plant = CWERK.
BAPI_MARD-stge_loc = CLAGERORT.
BAPI_MARD-stge_bin = BAPI_MARD-stge_bin.
* bapi_mard-stge_bin = wa_matmaster-lgpbe.
BAPI_MARDX-plant = CWERK.
BAPI_MARDX-stge_loc = CLAGERORT.
BAPI_MARDX-stge_bin = CLGPBE.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = BAPIMATHEAD
CLIENTDATA = BAPI_MARA
CLIENTDATAX = BAPI_MARAX
STORAGETYPEDATA = BAPI_MARD
STORAGETYPEDATAX = BAPI_MARDX
IMPORTING
RETURN = BAPI_RETURN2
TABLES
MATERIALDESCRIPTION = BAPI_MATERIALDESC.
ENDFUNCTION.
Code: Alles auswählen.
Typkonflikt bei Aufruf eines Funktionsbausteins (Feldlänge)
Code: Alles auswählen.
Es ist eine Ausnahme aufgetreten, die weiter unten näher erläutert wird.
Die Ausnahme, der die Klasse 'CX_SY_DYN_CALL_ILLEGAL_TYPE' zugeordnet ist,
wurde in der Prozedur "Z_RFC_EDIT_LGPBE" "(FUNCTION)" weder abgefangen,
noch durch eine RAISING-Klausel propagiert.
Da der Aufrufer der Prozedur nicht mit dem Auftreten der Ausnahme
rechnen konnte, wurde das laufende Programm abgebrochen.
Der Grund für die Ausnahme ist:
Der Aufruf des Funktionsbausteins "BAPI_MATERIAL_SAVEDATA" ist nicht korrekt:
In der Schnittstelle des Funktionsbausteins wurde festgelegt, daß
unter "STORAGETYPEDATA" nur Felder eines bestimmten Typs und einer bestimmten
Länge mitgegeben werden dürfen. Das aktuell mitgegebene Feld
"BAPI_MARD" hat zwar den richtigen Typ, nicht aber die richtige Länge.
Code: Alles auswählen.
BAPI_MARD-stge_bin = BAPI_MARD-stge_bin. "<<<<<<<<<<<<<<<<< soll das wirklich so? du referenzierst ja auf sich selbst
*>>>>> folgende Zeilen sind grundlegend falsch. Die X-Strukturen sind dafür gedacht, dem Baustein zu vermitteln, welche Felder Änderungen enthalten.
BAPI_MARDX-plant = CWERK.
BAPI_MARDX-stge_loc = CLAGERORT.
BAPI_MARDX-stge_bin = CLGPBE.
*>>>>> Wenn du nun also nur das Feld stge_bin ändern möchtest und alle anderen Felder gleich bleiben, dann musst du das so schreiben
BAPI_MARDX-stge_bin = 'X'.
Code: Alles auswählen.
DATA: ls_bapi_mard TYPE bapi_mard.
Code: Alles auswählen.
REPORT ztest31 .
DATA headdata LIKE bapimathead.
DATA return LIKE bapiret2.
DATA salesdata LIKE bapi_mvke.
DATA salesdatax LIKE bapi_mvkex.
DATA plantdata LIKE bapi_marc.
DATA plantdatax LIKE bapi_marcx.
DATA storagelocationdata LIKE bapi_mard.
DATA storagelocationdatax LIKE bapi_mardx.
DATA valuationdata LIKE bapi_mbew.
DATA valuationdatax LIKE bapi_mbewx.
DATA clientdata TYPE bapi_mara.
DATA clientdatax TYPE bapi_marax.
DATA forecastparameters TYPE bapi_mpop.
DATA forecastparametersx TYPE bapi_mpopx.
DATA taxclassifications TYPE TABLE OF bapi_mlan WITH HEADER LINE.
DATA materiallongtext TYPE TABLE OF bapi_mltx WITH HEADER LINE.
DATA materialdescr TYPE TABLE OF bapi_makt WITH HEADER LINE.
DATA unitsofmeasure LIKE bapi_marm.
DATA unitsofmeasurex LIKE bapi_marmx.
DATA internationalartnos LIKE bapi_mean.
DATA returnmessages LIKE bapi_matreturn2 OCCURS 0.
DATA prtdata LIKE bapi_mfhm.
DATA prtdatax LIKE bapi_mfhmx.
DATA extensionin LIKE bapiparex.
DATA extensioninx LIKE bapiparexx.
DATA tname TYPE tdobname.
DATA: e_rol_return LIKE bapiret2.
DATA: e_com_return LIKE bapiret2.
PARAMETERS: material TYPE mara-matnr DEFAULT '000000000000001002'.
PERFORM xtendmat.
RETURN.
*&--------------------------------------------------------------------*
*& Form Xtendmat
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM xtendmat.
* KOPF Daten (Sichten) ************************************************
headdata-material = material.
headdata-matl_type = 'HAWA'.
headdata-ind_sector ='M'.
headdata-sales_view = 'X'.
headdata-mrp_view = 'X'.
headdata-storage_view = 'X'.
headdata-account_view = 'X'.
headdata-purchase_view = 'X'.
headdata-quality_view = 'X'.
* Prognosedaten *****************************************************
forecastparameters-PLANT = '0050'.
forecastparametersx-PLANT = '0050'.
* MARA Basisdaten *****************************************************
clientdata-base_uom = 'ST'.
clientdata-base_uom_iso = 'ST'.
*CLIENTDATA-PO_UNIT
*CLIENTDATA-PO_UNIT_ISO
clientdata-matl_group = '01'.
clientdatax-base_uom = 'X'.
clientdatax-base_uom_iso = 'X'.
clientdatax-matl_group = 'X'.
* Verkaufsdaten *******************************************************
salesdata-sales_org = '0001'.
salesdata-distr_chan = '01'.
salesdata-delyg_plnt = '0050'.
salesdata-item_cat = 'NORM'.
salesdata-matl_grp_4 = 'E10'.
salesdata-matl_stats = '1'. " Statistikgruppe Material
salesdatax-sales_org = '0001'.
salesdatax-distr_chan = '01'.
salesdatax-delyg_plnt = 'X'.
salesdatax-item_cat = 'X'.
salesdatax-matl_grp_4 = 'X'.
salesdatax-matl_stats = 'X'. "Statistikgruppe Material
* Werksdaten *********************************************************
plantdata-plant = '0050'. " Werk
plantdata-iss_st_loc = '0050'. " Lagerort
plantdata-sloc_exprc = '0050'." Vorschlagslagerort f Fremdbeschaffung
plantdata-mrp_type = 'ND'. " Dispositionsmerkmal
plantdata-pur_group = '001'. " EK gruppe
plantdata-loadinggrp = '0001'. " Ladegruppe
plantdata-sourcelist = space. " Kennzeichen Orderbuchpflicht
plantdata-auto_p_ord = space. " Kz: Automatische Bestellung erlaubt
plantdata-plnd_delry = '10'. " Planlieferzeit
plantdata-profit_ctr = 'JENS'. "Profit Center
plantdatax-plant = '0050'. " Werk
plantdatax-iss_st_loc = 'X'. " Lagerort
plantdatax-sloc_exprc = 'X'. " Vorschlagslort für Fremdbeschaffung
plantdatax-mrp_type = 'X'. " Dispositionsmerkmal
plantdatax-pur_group = 'X'. " EK gruppe
plantdatax-loadinggrp = 'X'. " Ladegruppe
plantdatax-sourcelist = 'X'. " Kennzeichen Orderbuchpflicht
plantdatax-auto_p_ord = 'X'. " Kz: Automatische Bestellung erlaubt
plantdatax-plnd_delry = 'X'. " Planlieferzeit
plantdatax-profit_ctr = 'X'. "Profit Center
* Lagerort ***********************************************************
storagelocationdata-plant = '0050'.
storagelocationdata-stge_loc = '0050'.
storagelocationdatax-plant = '0050'.
storagelocationdatax-stge_loc = '0050'.
* Bewertungsdaten ****************************************************
valuationdata-val_area = '0050'. "Bewertungskreis
valuationdata-price_ctrl = 'V'. "Preissteuerungskennzeichen
*VALUATIONDATA-STD_PRICE
valuationdata-val_class = '3040'.
valuationdatax-val_area = '0050'. "Bewertungskreis
valuationdatax-price_ctrl = 'X'. "Preissteuerungskennzeichen
*VALUATIONDATA-STD_PRICE
valuationdatax-val_class = 'X'.
*** TABELLEN >
* Steuerklassifikation MLAN ******************************************
taxclassifications-depcountry = 'DE'.
taxclassifications-tax_type_1 = 'MWST'.
taxclassifications-taxclass_1 = '1'.
taxclassifications-tax_ind = space.
APPEND taxclassifications.
* Vertriebslangtext
*000000000271132151 0001 01
CONCATENATE material '000101' INTO tname.
materiallongtext-text_name = tname.
materiallongtext-applobject = 'MVKE'.
materiallongtext-text_id = '0001'.
materiallongtext-langu = 'D'.
materiallongtext-format_col = '*'.
materiallongtext-text_line = 'Hier nun der Langtext'.
APPEND materiallongtext.
* Materialkurztext(MAKT)
materialdescr-langu = sy-langu.
*LANGU_ISO
materialdescr-matl_desc = 'Abstinence in a material world'.
*materialdescr-DEL_FLAG =
APPEND materialdescr.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = headdata
clientdata = clientdata
clientdatax = clientdatax
plantdata = plantdata
plantdatax = plantdatax
* FORECASTPARAMETERS =
* FORECASTPARAMETERSX =
* PLANNINGDATA =
* PLANNINGDATAX =
storagelocationdata = storagelocationdata
storagelocationdatax = storagelocationdatax
valuationdata = valuationdata
valuationdatax = valuationdatax
* WAREHOUSENUMBERDATA =
* WAREHOUSENUMBERDATAX =
salesdata = salesdata
salesdatax = salesdatax
* STORAGETYPEDATA =
* STORAGETYPEDATAX =
* FLAG_ONLINE = ' '
* FLAG_CAD_CALL = ' '
* NO_DEQUEUE = ' '
IMPORTING
return = return
TABLES
materialdescription = materialdescr[]
* UNITSOFMEASURE =
* UNITSOFMEASUREX =
* INTERNATIONALARTNOS =
materiallongtext = materiallongtext[]
taxclassifications = taxclassifications[]
returnmessages = returnmessages[]
* PRTDATA =
* PRTDATAX =
* EXTENSIONIN =
* EXTENSIONINX =
.
IF return-type = 'E' OR return-type = 'A'.
WRITE:/ 'Fehler Bapi'.
WRITE:/ 'Type ', return-type.
WRITE:/ 'ID ', return-id.
WRITE:/ 'NUMBER ', return-number.
WRITE:/ return-message.
WRITE:/ '-----------------------------------------'.
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = e_com_return.
IF e_com_return-type NE space.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
return = e_rol_return.
WRITE:/ 'Rollback', e_rol_return-type.
ENDIF.
ENDFORM. "Xtendmat
Code: Alles auswählen.
FUNCTION Z_RFC_EDIT_LGPBE.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(CMATERIAL) TYPE MATNR
*" VALUE(CWERK) TYPE WERKS_D
*" VALUE(CLAGERORT) TYPE LGORT_D
*" VALUE(CLGPBE) TYPE LGPBE
*" TABLES
*" RETURNMESSAGES STRUCTURE BAPI_MATRETURN2
*" EXCEPTIONS
*" ERROR
*" NO_DATA
*"----------------------------------------------------------------------
DATA headdata LIKE bapimathead.
DATA RETURN LIKE bapiret2.
DATA storagelocationdata LIKE bapi_mard.
DATA storagelocationdatax LIKE bapi_mardx.
DATA clientdata TYPE bapi_mara.
DATA clientdatax TYPE bapi_marax.
DATA extensionin LIKE bapiparex.
DATA extensioninx LIKE bapiparexx.
DATA: e_rol_return LIKE bapiret2.
DATA: e_com_return LIKE bapiret2.
* KOPF Daten (Sichten) ************************************************
headdata-material = CMATERIAL.
headdata-sales_view = 'X'.
headdata-mrp_view = 'X'.
headdata-storage_view = 'X'.
headdata-account_view = 'X'.
headdata-purchase_view = 'X'.
headdata-quality_view = 'X'.
* Lagerort ***********************************************************
storagelocationdata-plant = CWERK.
storagelocationdata-stge_loc = CLAGERORT.
storagelocationdata-stge_bin = CLGPBE.
storagelocationdatax-plant = CWERK.
storagelocationdatax-stge_loc = CLAGERORT.
storagelocationdatax-stge_bin = 'X'.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = headdata
clientdata = clientdata
clientdatax = clientdatax
storagelocationdata = storagelocationdata
storagelocationdatax = storagelocationdatax
IMPORTING
RETURN = RETURN
TABLES
returnmessages = returnmessages.
IF return-TYPE = 'E' OR return-TYPE = 'A'.
WRITE:/ 'Fehler Bapi'.
WRITE:/ 'Type ', return-TYPE.
WRITE:/ 'ID ', return-ID.
WRITE:/ 'NUMBER ', return-NUMBER.
WRITE:/ return-MESSAGE.
WRITE:/ '-----------------------------------------'.
APPEND returnmessages.
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
RETURN = e_com_return.
IF e_com_return-TYPE NE SPACE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN = e_rol_return.
WRITE:/ 'Rollback', e_rol_return-TYPE.
ENDIF.
ENDFUNCTION.
Danke für deine rasche Antwort Tron. Wenn die Ansicht noch fehlt wäre mir das durchaus klar, aber in meinem Fall gibt es die Sicht bereits und der Text im "Lagerplatz" wird einfach geändert. Aber wie schon geschrieben, es läuft genau wie ich das möchte. Werde nur aus dem LOG nicht ganz schlüssigTron hat geschrieben:Moin Martin.
Das Erweitern eines Materialstamm um (noch fehlende) Sichten erfolgt über ANLEGEN (MM01).
lg jens