Monday, December 1, 2008

DATA : lv_stsma TYPE hum_stsma,
lt_status TYPE TABLE OF gty_status,
lk_status TYPE gty_status,
lv_venum TYPE venum,
lv_vhart TYPE vhart.

SELECT SINGLE venum vhart
INTO (lv_venum, lv_vhart)
FROM vekp
WHERE exidv EQ p_exidv.

CONCATENATE gc_hu lv_venum INTO gvc_object.

* Get current status information
SELECT SINGLE stat inact
INTO lk_status
FROM husstat
WHERE objnr EQ gvc_object
AND inact EQ space.

IF sy-subrc = 0.
APPEND lk_status TO lt_status.
ENDIF.

SELECT SINGLE stsma
INTO lv_stsma
FROM tvty
WHERE traty EQ lv_vhart.

CLEAR gk_uphustatus.
REFRESH gt_uphustatus.

gk_uphustatus-objnr = gvc_object.
gk_uphustatus-stat = lk_status-stat.
gk_uphustatus-inact = gc_x.
gk_uphustatus-stsma = lv_stsma.
gk_uphustatus-mod = gc_u.

APPEND gk_uphustatus TO gt_uphustatus.
CLEAR gk_uphustatus.

CALL FUNCTION 'HU_STATUS_UPDATE'
EXPORTING
it_hustatus = gt_uphustatus
it_hustobj = gt_uphustobj.

IF sy-subrc EQ 0.

SELECT SINGLE estat
FROM tj30t
INTO gv_estat_stag
WHERE stsma = lv_stsma
AND spras = gc_e
AND txt04 = gc_stag.

CLEAR gk_uphustatus.
REFRESH gt_uphustatus.

* Check if new status exists, maybe inactive
CLEAR lk_status.
SELECT SINGLE stat inact
INTO lk_status
FROM husstat
WHERE objnr EQ gvc_object
AND stat EQ gv_estat_stag.

IF sy-subrc 0.
gk_uphustatus-mod = gc_i.
ELSE.
gk_uphustatus-mod = gc_u.
ENDIF.

gk_uphustatus-objnr = gvc_object.
gk_uphustatus-stat = gv_estat_stag.
gk_uphustatus-stsma = lv_stsma.

APPEND gk_uphustatus TO gt_uphustatus.
CLEAR gk_uphustatus.

CALL FUNCTION 'HU_STATUS_UPDATE'
EXPORTING
it_hustatus = gt_uphustatus
it_hustobj = gt_uphustobj.

ENDIF.