05-18-2009 1:17 PM
Hi Experts,
Please let me know if there is any FM or BAPI for meter reading order reversal, Similar to EL37
Regards
Bikas
06-23-2009 11:28 AM
06-23-2009 11:28 AM
02-03-2010 12:15 PM
02-03-2010 8:30 PM
I guess you can use ISU_METERREAD_CANCEL or ISU_O_METERREAD_ACTION to reverse the Meter Reading Orders.
Regards,
Puneet Jhari.
01-26-2015 10:48 AM
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.
01-27-2015 3:05 PM