Professional Documents
Culture Documents
Zprueba Viaticos Ver4
Zprueba Viaticos Ver4
*& 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************