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