Professional Documents
Culture Documents
*& Report ZPRUEBA_VIATICOS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZPRUEBA_VIATICOS_VER3.
INCLUDE ZPRUEBA_VIATICOS_VER3_TOP.
*INCLUDE ZPRUEBA_VIATICOS_VER2_TOP.
INCLUDE ZPRUEBA_VIATICOS_VER3_F01.
*INCLUDE ZPRUEBA_VIATICOS_VER2_F01.
*&---------------------------------------------------------------------*
*& Include ZPRUEBA_VIATICOS_TOP
*&---------------------------------------------------------------------*
*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.
*******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.
*PARAMETROS SELECCIÓN DE ENTRADA
SELECTION-SCREEN: BEGIN OF BLOCK BLK1 WITH FRAME TITLE AAA.
SELECT-OPTIONS: P_NUMEMP FOR KNA1-KUNNR OBLIGATORY,
P_FCHDOC FOR BKPF-BLDAT 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 'COMP TC BNX 17',
P_TXTCAB FOR BSAD-SGTXT DEFAULT 'COMPROBACION EDO DE CT
A BNX AL 17'.", 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,
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,
END OF ty_datos.
DATA: it_datos TYPE STANDARD TABLE OF ty_datos,
wa_datos 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,
WA_TOP6 LIKE LINE OF IT_TOPHEADER,
WA_TOP7 LIKE LINE OF IT_TOPHEADER,
gd_repid like sy-repid,
it_sort TYPE slis_t_sortinfo_alv, "Se agrego para totales
y subtotales
wa_sort TYPE slis_sortinfo_alv, "Se agrego para totales
y subtotales
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,
'S' TO wa_top6-typ,
p_ref-low TO wa_top6-info,
'Referencia:' TO wa_top6-key,
'S' TO wa_top7-typ,
p_txtcab-low TO wa_top7-info,
'Texto cab:' TO wa_top7-key.
APPEND wa_top TO it_topheader.
APPEND wa_top2 TO it_topheader.
APPEND wa_top3 TO it_topheader.
APPEND wa_top4 TO it_topheader.
APPEND wa_top5 TO it_topheader.
APPEND wa_top6 TO it_topheader.
APPEND wa_top7 TO it_topheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_topheader
i_logo = 'ZLOGO_LGT256'.
ENDFORM. "top_of_page
*&---------------------------------------------------------------------*
*& Form f_conexion
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_conexion.
*Conexion BD VIATICOS
*******Traer datos de la base de datos de viaticos****************
*BREAK ajimenez-ext.
EXEC SQL.
CONNECT TO 'SILANES_VIATICOS'
ENDEXEC.
EXEC SQL.
open e for
SELECT *
FROM dbo.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.
*BREAK AJIMENEZ-EXT.
*******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**********
*BREAK AJIMENEZ-EXT.
******************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 = 4.
"ES EL ESTATUS 4 QUE ES EL QUE ESTA AUTORIZADO
IF sy-subrc = 0.
wa_datos-col_idciclo = wa_vwviaticos-idciclo.
* WA_DATOS-COL_NOMCICLO = WA_VWVIATICOS-NOMCICLO.
wa_datos-col_numemp = wa_vwviaticos-numemp+4(6).
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.
APPEND wa_datos TO it_datos.
ENDIF.
SORT IT_DATOS BY COL_NUMEMP.
ENDLOOP.
******************Se trae los clientes seleccionados*****************
**********ELIMINAR DATOS QUE NO TRAEN IMPORTE**********
*DELETE IT_DATOS WHERE COL_IMPORT = 0.
**********ELIMINAR DATOS QUE NO TRAEN IMPORTE**********
*********Traer datos duros*********
*Contador para la posicion e iniciar en 1
*BREAK AJIMENEZ-EXT.
******************ELIMINAR DUPLICADOS******************
*DELETE ADJACENT DUPLICATES FROM IT_DATOS.
******************ELIMINAR DUPLICADOS******************
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_vwviaticos-nomciclo = 'Ciclo 1'.
wa_datos-col_nomciclo = 'CICLO I'.
ELSEIF wa_vwviaticos-nomciclo = 'Ciclo 2'.
wa_datos-col_nomciclo = 'CICLO II'.
ELSEIF wa_vwviaticos-nomciclo = 'Ciclo 3'.
wa_datos-col_nomciclo = 'CICLO III'.
ELSEIF wa_vwviaticos-nomciclo = 'Ciclo 4'.
wa_datos-col_nomciclo = 'CICLO IV'.
ELSEIF wa_vwviaticos-nomciclo = 'Ciclo 5'.
wa_datos-col_nomciclo = 'CICLO V'.
ELSEIF wa_vwviaticos-nomciclo = 'Ciclo 6'.
wa_datos-col_nomciclo = 'CICLO VI'.
ELSEIF wa_vwviaticos-nomciclo = 'Ciclo 7'.
wa_datos-col_nomciclo = 'CICLO VII'.
ELSEIF wa_vwviaticos-nomciclo = 'Ciclo 8'.
wa_datos-col_nomciclo = 'CICLO VIII'.
ELSEIF wa_vwviaticos-nomciclo = 'Ciclo 9'.
wa_datos-col_nomciclo = 'CICLO IX'.
ELSEIF wa_vwviaticos-nomciclo = 'Ciclo 10'.
wa_datos-col_nomciclo = 'CICLO X'.
ELSEIF wa_vwviaticos-nomciclo = 'Ciclo 11'.
wa_datos-col_nomciclo = 'CICLO XI'.
ELSEIF wa_vwviaticos-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**********
*break ajimenez-ext.
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_NOMCICLO'.
fieldcatalog-seltext_m = 'Ciclo'.
fieldcatalog-col_pos = 2.
fieldcatalog-outputlen = '10'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_NUMEMP'.
fieldcatalog-seltext_m = 'Empleado'.
fieldcatalog-col_pos = 3.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_NOMBRE'.
fieldcatalog-seltext_m = 'Nombre'.
fieldcatalog-col_pos = 4.
fieldcatalog-outputlen = '20'.
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_CENTRO'.
fieldcatalog-seltext_m = 'Centro Coste'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_CLASE'.
fieldcatalog-seltext_m = 'Clase'.
fieldcatalog-col_pos = 8.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_CME_GAST'.
fieldcatalog-seltext_m = 'CME Gastos'.
fieldcatalog-col_pos = 9.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_CME_COMP'.
fieldcatalog-seltext_m = 'CME Comprobación'.
fieldcatalog-col_pos = 10.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_MONTO'.
fieldcatalog-seltext_m = 'Importe'.
fieldcatalog-col_pos = 11.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
fieldcatalog-do_sum = 'X'. "SE AGREGO PARA OBTENER E
L TOTAL
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_SUBTOTAL'.
fieldcatalog-seltext_m = 'Subtotal'.
fieldcatalog-col_pos = 12.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_IVA'.
fieldcatalog-seltext_m = 'IVA'.
fieldcatalog-col_pos = 13.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_TCUOTA'.
fieldcatalog-seltext_m = 'Porcentaje'.
fieldcatalog-col_pos = 14.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_PROPINA'.
fieldcatalog-seltext_m = 'Propina'.
fieldcatalog-col_pos = 15.
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 = 16.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_MONEDA'.
fieldcatalog-seltext_m = 'Moneda'.
fieldcatalog-col_pos = 17.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_INDIMP'.
fieldcatalog-seltext_m = 'Indicador Imp.'.
fieldcatalog-col_pos = 18.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_CTAMAYOR'.
fieldcatalog-seltext_m = 'Cta. Mayor'.
fieldcatalog-col_pos = 19.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_VENCE'.
fieldcatalog-seltext_m = 'Vence el'.
fieldcatalog-col_pos = 20.
fieldcatalog-outputlen = '20'.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COL_ESTATUS'.
fieldcatalog-seltext_m = 'Estatus'.
fieldcatalog-col_pos = 21.
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*************************
*Se agrego para el doble click
* w_events-name = 'USER_COMMAND'.
* w_events-form = 'USER_COMMAND'.
* append w_events to i_events.
* clear w_events.
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 bapi.
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
*Form para generar la bapi
FORM bapi.
PERFORM operaciones_bapi.
PERFORM fill_internal_tables.
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.
ENDFORM. "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 = 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 CUE
NTA'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 COM
ENTA PARA CUANDO SEA PARA PAGOS
it_accountgl-costcenter = '7501020300'. "PARA CUANDO ES PARA PAGOS
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 CA
B DOC 3'.
it_accountreceivable-sp_gl_ind = 'D'. "Indicador para cambiar la cla
ve 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