PDA

Ver la Versión Completa : Dump al añadir campo en la KOMP


raulgar
05/06/09, 09:43:40
Hola,

Tengo un problema. Necesito añadir un nuevo campo en la tabla KOMP. Para ello modifico un APPEND que es un estructura Z. El caso es que nada mas añadir el campo y activar la estructura Z empiezan a dar dumps cada vez que algún programa tiene definiciones con esta tabla.

En concreto el siguiente: DDIC_TYPE_INCONSISTENCY

Ejemplo de lineas de codigo que generan el dump:

>>>>> data: tkomp type standard table of komp with header line.

>>>>> constants MAX_NTGEW type KOMP-NTGEW value 999999999999.999'. "#EC NOTEXT

¿Alguien sabe que es lo que hago mal? En teoría cuando se añaden campos a las estructuras APPEND no debería haber problemas.

Muchas gracias!

Mike
05/06/09, 13:14:21
Leete la ayuda de agregar nuevos campos hay dice como te tienes que crear esos nuevos campos y como es la nomenclatura que deben tener.

raulgar
05/06/09, 14:55:47
Muchas gracias.

Me puedes explicar un poco mas como debo hacerlo o por lo menos como accedo a la ayuda que me comentas. Es que estoy un poco perdido.

De nuevo muchas gracias.

Mike
05/06/09, 15:56:28
Esto es lo que esta en la ayuda.


Nuevos campos para la determinación de precios
Bases de la adaptación en la determinación de precio


En la determinación de precio, son relevantes las siguientes estructuras de comunicación:
KOMK (cabecera de comunicación de la determinación de precio)
KOMP (posición de comunicación de la determinación de precio)
KOMG (campos permitidos para estructuras de condición)
Por motivos técnicos, se utiliza la estructura de comunicación KOMG, en la que están contenidos los campos de KOMK y KOMP, que son relevantes para la determinación de precio en el sistema estándar, y se hallan en el catálogo de campos de las tablas de condición. Si desea utilizar un nuevo campo en el catálogo de campos, deberá insertar el campo correspondientemente en KOMP o KOMK, en el programa de Include siguiente:

datos de cabecera en INCLUDE KOMKAZ en KOMK,
datos de posición en INCLUDE KOMPAZ en KOMP.
Mediante estos programas de Include, se insertará automáticamente el campo en KOMG, y también en el catálogo de campos.


las rutinas para el aprovisionamiento de los nuevos campos en el tratamiento de orden se encuentran en el programa MV45AFZZ. Utilice los siguientes exits de usuario:
USEREXIT_PRICING_PREPARE_TKOMK (campos de cabecera)
USEREXIT_PRICING_PREPARE_TKOMP (campos de posición)
las rutinas para el aprovisionamiento de los nuevos campos en la facturación se encuentran en el elemento RV60AFZZ. Utilice los siguientes exits de usuario:
USEREXIT_PRICING_PREPARE_TKOMK (campos de cabecera)
USEREXIT_PRICING_PREPARE_TKOMP (campos de posición)

Ejemplos sobre la utilización de campos nuevos en la determinación de precio


Ejemplo 1

El primer ejemplo describe el caso de que se tengan que utilizar partes de campos de documentos para la determinación de precio. Usted pretende, p. ej., utilizar las tres primeras posiciones de la jerarquía de productos (PRODH) para la determinación de precio. Proceda del modo siguiente:

1. Verifique los elementos de datos en la versión estándar de SAP.
2. Puesto que en la versión estándar no hay ningún elemento correspondiente, tiene que crear un elemento de datos nuevo, ZZPRODH1. Cree un dominio con la longitud de campo "3" y el tipo de datos "CHAR" para el nuevo elemento de datos.
Recuerde que los elementos de datos nuevos tienen que empezar con las letras "ZZ" o "YY", ya que SAP estas áreas para nombres están reservadas para que no sean sobrescritas por un cambio de release.
3. Verifique si la jerarquía de productos (PRODH) aparece a nivel de cabecera o de posición.
La tabla VBAP especifica que el campo de documento PRODH sea un campo de posición.
4. Incluya el nombre de campo ZZPRODH en la estructura de comunicación KOMP mediante el INCLUDE KOMPAZ y asígnele el elemento de datos ZZPRODH1.
5. Active la estructura.
6. Verifique en qué tabla aparece el campo PRODH.
El campo aparece en la tabla VBAP (documento de ventas: datos de posición).
7. Introduzca un valor en el nuevo campo en las rutinas FORM para el tratamiento de orden y la facturación mediante los exits de usuario previstos:
en el tratamiento de pedidos, el exit de usuario se encuentra en el elemento MV45AFZZ. La sentencia ABAP/4 completa dice lo siguiente:
FORM USEREXIT_PRICING_PREPARE_TKOMP.
MOVE VBAP-PRODH(3) TO TKOMP-ZZPRODH.
ENDFORM.
en la facturación, las rutinas para introducir valores a los campos nuevos se encuentran en el elemento RV60AFZZ. Esta es la sentencia ABAP/4:
FORM USEREXIT_PRICING_PREPARE_TKOMP.
MOVE XVBRP-PRODH(3) TO TKOMP-ZZPRODH.
ENDFORM.
8. Asigne al campo ZZPRODH de la tabla T681F las entradas A, V y 001. Para campos en la gestión de rappel se ha incluido la utilización "E".

Ejemplo 2

El segundo ejemplo describe el caso de utilizar, para la determinación de precio, una función de interlocutor creada en el Customizing para la actualización de interlocutor.

Se ha creado la función de interlocutor para un segundo representante Z1 con la clase de interlocutor PE. Z1 está definido como función obligatoria para el maestro de clientes, por lo que se parametriza automáticamente en el documento y está disponible en la tabla de interlocutor interna XVBPA

Para utilizar la nueva función de interlocutor para la determinación de precio, en primer lugar proceda igual como en los ejemplos precedentes.

1. Cree un nuevo elemento de datos, aquí ZZVRTZ1, con el dominio PERNR.
2. Incluya el campo ZZVRTZ en KOMK mediante KOMKAZ y asígnele el elemento de datos ZZVRTZ1.
Para el tratamiento de la orden, el aprovisionamiento del campo se efectúa en el exit de usuario del elemento MV45AFZZ. Las entradas en los exits de usuario están protegidas al cambiar de release. La sentencia ABAP/4 es la siguiente:
FORM USEREXIT_PRICING_PREPARE_TKOMK.
PERFORM XVBPA_LESEN (SAPFV45K) USING 'Z1' VBAP-POSNR SY-TABIX.
IF XVBPA-UPDKZ <> 'D'.
IF XVBPA-UPDKZ <> 'D'.
MOVE XVBPA-PERNR TO TKOMK-ZZVRTZ.
ENDIF.
ENDFORM.
Para la facturación, el aprovisionamiento del campo se efectúa en el exit de usuario del elemento RV60AFZZ. Las entradas en los exits de usuario están protegidas para el cambio de release. La sentencia ABAP/4 es la siguiente:
FORM USEREXIT_PRICING_PREPARE_TKOMK.
PERFORM XVBPA_SELECT USING 'Z1'.
IF XVBPA-UPDKZ <> 'D'.
MOVE XVBPA-PERNR TO TKOMK-ZZVRTZ.
ENDIF.
ENDFORM.


Espero te sirva.

raulgar
08/06/09, 08:09:42
Muchas gracias, me ha servido de mucha ayuda pero ahora me surge otro problema.

El campo que tengo que añadir a la KOMP es el mismo que hay en una tabla Z y a la hora de realizar la asignación en el FORM USEREXIT_PRICING_PREPARE_TKOMP me dice que no reconoce el dato.

¿Donde tengo que declarar la sentencia TABLES?

Te copio el codigo que he metido.

FORM userexit_pricing_prepare_tkomp.
tkomp-zzposex_e = vbkd-posex_e.
* tkomp-zzesca = ztb_sd_08-zzesca. ----> Esta es la linea que me da error
ENDFORM. "USEREXIT_PRICING_PREPARE_TKOMP

Mike
08/06/09, 14:17:01
Como consigues la informacion de la tabla Z?? tienes que tener declarada una estructura o si usas la misma tabla debes tenerla declarada con tables

MPAEZ
01/09/12, 16:05:57
Esto es lo que esta en la ayuda.


Nuevos campos para la determinación de precios
Bases de la adaptación en la determinación de precio


En la determinación de precio, son relevantes las siguientes estructuras de comunicación:
KOMK (cabecera de comunicación de la determinación de precio)
KOMP (posición de comunicación de la determinación de precio)
KOMG (campos permitidos para estructuras de condición)
Por motivos técnicos, se utiliza la estructura de comunicación KOMG, en la que están contenidos los campos de KOMK y KOMP, que son relevantes para la determinación de precio en el sistema estándar, y se hallan en el catálogo de campos de las tablas de condición. Si desea utilizar un nuevo campo en el catálogo de campos, deberá insertar el campo correspondientemente en KOMP o KOMK, en el programa de Include siguiente:

datos de cabecera en INCLUDE KOMKAZ en KOMK,
datos de posición en INCLUDE KOMPAZ en KOMP.
Mediante estos programas de Include, se insertará automáticamente el campo en KOMG, y también en el catálogo de campos.


las rutinas para el aprovisionamiento de los nuevos campos en el tratamiento de orden se encuentran en el programa MV45AFZZ. Utilice los siguientes exits de usuario:
USEREXIT_PRICING_PREPARE_TKOMK (campos de cabecera)
USEREXIT_PRICING_PREPARE_TKOMP (campos de posición)
las rutinas para el aprovisionamiento de los nuevos campos en la facturación se encuentran en el elemento RV60AFZZ. Utilice los siguientes exits de usuario:
USEREXIT_PRICING_PREPARE_TKOMK (campos de cabecera)
USEREXIT_PRICING_PREPARE_TKOMP (campos de posición)

Ejemplos sobre la utilización de campos nuevos en la determinación de precio


Ejemplo 1

El primer ejemplo describe el caso de que se tengan que utilizar partes de campos de documentos para la determinación de precio. Usted pretende, p. ej., utilizar las tres primeras posiciones de la jerarquía de productos (PRODH) para la determinación de precio. Proceda del modo siguiente:

1. Verifique los elementos de datos en la versión estándar de SAP.
2. Puesto que en la versión estándar no hay ningún elemento correspondiente, tiene que crear un elemento de datos nuevo, ZZPRODH1. Cree un dominio con la longitud de campo "3" y el tipo de datos "CHAR" para el nuevo elemento de datos.
Recuerde que los elementos de datos nuevos tienen que empezar con las letras "ZZ" o "YY", ya que SAP estas áreas para nombres están reservadas para que no sean sobrescritas por un cambio de release.
3. Verifique si la jerarquía de productos (PRODH) aparece a nivel de cabecera o de posición.
La tabla VBAP especifica que el campo de documento PRODH sea un campo de posición.
4. Incluya el nombre de campo ZZPRODH en la estructura de comunicación KOMP mediante el INCLUDE KOMPAZ y asígnele el elemento de datos ZZPRODH1.
5. Active la estructura.
6. Verifique en qué tabla aparece el campo PRODH.
El campo aparece en la tabla VBAP (documento de ventas: datos de posición).
7. Introduzca un valor en el nuevo campo en las rutinas FORM para el tratamiento de orden y la facturación mediante los exits de usuario previstos:
en el tratamiento de pedidos, el exit de usuario se encuentra en el elemento MV45AFZZ. La sentencia ABAP/4 completa dice lo siguiente:
FORM USEREXIT_PRICING_PREPARE_TKOMP.
MOVE VBAP-PRODH(3) TO TKOMP-ZZPRODH.
ENDFORM.
en la facturación, las rutinas para introducir valores a los campos nuevos se encuentran en el elemento RV60AFZZ. Esta es la sentencia ABAP/4:
FORM USEREXIT_PRICING_PREPARE_TKOMP.
MOVE XVBRP-PRODH(3) TO TKOMP-ZZPRODH.
ENDFORM.
8. Asigne al campo ZZPRODH de la tabla T681F las entradas A, V y 001. Para campos en la gestión de rappel se ha incluido la utilización "E".

Ejemplo 2

El segundo ejemplo describe el caso de utilizar, para la determinación de precio, una función de interlocutor creada en el Customizing para la actualización de interlocutor.

Se ha creado la función de interlocutor para un segundo representante Z1 con la clase de interlocutor PE. Z1 está definido como función obligatoria para el maestro de clientes, por lo que se parametriza automáticamente en el documento y está disponible en la tabla de interlocutor interna XVBPA

Para utilizar la nueva función de interlocutor para la determinación de precio, en primer lugar proceda igual como en los ejemplos precedentes.

1. Cree un nuevo elemento de datos, aquí ZZVRTZ1, con el dominio PERNR.
2. Incluya el campo ZZVRTZ en KOMK mediante KOMKAZ y asígnele el elemento de datos ZZVRTZ1.
Para el tratamiento de la orden, el aprovisionamiento del campo se efectúa en el exit de usuario del elemento MV45AFZZ. Las entradas en los exits de usuario están protegidas al cambiar de release. La sentencia ABAP/4 es la siguiente:
FORM USEREXIT_PRICING_PREPARE_TKOMK.
PERFORM XVBPA_LESEN (SAPFV45K) USING 'Z1' VBAP-POSNR SY-TABIX.
IF XVBPA-UPDKZ <> 'D'.
IF XVBPA-UPDKZ <> 'D'.
MOVE XVBPA-PERNR TO TKOMK-ZZVRTZ.
ENDIF.
ENDFORM.
Para la facturación, el aprovisionamiento del campo se efectúa en el exit de usuario del elemento RV60AFZZ. Las entradas en los exits de usuario están protegidas para el cambio de release. La sentencia ABAP/4 es la siguiente:
FORM USEREXIT_PRICING_PREPARE_TKOMK.
PERFORM XVBPA_SELECT USING 'Z1'.
IF XVBPA-UPDKZ <> 'D'.
MOVE XVBPA-PERNR TO TKOMK-ZZVRTZ.
ENDIF.
ENDFORM.


Espero te sirva.

Hola Estimado cuando haces referencia al ejemplo 2 solamente usando ese user es la forma de calcular por funcion interlocutor una clase de condicion? yo estoy trantando de hacerla agregando el campo de funcion interlocutor al catalogo de campos y el numero del personal pero cuando lo intenta determinar en el doc de ventas no lo determina en el analis aparece como si no encuentra esos campos.