MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 18/01/16, 20:10:25
msq msq is offline
Junior Member
 
Fecha de Ingreso: dic 2013
Mensajes: 7
Talking H99CWTR0 Nuevos Campos (Explicado)

Puntos donde vamos a hacer modificaciones

PRG H99CWTR0.
include h99cwtr0_data_def.
include h99cwtr0_shared_data.
include h99cwtr0_forms.

PRG H99CWTR0_GRID_TEMPLATE.
PRG H99CWTR0_ALV_TEMPLATE.
PRG H99CWTR0_EXCEL_TEMPLATE.

Lo que se busca hacer puntualmente (para simplificar el analisis) es emular el tratamiento que se le dá a otro campo opcionar. Por ejemplo vamos a imitar PERNR con el campo PLANS

Paso 1:
Copiar h99cwtr0_shared_data (Ej zh99cwtr0_shared_data) y reemplazarlo en el include h99cwtr0_data_def.

*data: begin of common part driver_data_exchange.
* include zh99cwtr0_shared_data.
*data: end of common part.

Dentro del Nuevo include hay que agregar la definicion del campo Nuevo. Recomiendo que sea de forma similar al que se quiere emular

*TYPES: BEGIN OF ts_plans,
* plans LIKE p0001-plans,
*END OF ts_plans.


Paso 2:
Dentro de h99cwtr0_forms en la rutina csorthierarchy_initforlga hay que agregar los campos para poder ser elegidos y para ser procesados junto con sus características. Observando el resto de los campos que aquí figuran se puede ver como setearlos.
Para que aparezcan en la lista de campos opcionales

sortitem-object = 'plans'.
sortitem-attribute = ''.
sortitem-longtext = 'Posición'.
sortitem-key = ' '.
sortitem-read_late = ' '.
sortitem-fi_co = ' '.
APPEND sortitem TO sorthierarchy-validsortitems-list.

Para que aparezcan en los campos que el reporte va a procesar
sortitem-object = 'plans'.
sortitem-attribute = 'plans'.
sortitem-longtext = 'Posición'.
sortitem-key = 'X'.
sortitem-read_late = ' '.
sortitem-fi_co = ' '.
APPEND sortitem TO sorthierarchy-validsortitems-list.

Aquí se pueden poner varios campos asociados al PLANS que aparezcan cuando se elije este campo, en ese caso esos campos no tendrían el sortitem-key = 'X' y tendrían un distinto sortitem-attribute pero el mismo sortitem-object = 'plans'.

Al final de estas declaraciones hay que agregar
sorthierarchy-validsortitems-number = 15

o el numero que corresponda según cada campo que hay agregado. (fijarse que el ultimo agregado que había tenia el 14, por lo que hay que respetar la continuidad ya que usa este numero después).

Paso 3:
Dentro de h99cwtr0_forms en la rutina process_rt hay que indicarle que información va a contener PLANS en el reporte. Este programa procesa todos los campos aunque no los tenga que mostrar en el reporte (en eso no es tán dinámico) por lo que a mas campos agreguemos, mas tiempo de ejecución va a tener el reporte.

* plans = ls_wpbp-plans.

(Nótese que el valor ya estaba contenido en una de las tablas que ya se están usando localmente)

Paso 4:
Estos 3 programas son los que “dinámicamente” generan el código que se usa en nuestro reporte. Primero hay que copiarlos

PRG H99CWTR0_GRID_TEMPLATE -> ZH99CWTR0_GRID_TEMPLATE
PRG H99CWTR0_ALV_TEMPLATE -> ZH99CWTR0_ALV_TEMPLATE
PRG H99CWTR0_EXCEL_TEMPLATE -> ZH99CWTR0_EXCEL_TEMPLATE

Copiar h99cwtr0_data_def a zh99cwtr0_data_def y dentro de el modificar el valor de las siguientes constantes

*constants c_grid_report_template like sy-repid value
*'ZH99CWTR0_GRID_TEMPLATE'.
*constants c_alv_report_template like sy-repid value
*'ZH99CWTR0_ALV_TEMPLATE'.
*constants c_excel_report_template like sy-repid value
*'ZH99CWTR0_EXCEL_TEMPLATE'.

Paso 5:
Ahora lo unico que nos resta es modificar los 3 Programas que si entran, van a ver que están todos comentados.
Antes de modificarlos les cuento como funciona el programa principal.
Mete todo el código dentro de una tabla y la loopea. Según determinadas condiciones va a ir buscando si empiezan con determinada letra, va a modificar la línea de la tabla sacándole el * y la letra que busca (descomentandolo) y va a seguir loopeando para luego tener el código tal cual se precisa.

Primero modificamos el nombre de una subrutina que en el paso anterior ya habíamos creado en paso 1.

*data: begin of common part driver_data_exchange.
*include zh99cwtr0_shared_data.
*data: end of common part.

Luego de esto solo nos resta modificar los 3 programas que copiamos en el paso 4.

En los 3 programas vamos a hacer lo mismo, buscamos donde se usa el PERNR y agregamos nuestro PLANS. Se tiene que hacer en todas las declaraciones, collect y move-corresponding.

Si compilan todo les deberia funcionar.
Decidí subirlo porque lo busqué y no encontré nada puntual. Iba a subir imagenes pero como es mi primer post no supe como.
__________________
>Slegt, Matias<
Codificando mi futuro.
Responder Con Cita
  #2  
Viejo 22/01/16, 18:51:46
BeatrizROF BeatrizROF is offline
Junior Member
 
Fecha de Ingreso: dic 2011
Mensajes: 7
BeatrizROF]Hola!

Gracias por compartir el procedimiento.

Sólo para confirmar, con estos pasos que compartes es posible agregar cualquier columna a la ALV de salida o sólo los que considera el código en los reportes:h99cwtr0_*_template??

Ya que en mi requerimiento tengo que agregar el campo "centro de costos" y dos mas que hacen referencia al signo del importe.

Implemente los pasos que indicas, pero podrías dar mayor detalle para el paso 5 en la sección "En los 3 programas vamos a hacer lo mismo, buscamos donde se usa el PERNR y agregamos nuestro PLANS. Se tiene que hacer en todas las declaraciones, collect y move-corresponding" por favor es que implemente el campo PLANS así como lo indicas, pero no se muestra en la ALV

Solo se ve en los parámetros de selección, pero hasta ahí.


Gracias y Saludos!

Úlima edición por BeatrizROF fecha: 22/01/16 a las 20:07:16.
Responder Con Cita
  #3  
Viejo 10/02/16, 14:31:04
msq msq is offline
Junior Member
 
Fecha de Ingreso: dic 2013
Mensajes: 7

Hola ! Podes hacerlo con cualquier campo, solo tiene que estar correctamente declarado como explique yo en los pasos previos.
Los 3 programas son los 3 templates para que el campo adicional esté disponible en cualquier formato de salida que elijas.
PRG H99CWTR0_GRID_TEMPLATE.
PRG H99CWTR0_ALV_TEMPLATE.
PRG H99CWTR0_EXCEL_TEMPLATE.

Fijate que en estos 3 todas las filas estan comentadas (o la mayoria, excepto el move-corresponding o algun collect) y pueden empezar con *A*D o *D o cosas asi, replicá tal cual en todos los puntos que encuentres el tratamiento al campo PERNR lo mismo, exactamente igual con el campo que declaraste y queres que se muestre, despues le pones la logica del contenido del campo en el programa principal.

Espero te haya servido de ayuda.
__________________
>Slegt, Matias<
Codificando mi futuro.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 09:52:58.


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