Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 35

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

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

REPORT ZPRUEBA_VIATICOS_VER4.

INCLUDE ZPRUEBA_VIATICOS_VER4_TOP.
INCLUDE ZPRUEBA_VIATICOS_VER4_F01.
*&---------------------------------------------------------------------*
*&  Include           ZPRUEBA_VIATICOS_TOP
*&---------------------------------------------------------------------*

TABLES: zviaticos_folio,
        bseg.
DATA: wa_bseg TYPE bseg.

DATA: fechamov TYPE string.

  DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
  DATA: it_msg  LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

*DATIOS PARA LAS OPERACIONES DE LA BAPI*
TYPES :
BEGIN OF ty_total,
  id_usuario TYPE c LENGTH 6,
  total TYPE p LENGTH 16 DECIMALS 2,
  END OF ty_total.

DATA:
      tg_total TYPE STANDARD TABLE OF ty_total,
      wa_total TYPE ty_total.
DATA: lv_lines TYPE i.
*DATIOS PARA LAS OPERACIONES DE LA BAPI*

*****************TABLAS SECUNDARIAS PARA OPERACIONES DE LA BAPI**********
*******
TYPES: BEGIN OF ty_accountgl_2,
       itemno_acc TYPE n LENGTH 10,
       gl_account TYPE c LENGTH 10,
       item_text  TYPE c LENGTH 50,
       alloc_nmbr TYPE c LENGTH 18,
       tax_code   TYPE c LENGTH 2,
       costcenter TYPE c LENGTH 10,
END OF ty_accountgl_2.

DATA: it_accountgl_2 TYPE STANDARD TABLE OF ty_accountgl_2,
      wa_accountgl_2 LIKE LINE OF it_accountgl_2.

TYPES: BEGIN OF ty_accountreceivable_2,
       itemno_acc TYPE n LENGTH 10,
       customer   TYPE c LENGTH 10,
       comp_code  TYPE c LENGTH 4,
       alloc_nmbr TYPE c LENGTH 18,
       item_text  TYPE c LENGTH 50,
END OF ty_accountreceivable_2.

DATA: it_accountreceivable_2 TYPE STANDARD TABLE OF ty_accountreceivable_
2,
      wa_accountreceivable_2 LIKE LINE OF it_accountreceivable_2.

TYPES: BEGIN OF ty_accounttax_2,
       itemno_acc TYPE c LENGTH 10,
       gl_account TYPE c LENGTH 10,
       tax_code   TYPE c LENGTH 2,
END OF ty_accounttax_2.

DATA: it_accounttax_2 TYPE STANDARD TABLE OF ty_accounttax_2,
      wa_accounttax_2 LIKE LINE OF it_accounttax_2.

TYPES: BEGIN OF ty_currencyamount_2,
       itemno_acc TYPE n LENGTH 10,
       curr_type  TYPE c LENGTH 2,
       currency   TYPE c LENGTH 5,
       amt_doccur TYPE p LENGTH 12 DECIMALS 4,
       amt_base   TYPE p LENGTH 12 DECIMALS 4,
END OF ty_currencyamount_2.

DATA: it_currencyamount_2 TYPE STANDARD TABLE OF ty_currencyamount_2,
      wa_currencyamount_2 LIKE LINE OF it_currencyamount_2.

TYPES: BEGIN OF ty_all_bapi,
*      it_accountgl
       itemno_acc     TYPE n LENGTH 10,
       gl_account     TYPE c LENGTH 10,
       item_text      TYPE c LENGTH 50,
       alloc_nmbr     TYPE c LENGTH 18,
       tax_code       TYPE c LENGTH 2,
       costcenter     TYPE c LENGTH 10,
*      it_accountreceivable
       customer       TYPE c LENGTH 10,
       comp_code      TYPE c LENGTH 4,
*      it_accounttax
       gl_account_iva TYPE c LENGTH 10,
       tax_code_iva   TYPE c LENGTH 2,
*      it_currencyamount
       curr_type      TYPE c LENGTH 2,
       currency       TYPE c LENGTH 5,
       amt_doccur     TYPE p LENGTH 12 DECIMALS 4,
       amt_base       TYPE p LENGTH 12 DECIMALS 4,
END OF ty_all_bapi.

DATA: it_all_bapi TYPE STANDARD TABLE OF ty_all_bapi,
      wa_all_bapi LIKE LINE OF it_all_bapi.
*****************TABLAS SECUNDARIAS PARA OPERACIONES DE LA BAPI**********
*******

*TABLAS A OCUPAR
TABLES: kna1,
        bsad,
        bkpf.

*******variables para hacer la relación con la bapi*******
DATA: vl_num_emp  TYPE c LENGTH 6,"10,
      vl_total    TYPE p LENGTH 16 DECIMALS 2,
      vl_total_2  TYPE p LENGTH 16 DECIMALS 2,
      vl_folioxml TYPE p LENGTH 16.
*******variables para hacer la relación con la bapi*******

*VARIABLES PARA EL INDICE (POSICION)
DATA: vl_index    TYPE sy-tabix,
      vl_indloop  TYPE sy-tabix,
      vl_contador TYPE n LENGTH 5,
      vl_indimp   TYPE c LENGTH 2,
      vl_nombemp  TYPE p LENGTH 10,
      vl_nombre   TYPE c LENGTH 40,
      vl_folio    TYPE c LENGTH 9.

*Variables de referencia y texto para cabecera
DATA: p_ref TYPE c LENGTH 200,
      p_txtcab TYPE c LENGTH 200.

*PARAMETROS SELECCIÓN DE ENTRADA
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE aaa.
SELECT-OPTIONS: p_numemp FOR kna1-kunnr OBLIGATORY,"DEFAULT '*' OBLIGATOR
Y,
                p_fchdoc FOR bkpf-bldat DEFAULT sy-datum,
                p_fchcon FOR bkpf-budat DEFAULT sy-datum,
*                  P_CLASE  FOR BKPF-BLART,
                p_perio  FOR bkpf-monat DEFAULT sy-datum+4(2),
                p_soc    FOR bkpf-bukrs DEFAULT '7000'.
*                  P_MONEDA FOR BKPF-WAERS,
*                p_ref    FOR bkpf-xblnr DEFAULT 'TC MAYO',
*                p_txtcab FOR bsad-sgtxt DEFAULT 'EDO DE CTA BANAMEX 30 M
AYO 19'.", ls_mes. "BKPF-BKTXT
*  PARAMETERS:     P_SOC  TYPE BKPF-BUKRS DEFAULT '7000'.
SELECTION-SCREEN: END OF BLOCK blk1.

*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_vwviaticos,
       idciclo   TYPE p LENGTH 5,
       nomciclo  TYPE c LENGTH 10,
       numemp    TYPE c LENGTH 10,
       nombre    TYPE c LENGTH 80,
       centro    TYPE c LENGTH 15,
       cuenta    TYPE c LENGTH 35,
       expr1     TYPE c LENGTH 30,
       monto     TYPE p LENGTH 16 DECIMALS 2,
       tcuota    TYPE p LENGTH 8 DECIMALS 2,
       subtotal  TYPE p LENGTH 16 DECIMALS 2,
       iva       TYPE p LENGTH 10 DECIMALS 2,
       total     TYPE p LENGTH 16 DECIMALS 2,
       propina   TYPE p LENGTH 10 DECIMALS 2,
       estatus   TYPE p LENGTH 5,
       descuenta TYPE c LENGTH 25,
       detalle   TYPE c LENGTH 45,
       ctamayor  TYPE c LENGTH 10,
       imphosp   TYPE p LENGTH 16 DECIMALS 2,
       lugarexp  TYPE c LENGTH 5,
       cvexml    TYPE p LENGTH 16,
       rfc       TYPE c LENGTH 13,
       razonsoc  TYPE c LENGTH 250,
       idfolio   TYPE c LENGTH 6,
       idfoliodetalle  TYPE c LENGTH 6,
       idusuario TYPE c LENGTH 6,
       conded    TYPE p LENGTH 16 DECIMALS 2,
       connoded  TYPE p LENGTH 16 DECIMALS 2,
       ivaded    TYPE p LENGTH 16 DECIMALS 2,
       ivanoded  TYPE p LENGTH 16 DECIMALS 2,
END OF ty_vwviaticos.

DATA: it_vwviaticos TYPE STANDARD TABLE OF ty_vwviaticos,
      wa_vwviaticos LIKE LINE OF it_vwviaticos.

*Estructura, tabla interna y wa de tablaque se mostrara en el alv, se cop
ia igual que los usuarios
TYPES: BEGIN OF ty_datos,
       checkbox      TYPE c,
       col_posicion  TYPE p LENGTH 3,
       col_idciclo   TYPE p LENGTH 5,
       col_nomciclo  TYPE c LENGTH 10,
       col_numemp    TYPE c LENGTH 6,
       col_nombre    TYPE c LENGTH 80,
       col_centro    TYPE c LENGTH 15,
       col_cuenta    TYPE c LENGTH 35,
       col_expr1     TYPE c LENGTH 30,
       col_clase     TYPE c LENGTH 3,
       col_monto     TYPE p LENGTH 16 DECIMALS 2,
       col_tcuota    TYPE p LENGTH 8 DECIMALS 2,
       col_subtotal  TYPE p LENGTH 16 DECIMALS 2,
       col_iva       TYPE p LENGTH 10 DECIMALS 2,
       col_total     TYPE p LENGTH 16 DECIMALS 2,
       col_propina   TYPE p LENGTH 10 DECIMALS 2,
       col_moneda    TYPE c LENGTH 5,
       col_indimp    TYPE c LENGTH 5,
       col_cme_gast  TYPE c LENGTH 7,
       col_cme_comp  TYPE c LENGTH 7,
       col_detalle   TYPE c LENGTH 45,
       col_ctamayor  TYPE c LENGTH 10,
       col_vence     TYPE sy-datum,
       col_estatus   TYPE p LENGTH 5,
       col_imphosp   TYPE p LENGTH 16 DECIMALS 2,
       col_lugarexp  TYPE c LENGTH 5,
       col_cvexml    TYPE p LENGTH 16,
       col_folio     TYPE c LENGTH 9,
       col_rfc       TYPE c LENGTH 13,
       col_razonsoc  TYPE c LENGTH 250,
       col_idfolio   TYPE c LENGTH 6,
       col_idfoliodetalle  TYPE c LENGTH 6,
       col_idusuario TYPE c LENGTH 6,
       col_posiva    TYPE bseg-buzei,
       col_conded    TYPE p LENGTH 16 DECIMALS 2,
       col_connoded  TYPE p LENGTH 16 DECIMALS 2,
       col_ivaded    TYPE p LENGTH 16 DECIMALS 2,
       col_ivanoded  TYPE p LENGTH 16 DECIMALS 2,
END OF ty_datos.

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

********variables estandar cabecera********
*DATA: SOC TYPE C.
********variables estandar cabecera********

*******************DATOS PARA ALV*********************
*Type Pool donde vienen definidas todas las estructuras y tablas
TYPE-POOLS: slis.
TYPES: 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,
      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
      i_events     TYPE slis_t_event,            "Se agrego para doble cl
ick
      w_events     LIKE LINE OF i_events.         "Se agrego para doble c
lick
*******************DATOS PARA ALV*********************

**************DATOS PARA LA BAPI**************
DATA: gd_documentheader LIKE bapiache09,
      it_accountreceivable LIKE TABLE OF bapiacar09 WITH HEADER LINE,
      it_accountgl         LIKE TABLE OF bapiacgl09 WITH HEADER LINE,
      it_accounttax        LIKE TABLE OF bapiactx09 WITH HEADER LINE,
      it_currencyamount    LIKE TABLE OF bapiaccr09 WITH HEADER LINE,
      it_return            LIKE TABLE OF bapiret2   WITH HEADER LINE,
      it_accountpayable    LIKE TABLE OF bapiacap09 WITH HEADER LINE.
**************DATOS PARA LA BAPI**************

*******WA PARA LA CARGA DE BAPI*******
DATA: wa_accountreceivable LIKE LINE OF it_accountreceivable,
      wa_accountgl         LIKE LINE OF it_accountgl,
      wa_accounttax        LIKE LINE OF it_accounttax,
      wa_currencyamount    LIKE LINE OF it_currencyamount,
      wa_return            LIKE LINE OF it_return,
      wa_accountpayable    LIKE LINE OF it_accountpayable.
*******WA PARA LA CARGA DE BAPI*******

*Nombre del cuadro de los parametros de entrada
INITIALIZATION.
  aaa  = 'Datos de cabecera'.

*fecha
  DATA: var_fecha TYPE sy-datum.
****Traer el nombre del mes****
  DATA: ls_mes TYPE fcltx.
  CALL FUNCTION 'ISP_GET_MONTH_NAME'
    EXPORTING
      date        = sy-datum
      language    = sy-langu
    IMPORTING
      longtext    = ls_mes
    EXCEPTIONS
      calendar_id = 1
      date_error  = 2
      not_found   = 3
      wrong_input = 4
      OTHERS      = 5.
****Traer el nombre del mes****

*
*AT SELECTION-SCREEN OUTPUT.
*  LOOP AT SCREEN.
*    IF screen-name = 'P_SOC'.
*      screen-input = 0.
*      MODIFY SCREEN.
*    ENDIF.
*  ENDLOOP.

*Condicion para pasar al alv
START-OF-SELECTION.
  IF p_numemp[] IS NOT INITIAL.
    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.
  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.

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

*&---------------------------------------------------------------------*
*&      Form  f_conexion
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM f_conexion.
*Conexion BD VIATICOS
*******Traer datos de la base de datos de viaticos****************
  EXEC SQL.
    CONNECT TO 'SILANES_VIATICOS'
  ENDEXEC.

  EXEC SQL.
    open e for
SELECT *
FROM dbo.vwviaticos
  ENDEXEC.

  DO.
    EXEC SQL.
      FETCH NEXT e INTO :WA_VWVIATICOS
    ENDEXEC.
    IF sy-subrc NE 0.
      EXIT.
    ELSE.
      APPEND wa_vwviaticos TO it_vwviaticos.
    ENDIF.
  ENDDO.

  EXEC SQL.
    CLOSE e
  ENDEXEC.

  EXEC SQL.
    DISCONNECT :'SILANES_VIATICOS'
  ENDEXEC.
******************************************************************
ENDFORM.                    "f_conexion

*&---------------------------------------------------------------------*
*&      Form  f1000_consulta
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM f1000_consulta.
  PERFORM f_conexion.
*******PONER 0 A NUM EMPLEADO**********
  LOOP AT it_vwviaticos INTO wa_vwviaticos.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = wa_vwviaticos-numemp
      IMPORTING
        output = wa_vwviaticos-numemp.

    MODIFY it_vwviaticos FROM wa_vwviaticos.
  ENDLOOP.
******PONER 0 A NUM EMPLEADO**********

******************Se trae los clientes seleccionados*****************
  LOOP AT it_vwviaticos INTO wa_vwviaticos
*     READ TABLE IT_CATUSUARIOS INTO WA_CATUSUARIOS
       WHERE numemp  IN p_numemp
       AND   estatus = 6.                                                
"ES EL ESTATUS 4 QUE ES EL QUE ESTA AUTORIZADO
    IF sy-subrc = 0.
      wa_datos-col_idciclo        =  wa_vwviaticos-idciclo.
      wa_datos-col_numemp         =  wa_vwviaticos-numemp+4(6).
      wa_datos-col_nomciclo       =  wa_vwviaticos-nomciclo.
      wa_datos-col_nombre         =  wa_vwviaticos-nombre.
      wa_datos-col_centro         =  wa_vwviaticos-centro.
      wa_datos-col_cuenta         =  wa_vwviaticos-cuenta.
      wa_datos-col_expr1          =  wa_vwviaticos-expr1.
      wa_datos-col_monto          =  wa_vwviaticos-monto.
      wa_datos-col_tcuota         =  wa_vwviaticos-tcuota.
      wa_datos-col_subtotal       =  wa_vwviaticos-subtotal.
      wa_datos-col_iva            =  wa_vwviaticos-iva.
      wa_datos-col_total          =  wa_vwviaticos-total.
      wa_datos-col_propina        =  wa_vwviaticos-propina.
      wa_datos-col_estatus        =  wa_vwviaticos-estatus.
      wa_datos-col_detalle        =  wa_vwviaticos-detalle.
      wa_datos-col_ctamayor       =  wa_vwviaticos-ctamayor.
      wa_datos-col_imphosp        =  wa_vwviaticos-imphosp.
      wa_datos-col_lugarexp       =  wa_vwviaticos-lugarexp.
      wa_datos-col_cvexml         =  wa_vwviaticos-cvexml.
      wa_datos-col_rfc            =  wa_vwviaticos-rfc.
      wa_datos-col_razonsoc       =  wa_vwviaticos-razonsoc.
      wa_datos-col_IdFolio        =  wa_vwviaticos-IdFolio.
      wa_datos-col_IdFolioDetalle =  wa_vwviaticos-IdFolioDetalle.
      wa_datos-col_IdUsuario      =  wa_vwviaticos-IdUsuario.
      wa_datos-col_conded         =  wa_vwviaticos-conded.
      wa_datos-col_connoded       =  wa_vwviaticos-connoded.
      wa_datos-col_ivaded         =  wa_vwviaticos-ivaded.
      wa_datos-col_ivanoded       =  wa_vwviaticos-ivanoded.
      APPEND wa_datos TO it_datos.
    ENDIF.
    SORT it_datos BY col_numemp col_nomciclo.
  ENDLOOP.
******************Se trae los clientes seleccionados*****************

*********Traer datos duros*********
  DEFINE: increment.
    &1 = &1 + 1.
  END-OF-DEFINITION.
  vl_index = 1.
  LOOP AT it_datos INTO wa_datos.
    wa_datos-col_posicion = vl_index.
    increment vl_index.
    wa_datos-col_moneda   = '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.

    IF wa_datos-col_nomciclo = 'Ciclo 1'.
       wa_datos-col_nomciclo  = 'CICLO I'.
    ELSEIF wa_datos-col_nomciclo = 'Ciclo 2'.
       wa_datos-col_nomciclo  = 'CICLO II'.
    ELSEIF wa_datos-col_nomciclo = 'Ciclo 3'.
       wa_datos-col_nomciclo  = 'CICLO III'.
    ELSEIF wa_datos-col_nomciclo = 'Ciclo 4'.
       wa_datos-col_nomciclo  = 'CICLO IV'.
    ELSEIF wa_datos-col_nomciclo = 'Ciclo 5'.
       wa_datos-col_nomciclo  = 'CICLO V'.
    ELSEIF wa_datos-col_nomciclo = 'Ciclo 6'.
       wa_datos-col_nomciclo  = 'CICLO VI'.
    ELSEIF wa_datos-col_nomciclo = 'Ciclo 7'.
       wa_datos-col_nomciclo  = 'CICLO VII'.
    ELSEIF wa_datos-col_nomciclo = 'Ciclo 8'.
       wa_datos-col_nomciclo  = 'CICLO VIII'.
    ELSEIF wa_datos-col_nomciclo = 'Ciclo 9'.
       wa_datos-col_nomciclo  = 'CICLO IX'.
    ELSEIF wa_datos-col_nomciclo = 'Ciclo 10'.
       wa_datos-col_nomciclo  = 'CICLO X'.
    ELSEIF wa_datos-col_nomciclo = 'Ciclo 11'.
       wa_datos-col_nomciclo  = 'CICLO XI'.
    ELSEIF wa_datos-col_nomciclo = 'Ciclo 12'.
       wa_datos-col_nomciclo  = 'CICLO XII'.
    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**********
ENDFORM.                    "f1000_consulta

*Catalogo
FORM alv_grid.

  fieldcatalog-fieldname   = 'COL_POSICION'.
  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   = 'Empleado'.
  fieldcatalog-col_pos     = 2.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_NOMBRE'.
  fieldcatalog-seltext_m   = 'Nombre'.
  fieldcatalog-col_pos     = 3.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_NOMCICLO'.
  fieldcatalog-seltext_m   = 'Ciclo'.
  fieldcatalog-col_pos     = 4.
  fieldcatalog-outputlen   = '10'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_EXPR1'.
  fieldcatalog-seltext_m   = 'Asignación Comp.'.
  fieldcatalog-col_pos     = 5.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_DETALLE'.
  fieldcatalog-seltext_m   = 'Detalle'.
  fieldcatalog-col_pos     = 6.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_CLASE'.
  fieldcatalog-seltext_m   = 'Clase'.
  fieldcatalog-col_pos     = 7.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_MONTO'.
  fieldcatalog-seltext_m   = 'Importe'.
  fieldcatalog-col_pos     = 8.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
*  fieldcatalog-do_sum      = 'X'.               "SE AGREGO PARA OBTENER 
EL TOTAL
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_SUBTOTAL'.
  fieldcatalog-seltext_m   = 'Subtotal'.
  fieldcatalog-col_pos     = 9.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
*  fieldcatalog-do_sum      = 'X'.               "SE AGREGO PARA OBTENER 
EL TOTAL
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_IVA'.
  fieldcatalog-seltext_m   = 'IVA'.
  fieldcatalog-col_pos     = 10.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
*  fieldcatalog-do_sum      = 'X'.               "SE AGREGO PARA OBTENER 
EL TOTAL
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_TCUOTA'.
  fieldcatalog-seltext_m   = 'Porcentaje'.
  fieldcatalog-col_pos     = 11.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_PROPINA'.
  fieldcatalog-seltext_m   = 'Propina'.
  fieldcatalog-col_pos     = 12.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_IMPHOSP'.
  fieldcatalog-seltext_m   = 'Imp. hospedaje'.
  fieldcatalog-col_pos     = 13.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_SUBTOTAL'."'COL_TOTAL'.
  fieldcatalog-seltext_m   = 'Importe Base'.
  fieldcatalog-col_pos     = 14.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.
  fieldcatalog-fieldname   = 'COL_TOTAL'.
  fieldcatalog-seltext_m   = 'Total'.
  fieldcatalog-col_pos     = 15.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
*  fieldcatalog-do_sum      = 'X'.               "SE AGREGO PARA OBTENER 
EL TOTAL
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_MONEDA'.
  fieldcatalog-seltext_m   = 'Moneda'.
  fieldcatalog-col_pos     = 16.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_INDIMP'.
  fieldcatalog-seltext_m   = 'Indicador Imp.'.
  fieldcatalog-col_pos     = 17.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_CONDED'.
  fieldcatalog-seltext_m   = 'Consumo ded.'.
  fieldcatalog-col_pos     = 18.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_CONNODED'.
  fieldcatalog-seltext_m   = 'Consumo No ded.'.
  fieldcatalog-col_pos     = 19.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_IVADED'.
  fieldcatalog-seltext_m   = 'IVA ded.'.
  fieldcatalog-col_pos     = 20.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.
  fieldcatalog-fieldname   = 'COL_IVANODED'.
  fieldcatalog-seltext_m   = 'IVA No ded.'.
  fieldcatalog-col_pos     = 21.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_CTAMAYOR'.
  fieldcatalog-seltext_m   = 'Cta. Mayor'.
  fieldcatalog-col_pos     = 22.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_CENTRO'.
  fieldcatalog-seltext_m   = 'Centro Coste'.
  fieldcatalog-col_pos     = 23.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_VENCE'.
  fieldcatalog-seltext_m   = 'Vence el'.
  fieldcatalog-col_pos     = 24.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_RFC'.
  fieldcatalog-seltext_m   = 'RFC'.
  fieldcatalog-col_pos     = 25.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'COL_RAZONSOC'.
  fieldcatalog-seltext_m   = 'Razón Social'.
  fieldcatalog-col_pos     = 26.
  fieldcatalog-outputlen   = '20'.
  fieldcatalog-emphasize   = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.
  fieldcatalog-fieldname   = 'COL_ESTATUS'.
  fieldcatalog-seltext_m   = 'Estatus'.
  fieldcatalog-col_pos     = 27.
  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'.
**  wa_sort-
**  wa_sort-tabname          = 'IT_DATOS'.
*  APPEND wa_sort TO it_sort.

*************************ORDENAR ALV*************************
*     SORT IT_DATOS BY col_posicion ASCENDING.
*************************ORDENAR ALV*************************
ENDFORM.                    "alv_grid

*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.                    "build_layout

*datos display
FORM display_alv_report.
  gd_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = gd_repid
      i_callback_pf_status_set = 'ZSTANDARD'
      i_callback_user_command  = 'MI_USER_COMMAND'
      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.                    "display_alv_report

**Forms del boton para realizar la bapí**
FORM mi_user_command USING r_ucomm LIKE sy-ucomm rs_selfied TYPE slis_sel
field.
  CASE r_ucomm.
    WHEN '&BT1'.          "SE DA CLICK
      PERFORM operaciones_bapi_ver2.
  ENDCASE.
ENDFORM.                    "mi_user_command

*&---------------------------------------------------------------------*
*&      Form  zstandard
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->RT_EXTAB   text
*----------------------------------------------------------------------*
FORM zstandard USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'ZSTANDARD'.
ENDFORM.                    "zstandard

**********copia bapi**********
*Form para generar la bapi
FORM llamada_bapi.
*  PERFORM fill_header.
  CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST' "Se cambio por la Check
      EXPORTING
          documentheader    = gd_documentheader
      TABLES
          accountgl         = it_accountgl
          accountreceivable = it_accountreceivable
          accountpayable    = it_accountpayable
          accounttax        = it_accounttax
          currencyamount    = it_currencyamount
          return            = it_return.
*break ajimenez-ext.
  WRITE: / 'Result of check lines:'.                        "#EC NOTEXT
  PERFORM show_messages.
*        MESSAGE 'Se ha realizado todo' TYPE 'I'.
  COMMIT WORK.
  PERFORM llevar_folio.
ENDFORM.                    "llamada_bapi
**********copia bapi**********

****Form para realizar las operaciones de la bapi****
*FORM operaciones_bapi.
*  data: vl_index TYPE sy-tabix.
*  describe TABLE it_datos LINES lv_lines.
*  CLEAR VL_INDEX.
**  VL_INDEX = 0.
*    VL_INDEX = 1.
*  LOOP AT it_datos INTO wa_datos ."WHERE col_numemp = vl_num_emp.
*    vl_index = sy-tabix.
*    IF sy-tabix = 1 .
*      vl_num_emp = wa_datos-col_numemp.
*      vl_total = vl_total + wa_datos-col_monto.
*      wa_all_bapi-amt_doccur = wa_datos-col_monto.
*      wa_all_bapi-itemno_acc = vl_index.
*      wa_all_bapi-currency   = wa_datos-col_moneda.
**      increment vl_index.
*      APPEND wa_all_bapi to it_all_bapi.
*          increment vl_index.
*    ELSE .
*      IF vl_num_emp =  wa_datos-col_numemp.
*
*        wa_all_bapi-amt_doccur = wa_datos-col_monto.      "prueba
*              wa_all_bapi-itemno_acc = vl_index.
*        APPEND wa_all_bapi to it_all_bapi.                 "prueba
*            increment vl_index.
*        vl_total = vl_total + wa_datos-col_monto.
**        wa_all_bapi-amt_doccur = vl_total.
**        APPEND wa_all_bapi to it_all_bapi.
**        IF sy-tabix = lv_lines.
*        IF vl_index = lv_lines.
*
*        wa_all_bapi-amt_doccur = vl_total.
**                wa_all_bapi-amt_doccur = wa_datos-col_monto..
*        wa_all_bapi-customer = vl_num_emp.
*        wa_all_bapi-itemno_acc = vl_index.
*        APPEND wa_all_bapi to it_all_bapi.
*            increment vl_index.
*        ENDIF.
*      ELSE.
**        *************
*        wa_all_bapi-amt_doccur = vl_total.
*        wa_all_bapi-customer = vl_num_emp.
*        wa_all_bapi-itemno_acc = vl_index.
*        APPEND wa_all_bapi to it_all_bapi.
*            increment vl_index.
*
**        *************
*        CLEAR: wa_all_bapi-customer.
**        ***********************
*              wa_all_bapi-amt_doccur = wa_datos-col_monto.
*      wa_all_bapi-gl_account = wa_datos-col_ctamayor.
*      wa_all_bapi-tax_code   = wa_datos-col_indimp.
*      wa_all_bapi-itemno_acc = vl_index.
*
**        ***********************
*        APPEND wa_all_bapi to it_all_bapi.
*            increment vl_index.
*        CLEAR  vl_total.
*        vl_total = vl_total + wa_datos-col_monto.
*        vl_num_emp = wa_datos-col_numemp.
*      ENDIF.
*    ENDIF.
*  ENDLOOP.
*ENDFORM.                    "operaciones_bapi
****Form para realizar las operaciones de la bapi****

*      Form  fill_internal_tables
*FORM fill_internal_tables.
*
*  PERFORM fill_header.
*  PERFORM fill_accountgl.
*  PERFORM fill_accountar.
*  PERFORM fill_accounttax.
*  PERFORM fill_currencyamount.
*
*ENDFORM.                               " fill_internal_tables

*      Form  Show_messages
FORM show_messages.

  IF it_return[] IS INITIAL.
    MESSAGE 'no messages' TYPE 'I'.
*    write: / 'no messages'.
  ELSE.
    READ TABLE it_return WITH KEY type = 'E'.
    IF sy-subrc <> 0.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    ENDIF.
    SKIP 1.
    LOOP AT it_return.
*      write: /    it_return-type,
*             (2)  it_return-id,
*                  it_return-number,
*             (80) it_return-message,
*                  it_return-message_v1,
*             (20) it_return-parameter,
*             (3)  it_return-row,
*                  it_return-field.
      MESSAGE    "it_return-type,
*             (2)  it_return-id
*                  it_return-number,
*             (80) it_return-message,
              it_return-message
*                  it_return-message_v1,
*             (20) it_return-parameter,
*             (3)  it_return-row,
*                  it_return-field.
                   TYPE 'I'.
    ENDLOOP.
  ENDIF.
  ULINE.
ENDFORM.                               " Show_messages

**       FORM fill_accountgl                                           *
*FORM fill_accountgl.
*
*  CLEAR it_accountgl.
*  it_accountgl-itemno_acc    = 1.
*  it_accountgl-gl_account    = '0060066600'.   "PARA PAGOS AQUI VA LA CU
ENTA'0021129311'.
*  it_accountgl-item_text     = 'BAPI PRUEBA TEXTO 3'.       "#EC NOTEXT
** it_accountgl-bus_area       = '01'.
*  it_accountgl-alloc_nmbr    = 'BAPI PRUEBA ASIGNASION 3'.
*  it_accountgl-tax_code      = 'W3'.   "WE PARA CUANDO LLEVE IVA Y SE CO
MENTA PARA CUANDO SEA PARA PAGOS
*  it_accountgl-costcenter    = '7501020300'.   "PARA CUANDO ES PARA PAGO
S VA COMENTADO
** it_accountgl-comp_code      = 'SLOC'.
*  APPEND it_accountgl.
*
*ENDFORM.                    "fill_accountgl

*       FORM fill_header                                              *
FORM fill_header.

*  CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
*    IMPORTING
*      own_logical_system = gd_documentheader-obj_sys.

* OBJ_TYPE has to be replaced by customers object key (Y* or Z*)
*  gd_documentheader-obj_type   = 'IDOC'.
*  gd_documentheader-obj_key    = p_soc.
  gd_documentheader-username   = 'IDAVILA'."sy-uname.
  gd_documentheader-header_txt = wa_datos-col_nombre.       "#EC NOTEXT
* gd_documentheader-obj_key_r  =
* GD_DOCUMENTHEADER-reason_rev =
  gd_documentheader-comp_code  = p_soc+3(4).
* GD_DOCUMENTHEADER-AC_DOC_NO  =
*  gd_documentheader-fisc_year  = sy-datum(4).
  gd_documentheader-doc_date   = wa_datos-col_vence.
  gd_documentheader-pstng_date = wa_datos-col_vence.
* GD_DOCUMENTHEADER-TRANS_DATE =
* GD_DOCUMENTHEADER-VALUE_DATE =
* GD_DOCUMENTHEADER-FIS_PERIOD =
  gd_documentheader-doc_type   = wa_datos-col_clase.
  gd_documentheader-ref_doc_no = wa_datos-col_nomciclo."'REFERENCIA BAPI 
PRUEBA 3'.
* GD_DOCUMENTHEADER-COMPO_ACC  =
  gd_documentheader-bus_act    = 'RFBU'.

ENDFORM.                    "fill_header

**       FORM fill_ar                                                  *
*FORM fill_accountar.   "ACCOUNTRECEIVABLE
*
*  CLEAR it_accountreceivable.
*  it_accountreceivable-itemno_acc = 1.
*  it_accountreceivable-customer   = wa_datos-col_numemp.
*  it_accountreceivable-comp_code  = p_soc+3(4).
*  it_accountreceivable-alloc_nmbr = p_ref+3(14)."'BAPI PRUEBA ASIGNACION 
3'.
*  it_accountreceivable-item_text  = p_txtcab+3(33)."'BAPI PRUEBA TEXTO C
AB DOC 3'.
*  it_accountreceivable-sp_gl_ind  = 'D'.   "Indicador para cambiar la cl
ave de contabilizac.
*  APPEND it_accountreceivable.
*
*ENDFORM.                    "fill_accountar
*
**       FORM fill_tax                                                 *
*FORM fill_accounttax.
**
*  CLEAR it_accounttax.
*  it_accounttax-itemno_acc = 1.
*  it_accounttax-gl_account = '0011724016'.
*  it_accounttax-tax_code   = 'W3'.
**  it_accounttax-acct_key   = 'VST'.
**  it_accounttax-cond_key   = 'MWVS'.
** it_accounttax-itemno_tax = 8.
*  APPEND it_accounttax.
*
*ENDFORM.                    "fill_accounttax
*
**       FORM fill_currencyamount                                      *
*FORM fill_currencyamount.
*
*  CLEAR it_currencyamount.
*  it_currencyamount-itemno_acc   = 1.
*  it_currencyamount-curr_type    = '00'.
*  it_currencyamount-currency     = wa_datos-col_moneda.
*  it_currencyamount-amt_doccur   = '1086'.
*  APPEND it_currencyamount.
*
*ENDFORM.                    "fill_currencyamount

****Form para realizar las operaciones de la bapi VER 2****
FORM operaciones_bapi_ver2.
  CONCATENATE 'TC' '*' ls_mes INTO p_ref.
  CONCATENATE 'EDO DE CTA BANAMEX' '*' 'dia' '*' ls_mes '*' 'año' INTO p_
txtcab.
  TRANSLATE p_ref    USING '* '.
  TRANSLATE p_ref    TO UPPER CASE.
  TRANSLATE p_txtcab USING '* '.
  TRANSLATE p_txtcab TO UPPER CASE.
  PERFORM llenar_ceros.
  LOOP AT it_datos INTO wa_datos ."WHERE col_numemp = vl_num_emp.
      vl_contador = 1.
      vl_num_emp = wa_datos-col_numemp.
      vl_folioxml = wa_datos-col_cvexml.
*      CUANDO EL CONSUMO ES FUERA DE LOS CP QUE INDICO MONICA
      IF WA_DATOS-COL_CONDED = 0.
        CLEAR it_accountgl.
          it_accountgl-itemno_acc = vl_contador.
          it_accountgl-gl_account = wa_datos-col_ctamayor.
          it_accountgl-item_text  = wa_datos-col_detalle.
          it_accountgl-alloc_nmbr = wa_datos-col_expr1.
          it_accountgl-tax_code   = wa_datos-col_indimp.
          it_accountgl-costcenter = wa_datos-col_centro.
        APPEND it_accountgl.
        CLEAR it_currencyamount.
          it_currencyamount-itemno_acc = vl_contador.
          it_currencyamount-curr_type  = '00'.
          it_currencyamount-currency   = wa_datos-col_moneda.
          it_currencyamount-amt_doccur = wa_datos-col_subtotal.
        APPEND it_currencyamount.
        vl_total = vl_total + wa_datos-col_subtotal.
        increment vl_contador.
        IF it_accountgl-tax_code = 'W3'.                            "Cond
ición del impuesto
          CLEAR it_accounttax.
            it_accounttax-itemno_acc = vl_contador.
            it_accounttax-gl_account = '0011724016'.
            it_accounttax-tax_code   = wa_datos-col_indimp.
          APPEND it_accounttax.
            wa_datos-col_posiva = vl_contador.
            MODIFY it_datos FROM wa_datos.
          CLEAR it_currencyamount.
            it_currencyamount-itemno_acc = vl_contador.
            it_currencyamount-curr_type  = '00'.
            it_currencyamount-currency   = wa_datos-col_moneda.
            it_currencyamount-amt_doccur = wa_datos-col_iva.
            it_currencyamount-amt_base   = wa_datos-col_subtotal.
          APPEND it_currencyamount.
          vl_nombemp = wa_datos-col_numemp.
          vl_nombre  = wa_datos-col_nombre.
          vl_total = vl_total + wa_datos-col_iva.
          increment vl_contador.
        ENDIF.
        IF wa_datos-col_propina <> 0.                                     
          "CONDICION PARA PROPINA
          CLEAR it_accountgl.
            it_accountgl-itemno_acc = vl_contador.
            it_accountgl-gl_account = '0060066612'.
            it_accountgl-item_text  = WA_DATOS-COL_DETALLE.
            it_accountgl-alloc_nmbr = wa_datos-col_expr1.
            it_accountgl-tax_code   = 'WE'."WA_DATOS-COL_INDIMP.
            it_accountgl-costcenter = wa_datos-col_centro.
          APPEND it_accountgl.
          CLEAR it_currencyamount.
            it_currencyamount-itemno_acc = vl_contador.
            it_currencyamount-curr_type  = '00'.
            it_currencyamount-currency   = wa_datos-col_moneda.
            it_currencyamount-amt_doccur = wa_datos-col_propina.
          APPEND it_currencyamount.
          vl_total = vl_total + wa_datos-col_propina.
          increment vl_contador.
        ENDIF.
        IF wa_datos-col_imphosp <> 0.                                     
           "CONDICION PARA IMPUESTO DE HOTEL
          CLEAR it_accountgl.
            it_accountgl-itemno_acc = vl_contador.
            it_accountgl-gl_account = '0060066600'.
            it_accountgl-item_text  = WA_DATOS-COL_DETALLE.
            it_accountgl-alloc_nmbr = wa_datos-col_expr1.
            it_accountgl-tax_code   = 'WE'."WA_DATOS-COL_INDIMP.
            it_accountgl-costcenter = wa_datos-col_centro.
          APPEND it_accountgl.
          CLEAR it_currencyamount.
            it_currencyamount-itemno_acc = vl_contador.
            it_currencyamount-curr_type  = '00'.
            it_currencyamount-currency   = wa_datos-col_moneda.
            it_currencyamount-amt_doccur = wa_datos-col_imphosp.
          APPEND it_currencyamount.
          vl_total = vl_total + wa_datos-col_imphosp.
          increment vl_contador.
        ENDIF.
        CLEAR it_accountreceivable.
          it_accountreceivable-itemno_acc  = vl_contador.
          it_accountreceivable-customer    = wa_datos-col_numemp.
          it_accountreceivable-comp_code   = p_soc+3(4).
          it_accountreceivable-alloc_nmbr  = p_ref.
          it_accountreceivable-item_text   = p_txtcab.
          it_accountreceivable-sp_gl_ind   = 'D'.
        APPEND it_accountreceivable.
        vl_total_2 = vl_total * -1.
        CLEAR it_currencyamount.
          it_currencyamount-itemno_acc = vl_contador.
          it_currencyamount-curr_type  = '00'.
          it_currencyamount-currency   = wa_datos-col_moneda.
          it_currencyamount-amt_doccur = vl_total_2.
        APPEND it_currencyamount.
        PERFORM ceros_numemp.
        gd_documentheader-username   = 'IDAVILA'."sy-uname.
        gd_documentheader-header_txt = wa_datos-col_nombre. "#EC NOTEXT
        gd_documentheader-comp_code  = p_soc+3(4).
        gd_documentheader-doc_date   = wa_datos-col_vence.
        gd_documentheader-pstng_date = wa_datos-col_vence.
        gd_documentheader-doc_type   = wa_datos-col_clase.
        gd_documentheader-ref_doc_no = wa_datos-col_nomciclo."'REFERENCIA 
BAPI PRUEBA 3'.
        gd_documentheader-bus_act    = 'RFBU'.
        PERFORM llamada_bapi.
        CLEAR vl_contador.
        CLEAR vl_total.
        CLEAR vl_folioxml.
        REFRESH it_accountgl.
        REFRESH it_accountreceivable.
        REFRESH it_accounttax.
        REFRESH it_currencyamount.
*      CUANDO EL CONSUMO ES DENTRO DE LOS CP QUE INDICO MONICA
      ELSEIF WA_DATOS-COL_CONDED <> 0.
*gastos deducibles
        CLEAR it_accountgl.
          it_accountgl-itemno_acc = vl_contador.
          it_accountgl-gl_account = wa_datos-col_ctamayor. "Validar si va 
a ir a la misma cuenta de mayor
          it_accountgl-item_text  = wa_datos-col_detalle.
          it_accountgl-alloc_nmbr = wa_datos-col_expr1.
          it_accountgl-tax_code   = wa_datos-col_indimp.
          it_accountgl-costcenter = wa_datos-col_centro.
        APPEND it_accountgl.
        CLEAR it_currencyamount.
          it_currencyamount-itemno_acc = vl_contador.
          it_currencyamount-curr_type  = '00'.
          it_currencyamount-currency   = wa_datos-col_moneda.
          it_currencyamount-amt_doccur = wa_datos-col_conded.
        APPEND it_currencyamount.
        vl_total = vl_total + wa_datos-col_conded.
        increment vl_contador.
        IF it_accountgl-tax_code = 'W3'.                            "Cond
ición del impuesto
          CLEAR it_accounttax.
            it_accounttax-itemno_acc = vl_contador.
            it_accounttax-gl_account = '0011724016'.
            it_accounttax-tax_code   = wa_datos-col_indimp.
          APPEND it_accounttax.
            wa_datos-col_posiva = vl_contador.
            MODIFY it_datos FROM wa_datos.
          CLEAR it_currencyamount.
            it_currencyamount-itemno_acc = vl_contador.
            it_currencyamount-curr_type  = '00'.
            it_currencyamount-currency   = wa_datos-col_moneda.
            it_currencyamount-amt_doccur = wa_datos-col_ivaded.
            it_currencyamount-amt_base   = wa_datos-col_conded.
          APPEND it_currencyamount.
          vl_nombemp = wa_datos-col_numemp.
          vl_nombre  = wa_datos-col_nombre.
          vl_total = vl_total + wa_datos-col_ivaded.
          increment vl_contador.
        ENDIF.
*gastos no deducibles
        CLEAR it_accountgl.
          it_accountgl-itemno_acc = vl_contador.
          it_accountgl-gl_account = '0060066612'. "wa_datos-
col_ctamayor'. "Validar si va a ir a la misma cuenta de mayor
          it_accountgl-item_text  = wa_datos-col_detalle.
          it_accountgl-alloc_nmbr = wa_datos-col_expr1.
          it_accountgl-tax_code   = wa_datos-col_indimp.
          it_accountgl-costcenter = wa_datos-col_centro.
        APPEND it_accountgl.
        CLEAR it_currencyamount.
          it_currencyamount-itemno_acc = vl_contador.
          it_currencyamount-curr_type  = '00'.
          it_currencyamount-currency   = wa_datos-col_moneda.
          it_currencyamount-amt_doccur = wa_datos-col_connoded.
        APPEND it_currencyamount.
        vl_total = vl_total + wa_datos-col_connoded.
        increment vl_contador.
        IF it_accountgl-tax_code = 'W3'.                            "Cond
ición del impuesto
          CLEAR it_accountgl.
            it_accountgl-itemno_acc = vl_contador.
            it_accountgl-gl_account = '0060066626'. "wa_datos-
col_ctamayor'. "Validar si va a ir a la misma cuenta de mayor
            it_accountgl-item_text  = wa_datos-col_detalle.
            it_accountgl-alloc_nmbr = wa_datos-col_expr1.
            it_accountgl-tax_code   = wa_datos-col_indimp.
            it_accountgl-costcenter = wa_datos-col_centro.
          APPEND it_accountgl.
            wa_datos-col_posiva = vl_contador.
            MODIFY it_datos FROM wa_datos.
          CLEAR it_currencyamount.
            it_currencyamount-itemno_acc = vl_contador.
            it_currencyamount-curr_type  = '00'.
            it_currencyamount-currency   = wa_datos-col_moneda.
            it_currencyamount-amt_doccur = wa_datos-col_ivanoded.
            it_currencyamount-amt_base   = wa_datos-col_conded.
          APPEND it_currencyamount.
          vl_nombemp = wa_datos-col_numemp.
          vl_nombre  = wa_datos-col_nombre.
          vl_total = vl_total + wa_datos-col_ivanoded.
          increment vl_contador.
        ENDIF.
        IF wa_datos-col_propina <> 0.                                     
          "CONDICION PARA PROPINA
          CLEAR it_accountgl.
            it_accountgl-itemno_acc = vl_contador.
            it_accountgl-gl_account = '0060066612'.
            it_accountgl-item_text  = WA_DATOS-COL_DETALLE.
            it_accountgl-alloc_nmbr = wa_datos-col_expr1.
            it_accountgl-tax_code   = 'WE'."WA_DATOS-COL_INDIMP.
            it_accountgl-costcenter = wa_datos-col_centro.
          APPEND it_accountgl.
          CLEAR it_currencyamount.
            it_currencyamount-itemno_acc = vl_contador.
            it_currencyamount-curr_type  = '00'.
            it_currencyamount-currency   = wa_datos-col_moneda.
            it_currencyamount-amt_doccur = wa_datos-col_propina.
          APPEND it_currencyamount.
          vl_total = vl_total + wa_datos-col_propina.
          increment vl_contador.
        ENDIF.
        IF wa_datos-col_imphosp <> 0.                                     
           "CONDICION PARA IMPUESTO DE HOTEL
          CLEAR it_accountgl.
            it_accountgl-itemno_acc = vl_contador.
            it_accountgl-gl_account = '0060066600'.
            it_accountgl-item_text  = WA_DATOS-COL_DETALLE.
            it_accountgl-alloc_nmbr = wa_datos-col_expr1.
            it_accountgl-tax_code   = 'WE'."WA_DATOS-COL_INDIMP.
            it_accountgl-costcenter = wa_datos-col_centro.
          APPEND it_accountgl.
          CLEAR it_currencyamount.
            it_currencyamount-itemno_acc = vl_contador.
            it_currencyamount-curr_type  = '00'.
            it_currencyamount-currency   = wa_datos-col_moneda.
            it_currencyamount-amt_doccur = wa_datos-col_imphosp.
          APPEND it_currencyamount.
          vl_total = vl_total + wa_datos-col_imphosp.
          increment vl_contador.
        ENDIF.
        CLEAR it_accountreceivable.
          it_accountreceivable-itemno_acc  = vl_contador.
          it_accountreceivable-customer    = wa_datos-col_numemp.
          it_accountreceivable-comp_code   = p_soc+3(4).
          it_accountreceivable-alloc_nmbr  = p_ref.
          it_accountreceivable-item_text   = p_txtcab.
          it_accountreceivable-sp_gl_ind   = 'D'.
        APPEND it_accountreceivable.
        vl_total_2 = vl_total * -1.
        CLEAR it_currencyamount.
          it_currencyamount-itemno_acc = vl_contador.
          it_currencyamount-curr_type  = '00'.
          it_currencyamount-currency   = wa_datos-col_moneda.
          it_currencyamount-amt_doccur = vl_total_2.
        APPEND it_currencyamount.
        PERFORM ceros_numemp.
        gd_documentheader-username   = 'IDAVILA'."sy-uname.
        gd_documentheader-header_txt = wa_datos-col_nombre. "#EC NOTEXT
        gd_documentheader-comp_code  = p_soc+3(4).
        gd_documentheader-doc_date   = wa_datos-col_vence.
        gd_documentheader-pstng_date = wa_datos-col_vence.
        gd_documentheader-doc_type   = wa_datos-col_clase.
        gd_documentheader-ref_doc_no = wa_datos-col_nomciclo."'REFERENCIA 
BAPI PRUEBA 3'.
        gd_documentheader-bus_act    = 'RFBU'.
        PERFORM llamada_bapi.
        CLEAR vl_contador.
        CLEAR vl_total.
        CLEAR vl_folioxml.
        REFRESH it_accountgl.
        REFRESH it_accountreceivable.
        REFRESH it_accounttax.
        REFRESH it_currencyamount.
      ENDIF.
  ENDLOOP.
*  PERFORM llenar_tablaz.
*  PERFORM actualizar_doccont.       "se comento para que no generara con
exion sql
ENDFORM.                    "operaciones_bapi
****Form para realizar las operaciones de la bapi VER 2****

******FORMS PARA LLENAR CAMPOS DE 0******
FORM llenar_ceros.
  LOOP AT it_datos INTO wa_datos.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = wa_datos-col_ctamayor
      IMPORTING
        output = wa_datos-col_ctamayor.
    MODIFY it_datos FROM wa_datos.
  ENDLOOP.
ENDFORM.                    "LLENAR_CEROS

*&---------------------------------------------------------------------*
*&      Form  CEROS_NUMEMP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM ceros_numemp.
  LOOP AT it_accountreceivable INTO wa_accountreceivable.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = wa_accountreceivable-customer
      IMPORTING
        output = wa_accountreceivable-customer.
    MODIFY it_accountreceivable FROM wa_accountreceivable.
  ENDLOOP.
ENDFORM.                    "CEROS_NUMEMP
******FORMS PARA LLENAR CAMPOS DE 0******

********************Form para regresar el folio********************
FORM llevar_folio.
  vl_folio = it_return-message+55(9).
  PERFORM llenariva_asig_txt USING vl_folio.
  LOOP AT it_accountreceivable.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
        input  = it_accountreceivable-customer
      IMPORTING
        output = it_accountreceivable-customer.
    MODIFY it_datos FROM wa_datos.
  ENDLOOP.
  LOOP AT it_datos INTO wa_datos_2 WHERE col_numemp = it_accountreceivabl
e-customer
                                    AND  col_cvexml = vl_folioxml.
    wa_datos_2-col_folio = vl_folio.
    MODIFY it_datos FROM wa_datos_2.
  ENDLOOP.
ENDFORM.                    "llevar_folio
********************Form para regresar el folio********************

*******Form para llenar tabla z*******
FORM llenar_tablaz.
  LOOP AT it_datos INTO wa_datos_2.
    zviaticos_folio-empleado  = wa_datos_2-col_numemp.
    zviaticos_folio-folio_xml = wa_datos_2-col_cvexml.
    zviaticos_folio-doc_cont  = wa_datos_2-col_folio.
    INSERT zviaticos_folio.
  ENDLOOP.
ENDFORM.                    "llenar_tablaz
*******Form para llenar tabla z*******

************************Conexion para actualizar bd sql******************
*****
FORM actualizar_doccont.
  EXEC SQL.
    CONNECT TO 'SILANES_VIATICOS'
  ENDEXEC.
  "pruebas, bueno
  LOOP AT it_datos INTO wa_datos_2.
    EXEC SQL.
      open actmasiva for
       UPDATE dbo.ViaticosDetalle
*       MODIFY dbo.ViaticosDetalle
             SET FolioDocto = :WA_DATOS_2-COL_FOLIO,
             Estatus = '6'
       WHERE CveXml = :WA_DATOS_2-COL_CVEXML
    ENDEXEC.

    EXEC SQL.
      CLOSE actmasiva
    ENDEXEC.

    CONCATENATE sy-datum Sy-uzeit INTO fechaMov.

    EXEC SQL.
      open insert for
      INSERT INTO  dbo.MovAutorizados
        (IdFolioDetalle,Idfolio, IdUsuarioAutorizador,FechaRegistro,Estat
us)
      VALUES (:WA_DATOS_2-COL_IDFOLIODETALLE,:WA_DATOS_2-
COL_IDFOLIO,'5',:sy-datum ,'6')
    ENDEXEC.

    EXEC SQL.
      CLOSE insert
    ENDEXEC.
  ENDLOOP.

  EXEC SQL.
    DISCONNECT :'SILANES_VIATICOS'
  ENDEXEC.

ENDFORM.
********|***************Conexion para actualizar bd sql******************
*****

************FORM MODIFICAR IVA************
FORM llenariva_asig_txt USING pin_folio.
DATA:
      TG_BSEGTX   TYPE STANDARD TABLE OF BSEG,
      TG_BSEGCH   TYPE STANDARD TABLE OF BSEG,
      TG_BKPFCH   TYPE STANDARD TABLE OF BKPF,
      WA_BSEGCH   TYPE BSEG,
      WA_BSEGTX   TYPE BSEG,
      WA_BKPFCH   TYPE BKPF,
      WA_DATOSTXT TYPE ty_datos,
      TG_BKDF     TYPE STANDARD TABLE OF BKDF,
      TG_BSEC     TYPE STANDARD TABLE OF BSEC,
      TG_BSED     TYPE STANDARD TABLE OF BSED,
      TG_BSET     TYPE STANDARD TABLE OF BSET,
      TG_BSEG_ADD TYPE STANDARD TABLE OF BSEG_ADD.

  DATA: lv_posicion TYPE string,
        lv_buzei    TYPE bseg-buzei,
        lv_mode     TYPE  apqi-putactive VALUE 'N'.

  DATA : VG_belnr TYPE BELNR_D,
         VG_gjahr TYPE GJAHR,
         VG_BUKRS TYPE BUKRS,
         VG_BUZID TYPE BUZID.
         VG_BUKRS = '7000'.
         VG_gjahr = SY-DATUM(4).
         VG_BELNR = pin_folio.
         VG_BUZID = 'T'.

  WAIT UP TO 2 SECONDS.

*****  SELECT SINGLE buzei
*****  INTO lv_buzei
*****  FROM BSEG
*****  WHERE bukrs EQ VG_BUKRS
*****  AND belnr EQ vg_belnr
*****  AND gjahr EQ VG_gjahr
*****  AND buzid EQ 'T'.    "Posicion de Impuesto

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  EXPORTING
    input        = vg_belnr
 IMPORTING
   OUTPUT        = vg_belnr.

  SELECT *
  INTO TABLE tg_bsegtx
  FROM BSEG
*    FOR ALL ENTRIES IN it_datos
  WHERE bukrs = VG_BUKRS
  AND belnr = vg_belnr
  AND gjahr = VG_gjahr
  AND buzid = VG_BUZID.   "Posicion de Impuesto
**  AND buzid = 'T'.    "Posicion de Impuesto

  FREE: bdcdata, it_msg.

  LOOP AT tg_bsegtx INTO wa_bsegtx.

READ TABLE IT_DATOS INTO WA_DATOSTXT
WITH  KEY col_posiva = wa_bsegtx-BUZEI. "CAMBIAR POR TU CAMPO EL INDICE Y 
QUITAR EL INDEX

IF SY-SUBRC = 0.
*  WA_BSEGCH-SGTXT = WA_DATOSTXT-col_razonsoc.
*  WA_BSEGCH-zuonr = WA_DATOSTXT-col_rfc.
ENDIF.
*   WA_BSEGCH-belnr = WA_BSEGTX-belnr.
*   WA_BSEGCH-mandt = SY-mandt.
*   WA_BSEGCH-gjahr = WA_BSEGTX-gjahr.
*   WA_BSEGCH-bukrs = WA_BSEGTX-bukrs.
*   WA_BSEGCH-buzei = WA_BSEGTX-buzei.
***   WA_BSEGCH-zuonr = 'ASIGNACION OSCAR'.
***   WA_BSEGCH-SGTXT = 'TEXTO EDUARDO'.
*    APPEND WA_BSEGCH TO  TG_BSEGCH.
*    CALL FUNCTION 'CHANGE_DOCUMENT'
*      TABLES
*        t_bkdf           = TG_BKDF
*        t_bkpf           = TG_BKPFCH
*        t_bsec           = TG_BSEC
*        t_bsed           = TG_BSED
*        t_bseg           = TG_BSEGCH
*        t_bset           = TG_BSET
*        T_BSEG_ADD       = TG_BSEG_ADD.
*    ENDLOOP.
  PERFORM bdc_dynpro USING 'SAPMF05L' '0100'.
  PERFORM bdc_field  USING 'BDC_CURSOR' 'RF05L-BELNR'.
  PERFORM bdc_field  USING 'BDC_OKCODE' '/00'.
  PERFORM bdc_field  USING 'RF05L-BELNR'  vg_belnr. "p_belnr.
  PERFORM bdc_field  USING 'RF05L-BUKRS'  vg_BUKRS. "p_bukrs.
  PERFORM bdc_field  USING 'RF05L-GJAHR'  vg_gjahr. "p_gjahr.

  CONCATENATE 'RF05L-ANZDT('
*  lv_buzei
  wa_bsegtx-buzei
  ')'
  INTO lv_posicion.

  PERFORM bdc_dynpro USING 'SAPMF05L' '0700'.
  PERFORM bdc_field  USING 'BDC_CURSOR' lv_posicion.
  PERFORM bdc_field  USING 'BDC_OKCODE' '=PK'.
  PERFORM bdc_dynpro USING 'SAPMF05L' '0312'.
  PERFORM bdc_field  USING 'BDC_CURSOR' 'BSEG-SGTXT'.
  PERFORM bdc_field  USING 'BDC_OKCODE' '=AE'.
  PERFORM bdc_field  USING 'BSEG-SGTXT' WA_DATOSTXT-col_razonsoc.  "p_fuf
.
  PERFORM bdc_field  USING 'BSEG-ZUONR' WA_DATOSTXT-col_rfc.  "p_fuf.

DATA: wa_params TYPE CTU_PARAMS.
  MOVE: 'N'  TO wa_params-dismode,    "Modo de Visualizacion
    'S'  TO wa_params-updmode,    "Modo de Actualizacion
    ' '  TO wa_params-cattmode,   "Simular mode de proceso de fondo
    'X'  TO wa_params-defsize,    "Tamaño estandar
    'X'  TO wa_params-racommit,   "Continuar tras commit
    ' '  TO wa_params-nobinpt,    "Sin modo BL
    'X'  TO wa_params-nobiend.    "Fin: Sin modo BL
  CALL TRANSACTION 'FB02'  USING bdcdata OPTIONS FROM wa_params
        MESSAGES INTO it_msg.

  COMMIT WORK.
ENDLOOP.
ENDFORM.                    " F1000_AGREGA_TEXTO_ASIG
*&---------------------------------------------------------------------*
*&      Form  BDC_DYNPRO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_2315   text
*      -->P_2316   text
*----------------------------------------------------------------------*
FORM bdc_dynpro  USING    value(p_PROGRAM)
                          value(p_DYNPRO).
  CLEAR BDCDATA.
    BDCDATA-PROGRAM  = P_PROGRAM.
    BDCDATA-DYNPRO   = P_DYNPRO.
    BDCDATA-DYNBEGIN = 'X'.
  APPEND BDCDATA.

ENDFORM.                    " BDC_DYNPRO
*&---------------------------------------------------------------------*
*&      Form  BDC_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_2320   text
*      -->P_2321   text
*----------------------------------------------------------------------*
FORM bdc_field  USING    value(p_FNAM)
                         value(p_FVAL).
    CLEAR BDCDATA.
      BDCDATA-FNAM = P_FNAM.
      BDCDATA-FVAL = P_FVAL.
    APPEND BDCDATA.

ENDFORM.                    " BDC_FIELD
************FORM MODIFICAR IVA************

You might also like