You are on page 1of 2

*&--------------------------------------------------------------------*

*& Form ZGRABAR


*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM zgrabar.
DATA: BEGIN OF lw_rec.
INCLUDE STRUCTURE zliber_solped.
DATA: END OF lw_rec.
DATA: objectid TYPE cdhdr-objectid,
cdoc_upd_object TYPE cdhdr-change_ind VALUE 'U'.
DATA: lw_old TYPE zliber_solped,
lw_new TYPE zliber_solped.
DATA: aux LIKE zliber_solped.

LOOP AT TOTAL.
move-corresponding <VIM_TOTAL_STRUC> to lw_rec.
* Comprobar la acción
CASE <ACTION>.
WHEN 'D'. "Borrado
cdoc_upd_object = 'D'.
lw_new = lw_rec.
lw_old = lw_rec.
WHEN 'U'. "Update
cdoc_upd_object = 'U'.
lw_new = lw_rec.
SELECT SINGLE *
INTO lw_old
FROM zliber_solped
WHERE bukrs EQ lw_new-bukrs AND
centro EQ lw_new-centro AND
knttp EQ lw_new-knttp AND
kostl EQ lw_new-kostl.
IF sy-subrc NE 0.
CLEAR lw_old.
ENDIF.
WHEN 'N'. "Insert
cdoc_upd_object = 'I'.
CLEAR lw_old.
lw_new = lw_rec.
WHEN 'Y'. "Act + Borrado
cdoc_upd_object = 'D'.
lw_new = lw_rec.
lw_old = lw_rec.
WHEN 'M'. "Borrado
cdoc_upd_object = 'D'.
lw_new = lw_rec.
lw_old = lw_rec.
WHEN OTHERS.
CONTINUE.
ENDCASE.
aux = lw_rec.
* Construir la clave
CLEAR objectid.
objectid(4) = aux-bukrs.
objectid+4(4) = aux-centro.
objectid+8(1) = aux-knttp.
objectid+9(10) = aux-kostl.
CALL FUNCTION 'ZLIBER_SOLPED_WRITE_DOCUMENT'
EXPORTING
objectid = objectid
tcode = sy-tcode
utime = sy-uzeit
udate = sy-datum
username = sy-uname
* PLANNED_CHANGE_NUMBER = ' '
object_change_indicator = cdoc_upd_object
* PLANNED_OR_REAL_CHANGES = ' '
* NO_CHANGE_POINTERS = ' '
n_zliber_solped = lw_new
o_zliber_solped = lw_old
upd_zliber_solped = cdoc_upd_object.

ENDLOOP.
SY-SUBRC = 0.
ENDFORM. "zgrabar

You might also like