Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Z-field was not updating using BAPI_MATERIAL_SAVEDATA in mara

grayman2
Explorer
0 Kudos
1,090

I am using BAPI_MATERIAL_SAVEDATA to update the value of custom Z field in MARA table .

after executing the program the existing value of the Z field was erased but the new value is not updating.

REPORT  zr_mara_zdcon_update.

TYPES : BEGIN OF ts_input,
  matnr TYPE matnr,
  END OF ts_input.
DATA : lt_input TYPE TABLE OF ts_input WITH HEADER LINE.

SELECT SINGLE matnr FROM mara INTO lt_input
  WHERE zzcust = '30'.

PERFORM update_mara USING lt_input-matnr.
*ENDLOOP.
*&---------------------------------------------------------------------*
*&      Form  update_mara
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM update_mara USING lv_matnr TYPE matnr.

  TABLES:
        bapimathead, "Headerdata
        bapi_mara, "Clientdata
        bapi_marax, "Clientdatax
        bapi_marc, "Plantdata
        bapi_marcx, "Plantdatax
        bapi_makt, "Material description
        bapiparex, "Extensionstruktur
        bapiparexx,
        bapiret2. "Return messages

  DATA:
        bapi_te_mara TYPE bapi_te_mara,
        bapi_te_marax TYPE bapi_te_marax,
        v_file TYPE string.
*to store the output data
  DATA:BEGIN OF lt_material_number OCCURS 0.
          INCLUDE STRUCTURE bapimatinr.
  DATA:END OF lt_material_number.

  DATA:BEGIN OF lt_bapiparex OCCURS 0.
          INCLUDE STRUCTURE bapiparex.
  DATA:END OF lt_bapiparex.

  DATA:BEGIN OF lt_bapiparexx OCCURS 0.
          INCLUDE STRUCTURE bapiparexx.
  DATA:END OF lt_bapiparexx.

  DATA:BEGIN OF lt_return2 OCCURS 0.
          INCLUDE STRUCTURE bapiret2.
  DATA:END OF lt_return2.

  DATA:BEGIN OF lt_return OCCURS 0.
          INCLUDE STRUCTURE bapiret1.
  DATA:END OF lt_return.
  lt_material_number-material = lv_matnr.
  bapimathead-basic_view = 'X'.
*  bapimathead-sales_view = 'X'.
  bapimathead-material = lt_material_number-material.
  bapi_te_mara-material = lt_material_number-material.
  bapi_te_mara-zzcust = '25'.

  bapi_te_marax-material = lt_material_number-material.
  bapi_te_marax-zzcust = 'X'.

  lt_bapiparex-structure = 'BAPI_TE_MARA'.
  lt_bapiparex-valuepart1 = bapi_te_mara.
  lt_bapiparex-valuepart2 = bapi_te_mara.
  APPEND lt_bapiparex.

  lt_bapiparexx-structure = 'BAPI_TE_MARAX'.
  lt_bapiparexx-valuepart1 = bapi_te_marax.
*  lt_bapiparexx-valuepart2 = bapi_te_marax.
  APPEND lt_bapiparexx.

  CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
    EXPORTING
      headdata            = bapimathead
      clientdata          = bapi_mara
      clientdatax         = bapi_marax
    IMPORTING
      return              = lt_return2
    TABLES
      extensionin         = lt_bapiparex
      extensioninx        = lt_bapiparexx.

  IF lt_return2-type CA 'EA'.
*--Roll Back changes
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
*--Commit
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait   = abap_true
      IMPORTING
        return = lt_return2.
  ENDIF.
  WRITE :'DONE'.
ENDFORM.                    "update_mara
2 REPLIES 2
Read only

DominikTylczyn
SAP Champion
SAP Champion
0 Kudos
983

Please update your question and format the source code with the button.

Read only

DominikTylczyn
SAP Champion
SAP Champion
0 Kudos
983

Hello

The only problem I could spot in your code is double assignment of BAPI_TE_MARA:

  lt_bapiparex-structure = 'BAPI_TE_MARA'.
  lt_bapiparex-valuepart1 = bapi_te_mara.
  lt_bapiparex-valuepart2 = bapi_te_mara.
  APPEND lt_bapiparex.

As you have only one, short custom field in BAPI_TE_MARA, which is ZZCUST of 2 chars, BAPI_TE_MARA fits VALUEPART1. So replace that piece of code with:

  lt_bapiparex-structure = 'BAPI_TE_MARA'.
  lt_bapiparex-valuepart1 = bapi_te_mara.
  APPEND lt_bapiparex.

If that doesn't help, debug the form routines EXTENSIONIN_UBERGEBEN and KUNDENFELDER_X_AUSWERTEN that analyze and process EXTENSIONIN and EXTENSIONINX tables.

Best regards

Dominik Tylczynski