- entrare nella sezione imballo
- creare la cassa (HU) scegliendo il materiale di imballo
- selezionare il materiale e la cassa, correggendo eventualmente la quantità da imballare.
- procedere con l'imballo
- salvare
Mi sono però "scontrato" con l'utilizzo del Function Module PROCESS_HU_INBOUND_DLVRY (di cui non ho ancora ben capito l'utilizzo).
Infatti dovrebbe essere possibile creare gli imballi, assegnarli alla consegna e imballare il materiale in una unica operazione, ma ricevo sempre il messaggio:
Ho quindi cercato di lavorare su un imballo già esistente: l'operazione va a buon fine, ma poi non risulta imballato nessun materiale! e nessun messaggio di errore viene segnalato!
Dopo innumerevoli tentativi ho risolto inserendo il numero di imballo nella struttura hu_header_prop!
La sequenza è questa:
- creo la HU.
- la assegno alla consegna.
- Imballo il materiale con la PROCESS_HU_INBOUND_DLVRY
- stampo il messaggio associato alla HU
Questi i vari passaggi (in corsivo e verde i parametri da cambiare):
Creazione HU:
ls_headerproposal-plant = <plant>.
ls_headerproposal-stge_loc = <magazzino>.
ls_headerproposal-pack_mat = <materiale_imballo>.
* Creazione Imballo
CALL FUNCTION 'BAPI_HU_CREATE'
EXPORTING
headerproposal = ls_headerproposal
IMPORTING
huheader = ls_huheader
hukey = lv_hukey
TABLES
itemsproposal = lt_itemproposal
return = lt_return.
IF lt_return[] IS INITIAL.
CLEAR ls_return.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = ls_return.
ELSE.
PERFORM get_bapi_error USING lt_return.
ENDIF.
Assegnazione HU alla consegna:
* Imposto il collegamento al documento di spedizione
ls_huheader-pack_mat_object = '01'. " tipo consegna
ls_huheader-pack_mat_obj_key = <consegna>.
ls_huheader-salesorg = <salesorg>.
REFRESH lt_return.
CALL FUNCTION 'BAPI_HU_CHANGE_HEADER'
EXPORTING
hukey = ls_huheader-hu_exid
huchanged = ls_huheader
IMPORTING
huheader = ls_huheader
TABLES
return = lt_return.
IF lt_return[] IS INITIAL.
CLEAR ls_return.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = ls_return.
ELSE.
PERFORM get_bapi_error USING lt_return.
ENDIF.
Imballo del materiale:
REFRESH hu_items_proposal.
CLEAR is_item_proposal.
CLEAR hu_items_proposal.
mm_data-plant = <plant>.
mm_data-stge_loc = <magazzino>.
hu_id = ls_huheader-hu_id.
hu_activity_type = 'PACK'.
pack_type = 'MAT'.
update_db = 'X'.
create_hu = ' '.
new_hu = ' '.
save_step = 'HEAD'.
int_dlvry_type = 'J'.
is_item_proposal-venum = ls_huheader-hu_id.
is_item_proposal-exidv = lv_hukey.
is_item_proposal-velin = 1.
is_item_proposal-belnr = <consegna>.
is_item_proposal-posnr = <posizione>.
is_item_proposal-quantity = <quantità>.
is_item_proposal-meins = <UM>.
is_item_proposal-matnr = <materiale da imballare>.
is_item_proposal-werks = <plant>.
is_item_proposal-lgort = <magazzino>.
DATA: lt_created_hus TYPE STANDARD TABLE OF vekpvb.
CALL FUNCTION 'PROCESS_HU_INBOUND_DLVRY'
EXPORTING
i_packing_activity = hu_activity_type
i_pack_type = pack_type
i_hu_id = hu_id
i_new_hu = new_hu
i_update_db = update_db
i_create_hu = create_hu
i_reference_object = hu_ref_doc
i_mm_data = mm_data
i_hu_header_main = hu_header_prop
i_hu_items = hu_items_proposal[]
i_hu_serial_nr = hu_serial_nr_list[]
i_save_step = save_step
i_pack_activity = pack_type
i_hu_external = unpack_hu_ext[]
i_hu_internal = unpack_hu_int[]
i_delivery_type = int_dlvry_type
is_item_proposal = is_item_proposal
i_unpack_items = hu_unpack_items
i_from_hu = from_hu_id
IMPORTING
o_hu_ref_id = hu_ref_id
o_hu_header = hu_work_header[]
o_hu_items = hu_work_items[]
o_hu_messages = hu_messages[]
TABLES
et_created_hus = lt_created_hus
EXCEPTIONS
input_missing = 01
not_possible = 02
fatal_error = 03
operation_failed = 04
delivery_update_error = 05
error_message = 99.
Stampa del messaggio:
REFRESH: l_it_hukey.
MOVE lv_hukey TO l_it_hukey-hu_exid.
APPEND l_it_hukey.
REFRESH l_it_outputtype.
MOVE '1' TO l_it_outputtype-trans_medium.
MOVE <tipo> TO l_it_outputtype-output_type.
APPEND l_it_outputtype.
CALL FUNCTION 'BAPI_HU_PROCESS_MSG_DIRECT'
TABLES
hukey = l_it_hukey
outputtype = l_it_outputtype
return = l_it_return.
per la dichiarazione delle strutture è sufficiente vedere come sono dichiarate nei Function Module.
Nessun commento:
Posta un commento