Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Function Module for UNPACKING Handling Unit from Inbound Delivery

Former Member
0 Likes
5,347

Hello Experts,

I am working on a RFID program to Receive goods from vendor...

One of the steps of the program should CHANGE the quantity inside a received batch.

To do so, I need to UNPACK the Handling Unit first... then change the quantity.

I am using the following Function Modules to do so:

- 'HU_GET_HUS'

- 'V51P_FILL_GT'

- 'HU_PACKING_AND_UNPACKING'

- 'HU_POST'

First 2 FM works fine...

But when I get to the 3rd one, I keep getting "NOT_POSSIBLE" error...

Have anyone done this before??

Here's the code I've done to do some testing before putting it into my code...

PLEEEEEEEEEEEASE HELP.

TYPE-POOLS: vsep. PARAMETERS: p_venum LIKE vekp-venum.

DATA: wa_object LIKE hum_object,
      it_object TYPE TABLE OF hum_object.

DATA: wa_v51vp LIKE v51vp,
      it_v51vp TYPE TABLE OF v51vp.

DATA: flag LIKE v51p_select_flags.

DATA: it_venum            TYPE STANDARD TABLE OF hum_venum,
      ef_rcode            LIKE sy-subrc,
      et_vekp             TYPE STANDARD TABLE OF vsep_s_vekp,
      et_vepo             TYPE STANDARD TABLE OF vsep_s_vepo,
      et_vevw             TYPE vsep_t_vevw,
      et_highest_level    TYPE vsep_t_venum,
      et_messages         TYPE huitem_messages_t,
      is_packing_request  TYPE vsep_s_pithu,
      es_p_request        TYPE vsep_s_pithu,
      es_item             LIKE vepovb,
      cs_header           LIKE vekpvb,
      ef_number           TYPE vpobjkey,
      et_header           TYPE STANDARD TABLE OF vekpvb,
      et_items            TYPE STANDARD TABLE OF vepovb,
      et_item_serialno    TYPE vsep_t_rserob,
      et_history          TYPE hum_history_t,
      et_highest_levels   TYPE hum_venum_t.

DATA: wa_venum            LIKE hum_venum,
      wa_vepo             TYPE vsep_s_vepo,
      wa_vekp             TYPE vsep_s_vekp,
      wa_items            TYPE vepovb,
      wa_header           TYPE vekpvb.

START-OF-SELECTION.

  wa_venum-venum = p_venum.
  APPEND wa_venum TO it_venum.

  CALL FUNCTION 'HU_GET_HUS'
    EXPORTING
      it_venum          = it_venum
    IMPORTING
      et_header         = et_header
      et_items          = et_items
      et_item_serialno  = et_item_serialno
      et_history        = et_history
      et_highest_levels = et_highest_levels
      et_messages       = et_messages
    EXCEPTIONS
      hus_locked        = 1
      no_hu_found       = 2
      fatal_error       = 3
      OTHERS            = 4.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  READ TABLE et_header INDEX 1 INTO wa_header.
  CALL FUNCTION 'V51P_FILL_GT'
    EXPORTING
      it_venum         = it_venum
    IMPORTING
      ef_rcode         = ef_rcode
      et_vekp          = et_vekp
      et_vepo          = et_vepo
      et_vevw          = et_vevw
      et_highest_level = et_highest_level
      et_messages      = et_messages
    EXCEPTIONS
      hu_locked        = 1
      no_hu_found      = 2
      fatal_error      = 3
      OTHERS           = 4.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  READ TABLE et_vepo INDEX 1 INTO wa_vepo.
  READ TABLE et_vekp INDEX 1 INTO wa_vekp.

  MOVE-CORRESPONDING wa_vepo TO  is_packing_request.
  is_packing_request-belnr    = wa_vepo-vbeln.
  is_packing_request-quantity = wa_vepo-vemng.
  is_packing_request-veanz    = '-1'.
  is_packing_request-meins    = wa_vepo-vemeh.
  is_packing_request-exidv    = wa_vekp-exidv.

  CALL FUNCTION 'HU_PACKING_AND_UNPACKING'
    EXPORTING
      is_packing_request = is_packing_request
    IMPORTING
      ef_rcode           = ef_rcode
      es_p_request       = es_p_request
      es_item            = es_item
    CHANGING
      cs_header          = cs_header
    EXCEPTIONS
      missing_data       = 1
      hu_not_changeable  = 2
      not_possible       = 3
      customizing        = 4
      weight             = 5
      volume             = 6
      serial_nr          = 7
      fatal_error        = 8
      OTHERS             = 9.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  CALL FUNCTION 'HU_POST'
    EXPORTING
      if_synchron = 'X'
      if_commit   = 'X'
    IMPORTING
      ef_number   = ef_number.

  break nunfx004.

  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

Thanks in advance,

Fernanda

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
2,425

Hi ,

Check this code.

  • Pack componet HU to Overpack HU. *

l_packing_req-venum = g_ovrp_venum. "Overpack Internal HU

l_packing_req-exidv = g_ovrp_exidv. "Overpack External HU

l_packing_req-veanz = '1'. "PACK Constant

l_packing_req-sub_hu_venum = l_int_venum.

l_packing_req-sub_hu_exidv = l_int_exidv. "Componet External HU

l_packing_req-velin = '3'. "HU Type Constant

l_packing_req-quantity = '1.000'.

call function 'HU_PACKING_AND_UNPACKING'

exporting

is_packing_request = l_packing_req

exceptions

missing_data = 1

hu_not_changeable = 2

not_possible = 3

customizing = 4

weight = 5

volume = 6

serial_nr = 7

fatal_error = 8

others = 9.

if sy-subrc <> 0.

  • error

clear: v_msgv1, v_msgv2, v_msgv3.

v_msgv1 = text-031.

  • PERFORM display_message USING v_msgv1 v_msgv2 v_msgv3.

leave to screen sy-dynnr.

endif.

  • No Errors --> POST HU

call function 'HU_POST'

exporting

if_synchron = 'X'

if_commit = 'X'.

plz write what you are passing to 'HU_PACKING_AND_UNPACKING' and hu_post fm.

Regards

Mohinder Singh Chauhan

Hello Experts,

I am working on a RFID program to Receive goods from vendor...

One of the steps of the program should CHANGE the quantity inside a received batch.

To do so, I need to UNPACK the Handling Unit first... then change the quantity.

I am using the following Function Modules to do so:

- 'HU_GET_HUS'

- 'V51P_FILL_GT'

- 'HU_PACKING_AND_UNPACKING'

- 'HU_POST'

First 2 FM works fine...

But when I get to the 3rd one, I keep getting "NOT_POSSIBLE" error...

Have anyone done this before??

Here's the code I've done to do some testing before putting it into my code...

PLEEEEEEEEEEEASE HELP.

TYPE-POOLS: vsep. PARAMETERS: p_venum LIKE vekp-venum.

DATA: wa_object LIKE hum_object,
      it_object TYPE TABLE OF hum_object.

DATA: wa_v51vp LIKE v51vp,
      it_v51vp TYPE TABLE OF v51vp.

DATA: flag LIKE v51p_select_flags.

DATA: it_venum            TYPE STANDARD TABLE OF hum_venum,
      ef_rcode            LIKE sy-subrc,
      et_vekp             TYPE STANDARD TABLE OF vsep_s_vekp,
      et_vepo             TYPE STANDARD TABLE OF vsep_s_vepo,
      et_vevw             TYPE vsep_t_vevw,
      et_highest_level    TYPE vsep_t_venum,
      et_messages         TYPE huitem_messages_t,
      is_packing_request  TYPE vsep_s_pithu,
      es_p_request        TYPE vsep_s_pithu,
      es_item             LIKE vepovb,
      cs_header           LIKE vekpvb,
      ef_number           TYPE vpobjkey,
      et_header           TYPE STANDARD TABLE OF vekpvb,
      et_items            TYPE STANDARD TABLE OF vepovb,
      et_item_serialno    TYPE vsep_t_rserob,
      et_history          TYPE hum_history_t,
      et_highest_levels   TYPE hum_venum_t.

DATA: wa_venum            LIKE hum_venum,
      wa_vepo             TYPE vsep_s_vepo,
      wa_vekp             TYPE vsep_s_vekp,
      wa_items            TYPE vepovb,
      wa_header           TYPE vekpvb.

START-OF-SELECTION.

  wa_venum-venum = p_venum.
  APPEND wa_venum TO it_venum.

  CALL FUNCTION 'HU_GET_HUS'
    EXPORTING
      it_venum          = it_venum
    IMPORTING
      et_header         = et_header
      et_items          = et_items
      et_item_serialno  = et_item_serialno
      et_history        = et_history
      et_highest_levels = et_highest_levels
      et_messages       = et_messages
    EXCEPTIONS
      hus_locked        = 1
      no_hu_found       = 2
      fatal_error       = 3
      OTHERS            = 4.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  READ TABLE et_header INDEX 1 INTO wa_header.
  CALL FUNCTION 'V51P_FILL_GT'
    EXPORTING
      it_venum         = it_venum
    IMPORTING
      ef_rcode         = ef_rcode
      et_vekp          = et_vekp
      et_vepo          = et_vepo
      et_vevw          = et_vevw
      et_highest_level = et_highest_level
      et_messages      = et_messages
    EXCEPTIONS
      hu_locked        = 1
      no_hu_found      = 2
      fatal_error      = 3
      OTHERS           = 4.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  READ TABLE et_vepo INDEX 1 INTO wa_vepo.
  READ TABLE et_vekp INDEX 1 INTO wa_vekp.

  MOVE-CORRESPONDING wa_vepo TO  is_packing_request.
  is_packing_request-belnr    = wa_vepo-vbeln.
  is_packing_request-quantity = wa_vepo-vemng.
  is_packing_request-veanz    = '-1'.
  is_packing_request-meins    = wa_vepo-vemeh.
  is_packing_request-exidv    = wa_vekp-exidv.

  CALL FUNCTION 'HU_PACKING_AND_UNPACKING'
    EXPORTING
      is_packing_request = is_packing_request
    IMPORTING
      ef_rcode           = ef_rcode
      es_p_request       = es_p_request
      es_item            = es_item
    CHANGING
      cs_header          = cs_header
    EXCEPTIONS
      missing_data       = 1
      hu_not_changeable  = 2
      not_possible       = 3
      customizing        = 4
      weight             = 5
      volume             = 6
      serial_nr          = 7
      fatal_error        = 8
      OTHERS             = 9.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  CALL FUNCTION 'HU_POST'
    EXPORTING
      if_synchron = 'X'
      if_commit   = 'X'
    IMPORTING
      ef_number   = ef_number.

  break nunfx004.

  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

Thanks in advance,

Fernanda

2 REPLIES 2
Read only

Former Member
0 Likes
2,426

Hi ,

Check this code.

  • Pack componet HU to Overpack HU. *

l_packing_req-venum = g_ovrp_venum. "Overpack Internal HU

l_packing_req-exidv = g_ovrp_exidv. "Overpack External HU

l_packing_req-veanz = '1'. "PACK Constant

l_packing_req-sub_hu_venum = l_int_venum.

l_packing_req-sub_hu_exidv = l_int_exidv. "Componet External HU

l_packing_req-velin = '3'. "HU Type Constant

l_packing_req-quantity = '1.000'.

call function 'HU_PACKING_AND_UNPACKING'

exporting

is_packing_request = l_packing_req

exceptions

missing_data = 1

hu_not_changeable = 2

not_possible = 3

customizing = 4

weight = 5

volume = 6

serial_nr = 7

fatal_error = 8

others = 9.

if sy-subrc <> 0.

  • error

clear: v_msgv1, v_msgv2, v_msgv3.

v_msgv1 = text-031.

  • PERFORM display_message USING v_msgv1 v_msgv2 v_msgv3.

leave to screen sy-dynnr.

endif.

  • No Errors --> POST HU

call function 'HU_POST'

exporting

if_synchron = 'X'

if_commit = 'X'.

plz write what you are passing to 'HU_PACKING_AND_UNPACKING' and hu_post fm.

Regards

Mohinder Singh Chauhan

Read only

Former Member
0 Likes
2,425

Hi Mohinder.

Thanks for the help!

In my case, the functions wouldn't work since my HU was already assigned to an Inbound Delivery!

I had to use BDC in the end!

Thanks and regards,

Fernanda