Habt ihr nicht evtl. schon Z-Felder an der MARC, für die entsprechende View, an denen Du dich bzgl. Feldauswahlgruppe orientieren kannst? Ansonsten tippe ich auf den falschen Pflegestatus der Feldauswahlgruppe.
Nein, das wären die ersten Felder in MARC.
Wenn sich dein Z-Feld genauso verhalten soll, wie andere Felder auf der Materialstammsicht, zu der es gehört (im Sinne von Einblenden / Ausblenden, Muss / Kann), dann schau in der OMSR in welcher Gruppe diese anderen Felder sind und nimm die.
Murdock hat geschrieben: ↑08.11.2024 06:50Wenn sich dein Z-Feld genauso verhalten soll, wie andere Felder auf der Materialstammsicht, zu der es gehört (im Sinne von Einblenden / Ausblenden, Muss / Kann), dann schau in der OMSR in welcher Gruppe diese anderen Felder sind und nimm die.
Du musst dann die zu dem Pflegestatus entsprechende Sicht beim Aufruf des BAPIs auch in der "headdata" Struktur "ankreuzen".
Code: Alles auswählen.
DATA: header TYPE bapimathead,
return TYPE bapiret2,
extension TYPE STANDARD TABLE OF bapiparex,
extensionx TYPE STANDARD TABLE OF bapiparexx,
marc TYPE bapi_marc,
marcx TYPE bapi_marcx,
wa_bapi_te_marc TYPE bapi_te_marc,
wa_bapi_te_marcx TYPE bapi_te_marcx.
header = VALUE #( material = iv_matnr
mrp_view = abap_true ).
wa_bapi_te_marc-plant = iv_plant.
wa_bapi_te_marc-ZZFELD = iv_value.
wa_bapi_te_marcx-plant = iv_plant.
wa_bapi_te_marcx-ZZFELD = abap_true.
APPEND INITIAL LINE TO extension ASSIGNING FIELD-SYMBOL(<extension>).
IF <extension> IS ASSIGNED.
<extension>-structure = 'BAPI_TE_MARC'.
<extension>-valuepart1+0(4) = wa_bapi_te_marc-plant.
<extension>-valuepart1+25(10) = wa_bapi_te_marc-ZZFELD "<<<---- eventuell ist hier Fehler
APPEND INITIAL LINE TO extensionx ASSIGNING FIELD-SYMBOL(<extensionx>).
IF <extensionx> IS ASSIGNED.
<extensionx>-structure = 'BAPI_TE_MARCX'.
<extensionx>-valuepart1+0(4) = wa_bapi_te_marcx-plant.
<extensionx>-valuepart1+7(1) = wa_bapi_te_marcx-ZZFELD.
ENDIF.
ENDIF.
marc = VALUE #( plant = '2001' ).
marcx = VALUE #( plant = '2001' ).
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = header
plantdata = marc
plantdatax = marcx
* forecastparameters =
* forecastparametersx =
* planningdata =
* planningdatax =
* storagelocationdata =
* storagelocationdatax =
* valuationdata =
* valuationdatax =
* warehousenumberdata =
* warehousenumberdatax =
* salesdata =
* salesdatax =
* storagetypedata =
* storagetypedatax =
* flag_online = space
* flag_cad_call = space
* no_dequeue = space
* no_rollback_work = space
* clientdatacwm =
* clientdatacwmx =
* valuationdatacwm =
* valuationdatacwmx =
* matplstadata =
* matplstadatax =
* marc_aps_extdata =
* marc_aps_extdatax =
IMPORTING
return = return
TABLES
extensionin = extension
extensioninx = extensionx.
IF return-type CA 'EA'.
ROLLBACK WORK.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
ich habe auf die gleiche weise versucht ein zweites Z-Feld zu bearbeiten.Murdock hat geschrieben: ↑08.11.2024 08:10Die BAPI_TE_MARCX ist eine "Ankreuzstruktur". Da gehört zwar das Werk ausgeschrieben rein, aber der Rest, also die Felder die "upgedatet" werden sollen, bekommen nur ein 'X' und nicht den Wert des Z-Feldes (bzw. das erste Zeichen, was unter Umständen ja auch mal ein Space sein kann).
Ansonsten sind die Zuweisung mit den Offsets und Längenangaben recht fehleranfällig und unnötig. Du kannst einfach Deine komplette wa_bapi_te... Struktur in die Zielstruktur hinter den Strukturnamen schieben.
Arbeite nicht mit den Valueparts, stattdessen wie gewohnt deine Struktur befüllen und dann nach dem Strukturnamensfeld übernehmen. Du kannst die Länge dieses Feldes so bestimmen:
Code: Alles auswählen.
describe field <extension>-structure length data(lv_length) in character mode.
Code: Alles auswählen.
append initial line to lt_extension assigning field-symbol(<extension>).
<extension>-structure = 'BAPI_TE_MARC'.
<extension>+30 = value bapi_te_marc(
plant = iv_plant
zzfeld1 = iv_value1
zzfeld2 = iv_value2
" usw.
).
Code: Alles auswählen.
append initial line to lt_extension_x assigning field-symbol(<extension_x>).
<extension_x>-structure = 'BAPI_TE_MARCX'.
<extension_x>+30 = value bapi_te_marcx(
plant = iv_plant
zzfeld1 = abap_true
zzfeld2 = abap_true
" usw.
).