Code: Alles auswählen.
*&--------------------------------------------------------------------*
*& Form Auto_exidv2
*&--------------------------------------------------------------------*
* Diese Routine erzeugt automatische HU-Ident 2 für Packstücke
* wenn die Packstücke nicht manuell benannt worden sind FUGR V51E
*---------------------------------------------------------------------*
FORM auto_exidv2.
TYPE-POOLS vsep.
DATA: venum_tab TYPE vsep_t_venum WITH HEADER LINE.
DATA: vekp_tab TYPE vsep_t_vekp WITH HEADER LINE,
vepo_tab TYPE vsep_t_vepo WITH HEADER LINE.
DATA: gt_hu_history TYPE vsep_t_vevw.
DATA:
lt_changed TYPE hum_update_header_t,
ls_changed TYPE hum_update_header,
lt_messages TYPE huitem_messages_t.
DATA ls_object TYPE hum_object.
DATA lv_val(5) TYPE n.
IF NOT xvbplk[] IS INITIAL.
LOOP AT xvbplk.
* Nur HU-Ident erzeugen, wenn Feld exidv2 leer ist
IF xvbplk-exidv2 IS INITIAL.
APPEND xvbplk-venum_key TO venum_tab.
ENDIF.
ENDLOOP.
* HU's lesen inklusive Puffer der HU-Verwaltung füllen
CALL FUNCTION 'HU_GET_HUS'
EXPORTING
if_object = xvbplk-vpobj
* IF_NO_DB_SELECT = ' '
* if_lock_hus = i_lock
* IF_LOCK_OBJECTS = ' '
* IF_WITH_TEXT = ' '
* IF_NO_LOOP = 'X'
if_more_hus = 'X'
* IS_OBJECTS =
* IT_OBJECTS =
* IT_HUS =
it_venum = venum_tab[]
IMPORTING
et_header = vekp_tab[]
et_items = vepo_tab[]
* et_history = history_buf[] "hw 000925
et_history = gt_hu_history "hw 000925
* ET_HIGHEST_LEVELS =
et_messages = lt_messages
EXCEPTIONS
hus_locked = 1
fatal_error = 2
OTHERS = 3.
IF sy-subrc NE 0 .
ENDIF.
LOOP AT vekp_tab.
lv_val = sy-tabix.
ls_changed-hdl_unit_exid = vekp_tab-exidv.
ls_changed-field_name = 'EXIDV2'.
ls_changed-field_value = lv_val.
APPEND ls_changed TO lt_changed.
ENDLOOP.
CALL FUNCTION 'HU_HEADER_UPDATE'
EXPORTING
it_new_values = lt_changed
IMPORTING
et_messages = lt_messages
EXCEPTIONS
not_possible = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ls_object-object = vekp_tab-vpobj.
ls_object-objkey = vekp_tab-vpobjkey.
CALL FUNCTION 'HU_POST'
EXPORTING
if_synchron = 'X'
if_commit = ' '
is_object = ls_object
IMPORTING
et_messages = lt_messages.
* Änderungen von der Datenbank lesen und in die Tab. xvbplk übertragen
LOOP AT xvbplk.
SELECT SINGLE exidv2 FROM vekp INTO xvbplk-exidv2
WHERE venum = xvbplk-venum.
IF sy-subrc EQ 0.
MODIFY xvbplk INDEX sy-tabix.
ENDIF.
ENDLOOP.
ENDIF. "xvbplk[] is initial
ENDFORM. "Auto_exidv2