Modificar campo BSEG-XREF3

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • javibest
    Senior Member
    • ene
    • 185

    #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.
  • ibecerra

    #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

    Comentario

    Trabajando...