cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Call of the function BAPI_RESERVATION_CREATE failed;

Rohit45hitman
Discoverer
0 Kudos
259
METHOD /iwbep/if_mgw_appl_srv_runtime~create_deep_entity.

  DATA: ls_header    TYPE zmb21_res_header,
        lt_items     TYPE TABLE OF zmb21_res_item1,
        ls_item      TYPE zmb21_res_item1,

        lv_reserv_no TYPE resbn,
        lt_return    TYPE TABLE OF bapiret2,
        ls_return    TYPE bapiret2,
        lv_message   TYPE string.

  FIELD-SYMBOLS: <fs_item> TYPE zmb21_res_item1.


  TYPES : BEGIN OF ty_deep_wo.
            INCLUDE TYPE zmb21_res_header.

  TYPES items TYPE TABLE OF  zmb21_res_item1 WITH DEFAULT KEY.
*    TYPES COMPS TYPE TABLE OF ZCOMPONENT WITH DEFAULT KEY.
  TYPES: END OF ty_deep_wo.

  DATA : ls_wo TYPE ty_deep_wo.

  " Read Deep Entity Data from the Request
  io_data_provider->read_entry_data(
    IMPORTING
      es_data = ls_wo
  ).

  " Mapping Header Data
  ls_header = CORRESPONDING #( ls_wo ).

  " Mapping Item Data
  lt_items = ls_wo-items.

  " BAPI Structures
  DATA: lt_bapi_res_item TYPE TABLE OF  zmb21_res_item1,
        ls_bapi_res_item TYPE zmb21_res_item1,
        ls_bapi_header   TYPE zmb21_res_header.

  " Fill BAPI Header

  ls_bapi_header-bwart   = ls_header-bwart.
  ls_bapi_header-lgort   = ls_header-lgort.
  ls_bapi_header-werks    = ls_header-werks.
  ls_bapi_header-kostl  = ls_header-kostl.
  ls_bapi_header-umlgo  = ls_header-umlgo.
  ls_bapi_header-dats = sy-datum.

  " Fill BAPI Item Data
  LOOP AT lt_items INTO ls_item.
    CLEAR ls_bapi_res_item.
    ls_bapi_res_item-material    = ls_item-material.
    ls_bapi_res_item-entry_qnt   = ls_item-entry_qnt.
    ls_bapi_res_item-entry_uom       = ls_item-entry_uom.
    ls_bapi_res_item-werks       = ls_item-werks.
    ls_bapi_res_item-lgort    = ls_item-lgort.
    ls_bapi_res_item-batch       = ls_item-batch.
    APPEND ls_bapi_res_item TO lt_bapi_res_item.
  ENDLOOP.
*
  " Call BAPI
  CALL FUNCTION 'BAPI_RESERVATION_CREATE'
    EXPORTING
      reservation_header = ls_bapi_header
*     NO_COMMIT          =
*     MOVEMENT_AUTO      =
*               IMPORTING
*     RESERVATION        =
    TABLES
      reservation_items  = lt_bapi_res_item
      return             = lt_return.
  .



  " Check Return Messages
  READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
  IF sy-subrc = 0.
    LOOP AT lt_return INTO ls_return.
      CONCATENATE lv_message ls_return-message INTO lv_message SEPARATED BY space.
    ENDLOOP.
    RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception
      EXPORTING
        message = ls_return-message.
  ELSE.
    " Get Created Reservation Number
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.

    " Read the reservation number
    READ TABLE lt_return INTO ls_return WITH KEY type = 'S'.
    lv_message = ls_return-message. " Assuming success message contains Reservation Number

    " Send Response Back
*    er_deep_entity-lv_reserv_no = lv_reserv_no.
  ENDIF.


ENDMETHOD.

Hello ,

I am getting error while create reservations through the odata service error is Call of the function BAPI_RESERVATION_CREATE failed; a field should be assigned to the parameter RESERVATION_HEADER - the types

here is my payload

{
  "d": {
    "Bwart""311",
    "Werks""1005",
    "Lgort""FG01",
    "Umlgo""FG01",
    "Dats""2024-03-10T12:00",
    "ITEMS": {
      "results": [
        {
          "Material""11000003",
          "EntryQnt""10.000",
          "EntryUom""M",
          "Batch"""
        }
      ]
    }
  }
}

 

 

Accepted Solutions (0)

Answers (0)