|
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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 |
Herramientas | Buscar en Tema |
Desplegado | |
|
|