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 01/08/07, 00:19:38
dfma59 dfma59 is offline
Junior Member
 
Fecha de Ingreso: nov 2006
Mensajes: 19
Smile Error en ALV

Tengo el sigiente problema:
cuando corro el reporte me imprime la cabecera con sus posiciones , pero cuando le doy alguno de los botones de la barra de sap como el back,el cancelar y el finalizar me duplica las colunmas de la cabecera.

es un reporte de RH.

El codigo es el siguiente:

TABLES: pernr, "Selecciones estándar p.reporting datos maestros HR
pcl1, "Cluster HR 1
pcl2, "Cluster HR 2
t512w, "Valorac.CC-nóminas
t512t, "Texto de CC-nóminas
t521b, "Clave de receptor
t549q, "Períodos de nómina
t549a, "Áreas de nómina
t54c1, "Calendario para acumulación
pa0000. "Registro maestro de personal Infotipo 0000(Medidas)

*======================================================================*
* T Y P E P O O L S *
*======================================================================*
TYPE-POOLS: slis.


*======================================================================*
* I N F O T Y P E S *
*======================================================================*
INFOTYPES: 0000, "Medidas
0002, "Registro maestro de personal Infotipo 0002 (Datos pers.)
0185. "Identificadores.

*======================================================================*
* C L U S T E R I N T E R N A C I O N A L *
*======================================================================*

INCLUDE rpc2cd00. "Cluster CD data definition Cluster-Directory

DATA: BEGIN OF COMMON PART.
INCLUDE: rpc2rx00. "Definition Cluster RX (I) Internacional
INCLUDE: rpc2rxx0. "Definition Cluster RX (II)Internacional
DATA: END OF COMMON PART.

INCLUDE: rpppxd00. "Definition PCL1/2-Buffer Internacional

DATA: BEGIN OF COMMON PART buffer.
INCLUDE rpppxd10. "Common part buffer PCL1/PCL2 Internacional
DATA: END OF COMMON PART.

INCLUDE rpppxm00. "Buffer handling routine PCL1/2 Internacional

INCLUDE rpcmgr00. "CD-Manager-Routinen Internacional

*======================================================================*
* C L U S T E R *
*======================================================================*


DATA: BEGIN OF i_evpdir OCCURS 1.
INCLUDE STRUCTURE pc261.
DATA: END OF i_evpdir.

DATA: BEGIN OF i_rgdir OCCURS 1.
INCLUDE STRUCTURE pc261.
DATA: END OF i_rgdir.

DATA: BEGIN OF t_rgdir OCCURS 1.
INCLUDE STRUCTURE pc261.
DATA: END OF t_rgdir.

*======================================================================*
* V A R I A B L E S / C O N S T A N T S
*======================================================================*
DATA: country(2),
vacio(10).
DATA: p_permo LIKE t549a-permo.

DATA: v_pabrp LIKE t54c1-pabrp.
DATA: v_mes(3).
DATA: v_ano(4).
DATA: m_apor(8).
DATA: v_ans TYPE c.
*======================================================================*
* I N T E R N A L T A B L E S *
*======================================================================*
DATA: BEGIN OF it_datos OCCURS 0,
pernr LIKE pernr-pernr, "Núm. Empleado
icnum LIKE p0185-icnum, "Tarjeta de identidad
vorna LIKE p0002-vorna, "Nombres
nachn LIKE p0002-nachn, "Primer apellido
nach2 LIKE p0002-nach2, "Segundo apellido
patro(11), "No.Patronal Constante
aem LIKE rt-betrg, "Aportacion Empleado Mensual
apm LIKE rt-betrg, "Aportacion Patrono Mensual
monam LIKE t015m-monam, "Mes de la aportacion
END OF it_datos.

DATA: BEGIN OF it_periodos OCCURS 0,
permo LIKE t54c1-permo,
pabrj LIKE t54c1-pabrj,
cumty VALUE 'm',
pabrp LIKE t54c1-pabrp,
END OF it_periodos.

*======================================================================*
* DECLARACION PARA SER UTILIZADA EN FUNCION ALV *
*======================================================================*
*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: it_fieldcat TYPE lvc_t_fcat, "slis_t_fieldcat_alv WITH HEADER LINE,
wa_fieldcat TYPE lvc_s_fcat,

gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE lvc_s_layo, "slis_layout_alv,
gd_repid LIKE sy-repid.
*======================================================================*

*======================================================================*
* S E L E C T - O P T I O N S / P A R A M E T E R S *
*======================================================================*
SELECTION-SCREEN BEGIN OF BLOCK pernom WITH FRAME TITLE text-001.

PARAMETERS:
p_perbeg LIKE rpclxxxx-aper_von OBLIGATORY,
p_perend LIKE rpclxxxx-aper_bis.

SELECTION-SCREEN END OF BLOCK pernom.
SELECTION-SCREEN BEGIN OF BLOCK periodo WITH FRAME TITLE text-002.
PARAMETERS:
p_pabrj LIKE t54c1-pabrj,
p_cumno LIKE t54c1-cumno.
SELECTION-SCREEN END OF BLOCK periodo.
*======================================================================*
* I N I T I A L I Z A T I O N E V E N T *
*======================================================================*
INITIALIZATION.

*======================================================================*
* A T S E L E C T I O N - S C R E E N E V E N T *
*======================================================================*
* Código para campos obligatorios, y de fechas de periodos en la p-ini *
*----------------------------------------------------------------------*

AT SELECTION-SCREEN ON pnpabkrs.

CLEAR: p_permo, p_pabrj,p_cumno.

IF pnpabkrs-low IS INITIAL.
MESSAGE e016(rp)
WITH 'Area de nómina no puede ir vacia'(e04).
ENDIF.

SELECT * FROM t549a WHERE abkrs IN pnpabkrs.
IF NOT p_permo IS INITIAL
AND p_permo NE t549a-permo.
MESSAGE e016(rp)
WITH 'Existen modificadores de período diferentes'(e03).
ENDIF.

p_permo = t549a-permo.

ENDSELECT.

AT SELECTION-SCREEN ON p_perend.
IF NOT p_perend IS INITIAL.
IF p_perbeg > p_perend.
MESSAGE e016(rp)
WITH 'Periodo Final debé ser mayor al inicial'(e04).
ENDIF.
ENDIF.

AT SELECTION-SCREEN ON p_perbeg.
IF p_perend IS INITIAL.
p_perend = p_perbeg.
ENDIF.

AT SELECTION-SCREEN ON BLOCK pernom.
"Asignamos la fechas de inicio y fin de periodos
SELECT SINGLE begda INTO pnpbegda
FROM t549q
WHERE permo EQ p_permo AND
pabrj EQ p_perbeg(4) AND
pabrp EQ p_perbeg+4(2).

SELECT SINGLE endda INTO pnpendda
FROM t549q
WHERE permo EQ p_permo AND
pabrj EQ p_perend(4) AND
pabrp EQ p_perend+4(2).

** Obtencion de periodos de acuerdo a los parametros de entrada
* SELECT * FROM t54c1
* INTO CORRESPONDING FIELDS OF TABLE it_periodos
* WHERE permo = p_permo AND
* pabrj EQ p_perbeg(4) AND
* cumty = 'M'.
* break scervantes.

p_pabrj = pnpbegda(4).
p_cumno = pnpendda+4(2).

*======================================================================*
* S T A R T - O F - S E L E C T I O N E V E N T *
*======================================================================*
START-OF-SELECTION.


GET pernr.
REFRESH: i_rgdir.
CLEAR: it_datos.

CALL FUNCTION 'CU_READ_RGDIR'
EXPORTING
persnr = pernr-pernr
IMPORTING
molga = country
TABLES
in_rgdir = i_rgdir
EXCEPTIONS
no_record_found = 1
OTHERS = 2.

IF sy-subrc = 1. "De FUNCTION 'CU_READ_RGDIR'
ELSE. "de sy-subrc = 1. FUNCTION 'CU_READ_RGDIR'



*/----------obtención de cluster de nómina

LOOP AT i_rgdir WHERE srtza = 'A' "Indicador de actualidad de registro
AND fpbeg <= pn-endda "Final del período de nómina (Período para)
AND fpend >= pn-begda "Incio del período de nómina (Período para)
AND fpper <> '000000'. "Período para de la nómina


rx-key-pernr = pernr-pernr.
rx-key-seqno = i_rgdir-seqnr.
rp-imp-c2-rx. " Para Nomina Internacional

PERFORM data_retrieval.
ENDLOOP. "de i_rgdir
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv_report.

ENDIF. "de sy-subrc = 1. FUNCTION 'CU_READ_RGDIR'.


*======================================================================*
* E N D - O F - S E L E C T I O N E V E N T *
*======================================================================*




*======================================================================*
* T O P - O F - P A G E E V E N T *
*======================================================================*
TOP-OF-PAGE.

*======================================================================*
* A T L I N E - S E L E C T I O N E V E N T *
*======================================================================*
AT LINE-SELECTION.

*======================================================================*
* A T U S E R - C O M M A N D E V E N T *
*======================================================================*
*&---------------------------------------------------------------------*
*& Form data_retrieval
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*

FORM data_retrieval.

CLEAR p0185.
READ TABLE p0185 WITH KEY pernr = pernr-pernr subty = 'H2'.
CHECK p0185-pernr = pernr-pernr AND p0185-subty = 'H2'.

it_datos-pernr = p0185-pernr.
it_datos-icnum = p0185-icnum.

READ TABLE p0002 WITH KEY pernr = it_datos-pernr.
it_datos-vorna = p0002-vorna.
it_datos-nachn = p0002-nachn.
it_datos-nach2 = p0002-nach2.
* Asigna valor coonstante a No. Patronal.
it_datos-patro = '201970321 1'.

CLEAR : it_datos-aem,it_datos-apm.

LOOP AT rt.
* Asigna valores para las Aportaciones.
IF rt-lgart = '2H02' . "aportaciones mensuales
it_datos-aem = it_datos-aem + rt-betrg.
ENDIF.
IF rt-lgart = '3H02' . "aportaciones mensuales
it_datos-apm = it_datos-apm + rt-betrg.
ENDIF.

ENDLOOP. " endloop de rt

* Obtencion del texto del mes y el año de acuerdo a los parametros
* de entrada que seran utilizados en el campo mes de aportacion

SELECT SINGLE monam INTO v_mes
FROM t015m
WHERE monum = p_cumno AND
spras = 'S'.
v_ano = p_pabrj.

CONCATENATE v_mes '-' v_ano+2(2) INTO m_apor.

it_datos-monam = m_apor.

APPEND it_datos.


ENDFORM. " DATA_RETRIEVAL


*&---------------------------------------------------------------------*
*& Form build_fieldcatalog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fieldcatalog .
wa_fieldcat-fieldname = 'PERNR'.
wa_fieldcat-scrtext_m = 'No.Empleado'.
wa_fieldcat-col_pos = 0.
wa_fieldcat-outputlen = 8.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'ICNUM'.
wa_fieldcat-scrtext_m = 'No. de Identidad'.
wa_fieldcat-col_pos = 1.
wa_fieldcat-outputlen = 14.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'VORNA'.
wa_fieldcat-scrtext_m = 'Nombre(s)'.
wa_fieldcat-col_pos = 2.
wa_fieldcat-outputlen = 20.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'NACHN'.
wa_fieldcat-scrtext_m = 'Apellido Paterno'.
wa_fieldcat-col_pos = 3.
wa_fieldcat-outputlen = 20.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'NACH2'.
wa_fieldcat-scrtext_m = 'Apellido Materno'.
wa_fieldcat-col_pos = 4.
wa_fieldcat-outputlen = 20.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'PATRO'.
wa_fieldcat-scrtext_m = 'No.patronal'.
wa_fieldcat-col_pos = 5.
wa_fieldcat-outputlen = 11.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'AEM'.
wa_fieldcat-scrtext_m = 'Ap.Empleado Mensual'.
wa_fieldcat-col_pos = 6.
wa_fieldcat-outputlen = 20.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'APM'.
wa_fieldcat-scrtext_m = 'Ap.Patrono.Mensual'.
wa_fieldcat-col_pos = 7.
wa_fieldcat-outputlen = 20.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'MONAM'.
wa_fieldcat-scrtext_m = 'Mes de la Aportacion'.
wa_fieldcat-col_pos = 8.
wa_fieldcat-outputlen = 17.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.


ENDFORM. " BUILD_FIELDCATALOG

*&---------------------------------------------------------------------*
*& Form build_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
**----------------------------------------------------------------------*
FORM build_layout .

* Set layout field for field attributes(i.e. input/output)
gd_layout-stylefname = 'FIELD_STYLE'.
gd_layout-zebra = 'X'.
ENDFORM. " BUILD_LAYOUT
*
*&---------------------------------------------------------------------*
*& Form display_alv_report
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_alv_report .

gd_repid = sy-repid.

* call function 'REUSE_ALV_GRID_DISPLAY'
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = 'ZNOM_REP_FOSOVI_HON'
* i_callback_user_command = 'USER COMMAND '
is_layout_lvc = gd_layout
it_fieldcat_lvc = it_fieldcat
* i_save = 'X'
TABLES
t_outtab = it_datos
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.

ENDIF.

si alguien pudiera ayudarme.
Responder Con Cita
  #2  
Viejo 01/08/07, 10:51:48
Avatar de nenuke
nenuke nenuke is offline
Member
 
Fecha de Ingreso: sep 2006
Localización: Madrid
Mensajes: 87
No entiendo bien tu problema.... si pulsas exit, back o cancelar, por qué te preocupa que se duplique la cabecera?
De todas formas tu problema se debe a que debes refrescar el ALV despues de cada selección o modificación en los datos.


Responder Con Cita
  #3  
Viejo 02/08/07, 14:17:27
dfma59 dfma59 is offline
Junior Member
 
Fecha de Ingreso: nov 2006
Mensajes: 19
Gracias.


Gracias, el problema fue resuelto
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 23:54:25.


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