PDA

Ver la Versión Completa : Rellenar un campo Z de la VBAK mediante la bapi SD_SALESDOCUMENT_CREATE


raulgar
20/11/09, 10:09:07
Hola,

Tengo una duda que no soy capaz a resolver ni siquiera buscando por internet.

He tenido que añadir un campo nuevo WTY_REJCD y necesito rellenarlo también cuando se llama a la BAPI. Al parecer hay que modificar las estructuras BAPE_VBAK y BAPE_VBAKX y las he dejado así:

http://dl.dropbox.com/u/233806/BAPE_VBAK.jpg
http://dl.dropbox.com/u/233806/BAPE_VBAKX.jpg

A continuación os pongo el código de como lo he hecho:

DATA: t_extension LIKE bapiparex OCCURS 0 WITH HEADER LINE.

"Tipo Cargo/abono
CLEAR t_extension.
t_extension-structure = 'BAPE_VBAK'.
t_extension-valuepart1+10 = 'CC'.
"Escalado
SELECT SINGLE wty_rejcd
FROM ztb_sd_08
INTO w_wty_rejcd
WHERE konda = wt_sd_145-konda
AND vkorg = wt_sd_145-bukrs
AND pltyp = w_pltyp.
t_extension-valuepart1+12 = w_wty_rejcd.
APPEND t_extension.
CLEAR t_extension.
t_extension-structure = 'BAPE_VBAKX'.
t_extension-valuepart1+10 = 'XX'.
APPEND t_extension.

La tabla queda así:

http://dl.dropbox.com/u/233806/TABLA.jpg

Pero nada, pasa de mi. El campo ZTCAB lo rellena perfecto pero el otro me lo deja en blanco. He probado a ponerle 0s a la variable, poner un espacio entre las dos Xs, etc y nada.

¿Sabeis que puede ser?

Muchas gracias!

DavidXD_XD
20/11/09, 14:06:22
Holas, en primera esos campos correspondientes a la estructura APPEND deben ir con una o doble Z para identificarlas en un cambio de versión, y por otro lado la BAPI no va a contemplarlos puesto que el standard no los tiene contemplados ... ahí puedes realizar un UPDATE directo, después de realizar la BAPI. a esa tabla con esos 2 campos xq ya tienes el campo clave (VBELN), espero te ayude

Ace73
10/01/11, 13:53:56
Estimado
Supongo que ya realizo las ampliaciones de la estructuras de la BAPI agregando los campos Z. Despues de eso de debe ocupar en la BAPI la estructura EXTENSIONIN, esta extension sirve para varias BAPIs incluso la que quieres usar SD_SALESDOCUMENT_CREATE .

form LLENA_AMPLIACION tables p_extensionin STRUCTURE BAPIPAREX
using p_usermodifica
P_VBELN.

DATA: wa_extensionin TYPE bapiparex,
wa_bape_vbak TYPE bape_vbak,
wa_bape_vbakx TYPE bape_vbakx.

wa_bape_vbak-VBELN = P_VBELN.
wa_bape_vbakx-VBELN = 'X'.

wa_bape_vbak-ZZUSERMODIFICA = p_usermodifica.
wa_bape_vbakx-ZZUSERMODIFICA = 'X'.

wa_extensionin-structure = 'BAPE_VBAK'.
MOVE wa_bape_vbak TO wa_extensionin-valuepart1.
APPEND wa_extensionin to p_extensionin.
CLEAR wa_extensionin.
wa_extensionin-structure = 'BAPE_VBAKX'.
MOVE wa_bape_vbakx TO wa_extensionin-valuepart1.
APPEND wa_extensionin to p_extensionin.
endform. " LLENA_AMPLIACION

* y en la llamada a la funcion
*Se llena la estructura de ampliacion segun campos informados
DATA: extensionin LIKE STANDARD TABLE OF bapiparex WITH HEADER LINE.
REFRESH extensionin.
PERFORM llena_ampliacion TABLES extensionin
* USING header_in
USING I_USERMODIFICA
I_VBELN.

CALL FUNCTION 'BAPI_CUSTOMERQUOTATION_CHANGE'
EXPORTING
SALESDOCUMENT = I_VBELN
QUOTATION_HEADER_IN = IT_QUOTATION_HEADER_IN
QUOTATION_HEADER_INX = wa_QUOTATION_HEADER_INX
TABLES
RETURN = RETURN
QUOTATION_ITEM_IN = it_quotation_item_in
QUOTATION_TEXT = I_QUOTATION_TEXT
EXTENSIONIN = extensionin.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X' .


Espero te ayude porque a mi me funciona.

Saludos.