In this code snippet I’ll show how you can get info about all the handling units in a shipment delivery.A shipment can contain 1..* deliveries. S first of all you need to get all deliveries in the shipment:
DATA:
lt_vbeln TYPE TABLE OF vbeln,
iv_shipment TYPE vttp-tknum VALUE '1234567'. "Your shipment number
SELECT vbeln
INTO TABLE lt_vbeln
FROM vttp
WHERE tknum = iv_shipment.
To view a shipment, go to TCode VT03N and use your shipment number.
To view deliveries contained in the shipment, go to Top Menu -> GoTo -> Shipments and Deliveries and double click on a delivery you want to see (or use directly Tcode VL03N and enter the delivery number).
To view handling units in the delivery, press Ctrl+F6 (or the “box” icon in the top toolbar).
…this was the SAPGUI approach to inspect the HU’s in a delivery…now comes the coding part
At first I’ll show the approach using the standard function module to get all the necessary information about HU’s in a delivery:
DATA:
iv_delivery TYPE vbeln VALUE '2016280854' "Your delivery number from shipment.
ls_object TYPE hum_object.
lt_hus TYPE hum_hu_header_t,
lt_hupos TYPE hum_hu_item_t,
lt_serialno TYPE vsep_t_rserob.
ls_object-object = '01'. "Delivery
ls_object-objkey = lv_delivery.
CALL FUNCTION 'HU_GET_HUS'
EXPORTING
if_lock_hus = 'X'
if_with_text = ' '
is_objects = ls_object
IMPORTING
et_header = lt_hus
et_items = lt_hupos
et_item_serialno = lt_serialno
EXCEPTIONS
hus_locked = 1
no_hu_found = 2
fatal_error = 3
OTHERS = 4.
The above code is great if you need information about one delivery.
Maybe you ask why I used the “magic constant” 01 for the ls_object-object. This field is connected to the VEKP-VPOBJ field which can contain the following values
But what if you need to get information about all HU’s in all deliveries of one shipment?
- You can loop over all deliveries in a shipment and call the standard FM above
- You can use custom SQL command
DATA:
iv_tknum TYPE tknum VALUE '1234567', "Your shipment number
lt_venum TYPE TABLE OF venum. "table of HU numbers
SELECT DISTINCT vekp~venum
INTO TABLE lt_venum
FROM vttp
INNER JOIN vekp ON vekp~vpobjkey = vttp~vbeln
AND vekp~vpobj = '01'
WHERE vttp~tknum = iv_tknum.
... get further info about selected VENUM's