|
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
Gracias.
Gracias, el problema fue resuelto |
Herramientas | Buscar en Tema |
Desplegado | |
|
|