MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Modificar campo BSEG-XREF3 (foro/showthread.php?t=13892)

javibest 03/06/08 15:22:57

Modificar campo BSEG-XREF3
 
Hola.

Estoy intentando modificar un documento contable, con las funciones
'CHANGE_DOCUMENT'
'CHANGEDOCUMENT_OPEN'
'CHANGEDOCUMENT_SINGLE_CASE'
'CHANGEDOCUMENT_CLOSE'

pero la verdad es que no consigo que las funciones me hagan nada.

Alguien conoce estas funciones ?



**************************************************
FORM grabar_documento USING p_cadena.

DATA : objectid LIKE cdhdr-objectid,
ld_belnr(10).

DATA: bkpf_old LIKE bkpf,
bkpf_new LIKE bkpf.

DATA : wa_bseg_old LIKE bseg,
wa_bseg_new LIKE bseg.

DATA: v_bkdf LIKE bkdf OCCURS 0 WITH HEADER LINE,
v_bkpf LIKE bkpf OCCURS 0 WITH HEADER LINE,
v_bsec LIKE bsec OCCURS 0 WITH HEADER LINE,
v_bsed LIKE bsed OCCURS 0 WITH HEADER LINE,
v_bseg LIKE bseg OCCURS 0 WITH HEADER LINE,
v_bset LIKE bset OCCURS 0 WITH HEADER LINE.


READ TABLE it_bkpf INTO wa_bkpf INDEX 1.
READ TABLE it_bseg INTO wa_bseg WITH KEY koart = 'K'.

MOVE-CORRESPONDING wa_bkpf TO v_bkpf.
APPEND v_bkpf.

MOVE-CORRESPONDING wa_bseg TO v_bseg.
MOVE-CORRESPONDING wa_bseg TO wa_bseg_old.

v_bseg-xref3 = p_cadena.

MOVE-CORRESPONDING v_bseg TO wa_bseg_new.
APPEND v_bseg.


CALL FUNCTION 'CHANGE_DOCUMENT'
TABLES
t_bkdf = v_bkdf
t_bkpf = v_bkpf
t_bsec = v_bsec
t_bsed = v_bsed
t_bseg = v_bseg
t_bset = v_bset.


CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_bkpf-belnr
IMPORTING
output = ld_belnr.

CONCATENATE sy-mandt wa_bkpf-bukrs
ld_belnr
wa_bkpf-gjahr
INTO objectid.

*- Creamos el documento de modificacion

CALL FUNCTION 'CHANGEDOCUMENT_OPEN'
EXPORTING
objectclass = 'BELEG '
objectid = objectid
planned_change_number = ' '
EXCEPTIONS
sequence_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE e002(sy) WITH text-005.
ENDIF.

bkpf_new = wa_bkpf.
bkpf_old = wa_bkpf.

*- Modificamos la bkpf
CALL FUNCTION 'CHANGEDOCUMENT_SINGLE_CASE'
EXPORTING
change_indicator = 'U'
docu_delete = 'X'
tablename = 'BKPF '
workarea_new = bkpf_new
workarea_old = bkpf_old
EXCEPTIONS
nametab_error = 1
open_missing = 2
position_insert_failed = 3
OTHERS = 4.

IF sy-subrc <> 0.
MESSAGE e002(sy) WITH text-004.
ENDIF.



CALL FUNCTION 'CHANGEDOCUMENT_SINGLE_CASE'
EXPORTING
change_indicator = 'U'
docu_delete = 'X'
tablename = 'BSEG '
workarea_new = wa_bseg_new
workarea_old = wa_bseg_old
EXCEPTIONS
nametab_error = 1
open_missing = 2
position_insert_failed = 3
OTHERS = 4.

IF sy-subrc <> 0.
MESSAGE e002(sy) WITH text-004.
ENDIF.



CALL FUNCTION 'CHANGEDOCUMENT_CLOSE'
EXPORTING
date_of_change = sy-datum
objectclass = 'BELEG '
objectid = objectid
tcode = 'FB03'
time_of_change = sy-uzeit
username = sy-uname
object_change_indicator = 'U'
EXCEPTIONS
header_insert_failed = 1
no_position_inserted = 2
object_invalid = 3
open_missing = 4
position_insert_failed = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE e002(sy) WITH text-006.
ENDIF.

ibecerra 03/06/08 22:45:16

q tal mira, yo he trabajdo con la funcion

CALL FUNCTION 'CHANGE_DOCUMENT'
TABLES
T_BKDF = TI_BKDF
T_BKPF = TI_BKPF
T_BSEC = TI_BSEC
T_BSED = TI_BSED
T_BSEG = TI_BSEG
T_BSET = TI_BSET.

y me funciona bien..
ahora las tablas q deben estar llenas son la T_BKPF y la T_BSEG
Saludos


Husos Horarios son GMT. La hora en este momento es 02:16:28.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web