You can try to get the itens by the method IM_HEADER-GET_ITEMS...
Then you can read the itens to an object, like IM_ITEM.
Finally you can check the services by the Handle Class cl_po_item_handle_mm.
Example:
DATA lr_po_item_handle TYPE REF TO cl_po_item_handle_mm.
DATA: lt_esll TYPE TABLE OF esll,
ls_esll TYPE esll,
lt_imputaciones TYPE TABLE OF ueskn,
ls_imputacion TYPE ueskn.
DATA: ls_mepoitem TYPE mepoitem.
lr_po_item_handle ?= im_item.
CALL METHOD lr_po_item_handle->get_data
IMPORTING
ex_data = ls_mepoitem
EXCEPTIONS
failure = 1
OTHERS = 2.
CALL METHOD lr_po_item_handle->if_services_mm~get_srv_data
EXPORTING
im_packno = ls_mepoitem-packno
IMPORTING
ex_esll = lt_esll
ex_esuh =
ex_esuc =
ex_eskl =
EXCEPTIONS
failure = 1
OTHERS = 2.
CALL METHOD lr_po_item_handle->if_services_mm~get_data
EXPORTING
*** RELEVANT PARAMETERS ***
IMPORTING
*** RELEVANT PARAMETERS ***
EXCEPTIONS
failure = 1
illegal_data = 2
OTHERS = 3.
ENDIF.
Source: BADI Validation in services line for ME21N / 22N / 23N
At the source example the validation check is at the PROCESS_ITEM, but I think that it doesn't matter (maybe)...
I hope it helps!