Está en la página 1de 18

*&---------------------------------------------------------------------*

*& Report  ZPRUEBA_VIATICOS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZPRUEBA_VIATICOS.

INCLUDE ZPRUEBA_VIATICOS_TOP.
INCLUDE ZPRUEBA_VIATICOS_F01.
*&---------------------------------------------------------------------*
*&  Include           ZPRUEBA_VIATICOS_TOP
*&---------------------------------------------------------------------*

*TABLAS A OCUPAR
TABLES: KNA1,
        BKPF.

*VARIABLES PARA EL INDICE (POSICION)
DATA: vl_index   TYPE sy-tabix,
      vl_indloop TYPE sy-tabix.

*PARAMETROS SELECCIÓN DE ENTRADA
SELECTION-SCREEN: BEGIN OF BLOCK BLK1 WITH FRAME TITLE AAA.
  SELECT-OPTIONS: P_NUMEMP FOR KNA1-KUNNR OBLIGATORY,
                  P_FCHDOC FOR BKPF-BLDAT,
                  P_FCHCON FOR BKPF-BUDAT,
*                  P_CLASE  FOR BKPF-BLART,
                  P_PERIO  FOR BKPF-MONAT,
                  P_SOC    FOR BKPF-BUKRS,
*                  P_MONEDA FOR BKPF-WAERS,
                  P_REF    FOR BKPF-XBLNR,
                  P_TXTCAB FOR BKPF-BKTXT.
SELECTION-SCREEN: END OF BLOCK BLK1.

*Tbl para cambiar los parametros de entrada
DATA: RG_NUMEMP TYPE RANGE OF ABRGRDHZ." LENGTH 6.
DATA: WA_NUMEMP LIKE LINE OF RG_NUMEMP.

*Tabla
TYPES: BEGIN OF ty_entrada,
       EN_NUMEMP TYPE c LENGTH 6,
END OF ty_entrada.

DATA: it_entrada TYPE STANDARD TABLE OF ty_entrada,
      wa_entrada LIKE LINE OF it_entrada.

*Estructura, tabla interna y wa de tabla de usuarios de viaticos
TYPES: BEGIN OF ty_catusuarios,
       id_usuario TYPE c LENGTH 5,
       nombre     TYPE c LENGTH 45,
       usuario    TYPE c LENGTH 15,
       password   TYPE c LENGTH 80,
       area       TYPE c LENGTH 35,
       puesto     TYPE c LENGTH 35,
       correo     TYPE c LENGTH 30,
       fecha_reg  TYPE c LENGTH 25,
       estatus    TYPE c LENGTH 15,
       tipo_usu   TYPE c LENGTH 15,
       num_emple  TYPE c LENGTH 10,
END OF ty_catusuarios.

TYPES: BEGIN OF ty_catusuarios_2,
       id_usuario TYPE c LENGTH 5,
       nombre     TYPE c LENGTH 45,
       num_emple  TYPE c LENGTH 6,
END OF ty_catusuarios_2.

DATA: it_catusuarios TYPE STANDARD TABLE OF ty_catusuarios,
      wa_catusuarios LIKE LINE OF it_catusuarios.

DATA: it_catusuarios_2 TYPE STANDARD TABLE OF ty_catusuarios_2, "se hace 
copia ya con el num de cliente
      wa_catusuarios_2 LIKE LINE OF it_catusuarios_2.           "se hace 
copia ya con el num de cliente

*Estructura, tabla interna y wa de tabla viaticos-cabecera de viaticos
TYPES: BEGIN OF ty_viaticos,
       id_folio   TYPE c LENGTH 5,
       id_usuario TYPE c LENGTH 5,
       id_ciclo   TYPE c LENGTH 15,
       fecha_reg  TYPE c LENGTH 25,
END OF ty_viaticos.

TYPES: BEGIN OF ty_viaticos_2,
       id_folio   TYPE c LENGTH 5,
       id_usuario TYPE c LENGTH 5,
END OF ty_viaticos_2.

DATA: it_viaticos TYPE STANDARD TABLE OF ty_viaticos,
      wa_viaticos LIKE LINE OF it_viaticos.

DATA: it_viaticos_2 TYPE STANDARD TABLE OF ty_viaticos_2, "se hace copia 
ya con el num de cliente
      wa_viaticos_2 LIKE LINE OF it_viaticos_2.           "se hace copia 
ya con el num de cliente

*Estructura, tabla interna y wa de tabla viaticos-detalle de viaticos
TYPES: BEGIN OF ty_viaticosdetalle,
       id_foliodet  TYPE c LENGTH 15,
       id_folio     TYPE c LENGTH 5,
       id_cuexml    TYPE c LENGTH 15,
       id_centro    TYPE c LENGTH 15,
       id_cuenta    TYPE c LENGTH 15,
       id_monto     TYPE p LENGTH 8 DECIMALS 2,
       id_tasacuota TYPE p LENGTH 8 DECIMALS 2,
       id_subtotal  TYPE p LENGTH 8 DECIMALS 2,
       id_iva       TYPE p LENGTH 8 DECIMALS 2,
       id_total     TYPE p LENGTH 8 DECIMALS 2,
       id_estatus   TYPE c LENGTH 15,
END OF ty_viaticosdetalle.

TYPES: BEGIN OF ty_viaticosdetalle_2,
       id_foliodet  TYPE c LENGTH 15,
       id_folio     TYPE c LENGTH 5,
       id_cuexml    TYPE c LENGTH 15,
       id_centro    TYPE c LENGTH 15,
       id_cuenta    TYPE c LENGTH 15,
       id_monto     TYPE p LENGTH 8 DECIMALS 2,
       id_tasacuota TYPE p LENGTH 8 DECIMALS 2,
       id_subtotal  TYPE p LENGTH 8 DECIMALS 2,
       id_iva       TYPE p LENGTH 8 DECIMALS 2,
       id_total     TYPE p LENGTH 8 DECIMALS 2,
       id_estatus   TYPE c LENGTH 15,
END OF ty_viaticosdetalle_2.

DATA: it_viaticosdetalle type STANDARD TABLE OF ty_viaticosdetalle,
      wa_viaticosdetalle like line of it_viaticosdetalle.

DATA: it_viaticosdetalle_2 type STANDARD TABLE OF ty_viaticosdetalle_2, "
se hace copia ya con el num de cliente
      wa_viaticosdetalle_2 like line of it_viaticosdetalle_2.           "
se hace copia ya con el num de cliente

*Estructura, tabla interna y wa de la tabla de los datos que se requieren 
F-02
TYPES: BEGIN OF ty_datos,
       COL_IDEMP    TYPE p LENGTH 3,
       COL_IDUSU    TYPE c LENGTH 5,
       COL_IDFOL    TYPE c LENGTH 5,
       COL_NUMEMP   TYPE c LENGTH 6,
       COL_NOMB     TYPE c LENGTH 45,
       COL_IMPORT   TYPE P LENGTH 15 DECIMALS 2,
       COL_IMP_BAS  TYPE p LENGTH 15 DECIMALS 2,
       COL_SUBTOTAL TYPE p LENGTH 15 DECIMALS 2,
       COL_TCUOTA   TYPE p LENGTH 3 DECIMALS 2,
       COL_IVA      TYPE p LENGTH 10 DECIMALS 2,
       COL_MON      TYPE c LENGTH 7,
       COL_CME_GAST TYPE c LENGTH 25,
       COL_CME_COMP TYPE c LENGTH 25,
       COL_CLASE    TYPE c LENGTH 5,
       COL_VENCE    TYPE c LENGTH 25,
       COL_INDIMP   TYPE c LENGTH 25,
       COL_CCOSTE   TYPE c LENGTH 15,
       COL_ASIG     TYPE c LENGTH 25,
       COL_TXT      TYPE c LENGTH 25,
*       COL_MON     TYPE BKPF-WAERS,
*       COL_REF     TYPE BKPF-XBLNR,
*       COL_TXTCAB  TYPE BKPF-BKTXT,
END OF ty_datos.

DATA: it_datos TYPE STANDARD TABLE OF ty_datos,
      wa_datos LIKE LINE OF it_datos.

*******************DATOS PARA ALV*********************
*Type Pool donde vienen definidas todas las estructuras y tablas
TYPE-POOLS: slis.
*Deaclaración para ALV
data: fieldcatalog type slis_t_fieldcat_alv with header line,
      gd_tab_group type slis_t_sp_group_alv,
      gd_layout    type slis_layout_alv,
      IT_TOPHEADER TYPE SLIS_T_LISTHEADER,
      WA_TOP       LIKE LINE OF IT_TOPHEADER,
      WA_TOP2      LIKE LINE OF IT_TOPHEADER,
      WA_TOP3      LIKE LINE OF IT_TOPHEADER,
      WA_TOP4      LIKE LINE OF IT_TOPHEADER,
      WA_TOP5      LIKE LINE OF IT_TOPHEADER,
      WA_TOP6      LIKE LINE OF IT_TOPHEADER,
      WA_TOP7      LIKE LINE OF IT_TOPHEADER,
      gd_repid     like sy-repid,
*      it_sort      TYPE slis_t_sortinfo_alv,     "Se agrego para totales 
y subtotales
*      wa_sort      TYPE slis_sortinfo_alv.       "Se agrego para totales 
y subtotales
*******************DATOS PARA ALV*********************

*Nombre del cuadro de los parametros de entrada
INITIALIZATION.
      AAA  = 'Selección'.

*Condicion para pasar al alv
START-OF-SELECTION.
      IF P_NUMEMP[] IS NOT INITIAL.
*Pasar num de empleado a la tabla del tamaño adecuado
              LOOP AT P_NUMEMP.
                  WA_NUMEMP-SIGN = P_NUMEMP-SIGN.
                  WA_NUMEMP-OPTION = P_NUMEMP-OPTION.
                  WA_NUMEMP-LOW = P_NUMEMP-LOW+4(6).
                  WA_NUMEMP-HIGH = P_NUMEMP-HIGH+4(6).
                  APPEND WA_NUMEMP TO RG_NUMEMP.
              ENDLOOP.
         PERFORM f1000_consulta.
      ENDIF.
*&---------------------------------------------------------------------*
*&  Include           ZPRUEBA_VIATICOS_F01
*&---------------------------------------------------------------------*

PERFORM alv_grid.
PERFORM build_layout.
PERFORM display_alv_report.

*Cabecera de ALV
FORM top_of_page.
  REFRESH it_topheader.
* Título del reporte
  MOVE: 'H'      TO wa_top-typ,
        'Tabla Carga de gastos' TO wa_top-info.
  APPEND wa_top  TO it_topheader.

  MOVE: 'S'             TO wa_top-typ,
        p_numemp-low    TO wa_top-info,
        'Cliente:'      TO wa_top-key,
        'S'             TO wa_top2-typ,
        p_fchdoc-low    TO wa_top2-info,
        'Fecha doc:'    TO wa_top2-key,
        'S'             TO wa_top3-typ,
        p_fchcon-low    TO wa_top3-info,
        'Fecha contab:' TO wa_top3-key,
        'S'             TO wa_top4-typ,
        p_perio-low     TO wa_top4-info,
        'Periodo:'      TO wa_top4-key,
         'S'            TO wa_top5-typ,
        p_soc-low       TO wa_top5-info,
        'Sociedad:'     TO wa_top5-key,
        'S'             TO wa_top6-typ,
        p_ref-low       TO wa_top6-info,
        'Referencia:'   TO wa_top6-key,
        'S'             TO wa_top7-typ,
        p_txtcab-low    TO wa_top7-info,
        'Texto cab:'    TO wa_top7-key.
     APPEND wa_top      TO it_topheader.
     APPEND wa_top2     TO it_topheader.
     APPEND wa_top3     TO it_topheader.
     APPEND wa_top4     TO it_topheader.
     APPEND wa_top5     TO it_topheader.
     APPEND wa_top6     TO it_topheader.
     APPEND wa_top7     TO it_topheader.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = it_topheader
      i_logo             = 'ZLOGO_LGT256'.
ENDFORM.

FORM f_conexion.
*Conexion BD VIATICOS
*******Traer datos de la base de datos de viaticos****************
*BREAK ajimenez-ext.
  EXEC SQL.
     CONNECT TO 'SILANES_VIATICOS'
  ENDEXEC.

  EXEC SQL.
           open e for
       SELECT *
       FROM dbo.Cat_Usuarios
*       WHERE NumEmp IN RG_NUMEMP
*       WHERE Empleado EQ VAR_EMP
*       INTO WA_Viaticos
*       WHERE Id_Comprobante = 16
*       "CAST( fecha_registro AS DATE) BETWEEN :p_date1 and :p_date2

  ENDEXEC.

    DO.
    EXEC SQL.
      FETCH NEXT e INTO :WA_CATUSUARIOS
    ENDEXEC.
    IF sy-subrc NE 0.
      EXIT.
    ELSE.
      APPEND wa_catusuarios TO it_catusuarios.
    ENDIF.
  ENDDO.

  EXEC SQL.
    CLOSE e
  ENDEXEC.
  EXEC SQL.
    DISCONNECT :'SILANES_VIATICOS'
  ENDEXEC.
******************************************************************
*BREAK AJIMENEZ-EXT.
************************DELIMITAR USUARIOS SELECCIONADOS*****************
*******
      LOOP AT IT_CATUSUARIOS INTO WA_CATUSUARIOS WHERE NUM_EMPLE IN RG_NU
MEMP.
            IF SY-SUBRC = 0.
              WA_CATUSUARIOS_2-ID_USUARIO = WA_CATUSUARIOS-ID_USUARIO.
              WA_CATUSUARIOS_2-NOMBRE     = WA_CATUSUARIOS-NOMBRE.
              WA_CATUSUARIOS_2-NUM_EMPLE  = WA_CATUSUARIOS-NUM_EMPLE.
              APPEND WA_CATUSUARIOS_2 TO IT_CATUSUARIOS_2.
            ENDIF.
      ENDLOOP.
************************DELIMITAR USUARIOS SELECCIONADOS*****************
*******
*BREAK AJIMENEZ-EXT.
******************************************************************
  EXEC SQL.
     CONNECT TO 'SILANES_VIATICOS'
  ENDEXEC.

  EXEC SQL.
           open c for
       SELECT *
       FROM dbo.Viaticos
*           FOR ALL ENTRIES IT_CATUSUARIOS_2
*       WHERE IdUsuario = IT_CATUSUARIOS_2-id_usuario
  ENDEXEC.

    DO.
    EXEC SQL.
      FETCH NEXT c INTO :WA_VIATICOS
    ENDEXEC.
    IF sy-subrc NE 0.
      EXIT.
    ELSE.
      APPEND wa_viaticos TO it_viaticos.
    ENDIF.
  ENDDO.

  EXEC SQL.
    CLOSE c
  ENDEXEC.

  EXEC SQL.
    DISCONNECT :'SILANES_VIATICOS'
  ENDEXEC.

************************DELIMITAR VIATICOS DE USUARIOS SELECCIONADOS*****
*******************
      LOOP AT IT_CATUSUARIOS_2 INTO WA_CATUSUARIOS_2.
           READ TABLE IT_VIATICOS INTO WA_VIATICOS
           WITH KEY ID_USUARIO = WA_CATUSUARIOS_2-ID_USUARIO
           BINARY SEARCH.
*           IF SY-SUBRC <> 0.
           IF SY-SUBRC = 0.
              WA_VIATICOS_2-ID_FOLIO   = WA_VIATICOS-ID_FOLIO.
              WA_VIATICOS_2-ID_USUARIO = WA_VIATICOS-ID_USUARIO.
              APPEND WA_VIATICOS_2 TO IT_VIATICOS_2.
           ENDIF.
      ENDLOOP.
************************DELIMITAR VIATICOS DE USUARIOS SELECCIONADOS*****
*******************

******************************************************************
  EXEC SQL.
    CONNECT TO 'SILANES_VIATICOS'
  ENDEXEC.

  EXEC SQL.
    open d for
       SELECT *
       FROM dbo.ViaticosDetalle
  ENDEXEC.

  DO.
    EXEC SQL.
      FETCH NEXT d INTO :WA_VIATICOSDETALLE
    ENDEXEC.
    IF sy-subrc NE 0.
      EXIT.
    ELSE.
      APPEND wa_viaticosdetalle TO it_viaticosdetalle.
    ENDIF.
  ENDDO.

  EXEC SQL.
    CLOSE d
  ENDEXEC.

  EXEC SQL.
    DISCONNECT :'SILANES_VIATICOS'
  ENDEXEC.
******************************************************************
*BREAK AJIMENEZ-EXT.
************************DELIMITAR VIATICOSDETALLE DE USUARIOS SELECCIONAD
OS************************
      LOOP AT IT_VIATICOSDETALLE INTO WA_VIATICOSDETALLE.
           READ TABLE IT_VIATICOS_2 INTO WA_VIATICOS_2
           WITH KEY ID_FOLIO = WA_VIATICOSDETALLE-ID_FOLIO
           BINARY SEARCH.
*           IF SY-SUBRC <> 0.
           IF SY-SUBRC = 0.
                 WA_VIATICOSDETALLE_2-ID_FOLIODET  = WA_VIATICOSDETALLE-
ID_FOLIODET.
                 WA_VIATICOSDETALLE_2-ID_FOLIO     = WA_VIATICOSDETALLE-
ID_FOLIO.
                 WA_VIATICOSDETALLE_2-ID_CUEXML    = WA_VIATICOSDETALLE-
ID_CUEXML.
                 WA_VIATICOSDETALLE_2-ID_CENTRO    = WA_VIATICOSDETALLE-
ID_CENTRO.
                 WA_VIATICOSDETALLE_2-ID_CUENTA    = WA_VIATICOSDETALLE-
ID_CUENTA.
                 WA_VIATICOSDETALLE_2-ID_MONTO     = WA_VIATICOSDETALLE-
ID_MONTO.
                 WA_VIATICOSDETALLE_2-ID_TASACUOTA = WA_VIATICOSDETALLE-
ID_TASACUOTA.
                 WA_VIATICOSDETALLE_2-ID_SUBTOTAL  = WA_VIATICOSDETALLE-
ID_SUBTOTAL.
                 WA_VIATICOSDETALLE_2-ID_IVA       = WA_VIATICOSDETALLE-
ID_IVA.
                 WA_VIATICOSDETALLE_2-ID_TOTAL     = WA_VIATICOSDETALLE-
ID_TOTAL.
                 WA_VIATICOSDETALLE_2-ID_ESTATUS   = WA_VIATICOSDETALLE-
ID_ESTATUS.
              APPEND WA_VIATICOSDETALLE_2 TO IT_VIATICOSDETALLE_2.
           ENDIF.
      ENDLOOP.
************************DELIMITAR VIATICOSDETALLE DE USUARIOS SELECCIONAD
OS************************
*BREAK AJIMENEZ-EXT.
*******Traer datos de la base de datos de viaticos****************
ENDFORM.

FORM f1000_consulta.
PERFORM f_conexion.
*BREAK AJIMENEZ-EXT.
*******PONER 0 A NUM EMPLEADO**********
LOOP AT IT_CATUSUARIOS INTO WA_CATUSUARIOS.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input         = WA_CATUSUARIOS-NUM_EMPLE
   IMPORTING
     OUTPUT         = WA_CATUSUARIOS-NUM_EMPLE.
   MODIFY IT_CATUSUARIOS FROM WA_CATUSUARIOS.
ENDLOOP.
******PONER 0 A NUM EMPLEADO**********
*BREAK AJIMENEZ-EXT.
******************Se trae los clientes seleccionados*****************
LOOP AT IT_CATUSUARIOS INTO WA_CATUSUARIOS
*     READ TABLE IT_CATUSUARIOS INTO WA_CATUSUARIOS
     WHERE NUM_EMPLE IN P_NUMEMP.
     IF SY-SUBRC = 0.
        WA_DATOS-COL_NUMEMP = WA_CATUSUARIOS-NUM_EMPLE+4(6).
        WA_DATOS-COL_NOMB   = WA_CATUSUARIOS-NOMBRE.
        WA_DATOS-COL_IDUSU  = WA_CATUSUARIOS-ID_USUARIO.
        APPEND WA_DATOS TO IT_DATOS.
     ENDIF.
ENDLOOP.
******************Se trae los clientes seleccionados*****************
*BREAK AJIMENEZ-EXT.
***************************Ingresar el Id folio a la tbl Datos***********
****************
*      LOOP AT IT_VIATICOS_2 INTO WA_VIATICOS_2.
      LOOP AT IT_VIATICOS INTO WA_VIATICOS.
           READ TABLE IT_DATOS INTO WA_DATOS
*           WITH KEY COL_IDUSU = WA_VIATICOS_2-ID_USUARIO
           WITH KEY COL_IDUSU = WA_VIATICOS-ID_USUARIO
           BINARY SEARCH.
           IF SY-SUBRC = 0.
              WA_DATOS-COL_IDFOL   = WA_VIATICOS-ID_FOLIO.
              APPEND WA_DATOS TO IT_DATOS.
           ENDIF.
      ENDLOOP.
***************************Ingresar el Id folio a la tbl Datos***********
****************
*BREAK AJIMENEZ-EXT.
***************************Ingresar columnas del detalle a la tbl Datos**
*************************
*      LOOP AT IT_VIATICOSDETALLE_2 INTO WA_VIATICOSDETALLE_2.
      LOOP AT IT_VIATICOSDETALLE INTO WA_VIATICOSDETALLE.
           READ TABLE IT_DATOS INTO WA_DATOS
*           WITH KEY COL_IDFOL = WA_VIATICOSDETALLE_2-ID_FOLIO
           WITH KEY COL_IDFOL = WA_VIATICOSDETALLE-ID_FOLIO
           BINARY SEARCH.
*           IF SY-SUBRC <> 0.
           IF SY-SUBRC = 0.
*              WA_DATOS-COL_CCOSTE   = WA_VIATICOSDETALLE_2-ID_CENTRO.
*              WA_DATOS-COL_TCUOTA   = WA_VIATICOSDETALLE_2-ID_TASACUOTA.
*              WA_DATOS-COL_IVA      = WA_VIATICOSDETALLE_2-ID_IVA.
*              WA_DATOS-COL_SUBTOTAL = WA_VIATICOSDETALLE_2-ID_SUBTOTAL.
*              WA_DATOS-COL_IMP_BAS  = WA_VIATICOSDETALLE_2-ID_TOTAL.
*              WA_DATOS-COL_IMPORT   = WA_VIATICOSDETALLE_2-ID_MONTO.
              WA_DATOS-COL_CCOSTE   = WA_VIATICOSDETALLE-ID_CENTRO.
              WA_DATOS-COL_TCUOTA   = WA_VIATICOSDETALLE-ID_TASACUOTA.
              WA_DATOS-COL_IVA      = WA_VIATICOSDETALLE-ID_IVA.
              WA_DATOS-COL_SUBTOTAL = WA_VIATICOSDETALLE-ID_SUBTOTAL.
              WA_DATOS-COL_IMP_BAS  = WA_VIATICOSDETALLE-ID_TOTAL.
              WA_DATOS-COL_IMPORT   = WA_VIATICOSDETALLE-ID_MONTO.
              APPEND WA_DATOS TO IT_DATOS.
           ENDIF.
      ENDLOOP.
***************************Ingresar columnas del detalle a la tbl Datos**
*************************

**********ELIMINAR DATOS QUE NO TRAEN IMPORTE**********
DELETE IT_DATOS WHERE COL_IMPORT = 0.
**********ELIMINAR DATOS QUE NO TRAEN IMPORTE**********

*********Traer datos duros*********
*Contador para la posicion e iniciar en 1
define: increment.
  &1 = &1 + 1.
end-of-definition.
       vl_index = 1.
LOOP AT IT_DATOS INTO WA_DATOS.
       WA_DATOS-COL_IDEMP = vl_index.
       increment vl_index.
       WA_DATOS-COL_MON   = 'MXN'.
       WA_DATOS-COL_CLASE = 'SA'.
       WA_DATOS-COL_VENCE = SY-DATUM.

       IF WA_DATOS-COL_NUMEMP <> '21129311'.
              WA_DATOS-COL_CME_GAST = 'D'.
       ENDIF.

       IF WA_DATOS-COL_TCUOTA = '0'.
              WA_DATOS-COL_INDIMP = 'WE'.
              ELSEIF WA_DATOS-COL_TCUOTA <> '0'.
                 WA_DATOS-COL_INDIMP = 'W3'.
       ENDIF.

       MODIFY IT_DATOS FROM WA_DATOS.
ENDLOOP.
*********Traer datos duros*********

*******QUITAR 0 A NUM EMPLEADO REPORTE FINAL**********
LOOP AT IT_DATOS INTO WA_DATOS.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
      input         = WA_DATOS-COL_NUMEMP
   IMPORTING
     OUTPUT         = WA_DATOS-COL_NUMEMP.

   MODIFY IT_DATOS FROM WA_DATOS.
ENDLOOP.
******QUITAR 0 A NUM EMPLEADO REPORTE FINAL**********
*break ajimenez-ext.
*************************ORDENAR ALV*************************
*     SORT IT_DATOS BY COL_IDEMP ASCENDING.
*************************ORDENAR ALV*************************
ENDFORM.

*Catalogo
FORM alv_grid.

  fieldcatalog-fieldname   = 'COL_IDEMP'.
  fieldcatalog-seltext_m   = 'Posición'.
  fieldcatalog-col_pos     = 1.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_NUMEMP'.
  fieldcatalog-seltext_m   = 'Cuenta'.
*  fieldcatalog-tabname     = 'it_datos'.
  fieldcatalog-col_pos     = 2.
  fieldcatalog-outputlen   = '10'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_NOMB'.
  fieldcatalog-seltext_m   = 'Nombre'.
  fieldcatalog-col_pos     = 3.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_IMPORT'.
  fieldcatalog-seltext_m   = 'Importe Gastos'.
  fieldcatalog-col_pos     = 4.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  fieldcatalog-do_sum      = 'X'.               "SE AGREGA PARA OBTENER E
L TOTAL
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.
  fieldcatalog-fieldname   = 'COL_IMP_BAS'.
  fieldcatalog-seltext_m   = 'Importe Comprobación'.
  fieldcatalog-col_pos     = 5.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  fieldcatalog-do_sum      = 'X'.               "SE AGREGO PARA OBTENER E
L TOTAL
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_IMP_BAS'.
  fieldcatalog-seltext_m   = 'Importe Base'.
  fieldcatalog-col_pos     = 6.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_SUBTOTAL'.
  fieldcatalog-seltext_m   = 'Subtotal'.
  fieldcatalog-col_pos     = 7.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_IVA'.
  fieldcatalog-seltext_m   = 'IVA'.
  fieldcatalog-col_pos     = 8.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_TCUOTA'.
  fieldcatalog-seltext_m   = 'Porcentaje IVA'.
  fieldcatalog-col_pos     = 9.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_MON'.
  fieldcatalog-seltext_m   = 'Moneda'.
  fieldcatalog-col_pos     = 10.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_CME_GAST'.
  fieldcatalog-seltext_m   = 'CME Gastos'.
  fieldcatalog-col_pos     = 11.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_CME_COMP'.
  fieldcatalog-seltext_m   = 'CME Comprobación'.
  fieldcatalog-col_pos     = 12.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_CLASE'.
  fieldcatalog-seltext_m   = 'Clase'.
  fieldcatalog-col_pos     = 13.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_VENCE'.
  fieldcatalog-seltext_m   = 'Vence el'.
  fieldcatalog-col_pos     = 14.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_INDIMP'.
  fieldcatalog-seltext_m   = 'Indicador Imp.'.
  fieldcatalog-col_pos     = 15.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_CCOSTE'.
  fieldcatalog-seltext_m   = 'Centro Coste'.
  fieldcatalog-col_pos     = 16.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.
  fieldcatalog-fieldname   = 'COL_ASIG'.
  fieldcatalog-seltext_m   = 'Asignación'.
  fieldcatalog-col_pos     = 17.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_TXT'.
  fieldcatalog-seltext_m   = 'Texto'.
  fieldcatalog-col_pos     = 18.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

"Se agrego para los subtotales
*  wa_sort-spos             = 1.
*  wa_sort-fieldname        = 'COL_NUMEMP'.
*  wa_sort-up               = 'X'.
*  wa_sort-subtot           = 'X'.
*  append wa_sort TO it_sort.
ENDFORM.

*Estructura del diseño del grid
FORM build_layout.
  gd_layout-no_input            = 'X'.
  gd_layout-colwidth_optimize   = 'X'.
  gd_layout-confirmation_prompt = 'X'.
*  gd_layout-totals_text        = 'Totals'(201).
  gd_layout-header_text         = 'helllllo'.
ENDFORM.

*datos display
FORM display_alv_report.
    gd_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program     = gd_repid
      I_BUFFER_ACTIVE        = 'X'
      is_layout              = gd_layout
      i_callback_top_of_page = 'TOP_OF_PAGE'
      it_fieldcat            = fieldcatalog[]
      i_save                 = 'X'
*      no-zero                = 'X'
*      it_sort                = it_sort            "Se agrego para total 
y subtotales
    TABLES
      t_outtab               = it_datos
    EXCEPTIONS
      program_error          = 1
      others                 = 2.
  if sy-subrc <> 0.
  endif.
ENDFORM.

También podría gustarte