viernes, 26 de noviembre de 2010

Como añadir columnas en las transacciones KSB1 y KOB1.

Otra vez tengo que volver a añadir columnas a una transacción de report standard. Para la KSB1 y KOB1, hay que actuar de la misma forma que para la CIJ3.
  1. Vamos a la CMOD.
  2. Creamos un nuevo proyecto.
  3. Asignamos la ampliación COOMEP01.
  4. Vamos a componentes.
  5. En tablas include añadimos nuestros campos en CI_RKPOS y lo activamos.
  6. Usamos el exit EXIT_SAPLKAEP_001, para llenar los nuevos campos. Lo haremos porque nos llega línea a línea en la estructura CS_RECORD. Si no queremos que lo haga para otras transacciones que usan este mismo exit hagamos CHECK sy-tcode = 'KSB1'. O algo similar según las transacciones que queramos tratar.
  7. Usamos el EXIT_SAPLKAEP_009 para tratar el field_catalog y estas cosas. Lo que yo hago es que si son otras transacciones quino los nuevos campos para que no salgan en el layout ni se puedan poner.
  8. Vamos a la SM34.
  9. Añadimos los nuevos campos a la vista V_TKALV.

lunes, 15 de noviembre de 2010

Como añadir columnas en la transaccion CIJ3.

Interesante explicación en este blog:
Añadir campo a informes CO de partidas individuales.

Por otra parte he encontrado aquí una explicación mucho más gráfica:
Adding Fields to CJI3 Report.

Y no lo he acabado de miar pero parece que aquí está más ampliamente explicado:
Expand PS Master Data by Adding New Fields to Project Builder.

He podido hacerlo siguiendo el primer enlace para lo de la CMOD y el segundo para la SM34. Al final lo que más me ha costado ha sido que al intentar entrar en el include para la user exit me daba el siguiente mensaje:

Nombres programa ZX... reservados para includes de grupos funciones exit. (Nº mensaje: DS027) 

Por fortuna en un foro encontré la solución, es tan tonto, como apretar RETURN, y así entramos. Además de tocar en el user-exit EXIT_SAPLKAEP_001 para la lógica, he tocado en EXIT_SAPLKAEP_009 para modificar el FIELD CATALALOG, para que si no es la transacción que nos interesa no saque las nuevas columnas.

viernes, 15 de octubre de 2010

Cambiar dinámicamente el título de un report.


Me he encontrado con la situación de tener que realizar dos listados con un gran número de columnas en común. Al final la solución ha sido hacer un único programa que es llamado por 2 transacciones diferentes. El pequeño problema, es que cada listado tenía que tener un título diferente.
Solución: tanto en el evento INITIALIZATION como en START-OF-SELECTION he modificado el sy-title. Lo he hecho en ambos eventos, porque si lo hacía solo en el primero al mostrar el listado volvía a ver el titulo de se pone en Pasar A->Atributos.

El código:
* ----------------------------------------------
INITIALIZATION.
* ----------------------------------------------
* Ponemos títulos según transacción.
PERFORM f_title_set.


* ----------------------------------------------
START-OF-SELECTION.

* Ponemos títulos según transacción.
PERFORM f_title_set.


Y la subrutina que lo acaba haciendo:

FORM f_title_set.
*
 CASE sy-tcode.
  WHEN 'ZTRANS1'.
   sy-title = text-t01.
  WHEN 'ZTRANS2'.
   sy-title = text-t02.
  WHEN OTHERS.
   sy-title = text-t00.
 ENDCASE.
*
ENDFORM.
* ----------------------------------------------