SAP for Utilities Discussions
Connect with fellow SAP users to share best practices, troubleshoot challenges, and collaborate on building a sustainable energy future. Join the discussion.
cancel
Showing results for 
Search instead for 
Did you mean: 

BAPI for meter reading order (MRO) Reversal

former_member182485
Active Contributor
0 Kudos

Hi Experts,

Please let me know if there is any FM or BAPI for meter reading order reversal, Similar to EL37

Regards

Bikas

1 ACCEPTED SOLUTION

e_maino
Explorer
0 Kudos

I would need the same information....

View solution in original post

5 REPLIES 5

e_maino
Explorer
0 Kudos

I would need the same information....

former_member182485
Active Contributor
0 Kudos

Could not find any BAPI

Former Member
0 Kudos

I guess you can use ISU_METERREAD_CANCEL or ISU_O_METERREAD_ACTION to reverse the Meter Reading Orders.

Regards,

Puneet Jhari.

mohammedmuzammil
Participant

Hello Bikas,

Though this is an old post, thought of replying for the sake of googlers who might look for a solution for your query...the below code works!

****************************************************************************************************************

*---Begin Of Code

****************************************************************************************************************

  TYPES : BEGIN OF ty_meter_orders_data,
           anlage   TYPE eablg-anlage,
           adatsoll TYPE eablg-adatsoll,
           ablesgr  TYPE eablg-ablesgr,
          END OF ty_meter_orders_data.

  DATA : lt_meter_orders_data TYPE STANDARD TABLE OF ty_meter_orders_data,
              xy_ieabl_delete   TYPE  eabl_tab,
              xy_ieablg_delete  TYPE  eablg_tab,
              xy_ietrg_delete   TYPE  etrg_tab,

              x_anlage type anlage,

              x_retro_upd_date type adatsoll,

              y_return type char1.

  DATA : y_obj TYPE  isu17_meterread.

*--Get the needed data for reversal
  SELECT a~anlage
         a~adatsoll
         a~ablesgr
    FROM eablg AS a
    INNER JOIN eabl AS b ON a~ablbelnr = b~ablbelnr
    INTO TABLE lt_meter_orders_data
    WHERE a~anlage = x_anlage AND
          a~adatsoll >= x_retro_upd_date AND
          b~ablstat = '0'. "MR Order
  IF sy-subrc = 0.

    SORT lt_meter_orders_data BY anlage ablesgr adatsoll.
    DELETE ADJACENT DUPLICATES FROM lt_meter_orders_data COMPARING anlage ablesgr adatsoll.
    SORT lt_meter_orders_data BY adatsoll DESCENDING.

    LOOP AT lt_meter_orders_data ASSIGNING FIELD-SYMBOL(<fs_meter_orders_data>).

      CALL FUNCTION 'ISU_O_METERREAD_OPEN'
        EXPORTING
          x_anlage              = <fs_meter_orders_data>-anlage
          x_adatsoll            = <fs_meter_orders_data>-adatsoll
          x_ablesgr             = <fs_meter_orders_data>-ablesgr
          x_select2             = '5'
          x_wmode               = '6'
        IMPORTING
          y_obj                 = y_obj
        EXCEPTIONS
          not_found             = 1
          foreign_lock          = 2
          internal_error        = 3
          input_error           = 4
          existing              = 5
          number_error          = 6
          general_fault         = 7
          system_error          = 8
          manual_abort          = 9
          gasdat_not_found      = 10
          no_mrrel_registers    = 11
          internal_warning      = 12
          not_authorized        = 13
          not_qualified         = 14
          anpstorno_not_allowed = 15
          already_billed        = 16
          dev_already_prep      = 17
          OTHERS                = 18.

      IF sy-subrc = 0.

        CALL FUNCTION 'ISU_O_METERREAD_ACTION'
          EXPORTING
            x_okcode             = 'PSAV'
          CHANGING
            xy_obj               = y_obj
          EXCEPTIONS
            cancelled            = 1
            failed               = 2
            action_not_supported = 3
            system_error         = 4
            input_error          = 5
            not_customized       = 6
            OTHERS               = 7.

        IF sy-subrc = 0.

          CALL FUNCTION 'ISU_O_METERREAD_ACTION'
            EXPORTING
              x_okcode             = 'SAVE'
            TABLES
              yt_eabl_delete       = xy_ieabl_delete[]
              yt_eablg_delete      = xy_ieablg_delete[]
              yt_etrg_delete       = xy_ietrg_delete[]
            CHANGING
              xy_obj               = y_obj
            EXCEPTIONS
              cancelled            = 1
               failed               = 2
              action_not_supported = 3
              system_error         = 4
              input_error          = 5
              not_customized       = 6
              OTHERS               = 7.
          IF sy-subrc = 0.
            COMMIT WORK.
          ENDIF.
        ENDIF.

        CALL FUNCTION 'ISU_O_METERREAD_CLOSE'
          CHANGING
            xy_obj = y_obj.
* Implement suitable error handling here
      ELSE.
        y_return = 'E'.
      ENDIF.
    ENDLOOP.
    IF y_return <> 'E'.
      y_return = 'S'.
    ENDIF.
  ELSE
*    RAISE no_mtr_read_ordrs_found.
  ENDIF.

***************************************************************************************************************

*---End of Code

****************************************************************************************************************

Thanks.

Mohammed.

ricky_shaw
Contributor
0 Kudos

Seems like you marked 'helpful answer' to a wrong person.