Handling Unit Movement

FORM fnnn_hu_goods_movement USING     p_i_hu TYPE t_i_hu
                                      p_i_huit TYPE t_i_huit
                                      p_werks TYPE t001l-werks
                                      p_lgort TYPE t001l-lgort
                                      p_bldat TYPE mkpf-bldat
                                      p_budat TYPE mkpf-budat
                            CHANGING  p_posted TYPE sysubrc
                                      p_wa_msg_move TYPE huitem_messages
                                      p_i_msg_move TYPE huitem_messages_t.


  DATA : l_huwbevent TYPE huwbevent VALUE '0026'."'0006'.
  DATA : i_move TYPE hum_data_move_to_t,
         wa_move TYPE hum_data_move_to.
  DATA : wa_huit TYPE t_wa_huit.
  DATA : wa_exidv TYPE hum_exidv,
         i_exidv  TYPE hum_exidv_t.
  DATA : wa_mkpf TYPE imkpf.
  DATA : wa_items TYPE hum_humseg,
         i_items TYPE hum_humseg_t.
  DATA : prev_hu TYPE t_wa_huit-venum.
  DATA : l_count TYPE i VALUE 1.
*  sort p_i_huit by venum vepos.
  LOOP AT p_i_hu INTO wa_hu.
    LOOP AT p_i_huit INTO wa_huit WHERE venum = wa_hu-venum .
      IF l_count = 1.
        wa_move-matnr = wa_huit-matnr.
        wa_move-werks = p_werks.
        wa_move-charg = wa_huit-charg.
        wa_move-lgort = wa_huit-umlgo.
        wa_move-sobkz = wa_huit-sobkz.
        wa_move-sonum = wa_huit-sonum.
        wa_move-huwbevent = l_huwbevent.
        wa_move-bwart = 'Z11'."'311'.
      ENDIF.
      wa_items-venum = wa_huit-venum.
      wa_items-vepos = wa_huit-vepos.
      APPEND wa_items TO i_items.
      CLEAR wa_items.
      l_count = l_count + 1.
    ENDLOOP.
    l_count = 1.
    wa_move-hu_items = i_items.
    APPEND wa_move TO i_move.
    CLEAR i_items.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = wa_huit-exidv
      IMPORTING
        output = wa_exidv-exidv.
    APPEND wa_exidv TO i_exidv.
    CLEAR : wa_move,wa_exidv.
  ENDLOOP.

  wa_mkpf-bldat = p_bldat.
  wa_mkpf-budat = p_budat.

  CALL FUNCTION 'HU_PACKING_REFRESH'.
  CALL FUNCTION 'HU_CREATE_GOODS_MOVEMENT'
   EXPORTING
     if_event             = l_huwbevent
*   IF_SIMULATE          = ' '
*   IF_COMMIT            = ' '
     if_tcode             = 'VLMOVE'
     is_imkpf             = wa_mkpf
     it_move_to           = i_move
*   IT_INTERNAL_ID       =
     it_external_id       = i_exidv
   IMPORTING
     ef_posted            = p_posted
     es_message           = p_wa_msg_move
     et_messages          = p_i_msg_move.
*   ES_EMKPF             =
* CHANGING
*   CT_IMSEG             =
  .
  IF NOT p_posted = 1.
*  MB_CREATE.. ist fehlgeschlagen - Sperren löschen
    ROLLBACK WORK.
  ELSE.
    COMMIT WORK AND WAIT.
  ENDIF.


ENDFORM.                    " FNNN_HU_GOODS_MOVEMENT
posted on 2012-05-16 17:11  T_BUG  阅读(594)  评论(0编辑  收藏  举报