MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   User Exit Traspaso de cabecera de factura hacia el texto de cabecera de doc contable (foro/showthread.php?t=26193)

yvrn 19/11/08 14:42:21

User Exit Traspaso de cabecera de factura hacia el texto de cabecera de doc contable
 
Hola a todos,

Estoy nueva en esto de ABAP :confused: Tengo un requerimiento que cuando se cree una factura a través de la transacción VF01 o VF04 y se active el user exit se deberá traspasar el texto de cabecera hacia el documento contable.

Estoy realizandolo a través del EXIT_SAPLV60B_001, programa SAPLV60B. En el código estoy utilizando la función READ_TEXT, en el name le asigne el número de documento comercial, sin embargo, no entiendo cómo especificarle que la información que lea la debe guardar en el Texto Cabecera Documento: BKPF-BKTXT.

Por favor, si alguien ha hecho algo parecido que me pueda iluminar, mil gracias!

DavidXD_XD 19/11/08 15:13:49

Hola ... tendrias que crear una exit de sustitucion y traer el texto de la factura usando el READ_TEXT ... las sustituciones la deberias de generar a nivel de cabecera dentro de la OBBH

Mike 19/11/08 17:08:15

En el User exit EXIT_SAPLV60B_001 la estructura XACCHD (que se encuentra en el exporting) tiene el campo BKTXT, ese corresponde con el de la BKPF.

Saludos

yvrn 19/11/08 18:56:35

Uhm, ok, gracias! por lo que he leido y entendido, la logica de mi include en el user exit es la siguiente:

TABLES: VBDKR,
ACCHD.

DATA:
znombre LIKE THEAD-TDNAME,
zheader LIKE THEAD,
zlines LIKE tline OCCURS 0 WITH HEADER LINE.

* Asignando el numero de documento comercial
znombre = VBDKR-VBELN.

call function 'READ_TEXT'
exporting
id = '0001'
language = 'S'
name = znombre
object = 'VBBK'
importing
header = zheader
tables
lines = zlines
exceptions
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
others = 8.

*Deberia asignarle al campo texto de cabecera de documento contable, lo que lei
ACCHD-BKTXT = zlines-tdline.

Lo que veo es que no se esta copiando :s

Disculpen las burradas

Mike 19/11/08 19:47:23

No tienes que declarar TABLES: VBDKR,
ACCHD.

En la estructura VBRK de la funcion estan los datos de cabecera de la factura y en XACCHD-BKTXT es a la que le vas a hacer la asignacion (esos son Parametros de entrada y salida de la funcion).

Tambien Tienes que Leer la tabla interna zlines, para que los valores se situen en la cabecera y se te copian a la variable XACCHD-BKTXT

Mas o menos asi

DATA:
znombre LIKE THEAD-TDNAME,
zheader LIKE THEAD,
zlines LIKE tline OCCURS 0 WITH HEADER LINE.

* Asignando el numero de documento comercial
znombre = VBRK-VBELN.

call function 'READ_TEXT'
exporting
id = '0001'
language = 'S'
name = znombre
object = 'VBBK'
importing
header = zheader
tables
lines = zlines
exceptions
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
others = 8.

*Deberia asignarle al campo texto de cabecera de documento contable,
READ TABLE zlines index 1. "Con esto solo obtendrias la 1ra posicion del texto
"Si tiene varias haz un loop
XACCHD-BKTXT = zlines-tdline.

yvrn 19/11/08 20:45:49

Graciaaaas, Mike! Ya lo corregi y esta listo! :D

yvrn 20/11/08 23:03:36

Yo otra vez :(

Pense que estaba listo pero no... Al hacer un debugging las variables guardan los valores que deberian: de entrada, el numero de factura y de salida, el texto de cabecera (esto cuando creo la factura). Pero al visualizar la factura e irme al campo de documento contable, el texto de cabecera se encuentra vacio. He estado dandole vueltas todo el dia pero de verdad no veo que puede ser... Al final,mi codigo quedo asi:

DATA:
zfactura LIKE THEAD-TDNAME,
zheader LIKE THEAD,
zlines LIKE tline OCCURS 0 WITH HEADER LINE,
wa_lines LIKE zlines.

* Asignando el numero de factura
zfactura = VBRK-VBELN.

* Funcion para leer el texto de cabecera

call function 'READ_TEXT'
exporting
id = '0001'
language = 'S'
name = zfactura
object = 'VBBK'
importing
header = zheader
tables
lines = zlines
exceptions
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
others = 8.

* Asignando el campo de texto de cabecera de la factura al campo de texto de cabecera del documento contable
loop at zlines INTO wa_lines.
CONCATENATE xacchd-bktxt wa_lines-tdline INTO xacchd-bktxt separated by space.
endloop.

Por favor, quien me pueda iluminar! Gracias de antemano!!!!

yvrn 21/11/08 12:48:51

Hola! Ya lo solucioné! Habia que Verificar la implementación de los métodos change_initial y change_after_check en la BADI AC_DOCUMENT y agregar esta línea:

MOVE-CORRESPONDING im_document-header to ex_document-header.

Si aún no funciona, Chequear las clases que comprende, sus métodos y las posibles BADIS que los contengan.

Saludos!


Husos Horarios son GMT. La hora en este momento es 18:53:48.

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