Advertisement
ezecasti18

Untitled

Aug 19th, 2022
1,437
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 59.83 KB | None | 0 0
  1. CLASS lcl_aplic_h DEFINITION INHERITING FROM lcl_aplic.
  2.   PUBLIC SECTION.
  3.     METHODS: "carga_textos_botones  REDEFINITION,
  4.              devolver_dynpro       REDEFINITION,
  5.              "buscar_tabla_de_boton REDEFINITION,
  6.              devolver_tipo_aplicativ REDEFINITION.
  7.  
  8.   PROTECTED SECTION.
  9. *   CABA IIBB - ARCIBA - Percepciones/Retenciones(TXT)
  10.     TYPES: BEGIN OF gty_data,
  11.       fecha       TYPE c LENGTH 8,
  12.       tipodoc     TYPE c LENGTH 2,
  13.       documento   TYPE c LENGTH 11,
  14.       tipocomp    TYPE c LENGTH 2,
  15.       letra       TYPE c LENGTH 1,
  16.       cod_lug_em  TYPE c LENGTH 4,
  17.       numero      TYPE c LENGTH 8,
  18.       base_calc   TYPE c LENGTH 15,
  19.       porc_ali    TYPE c LENGTH 6,
  20.       monto_pr    TYPE c LENGTH 15,
  21.   END OF gty_data.
  22.  
  23.     TYPES: BEGIN OF gty_retper,
  24.       tipodoc     TYPE c LENGTH 2,
  25.       documento   TYPE c LENGTH 11,
  26.       nombre      TYPE c LENGTH 40,
  27.       domicilio   TYPE c LENGTH 40,
  28.       calle_num   TYPE c LENGTH 5,
  29.       localidad   TYPE c LENGTH 15,
  30.       provincia   TYPE c LENGTH 15,
  31.       no_usado    TYPE c LENGTH 11,
  32.       c_postal    TYPE c LENGTH 8,
  33.    END OF gty_retper.
  34.  
  35.     TYPES: BEGIN OF gty_ncfact,
  36.        cod_lug_em_nc   TYPE c LENGTH 4,
  37.        num_nc          TYPE c LENGTH 8,
  38.        cod_lug_em_fac  TYPE c LENGTH 4,
  39.        num_fac         TYPE c LENGTH 8,
  40.        tipo_fac        TYPE c LENGTH 2,
  41.     END OF gty_ncfact.
  42.  
  43. *   CABA IIBB - ARCIBA - Percepciones (ALV)
  44.     TYPES: BEGIN OF gty_data1_t,
  45.                retper           TYPE char3,
  46.                bukrs            TYPE bkpf-bukrs,
  47.                belnr            TYPE bkpf-belnr,
  48.                gjahr            TYPE bkpf-gjahr,
  49.                tipo_nif         TYPE j_1atoid,
  50.                nif              TYPE stcd1,
  51.                name1            TYPE name1_gp,
  52.                tipo_doc         TYPE char2,
  53.                letra            TYPE char1,
  54.                cod_lug_em       TYPE char4,
  55.                xblnr            TYPE bkpf-xblnr,
  56.                bldat            TYPE bkpf-bldat,
  57.                hwbas            TYPE hwbas_bses,
  58.                qsatz            TYPE wt_qsatz,
  59.                wt_qbshh         TYPE wt_wt,
  60.       END OF gty_data1_t,
  61.  
  62.       BEGIN OF gty_data2_t,
  63.                retper           TYPE char3,
  64.                bukrs            TYPE bkpf-bukrs,
  65. *               belnr            TYPE bkpf-belnr,
  66. *               gjahr            TYPE bkpf-gjahr,
  67.                tipo_nif         TYPE j_1atoid,
  68.                nif              TYPE stcd1,
  69.                name1            TYPE name1_gp,
  70.                street           TYPE adrc-street,
  71.                str_num          TYPE adrc-house_num1,
  72.                ort01            TYPE ort01_gp,
  73.                regio            TYPE bezei20,
  74.                pstlz            TYPE pstlz,
  75.       END OF gty_data2_t,
  76.  
  77.       BEGIN OF gty_data3_t,
  78.                retper           TYPE char3,
  79.                bukrs            TYPE bkpf-bukrs,
  80.                belnr            TYPE bkpf-belnr,
  81.                gjahr            TYPE bkpf-gjahr,
  82.                tipo_nif         TYPE j_1atoid,
  83.                nif              TYPE stcd1,
  84.                name1            TYPE name1_gp,
  85.                cod_lug_em_nc    TYPE c LENGTH 4,
  86.                letra_nc         TYPE c LENGTH 1,
  87.                num_nc           TYPE c LENGTH 8,
  88.                doc_sap_fc       TYPE bkpf-belnr,
  89.                cod_lug_em_fac   TYPE c LENGTH 4,
  90.                letra_fc         TYPE c LENGTH 1,
  91.                num_fac          TYPE c LENGTH 8,
  92.                tipo_fac         TYPE c LENGTH 2,
  93.       END OF gty_data3_t.
  94.  
  95.     TYPES: BEGIN OF gty_data_t,
  96.                retper           TYPE char3,
  97.                bukrs            TYPE bkpf-bukrs,
  98.                belnr            TYPE bkpf-belnr,
  99.                gjahr            TYPE bkpf-gjahr,
  100.                bldat            TYPE bkpf-bldat,          "Fecha
  101.                stcdt_r          TYPE lfa1-stcdt,          "Tipo doc retenc.
  102.                stcdt_p          TYPE kna1-stcdt,          "Tipo doc percep.
  103.                stcd1_r          TYPE lfa1-stcd1,          "Doc. retenc.
  104.                stcd1_p          TYPE kna1-stcd1,          "Doc. percerp.
  105.                tipo_doc         TYPE char2,               "Tipo doc
  106.                letra            TYPE char1,               "Letra
  107.                cod_lug_em       TYPE char4,               "Cod.lugar emisión
  108.                xblnr            TYPE bkpf-xblnr,          "Numero
  109.                hwbas            TYPE bset-hwbas,          "Base calc.reten
  110.                wt_qsshh         TYPE with_item-wt_qsshh,  "Base calc.percep.
  111.                kbetr            TYPE bset-kbetr,          "Porcentaje
  112.                qsatz            TYPE t059z-qsatz,         "Alicuota
  113.                hwste            TYPE bset-hwste,          "Monto retenc.
  114.                wt_qbshh         TYPE with_item-wt_qbshh,  "Monto percep.
  115.                name1_r          TYPE lfa1-name1,          "Nombre ret
  116.                name1_p          TYPE kna1-name1,          "Nombre per
  117.                street_r         TYPE adrc-street,         "Calle
  118.                street_p         TYPE adrc-street,         "Calle
  119.                str_num_r        TYPE adrc-house_num1,     "Num.Calle
  120.                str_num_p        TYPE adrc-house_num1,     "Num.Calle
  121.                ort01_r          TYPE lfa1-ort01,          "Localidad ret
  122.                ort01_p          TYPE kna1-ort01,          "Localidad per
  123.                regio_r          TYPE t005u-bezei,         "Provincia ret
  124.                regio_p          TYPE t005u-bezei,         "Provincia per
  125.                pstlz_r          TYPE lfa1-pstlz,          "CP ret
  126.                pstlz_p          TYPE kna1-pstlz,          "CP per
  127.                cod_lug_em_nc    TYPE c LENGTH 4,
  128.                num_nc           TYPE c LENGTH 8,
  129.                cod_lug_em_fac   TYPE c LENGTH 4,
  130.                num_fac          TYPE c LENGTH 8,
  131.                tipo_fac         TYPE c LENGTH 2,
  132.              END OF gty_data_t.
  133.  
  134.     TYPES: BEGIN OF gty_retper_t,
  135.       stcdt_r         TYPE lfa1-stcdt,          "Tipo doc retenc.
  136.       stcdt_p         TYPE kna1-stcdt,          "Tipo doc percep.
  137.       stcd1_r         TYPE lfa1-stcd1,          "Doc. retenc.
  138.       stcd1_p         TYPE kna1-stcd1,          "Doc. percerp.
  139.       name1_r         TYPE lfa1-name1,          "Nombre ret
  140.       name1_p         TYPE kna1-name1,          "Nombre per
  141.       street_r        TYPE adrc-street,         "Calle
  142.       street_p        TYPE adrc-street,         "Calle
  143.       str_num_r       TYPE adrc-house_num1,     "Num.Calle
  144.       str_num_p       TYPE adrc-house_num1,     "Num.Calle
  145.       ort01_r         TYPE lfa1-ort01,          "Localidad ret
  146.       ort01_p         TYPE kna1-ort01,          "Localidad per
  147.       regio_r         TYPE t005u-bezei,         "Provincia ret
  148.       regio_p         TYPE t005u-bezei,         "Provincia per
  149.       pstlz_r         TYPE lfa1-pstlz,          "CP ret
  150.       pstlz_p         TYPE kna1-pstlz,          "CP per
  151.    END OF gty_retper_t.
  152.  
  153.     TYPES: BEGIN OF gty_ncfact_t,
  154.        cod_lug_em_nc   TYPE c LENGTH 4,
  155.        num_nc          TYPE c LENGTH 8,
  156.        cod_lug_em_fac  TYPE c LENGTH 4,
  157.        num_fac         TYPE c LENGTH 8,
  158.        tipo_fac        TYPE c LENGTH 2,
  159.     END OF gty_ncfact_t.
  160.  
  161.     TYPES: BEGIN OF gty_ncfact_t2,
  162.        cod_lug_em_nc   TYPE c LENGTH 4,
  163.        letra_nc        TYPE c LENGTH 1,
  164.        num_nc          TYPE c LENGTH 8,
  165.        doc_sap_fc      TYPE bkpf-belnr,
  166.        cod_lug_em_fac  TYPE c LENGTH 4,
  167.        letra_fc        TYPE c LENGTH 1,
  168.        num_fac         TYPE c LENGTH 8,
  169.        tipo_fac        TYPE c LENGTH 2,
  170.     END OF gty_ncfact_t2.
  171.  
  172. *   Tablas auxiliares
  173.     DATA: gt_zfi_af_cnv_cd2_t TYPE TABLE OF zfi_af_cnv_cd2_t,
  174.           gt_zfi_af_cnv_sib_t TYPE TABLE OF zfi_af_cnv_sib_t,
  175.           gt_zfi_af_cnv_siv_t TYPE TABLE OF zfi_af_cnv_siv_t,
  176.           gt_zfi_tuc_doc_ref  TYPE TABLE OF zfi_tuc_doc_ref.
  177.  
  178. *   Tablas de salida ALV para aplicativo
  179.     DATA: gt_caba_ret    TYPE TABLE OF gty_data_t,
  180.           gt_caba        TYPE TABLE OF gty_data_t,
  181.           gt_data1       TYPE TABLE OF gty_data1_t,
  182.           gt_data2       TYPE TABLE OF gty_data2_t,
  183.           gt_data3       TYPE TABLE OF gty_data3_t,
  184.           gt_retper      TYPE TABLE OF gty_retper_t,
  185.           gt_retper_t    TYPE TABLE OF gty_retper_t,
  186.           gt_ncfact      TYPE TABLE OF gty_ncfact_t,
  187.           gt_ncfact_t    TYPE TABLE OF gty_ncfact_t2.
  188.  
  189.     METHODS: necesita_zfi_af_cla_doc_t REDEFINITION,
  190.              necesita_zfi_af_cla_ope_t REDEFINITION,
  191.              obtener_tablas_conversion REDEFINITION,
  192.              armar_tabla_aplicativo_per REDEFINITION,
  193.              armar_tabla_aplicativo_ret REDEFINITION,
  194.              armar_archivo_salida REDEFINITION,
  195.              armar_fieldcat REDEFINITION,
  196.              asignar_tabla REDEFINITION,
  197.              tipo_impuesto REDEFINITION.
  198. ENDCLASS.                    "lcl_aplic_as DEFINITION
  199. *----------------------------------------------------------------------*
  200. *                                                                      *
  201. *                                                                      *
  202. *                          IMPLEMENTATIONS                             *
  203. *                                                                      *
  204. *                                                                      *
  205. *----------------------------------------------------------------------*
  206. *----------------------------------------------------------------------*
  207. *       CLASS lcl_aplic_h IMPLEMENTATION                               *
  208. *----------------------------------------------------------------------*
  209. *                                                                      *
  210. *----------------------------------------------------------------------*
  211. CLASS lcl_aplic_h IMPLEMENTATION.
  212. *----------------------------------------------------------------------*
  213. *      Method carga_textos_botones                                     *
  214. *----------------------------------------------------------------------*
  215. *      Carga textos en los botones                                     *
  216. *----------------------------------------------------------------------*
  217. *  METHOD carga_textos_botones.
  218. *    btn_as1 = 'Tipos de Cbtes'.
  219. *    btn_as2 = 'Tipos de Sit. frente a IIBB'.
  220. *    btn_as3 = 'Tipos de Sit. frente a IVA'.
  221. *  ENDMETHOD.                    "carga_textos_botones
  222. *----------------------------------------------------------------------*
  223. *      Method devolver_dynpro                                          *
  224. *----------------------------------------------------------------------*
  225. *      Devuelve la dynpro determinada por este aplicativo              *
  226. *----------------------------------------------------------------------*
  227.   METHOD devolver_dynpro.
  228.     r_lv_dynpro = '0119'.
  229.   ENDMETHOD.                    "devolver_pantalla
  230. *----------------------------------------------------------------------*
  231. *      Method buscar_tabla_de_boton                                    *
  232. *----------------------------------------------------------------------*
  233. *      Buscar tabla relacionada con el boton                           *
  234. *----------------------------------------------------------------------*
  235. *  METHOD buscar_tabla_de_boton.
  236. *    CASE i_lv_ucomm.
  237. *      WHEN 'BTN_AS1'.
  238. *        r_lv_tabla = 'ZFI_AF_CNV_CD2_T'.
  239. *      WHEN 'BTN_AS2'.
  240. *        r_lv_tabla = 'ZFI_AF_CNV_SIB_T'.
  241. *      WHEN 'BTN_AS3'.
  242. *        r_lv_tabla = 'ZFI_AF_CNV_SIV_T'.
  243. *    ENDCASE.
  244. *  ENDMETHOD.                    "buscar_tabla_de_boton
  245. *----------------------------------------------------------------------*
  246. *      Method devolver_tipo_aplicativ                                  *
  247. *----------------------------------------------------------------------*
  248. *      Devuelve el tipo de aplicativo, del objeto en particular        *
  249. *----------------------------------------------------------------------*
  250.   METHOD devolver_tipo_aplicativ.
  251.     r_lv_tipoaplic = 'AS'.
  252.   ENDMETHOD.                    "devolver_tipo_aplicativ
  253. *----------------------------------------------------------------------*
  254. *      Method necesita_ZFI_AF_CLA_DOC_T                                  *
  255. *----------------------------------------------------------------------*
  256. *      ¿Necesita entradas en la tabla ZFI_AF_CLA_DOC_T?                  *
  257. *----------------------------------------------------------------------*
  258.   METHOD necesita_zfi_af_cla_doc_t.
  259.     r_lv_necesita = abap_true.
  260.   ENDMETHOD.                    "necesita_ZFI_AF_CLA_DOC_T
  261. *----------------------------------------------------------------------*
  262. *      Method necesita_ZFI_AF_CLA_OPE_T                                  *
  263. *----------------------------------------------------------------------*
  264. *      ¿Necesita entradas en la ZFI_AF_CLA_OPE_T?                        *
  265. *----------------------------------------------------------------------*
  266.   METHOD necesita_zfi_af_cla_ope_t.
  267.     r_lv_necesita = abap_true.
  268.   ENDMETHOD.                    "necesita_ZFI_AF_CLA_OPE_T
  269. *----------------------------------------------------------------------*
  270. *      Method obtener_tablas_conversion                                *
  271. *----------------------------------------------------------------------*
  272. *      Obtener tablas de conversion por aplicativo en particular       *
  273. *----------------------------------------------------------------------*
  274.   METHOD obtener_tablas_conversion.
  275.     r_lv_ok = abap_true.
  276.  
  277. *   Conversión tipo de comprobante.
  278.     SELECT * FROM zfi_af_cnv_cd2_t INTO TABLE gt_zfi_af_cnv_cd2_t.
  279.  
  280. *   Conversion tipo de situaciones frente a IIBB
  281.     SELECT * FROM zfi_af_cnv_sib_t INTO TABLE gt_zfi_af_cnv_sib_t.
  282.  
  283. *   Conversion tipo de situaciones frente a IVA
  284.     SELECT * FROM zfi_af_cnv_siv_t INTO TABLE gt_zfi_af_cnv_siv_t.
  285.  
  286. *   Clase de documentos FI (BLART) que van a utilizar número de documento en vez de XBLNR
  287.     SELECT * FROM zfi_tuc_doc_ref  INTO TABLE gt_zfi_tuc_doc_ref.
  288.  
  289.   ENDMETHOD.                    "obtener_tablas_conversion
  290. *----------------------------------------------------------------------*
  291. *      Method armar_tabla_aplicativo_per                               *
  292. *----------------------------------------------------------------------*
  293.   METHOD armar_tabla_aplicativo_per.
  294.     DATA: t_bseg_nc         TYPE STANDARD TABLE OF bseg,
  295.           ls_reg_alv        TYPE gty_data_t,
  296.           ls_ret_per        TYPE gty_retper_t,
  297.           ls_ncfact         TYPE gty_ncfact_t2,
  298.           ls_bkpf           TYPE bkpf,
  299.           ls_bseg           TYPE bseg,
  300.           ls_bseg_nc        TYPE bseg,
  301.           ls_bseg_k_d       TYPE bseg,
  302.           ls_zfi_af_cnv_cd2_t TYPE zfi_af_cnv_cd2_t,
  303.           ls_zfi_af_cnv_sib_t TYPE zfi_af_cnv_sib_t,
  304.           ls_zfi_af_cnv_siv_t TYPE zfi_af_cnv_siv_t,
  305.           ls_zfi_tuc_doc_ref TYPE zfi_tuc_doc_ref,
  306.           lv_stcd1          TYPE kna1-stcd1,
  307.           lv_stcd2          TYPE kna1-stcd2,
  308.           lv_stcdt          TYPE kna1-stcdt,
  309.           lv_name1          TYPE kna1-name1,
  310.           lv_fityp          TYPE kna1-fityp,
  311.           lv_regio          TYPE kna1-regio,
  312.           lv_stras          TYPE kna1-stras,
  313.           lv_telf1          TYPE kna1-telf1,
  314.           lv_pstlz          TYPE kna1-pstlz,
  315.           lv_ort01          TYPE kna1-ort01,
  316.           lv_mcod3          TYPE kna1-mcod3,
  317.           lv_adrnr          TYPE kna1-adrnr,
  318.           lv_gridt          TYPE knb1-gridt,
  319.           lv_len            TYPE i,
  320.           lv_xblnr          TYPE xblnr.
  321.  
  322.     TYPES: BEGIN OF lty_bset,
  323.              bukrs TYPE bset-bukrs,
  324.              belnr TYPE bset-belnr,
  325.              gjahr TYPE bset-gjahr,
  326.              ktosl TYPE bset-ktosl,
  327.              hwbas TYPE bset-hwbas,
  328.              hwste TYPE bset-hwste,
  329.              fwbas TYPE bset-fwbas,
  330.              fwste TYPE bset-fwste,
  331.              kbetr TYPE bset-kbetr,
  332.            END OF lty_bset.
  333.  
  334.     DATA: lt_bset     TYPE TABLE OF lty_bset,
  335.           ls_bset     TYPE lty_bset,
  336.           ls_gs_bset  TYPE bset.
  337.  
  338.     DATA: lv_nrocomp_aux TYPE string,
  339.           wa_asoc        TYPE bkpf,
  340.           lv_ktosl       TYPE ktosl.
  341.  
  342.     " Buscamos la clave de operación correspondiente a percepciones.
  343.  
  344.     SELECT SINGLE ktosl
  345.     INTO lv_ktosl
  346.     FROM zfi_af_cla_ope_t
  347.     WHERE tapli = 'PR'.
  348.  
  349.     LOOP AT gt_bset INTO ls_gs_bset.
  350.       MOVE-CORRESPONDING ls_gs_bset TO ls_bset.
  351.       COLLECT ls_bset INTO lt_bset.
  352.     ENDLOOP.
  353.  
  354. *   Analizo los documentos obtenidos
  355.     LOOP AT gt_bkpf INTO ls_bkpf.
  356.  
  357. *     Analizo las posiciones del documento
  358.       LOOP AT gt_bseg INTO ls_bseg WHERE     bukrs EQ ls_bkpf-bukrs
  359.                                          AND belnr EQ ls_bkpf-belnr
  360.                                          AND gjahr EQ ls_bkpf-gjahr.
  361.         CLEAR ls_reg_alv.
  362.  
  363.         READ TABLE lt_bset INTO ls_bset WITH KEY bukrs = ls_bkpf-bukrs
  364.                                                  belnr = ls_bkpf-belnr
  365.                                                  gjahr = ls_bkpf-gjahr
  366.                                                  ktosl = lv_ktosl.
  367.         "verifico si el doc tiene percepciones
  368.         CHECK sy-subrc EQ 0.
  369.  
  370. *       Busco el registro de BSEG correspondiente al proveedor/cliente
  371.         READ TABLE gt_bseg_k_d INTO ls_bseg_k_d WITH KEY bukrs = ls_bkpf-bukrs
  372.                                                          belnr = ls_bkpf-belnr
  373.                                                          gjahr = ls_bkpf-gjahr.
  374.  
  375. *       Obtener correctamente los datos del proveedor o del cliente segun corresponda
  376.         CALL METHOD obtener_datos_prov_clie( EXPORTING i_lv_bukrs = ls_bkpf-bukrs
  377.                                                        i_lv_belnr = ls_bkpf-belnr
  378.                                                        i_lv_gjahr = ls_bkpf-gjahr
  379.                                                        i_lv_koart = ls_bseg_k_d-koart
  380.                                                        i_lv_lifnr = ls_bseg_k_d-lifnr
  381.                                                        i_lv_kunnr = ls_bseg_k_d-kunnr
  382.                                              CHANGING  c_lv_stcd1 = lv_stcd1
  383.                                                        c_lv_stcd2 = lv_stcd2
  384.                                                        c_lv_stcdt = lv_stcdt
  385.                                                        c_lv_name1 = lv_name1
  386.                                                        c_lv_fityp = lv_fityp
  387.                                                        c_lv_regio = lv_regio
  388.                                                        c_lv_stras = lv_stras
  389.                                                        c_lv_telf1 = lv_telf1
  390.                                                        c_lv_pstlz = lv_pstlz
  391.                                                        c_lv_ort01 = lv_ort01
  392.                                                        c_lv_mcod3 = lv_mcod3
  393.                                                        c_lv_adrnr = lv_adrnr
  394.                                                        c_lv_gridt = lv_gridt ).
  395.  
  396. * Datos globales:
  397.  
  398.         vg_retper = 'PER'.
  399.  
  400.         ls_reg_alv-retper = 'PER'.
  401.  
  402.         ls_reg_alv-bukrs = ls_bkpf-bukrs.
  403.  
  404.         ls_reg_alv-belnr = ls_bkpf-belnr.
  405.  
  406.         ls_reg_alv-gjahr = ls_bkpf-gjahr.
  407.  
  408. *       Fecha
  409.         ls_reg_alv-bldat = ls_bkpf-bldat.
  410.  
  411. *       Tipo Doc
  412.         ls_reg_alv-stcdt_p = lv_stcdt.
  413.  
  414. *       Documento
  415.         ls_reg_alv-stcd1_p = lv_stcd1.
  416.  
  417.         " Disclaimer:
  418.         " Por definición funcional, los pagos van a tomar el numero de documento interno
  419.         " de SAP y no el XBLNR, también el tipo de documento va a ser de 99 (otros documentos)
  420.  
  421.         READ TABLE gt_zfi_tuc_doc_ref INTO ls_zfi_tuc_doc_ref WITH KEY blart = ls_bkpf-blart.
  422.  
  423.         IF sy-subrc EQ 0.
  424.           CONCATENATE ls_bkpf-belnr(2) ls_bkpf-belnr+4 INTO lv_xblnr.
  425.           ls_reg_alv-xblnr = lv_xblnr.
  426.           ls_reg_alv-tipo_doc = 99.
  427.           CLEAR lv_xblnr.
  428.         ELSE.
  429.           IF ls_bkpf-xblnr NE space.
  430. *           Letra de comprobante
  431.             lv_nrocomp_aux = ls_bkpf-xblnr+13(1).
  432.             IF lv_nrocomp_aux IS INITIAL.
  433.               ls_reg_alv-letra = ls_bkpf-xblnr+4(1).
  434.             ELSE.
  435.               ls_reg_alv-letra = ls_bkpf-xblnr+5(1).
  436.             ENDIF.
  437. *           Cod.lugar emisión
  438.             IF lv_nrocomp_aux IS INITIAL.
  439.               ls_reg_alv-cod_lug_em = ls_bkpf-xblnr(4).
  440.             ELSE.
  441.               ls_reg_alv-cod_lug_em = ls_bkpf-xblnr+1(4).
  442.             ENDIF.
  443. *           Número del comprobante
  444.             IF lv_nrocomp_aux IS INITIAL.
  445.               ls_reg_alv-xblnr = ls_bkpf-xblnr+5(8).
  446.             ELSE.
  447.               ls_reg_alv-xblnr = ls_bkpf-xblnr+6(8).
  448.             ENDIF.
  449.           ENDIF.
  450.         ENDIF.
  451.  
  452. *       Base cálculo
  453.         ls_reg_alv-hwbas = ls_bset-hwbas.
  454. *       Porcentaje
  455.         ls_reg_alv-kbetr = ls_bset-kbetr / 10.
  456. *       Monto
  457.         ls_reg_alv-hwste = ls_bset-hwste.
  458.  
  459. *       Tipo de Comprobante:
  460.         READ TABLE gt_zfi_af_cnv_cd2_t INTO ls_zfi_af_cnv_cd2_t WITH KEY blart = ls_bkpf-blart
  461.                                                                          letra = ls_reg_alv-letra.
  462.         IF sy-subrc = 0.
  463.  
  464.           lv_len = STRLEN( ls_zfi_af_cnv_cd2_t-cnvc2 ).
  465.  
  466.           CASE lv_len. "Por definición funcional, si un tipo de comprobante tiene 3 caracteres, se toman los dos últimos.
  467.             WHEN 2.
  468.               ls_reg_alv-tipo_doc = ls_zfi_af_cnv_cd2_t-cnvc2.
  469.             WHEN 3.
  470.               ls_reg_alv-tipo_doc = ls_zfi_af_cnv_cd2_t-cnvc2+1(2).
  471.           ENDCASE.
  472.  
  473.           CLEAR lv_len.
  474.  
  475.         ENDIF.
  476.  
  477.         COLLECT ls_reg_alv INTO gt_caba.
  478.  
  479. * Segundo fichero:
  480.  
  481. *       Tipo Doc
  482.         ls_ret_per-stcdt_p = lv_stcdt.
  483.  
  484. *       Documento
  485.         ls_ret_per-stcd1_p = lv_stcd1.
  486.  
  487. *       Nombre
  488.         ls_ret_per-name1_p = lv_name1.
  489.  
  490. *       Calle y num
  491.  
  492.         SELECT SINGLE street house_num1
  493.           FROM adrc
  494.           INTO (ls_ret_per-street_p , ls_ret_per-str_num_p)
  495.           WHERE addrnumber = lv_adrnr.
  496.  
  497. *       Localidad
  498.         ls_ret_per-ort01_p = lv_ort01.
  499.  
  500. *       Provincia
  501.  
  502.         SELECT SINGLE bezei
  503.           FROM t005u
  504.           INTO ls_ret_per-regio_p
  505.           WHERE spras = sy-langu AND
  506.                 land1 = 'AR'     AND
  507.                 bland = lv_regio.
  508.  
  509. *       Codigo postal
  510.         ls_ret_per-pstlz_p = lv_pstlz.
  511.  
  512.         COLLECT ls_ret_per INTO gt_retper_t.
  513.  
  514. * Tercer Archivo:
  515.  
  516.         REFRESH t_bseg_nc.
  517.         CLEAR: t_bseg_nc,
  518.                ls_bseg_nc.
  519.  
  520.         IF ls_bkpf-blart EQ 'DJ' OR
  521.            ls_bkpf-blart EQ 'Z3' OR
  522.            ls_bkpf-blart EQ 'ZC' OR
  523.            ls_bkpf-blart EQ 'ZG'.
  524.  
  525.           SELECT *
  526.             FROM bseg
  527.             INTO TABLE t_bseg_nc
  528.             WHERE bukrs = ls_bkpf-bukrs AND
  529.                   belnr = ls_bkpf-belnr AND
  530.                   gjahr = ls_bkpf-gjahr AND
  531.                   bschl = '11'.
  532.         ENDIF.
  533.  
  534.         LOOP AT t_bseg_nc INTO ls_bseg_nc.
  535.  
  536.           IF ls_bseg_nc-bschl EQ '11' AND ls_bseg_nc-rebzg IS NOT INITIAL.
  537.  
  538.             SELECT SINGLE *
  539.               FROM bkpf
  540.               INTO wa_asoc
  541.               WHERE belnr = ls_bseg_nc-rebzg
  542.                AND  bukrs = ls_bseg_nc-bukrs
  543.                AND  gjahr = ls_bseg_nc-rebzj.
  544.  
  545.             IF sy-subrc EQ 0.
  546.  
  547. *          Cod.lugar emisión fact.
  548.               lv_nrocomp_aux = wa_asoc-xblnr+13(1).
  549.               IF lv_nrocomp_aux IS INITIAL.
  550.                 ls_ncfact-cod_lug_em_fac = wa_asoc-xblnr(4).
  551.               ELSE.
  552.                 ls_ncfact-cod_lug_em_fac = wa_asoc-xblnr+1(4).
  553.               ENDIF.
  554.  
  555. *          Numero fact.
  556.               lv_nrocomp_aux = wa_asoc-xblnr+13(1).
  557.               IF lv_nrocomp_aux IS INITIAL.
  558.                 ls_ncfact-num_fac = wa_asoc-xblnr+5(8).
  559.               ELSE.
  560.                 ls_ncfact-num_fac = wa_asoc-xblnr+6(8).
  561.               ENDIF.
  562.             ENDIF.
  563.  
  564. *           Letra fact.
  565.             IF lv_nrocomp_aux IS INITIAL.
  566.               ls_ncfact-letra_fc = wa_asoc-xblnr+4(1).
  567.             ELSE.
  568.               ls_ncfact-letra_fc = wa_asoc-xblnr+5(1).
  569.             ENDIF.
  570.  
  571. *         Cod.lugar emisión NC
  572.             IF lv_nrocomp_aux IS INITIAL.
  573.               ls_ncfact-cod_lug_em_nc = ls_bkpf-xblnr(4).
  574.             ELSE.
  575.               ls_ncfact-cod_lug_em_nc = ls_bkpf-xblnr+1(4).
  576.             ENDIF.
  577.  
  578. *           Letra NC
  579.             IF lv_nrocomp_aux IS INITIAL.
  580.               ls_ncfact-letra_nc = ls_bkpf-xblnr+4(1).
  581.             ELSE.
  582.               ls_ncfact-letra_nc = ls_bkpf-xblnr+5(1).
  583.             ENDIF.
  584.  
  585. *         Número del comprobante NC
  586.             IF lv_nrocomp_aux IS INITIAL.
  587.               ls_ncfact-num_nc = ls_bkpf-xblnr+5(8).
  588.             ELSE.
  589.               ls_ncfact-num_nc = ls_bkpf-xblnr+6(8).
  590.             ENDIF.
  591.  
  592. *          Documento SAP FC
  593.  
  594.             ls_ncfact-doc_sap_fc = wa_asoc-belnr.
  595.  
  596. *       Tipo de Factura:
  597.             READ TABLE gt_zfi_af_cnv_cd2_t INTO ls_zfi_af_cnv_cd2_t WITH KEY blart = wa_asoc-blart
  598.                                                                              letra = ls_reg_alv-letra.
  599.             IF sy-subrc = 0.
  600.  
  601.               lv_len = STRLEN( ls_zfi_af_cnv_cd2_t-cnvc2 ).
  602.  
  603.               CASE lv_len. "Por definición funcional, si un tipo de comprobante tiene 3 caracteres, se toman los dos últimos.
  604.                 WHEN 2.
  605.                   ls_ncfact-tipo_fac = ls_zfi_af_cnv_cd2_t-cnvc2.
  606.                 WHEN 3.
  607.                   ls_ncfact-tipo_fac = ls_zfi_af_cnv_cd2_t-cnvc2+1(2).
  608.               ENDCASE.
  609.  
  610.               CLEAR lv_len.
  611.             ENDIF.
  612.  
  613.  
  614.             APPEND ls_ncfact TO gt_ncfact_t.
  615.  
  616.           ENDIF.
  617.         ENDLOOP.
  618.  
  619.  
  620.       ENDLOOP.
  621.     ENDLOOP.
  622.  
  623.   ENDMETHOD.                    "armar_tabla_aplicativo_per
  624. *----------------------------------------------------------------------*
  625. *      Method armar_tabla_aplicativo_ret                               *
  626. *----------------------------------------------------------------------*
  627.   METHOD armar_tabla_aplicativo_ret.
  628.  
  629.     TYPES:
  630.     BEGIN OF ty_fact,
  631.       belnr   TYPE bseg-belnr,
  632.       buzei   TYPE bseg-buzei,
  633.       augbl   TYPE bseg-augbl,
  634.       xblnr   TYPE bkpf-xblnr,
  635.       del     TYPE c LENGTH 1,
  636.     END   OF ty_fact,
  637.     ty_t_fact TYPE STANDARD TABLE OF ty_fact,
  638.  
  639.     BEGIN OF ty_bset_fact,
  640.       belnr TYPE bset-belnr,
  641.       buzei TYPE bset-buzei,
  642.       fwste TYPE bset-fwste,
  643.     END   OF ty_bset_fact,
  644.     ty_t_bset_fact TYPE STANDARD TABLE OF ty_bset_fact,
  645.  
  646.     BEGIN OF ty_bkpf_fact,
  647.       belnr TYPE bkpf-belnr,
  648.       xblnr TYPE bkpf-xblnr,
  649.     END   OF ty_bkpf_fact,
  650.     ty_t_bkpf_fact TYPE STANDARD TABLE OF ty_bkpf_fact,
  651.  
  652.  
  653.     BEGIN OF ty_iva,
  654.       belnr      TYPE bseg-belnr,
  655.       xblnr_fact TYPE bkpf-xblnr,
  656.       fwste      TYPE bset-fwste,
  657.     END   OF ty_iva,
  658.     ty_t_iva TYPE STANDARD TABLE OF ty_iva.
  659.  
  660.     DATA:
  661.      ls_reg_alv        TYPE gty_data_t,
  662.      ls_reg_txt        TYPE gty_data,
  663.      ls_ret_per        TYPE gty_retper_t,
  664.      ls_bkpf           TYPE bkpf,
  665.      ls_bseg_k_d       TYPE bseg,
  666.      ls_with_item      TYPE with_item,
  667.      ls_zfi_af_cnv_cd2_t TYPE zfi_af_cnv_cd2_t,
  668.      ls_zfi_af_cnv_sib_t TYPE zfi_af_cnv_sib_t,
  669.      ls_zfi_af_cnv_siv_t TYPE zfi_af_cnv_siv_t,
  670.      ls_zfi_tuc_doc_ref TYPE zfi_tuc_doc_ref,
  671.      lv_stcd1          TYPE kna1-stcd1,
  672.      lv_stcd2          TYPE kna1-stcd2,
  673.      lv_stcdt          TYPE kna1-stcdt,
  674.      lv_name1          TYPE kna1-name1,
  675.      lv_fityp          TYPE kna1-fityp,
  676.      lv_regio          TYPE kna1-regio,
  677.      lv_stras          TYPE kna1-stras,
  678.      lv_telf1          TYPE kna1-telf1,
  679.      lv_pstlz          TYPE kna1-pstlz,
  680.      lv_ort01          TYPE kna1-ort01,
  681.      lv_mcod3          TYPE kna1-mcod3,
  682.      lv_adrnr          TYPE kna1-adrnr,
  683.      lv_gridt          TYPE knb1-gridt,
  684.      ls_archivo        TYPE gty_archivo,
  685.      wa_asoc           TYPE bkpf,
  686.      ls_ncfact         LIKE LINE OF gt_ncfact_t,
  687.      lv_len            TYPE i,
  688.      lv_xblnr          TYPE xblnr,
  689.      lv_exemption      TYPE wt_exrt.
  690.  
  691.     DATA:
  692.      lt_fact            TYPE ty_t_fact,
  693.      lt_bset_fact       TYPE ty_t_bset_fact,
  694.      lt_iva             TYPE ty_t_iva,
  695.      ls_iva             TYPE ty_iva,
  696.      lt_bkpf_fact       TYPE ty_t_bkpf_fact,
  697.      lt_bkpf_fact_pago  TYPE ty_t_bkpf_fact,
  698.      ls_bkpf_fact_pago  TYPE ty_bkpf_fact,
  699.      lv_iva             TYPE ty_iva-fwste,
  700.      lv_xblnr_fact      TYPE ty_iva-xblnr_fact,
  701.      lt_aux_fact        LIKE lt_fact,
  702.      lv_nrocomp_aux     TYPE c LENGTH 12,
  703.      lt_r_belnr         TYPE RANGE OF bseg-belnr,
  704.      ls_r_belnr         LIKE LINE OF lt_r_belnr.
  705.  
  706.     DATA: vl_tabix TYPE sy-tabix.
  707.     DATA: vl_alicu TYPE c.
  708.     DATA lv_aux    TYPE /bev3/chumnet.
  709.     DATA lv_aux_2  TYPE /bev3/chumnet.
  710.     DATA lv_dif    TYPE /bev3/chumnet.
  711.  
  712.     FIELD-SYMBOLS:
  713.      <fs_bkpf> TYPE bkpf,
  714.      <fs_fact> TYPE ty_fact,
  715.      <fs_bset_fact> TYPE ty_bset_fact,
  716.      <fs_bkpf_fact> TYPE ty_bkpf_fact,
  717.      <fs_bkpf_fact_pago> TYPE ty_bkpf_fact,
  718.      <fs_iva>  TYPE ty_iva.
  719.  
  720. *   Range documentos pago
  721.     ls_r_belnr-sign = 'I'.
  722.     ls_r_belnr-option = 'EQ'.
  723.     LOOP AT gt_bkpf ASSIGNING <fs_bkpf>.
  724.       ls_r_belnr-low = <fs_bkpf>-belnr.
  725.       APPEND ls_r_belnr TO lt_r_belnr.
  726.     ENDLOOP.
  727.  
  728. *   Facturas asociadas a los pagos
  729.     SELECT belnr
  730.            buzei
  731.            augbl
  732.       FROM bseg
  733.       INTO TABLE lt_fact
  734.       WHERE bukrs = p_bukrs   AND
  735.             gjahr IN so_gjahr AND
  736.             augbl IN lt_r_belnr.
  737.  
  738.     LOOP AT lt_fact ASSIGNING <fs_fact>.
  739.       IF <fs_fact>-belnr EQ <fs_fact>-augbl.
  740.         <fs_fact>-del = 'X'.
  741.       ENDIF.
  742.     ENDLOOP.
  743.     DELETE lt_fact WHERE del = 'X'.
  744.     SORT lt_fact BY belnr buzei augbl.
  745.  
  746.     IF lt_fact[] IS NOT INITIAL.
  747.  
  748.       lt_aux_fact = lt_fact.
  749.       SORT lt_aux_fact BY belnr.
  750.       DELETE ADJACENT DUPLICATES FROM lt_aux_fact COMPARING belnr.
  751.  
  752. *     Info BKPF facturas
  753.       SELECT belnr
  754.              xblnr
  755.         FROM bkpf
  756.         INTO TABLE lt_bkpf_fact
  757.         FOR ALL ENTRIES IN lt_aux_fact
  758.         WHERE bukrs = p_bukrs   AND
  759.               gjahr IN so_gjahr AND
  760.               belnr = lt_aux_fact-belnr.
  761.  
  762. *     Info BSET facturas
  763.       SELECT belnr
  764.              buzei
  765.              fwste
  766.         FROM bset
  767.         INTO TABLE lt_bset_fact
  768.         FOR ALL ENTRIES IN lt_fact
  769.         WHERE bukrs = p_bukrs AND
  770.               belnr = lt_fact-belnr AND
  771.               gjahr IN so_gjahr     AND
  772.               buzei = lt_fact-buzei AND
  773.               ktosl = 'VST'.
  774.  
  775.       SORT lt_fact BY augbl belnr buzei.
  776.  
  777. *     IVA para el doc de pago
  778.       LOOP AT lt_fact ASSIGNING <fs_fact>.
  779.         ls_iva-belnr      = <fs_fact>-augbl.
  780.         ls_iva-fwste = 0.
  781.         LOOP AT lt_bset_fact ASSIGNING <fs_bset_fact>
  782.           WHERE belnr = <fs_fact>-belnr AND
  783.                 buzei = <fs_fact>-buzei.
  784.  
  785.           ls_iva-fwste = ls_iva-fwste + <fs_bset_fact>-fwste.
  786.  
  787.         ENDLOOP.
  788.         COLLECT ls_iva INTO lt_iva.
  789.  
  790. *     XBLNR de la factura
  791.         ls_bkpf_fact_pago-belnr = <fs_fact>-augbl. "Nro Pago
  792.         READ TABLE lt_bkpf_fact
  793.           ASSIGNING <fs_bkpf_fact>
  794.           WITH KEY belnr = <fs_fact>-belnr
  795.           BINARY SEARCH.
  796.         IF sy-subrc EQ 0.
  797.           ls_bkpf_fact_pago-xblnr = <fs_bkpf_fact>-xblnr.
  798.         ENDIF.
  799.         APPEND ls_bkpf_fact_pago TO lt_bkpf_fact_pago.
  800.  
  801.       ENDLOOP.
  802.  
  803.       SORT lt_bkpf_fact_pago BY belnr.
  804.       DELETE ADJACENT DUPLICATES FROM lt_bkpf_fact_pago COMPARING belnr.
  805.  
  806.     ENDIF.
  807.  
  808. *   Analizo los documentos obtenidos
  809.     LOOP AT gt_bkpf INTO ls_bkpf.
  810.  
  811.       CLEAR gt_with_item2[].
  812.       LOOP AT gt_with_item INTO ls_with_item WHERE bukrs = ls_bkpf-bukrs
  813.                                                AND belnr = ls_bkpf-belnr
  814.                                                AND gjahr = ls_bkpf-gjahr.
  815.         APPEND ls_with_item TO gt_with_item2.
  816.       ENDLOOP.
  817.       CLEAR vl_alicu.
  818.       DESCRIBE TABLE gt_with_item2 LINES vl_tabix.
  819.  
  820.  
  821.       LOOP AT gt_with_item INTO ls_with_item WHERE     bukrs = ls_bkpf-bukrs
  822.                                                    AND belnr = ls_bkpf-belnr
  823.                                                    AND gjahr = ls_bkpf-gjahr.
  824.  
  825.         CLEAR ls_reg_alv.
  826.  
  827. *       Busco el registro de BSEG correspondiente al proveedor/cliente
  828.         READ TABLE gt_bseg_k_d INTO ls_bseg_k_d WITH KEY bukrs = ls_bkpf-bukrs
  829.                                                          belnr = ls_bkpf-belnr
  830.                                                          gjahr = ls_bkpf-gjahr.
  831.         CHECK sy-subrc EQ 0.
  832. *       Obtener correctamente los datos del proveedor o del cliente segun corresponda
  833.         CALL METHOD obtener_datos_prov_clie( EXPORTING i_lv_bukrs = ls_bkpf-bukrs
  834.                                                        i_lv_belnr = ls_bkpf-belnr
  835.                                                        i_lv_gjahr = ls_bkpf-gjahr
  836.                                                        i_lv_koart = ls_bseg_k_d-koart
  837.                                                        i_lv_lifnr = ls_bseg_k_d-lifnr
  838.                                                        i_lv_kunnr = ls_bseg_k_d-kunnr
  839.                                              CHANGING  c_lv_stcd1 = lv_stcd1
  840.                                                        c_lv_stcd2 = lv_stcd2
  841.                                                        c_lv_stcdt = lv_stcdt
  842.                                                        c_lv_name1 = lv_name1
  843.                                                        c_lv_regio = lv_regio
  844.                                                        c_lv_stras = lv_stras
  845.                                                        c_lv_telf1 = lv_telf1
  846.                                                        c_lv_pstlz = lv_pstlz
  847.                                                        c_lv_ort01 = lv_ort01
  848.                                                        c_lv_mcod3 = lv_mcod3
  849.                                                        c_lv_adrnr = lv_adrnr
  850.                                                        c_lv_fityp = lv_fityp
  851.                                                        c_lv_gridt = lv_gridt ).
  852.  
  853. * Datos globales:
  854.  
  855.         vg_retper = 'RET'.
  856.  
  857.         ls_reg_alv-retper = 'RET'.
  858.  
  859.         ls_reg_alv-bukrs = ls_bkpf-bukrs.
  860.  
  861.         ls_reg_alv-belnr = ls_bkpf-belnr.
  862.  
  863.         ls_reg_alv-gjahr = ls_bkpf-gjahr.
  864.  
  865. *       Fecha
  866.         ls_reg_alv-bldat = ls_bkpf-bldat.
  867.  
  868. *       Tipo Doc
  869.         ls_reg_alv-stcdt_r = lv_stcdt.
  870.  
  871. *       Documento
  872.         ls_reg_alv-stcd1_r = lv_stcd1.
  873.  
  874.         " Disclaimer:
  875.         " Por definición funcional, los pagos van a tomar el numero de documento interno
  876.         " de SAP y no el XBLNR, también el tipo de documento va a ser de 99 (otros documentos)
  877.  
  878.         READ TABLE gt_zfi_tuc_doc_ref INTO ls_zfi_tuc_doc_ref WITH KEY blart = ls_bkpf-blart.
  879.  
  880.         IF sy-subrc EQ 0.
  881.           CONCATENATE ls_bkpf-belnr(2) ls_bkpf-belnr+4 INTO lv_xblnr.
  882.           ls_reg_alv-xblnr = lv_xblnr.
  883.           ls_reg_alv-tipo_doc = 99.
  884.           CLEAR lv_xblnr.
  885.         ELSE.
  886.           IF ls_bkpf-xblnr NE space.
  887. *           Letra de comprobante
  888.             lv_nrocomp_aux = ls_bkpf-xblnr+13(1).
  889.             IF lv_nrocomp_aux IS INITIAL.
  890.               ls_reg_alv-letra = ls_bkpf-xblnr+4(1).
  891.             ELSE.
  892.               ls_reg_alv-letra = ls_bkpf-xblnr+5(1).
  893.             ENDIF.
  894. *           Cod.lugar emisión
  895.             IF lv_nrocomp_aux IS INITIAL.
  896.               ls_reg_alv-cod_lug_em = ls_bkpf-xblnr(4).
  897.             ELSE.
  898.               ls_reg_alv-cod_lug_em = ls_bkpf-xblnr+1(4).
  899.             ENDIF.
  900. *           Número del comprobante
  901.             IF lv_nrocomp_aux IS INITIAL.
  902.               ls_reg_alv-xblnr = ls_bkpf-xblnr+5(8).
  903.             ELSE.
  904.               ls_reg_alv-xblnr = ls_bkpf-xblnr+6(8).
  905.             ENDIF.
  906.           ENDIF.
  907.         ENDIF.
  908.  
  909. *       Base cálculo
  910.         ls_reg_alv-wt_qsshh = ls_with_item-wt_qsshh.
  911.  
  912. *       Alicuota
  913.  
  914.         IF ls_with_item-wt_qszrt IS INITIAL.
  915.           ls_reg_alv-qsatz = ls_with_item-qsatz.
  916.         ELSE.
  917.           lv_exemption = ls_with_item-wt_qszrt / 100. " Aplicamos el porcentaje de exención a la alícuota
  918.           ls_reg_alv-qsatz = ls_with_item-qsatz * ( 1 - lv_exemption ).
  919.         ENDIF.
  920.  
  921.  
  922. *       Monto
  923.         ls_reg_alv-wt_qbshh = ls_with_item-wt_qbshh.
  924.  
  925. *       Tipo de Comprobante:
  926.         READ TABLE gt_zfi_af_cnv_cd2_t INTO ls_zfi_af_cnv_cd2_t WITH KEY blart = ls_bkpf-blart
  927.                                                                          letra = ls_reg_alv-letra.
  928.         IF sy-subrc = 0.
  929.  
  930.           lv_len = STRLEN( ls_zfi_af_cnv_cd2_t-cnvc2 ).
  931.  
  932.           CASE lv_len. "Por definición funcional, si un tipo de comprobante tiene 3 caracteres, se toman los dos últimos.
  933.             WHEN 2.
  934.               ls_reg_alv-tipo_doc = ls_zfi_af_cnv_cd2_t-cnvc2.
  935.             WHEN 3.
  936.               ls_reg_alv-tipo_doc = ls_zfi_af_cnv_cd2_t-cnvc2+1(2).
  937.           ENDCASE.
  938.  
  939.           CLEAR lv_len.
  940.  
  941.         ENDIF.
  942.  
  943.         COLLECT ls_reg_alv INTO gt_caba_ret.
  944.  
  945. * Segundo fichero:
  946.  
  947. *       Tipo Doc
  948.         ls_ret_per-stcdt_r = lv_stcdt.
  949.  
  950. *       Documento
  951.         ls_ret_per-stcd1_r = lv_stcd1.
  952.  
  953. *       Nombre
  954.         ls_ret_per-name1_r = lv_name1.
  955.  
  956. *       Calle y num
  957.  
  958.         SELECT SINGLE street house_num1
  959.           FROM adrc
  960.           INTO (ls_ret_per-street_r , ls_ret_per-str_num_r)
  961.           WHERE addrnumber = lv_adrnr.
  962.  
  963. *       Localidad
  964.         ls_ret_per-ort01_r = lv_ort01.
  965.  
  966. *       Provincia
  967.  
  968.         SELECT SINGLE bezei
  969.           FROM t005u
  970.           INTO ls_ret_per-regio_r
  971.           WHERE spras = sy-langu AND
  972.                 land1 = 'AR'     AND
  973.                 bland = lv_regio.
  974.  
  975. *       Codigo postal
  976.         ls_ret_per-pstlz_r = lv_pstlz.
  977.  
  978.         COLLECT ls_ret_per INTO gt_retper_t.
  979.  
  980.       ENDLOOP.
  981.     ENDLOOP.
  982.  
  983.     APPEND LINES OF gt_caba_ret TO gt_caba.
  984.     APPEND LINES OF gt_retper_t TO gt_retper.
  985.     APPEND LINES OF gt_ncfact   TO gt_ncfact.
  986.  
  987.   ENDMETHOD.                    "armar_tabla_aplicativo_ret
  988. *----------------------------------------------------------------------*
  989. *      Method armar_fieldcat                                           *
  990. *----------------------------------------------------------------------*
  991. *      Armar fieldcat                                                  *
  992. *----------------------------------------------------------------------*
  993.   METHOD armar_fieldcat.
  994.     DATA: ls_fieldcat TYPE slis_fieldcat_alv. "LVC_S_FCAT.
  995.  
  996.     load_fieldcat         'RETPER'
  997.                           'Tipo de operación'
  998.                           'Tipo de operación'
  999.                           'Tipo de operación'
  1000.                           0 space space.
  1001.  
  1002.     load_fieldcat         'BUKRS'
  1003.                           'Soc.'(091)
  1004.                           'Sociedad'(092)
  1005.                           'Sociedad'(092)
  1006.                           0 space space.
  1007.  
  1008.     IF rb_ar1 IS NOT INITIAL .
  1009.  
  1010.       load_fieldcat         'BELNR'
  1011.                             'Documento SAP'(093)
  1012.                             'Documento SAP'(093)
  1013.                             'Documento SAP'(093)
  1014.                             0 space space.
  1015.  
  1016.       load_fieldcat         'GJAHR'
  1017.                             'Ejercicio'(094)
  1018.                             'Ejercicio'(094)
  1019.                             'Ejercicio'(094)
  1020.                             0 space space.
  1021.     ENDIF.
  1022.  
  1023.  
  1024.     load_fieldcat           'TIPO_NIF'
  1025.                             'Tipo NIF'
  1026.                             'Tipo NIF'
  1027.                             'Tipo NIF'
  1028.                             0 space space.
  1029.  
  1030.     load_fieldcat           'NIF'
  1031.                             'NIF'
  1032.                             'NIF'
  1033.                             'NIF'
  1034.                             0 space space.
  1035.  
  1036.     load_fieldcat           'NAME1'
  1037.                             'Razon Social'
  1038.                             'Razon Social'
  1039.                             'Razon Social'
  1040.                             0 space space.
  1041. *    ENDIF.
  1042.  
  1043.  
  1044.     IF rb_ar1 IS NOT INITIAL.
  1045.  
  1046. *      IF vg_retper EQ 'RET'.
  1047.  
  1048.       load_fieldcat           'TIPO_DOC'
  1049.                               'Tipo doc'
  1050.                               'Tipo doc'
  1051.                               'Tipo doc'
  1052.                               0 space space.
  1053.  
  1054.       load_fieldcat           'LETRA'
  1055.                               'Letra doc'
  1056.                               'Letra doc'
  1057.                               'Letra doc'
  1058.                               0 space space.
  1059.  
  1060.       load_fieldcat           'COD_LUG_EM'
  1061.                               'Sucursal'
  1062.                               'Sucursal'
  1063.                               'Sucursal'
  1064.                               0 space space.
  1065.  
  1066.       load_fieldcat           'XBLNR'
  1067.                               'Numero doc'
  1068.                               'Numero doc'
  1069.                               'Numero doc'
  1070.                               0 space space.
  1071.  
  1072.       load_fieldcat           'BLDAT'
  1073.                               'Fecha del documento'
  1074.                               'Fecha del documento'
  1075.                               'Fecha del documento'
  1076.                                0 space space.
  1077.  
  1078. *        IF vg_retper EQ 'PER'.
  1079.  
  1080. *          load_fieldcat           'HWBAS'
  1081. *                                  'Base calc.'
  1082. *                                  'Base calc.'
  1083. *                                  'Base calc.'
  1084. *                                  0 space space.
  1085. *
  1086. *          load_fieldcat           'KBETR'
  1087. *                                  'Porcentaje'
  1088. *                                  'Porcentaje'
  1089. *                                  'Porcentaje'
  1090. *                                  0 space space.
  1091. *
  1092. *          load_fieldcat           'HWSTE'
  1093. *                                  'Monto'
  1094. *                                  'Monto'
  1095. *                                  'Monto'
  1096. *                                  0 space space.
  1097.  
  1098. *        ELSE.
  1099.  
  1100.       load_fieldcat           'HWBAS'
  1101.                               'Base calc.'
  1102.                               'Base calc.'
  1103.                               'Base calc.'
  1104.                               0 space space.
  1105.  
  1106.       load_fieldcat           'QSATZ'
  1107.                               'Alicuota'
  1108.                               'Alicuota'
  1109.                               'Alicuota'
  1110.                               0 space space.
  1111.  
  1112.       load_fieldcat           'WT_QBSHH'
  1113.                               'Monto RET/PER'
  1114.                               'Monto RET/PER'
  1115.                               'Monto RET/PER'
  1116.                               0 space space.
  1117.  
  1118.     ENDIF.
  1119.  
  1120.     IF rb_ar2 IS NOT INITIAL.
  1121.  
  1122.       load_fieldcat           'STREET'
  1123.                               'Calle'
  1124.                               'Calle'
  1125.                               'Calle'
  1126.                               0 space space.
  1127.  
  1128.       load_fieldcat           'STR_NUM'
  1129.                               'Numero calle'
  1130.                               'Numero calle'
  1131.                               'Numero calle'
  1132.                               0 space space.
  1133.  
  1134.       load_fieldcat           'ORT01'
  1135.                               'Localidad'
  1136.                               'Localidad'
  1137.                               'Localidad'
  1138.                               0 space space.
  1139.  
  1140.       load_fieldcat           'REGIO'
  1141.                               'Provincia'
  1142.                               'Provincia'
  1143.                               'Provincia'
  1144.                               0 space space.
  1145.  
  1146.       load_fieldcat           'PSTLZ'
  1147.                               'Codigo postal'
  1148.                               'Codigo postal'
  1149.                               'Codigo postal'
  1150.                               0 space space.
  1151.     ENDIF.
  1152.  
  1153.     IF rb_ar3 IS NOT INITIAL.
  1154.  
  1155.       load_fieldcat         'BELNR'
  1156.                             'Documento SAP NC'
  1157.                             'Documento SAP NC'
  1158.                             'Documento SAP NC'
  1159.                             0 space space.
  1160.  
  1161.       load_fieldcat         'GJAHR'
  1162.                             'Ejercicio'
  1163.                             'Ejercicio'
  1164.                             'Ejercicio'
  1165.                             0 space space.
  1166.  
  1167.       load_fieldcat           'COD_LUG_EM_NC'
  1168.                               'Sucursal NC'
  1169.                               'Sucursal NC'
  1170.                               'Sucursal NC'
  1171.                               0 space space.
  1172.  
  1173.       load_fieldcat           'LETRA_NC'
  1174.                               'Letra NC'
  1175.                               'Letra NC'
  1176.                               'Letra NC'
  1177.                               0 space space.
  1178.  
  1179.       load_fieldcat           'NUM_NC'
  1180.                               'Referencia NC'
  1181.                               'Referencia NC'
  1182.                               'Referencia NC'
  1183.                               0 space space.
  1184.  
  1185.       load_fieldcat           'DOC_SAP_FC'
  1186.                               'Documento SAP FC'
  1187.                               'Documento SAP FC'
  1188.                               'Documento SAP FC'
  1189.                               0 space space.
  1190.  
  1191.       load_fieldcat           'COD_LUG_EM_FAC'
  1192.                               'Sucursal FC'
  1193.                               'Sucursal FC'
  1194.                               'Sucursal FC'
  1195.                               0 space space.
  1196.  
  1197.  
  1198.       load_fieldcat           'LETRA_FC'
  1199.                               'Letra FC'
  1200.                               'Letra FC'
  1201.                               'Letra FC'
  1202.                               0 space space.
  1203.  
  1204.       load_fieldcat           'NUM_FAC'
  1205.                               'Referencia FC'
  1206.                               'Referencia FC'
  1207.                               'Referencia FC'
  1208.                               0 space space.
  1209.  
  1210.       load_fieldcat           'TIPO_FAC'
  1211.                               'Tipo de Doc.FC'
  1212.                               'Tipo de Doc.FC'
  1213.                               'Tipo de Doc.FC'
  1214.                               0 space space.
  1215.  
  1216.     ENDIF.
  1217.  
  1218. *   Completa con los campos generales, para todos los aplicativos.
  1219. *    super->armar_fieldcat( CHANGING c_lt_fieldcat = c_lt_fieldcat ).
  1220.  
  1221.   ENDMETHOD.                    "armar_fieldcat
  1222. *----------------------------------------------------------------------*
  1223. *      Method asignar_tabla                                            *
  1224. *----------------------------------------------------------------------*
  1225. *      Asignar tabla                                                   *
  1226. *----------------------------------------------------------------------*
  1227.   METHOD asignar_tabla.
  1228.  
  1229.     DATA: wa_data   LIKE LINE OF gt_caba,
  1230.           wa_retper LIKE LINE OF gt_retper_t,
  1231.           wa_ncfac  LIKE LINE OF gt_ncfact_t,
  1232.           wa_data1  LIKE LINE OF gt_data1,
  1233.           wa_data2  LIKE LINE OF gt_data2,
  1234.           wa_data3  LIKE LINE OF gt_data3,
  1235.           wa_aux    LIKE LINE OF gt_bseg,
  1236.           lv_blart  TYPE blart.
  1237.  
  1238.     LOOP AT gt_caba INTO wa_data.
  1239.       MOVE-CORRESPONDING wa_data TO wa_data1.
  1240.       IF wa_data-stcdt_r IS NOT INITIAL.
  1241.         wa_data1-tipo_nif = wa_data-stcdt_r.
  1242.         wa_data1-nif      = wa_data-stcd1_r.
  1243.         wa_data1-hwbas    = wa_data-wt_qsshh.
  1244.         wa_data1-qsatz    = wa_data-qsatz.
  1245.         wa_data1-wt_qbshh = wa_data-wt_qbshh.
  1246.       ELSE.
  1247.         wa_data1-tipo_nif = wa_data-stcdt_p.
  1248.         wa_data1-nif      = wa_data-stcd1_p.
  1249.         wa_data1-hwbas    = wa_data-hwbas.
  1250.         wa_data1-qsatz    = wa_data-kbetr.
  1251.         wa_data1-wt_qbshh = wa_data-hwste.
  1252.       ENDIF.
  1253.  
  1254. *    LOOP AT gt_retper_t INTO wa_retper.
  1255.       IF wa_data-stcdt_r IS NOT INITIAL.
  1256.         READ TABLE gt_retper_t INTO wa_retper WITH KEY stcd1_r = wa_data-stcd1_r.
  1257.       ELSE.
  1258.         READ TABLE gt_retper_t INTO wa_retper WITH KEY stcd1_p = wa_data-stcd1_p.
  1259.       ENDIF.
  1260.       MOVE-CORRESPONDING wa_retper TO wa_data2.
  1261.       IF wa_retper-stcdt_r IS NOT INITIAL.
  1262.         MOVE wa_retper-name1_r   TO wa_data1-name1.
  1263.         MOVE wa_retper-name1_r   TO wa_data2-name1.
  1264.         MOVE wa_retper-name1_r   TO wa_data3-name1.
  1265.       ELSE.
  1266.         MOVE wa_retper-name1_p   TO wa_data1-name1.
  1267.         MOVE wa_retper-name1_p   TO wa_data2-name1.
  1268.         MOVE wa_retper-name1_p   TO wa_data3-name1.
  1269.       ENDIF.
  1270. *    ENDLOOP.
  1271.  
  1272. *      IF rb_ar1 IS NOT INITIAL.
  1273.       APPEND wa_data1 TO gt_data1.
  1274. *        ASSIGN gt_data1 TO <fs_alv>.
  1275. *      ELSEIF rb_ar2 IS NOT INITIAL.
  1276.       MOVE-CORRESPONDING wa_data1 TO wa_data2.
  1277. *        LOOP AT gt_retper_t INTO wa_retper.
  1278.  
  1279.       IF wa_data-stcdt_r IS NOT INITIAL.
  1280.         READ TABLE gt_retper_t INTO wa_retper WITH KEY stcd1_r = wa_data-stcd1_r.
  1281.       ELSE.
  1282.         READ TABLE gt_retper_t INTO wa_retper WITH KEY stcd1_p = wa_data-stcd1_p.
  1283.       ENDIF.
  1284.  
  1285.       MOVE-CORRESPONDING wa_retper TO wa_data2.
  1286.       IF wa_retper-stcdt_r IS NOT INITIAL.
  1287.         MOVE wa_retper-name1_r    TO wa_data2-name1.
  1288.         MOVE wa_retper-street_r   TO wa_data2-street.
  1289.         MOVE wa_retper-str_num_r  TO wa_data2-str_num.
  1290.         MOVE wa_retper-ort01_r    TO wa_data2-ort01.
  1291.         MOVE wa_retper-regio_r    TO wa_data2-regio.
  1292.         MOVE wa_retper-pstlz_r    TO wa_data2-pstlz.
  1293.       ELSE.
  1294.         MOVE wa_retper-name1_p    TO wa_data2-name1.
  1295.         MOVE wa_retper-street_p   TO wa_data2-street.
  1296.         MOVE wa_retper-str_num_p  TO wa_data2-str_num.
  1297.         MOVE wa_retper-ort01_p    TO wa_data2-ort01.
  1298.         MOVE wa_retper-regio_p    TO wa_data2-regio.
  1299.         MOVE wa_retper-pstlz_p    TO wa_data2-pstlz.
  1300.       ENDIF.
  1301.       APPEND wa_data2 TO gt_data2.
  1302. *        ENDLOOP.
  1303. *        ASSIGN gt_data2 TO <fs_alv>.
  1304. *      ELSEIF rb_ar3 IS NOT INITIAL.
  1305.       IF wa_data-stcdt_r IS NOT INITIAL.
  1306.         wa_data3-name1 = wa_retper-name1_r.
  1307.       ELSE.
  1308.         wa_data3-name1 = wa_retper-name1_p.
  1309.       ENDIF.
  1310.       MOVE-CORRESPONDING wa_data1 TO wa_data3.
  1311.  
  1312.       LOOP AT gt_ncfact_t INTO wa_ncfac.
  1313.  
  1314.         IF wa_ncfac-num_nc EQ wa_data-xblnr.
  1315. *      READ TABLE gt_ncfact_t INTO wa_ncfac WITH KEY num_nc  = wa_data-xblnr.
  1316.  
  1317.           IF sy-subrc EQ 0 AND wa_ncfac IS NOT INITIAL.
  1318.             MOVE-CORRESPONDING wa_ncfac TO wa_data3.
  1319. *          MOVE wa_data-belnr TO wa_data3-belnr.
  1320.             IF wa_data3-retper NE 'RET'.
  1321.  
  1322.               SELECT SINGLE blart
  1323.                 FROM bkpf
  1324.                 INTO lv_blart
  1325.                 WHERE bukrs = wa_data3-bukrs AND
  1326.                       belnr = wa_data3-belnr AND
  1327.                       gjahr = wa_data3-gjahr.
  1328.  
  1329.               IF  lv_blart EQ 'DJ' OR
  1330.                   lv_blart EQ 'Z3' OR
  1331.                   lv_blart EQ 'ZG' OR
  1332.                   lv_blart EQ 'ZC'.
  1333.                 APPEND wa_data3 TO gt_data3.
  1334.               ENDIF.
  1335.             ENDIF.
  1336.           ENDIF.
  1337.         ENDIF.
  1338.       ENDLOOP.
  1339.  
  1340.       ASSIGN gt_data3 TO <fs_alv>.
  1341.  
  1342.       CLEAR: wa_data,
  1343.              wa_data1,
  1344.              wa_data2,
  1345.              wa_data3.
  1346.     ENDLOOP.
  1347.  
  1348.     SORT gt_data2 BY nif.
  1349.     DELETE ADJACENT DUPLICATES FROM gt_data2 COMPARING nif.
  1350.     SORT gt_data3 BY bukrs belnr gjahr.
  1351.     DELETE ADJACENT DUPLICATES FROM gt_data3 COMPARING bukrs belnr gjahr.
  1352.  
  1353.     IF rb_ar1 IS NOT INITIAL.
  1354.       ASSIGN gt_data1 TO <fs_alv>.
  1355.     ELSEIF rb_ar2 IS NOT INITIAL.
  1356.       ASSIGN gt_data2 TO <fs_alv>.
  1357.     ELSEIF rb_ar3 IS NOT INITIAL.
  1358.       ASSIGN gt_data3 TO <fs_alv>.
  1359.     ENDIF.
  1360.   ENDMETHOD.                    "asignar_tabla
  1361. *----------------------------------------------------------------------*
  1362. *      Method tipo_impuesto                                            *
  1363. *----------------------------------------------------------------------*
  1364. *      Devuelve el tipo de impuesto, para realizar o no funcionalidades*
  1365. *----------------------------------------------------------------------*
  1366.   METHOD tipo_impuesto.
  1367.     r_lv_tipo_impuesto = 'P'(c03).
  1368.   ENDMETHOD.                    "tipo_impuesto
  1369.   METHOD armar_archivo_salida.
  1370.  
  1371.     DATA:
  1372.               ls_reg_alv        TYPE gty_data_t,
  1373.               ls_reg_txt        TYPE gty_data,
  1374.               ls_retper         TYPE gty_retper,
  1375.               ls_retper_t       TYPE gty_retper_t,
  1376.               ls_ncfact_t       LIKE LINE OF gt_ncfact_t,
  1377.               ls_ncfact         TYPE gty_ncfact,
  1378.               lv_len            TYPE i,
  1379.               ls_archivo        TYPE gty_archivo,
  1380.               lv_num1(12)       TYPE c,
  1381.               lv_dec1(2)        TYPE c,
  1382.               lv_num2(2)        TYPE c,
  1383.               lv_dec2(3)        TYPE c,
  1384.               lv_aux            TYPE string,
  1385.               lv_aux2           TYPE string.
  1386.  
  1387.     SORT gt_caba BY bldat.
  1388.     SORT gt_retper BY stcd1_r stcd1_p.
  1389.     DELETE ADJACENT DUPLICATES FROM gt_retper COMPARING stcd1_r stcd1_p.
  1390.  
  1391.     LOOP AT gt_caba INTO ls_reg_alv.
  1392.  
  1393.       CLEAR lv_aux.
  1394.  
  1395.       PERFORM f_format USING ls_reg_alv-bldat       ' ' CHANGING lv_aux.
  1396.       MOVE lv_aux TO ls_reg_txt-fecha.
  1397.       PERFORM f_format USING ls_reg_alv-tipo_doc    ' ' CHANGING lv_aux.
  1398.       MOVE lv_aux TO ls_reg_txt-tipocomp.
  1399.       PERFORM f_format USING ls_reg_alv-letra       ' ' CHANGING lv_aux.
  1400.       MOVE lv_aux TO ls_reg_txt-letra.
  1401.       PERFORM f_format USING ls_reg_alv-cod_lug_em  ' ' CHANGING lv_aux.
  1402.       MOVE lv_aux TO ls_reg_txt-cod_lug_em.
  1403.       PERFORM f_format USING ls_reg_alv-xblnr       ' ' CHANGING lv_aux.
  1404.       MOVE lv_aux TO ls_reg_txt-numero.
  1405.  
  1406.       IF ls_reg_alv-stcdt_p IS NOT INITIAL.
  1407.         PERFORM f_format USING ls_reg_alv-stcdt_p ' ' CHANGING lv_aux.
  1408.         MOVE lv_aux TO ls_reg_txt-tipodoc.
  1409.         PERFORM f_format USING ls_reg_alv-stcd1_p ' ' CHANGING lv_aux.
  1410.         MOVE lv_aux TO ls_reg_txt-documento.
  1411.         lv_aux = ls_reg_alv-hwbas.
  1412.         SPLIT lv_aux AT '.' INTO lv_num1 lv_dec1.
  1413.         PERFORM f_format USING lv_num1 'M' CHANGING lv_num1.
  1414.         "        PERFORM f_format USING lv_dec1 CHANGING lv_dec1.
  1415.         CONCATENATE lv_num1 '.' lv_dec1(2) INTO ls_reg_txt-base_calc.
  1416.         lv_aux = ls_reg_alv-kbetr.
  1417.         SPLIT lv_aux  AT '.' INTO lv_num2 lv_dec2.
  1418.         PERFORM f_format USING lv_num2 'A' CHANGING lv_num2.
  1419.         "        PERFORM f_format USING lv_dec2 CHANGING lv_dec2.
  1420.         CONCATENATE lv_num2 '.' lv_dec2(3) INTO ls_reg_txt-porc_ali.
  1421.         lv_aux = ls_reg_alv-hwste.
  1422.         SPLIT lv_aux AT '.' INTO lv_num1 lv_dec1.
  1423.         PERFORM f_format USING lv_num1 'M' CHANGING lv_num1.
  1424.         "        PERFORM f_format USING lv_dec1 CHANGING lv_dec1.
  1425.         CONCATENATE lv_num1 '.' lv_dec1(2) INTO ls_reg_txt-monto_pr.
  1426.       ELSE.
  1427.         PERFORM f_format USING ls_reg_alv-stcdt_r ' ' CHANGING lv_aux.
  1428.         MOVE lv_aux TO ls_reg_txt-tipodoc.
  1429.         PERFORM f_format USING ls_reg_alv-stcd1_r ' ' CHANGING lv_aux.
  1430.         MOVE lv_aux TO ls_reg_txt-documento.
  1431.         lv_aux = ls_reg_alv-wt_qsshh.
  1432.         SPLIT lv_aux AT '.' INTO lv_num1 lv_dec1.
  1433.         PERFORM f_format USING lv_num1 'M' CHANGING lv_num1.
  1434.         "        PERFORM f_format USING lv_dec1 CHANGING lv_dec1.
  1435.         CONCATENATE lv_num1 '.' lv_dec1 INTO ls_reg_txt-base_calc.
  1436.         lv_aux = ls_reg_alv-qsatz.
  1437.         SPLIT lv_aux AT '.' INTO lv_num2 lv_dec2.
  1438.         PERFORM f_format USING lv_num2 'A' CHANGING lv_num2.
  1439.         "        PERFORM f_format USING lv_dec2 CHANGING lv_dec2.
  1440.         CONCATENATE lv_num2 '.' lv_dec2 INTO ls_reg_txt-porc_ali.
  1441.         lv_aux = ls_reg_alv-wt_qbshh.
  1442.         SPLIT lv_aux AT '.' INTO lv_num1 lv_dec1.
  1443.         PERFORM f_format USING lv_num1 'M' CHANGING lv_num1.
  1444.         "        PERFORM f_format USING lv_dec1 CHANGING lv_dec1.
  1445.         CONCATENATE lv_num1 '.' lv_dec1 INTO ls_reg_txt-monto_pr.
  1446.       ENDIF.
  1447.  
  1448. *      LOOP AT gt_retper_t INTO ls_retper_t.
  1449.       IF ls_reg_alv-stcdt_p IS NOT INITIAL.
  1450.         READ TABLE gt_retper_t INTO ls_retper_t WITH KEY stcd1_p = ls_reg_alv-stcd1_p.
  1451.       ELSE.
  1452.         READ TABLE gt_retper_t INTO ls_retper_t WITH KEY stcd1_r = ls_reg_alv-stcd1_r.
  1453.       ENDIF.
  1454.  
  1455.       IF ls_retper_t-stcdt_r IS NOT INITIAL.
  1456.         MOVE ls_retper_t-stcdt_r    TO ls_retper-tipodoc.
  1457.         MOVE ls_retper_t-stcd1_r    TO ls_retper-documento.
  1458.         MOVE ls_retper_t-name1_r    TO ls_retper-nombre.
  1459.         MOVE ls_retper_t-street_r   TO ls_retper-domicilio.
  1460.         MOVE ls_retper_t-str_num_r  TO ls_retper-calle_num.
  1461.         MOVE ls_retper_t-ort01_r    TO ls_retper-localidad.
  1462.         MOVE ls_retper_t-regio_r    TO ls_retper-provincia.
  1463.         MOVE ls_retper_t-pstlz_r    TO ls_retper-c_postal.
  1464.       ELSE.
  1465.         MOVE ls_retper_t-stcdt_p    TO ls_retper-tipodoc.
  1466.         MOVE ls_retper_t-stcd1_p    TO ls_retper-documento.
  1467.         MOVE ls_retper_t-name1_p    TO ls_retper-nombre.
  1468.         MOVE ls_retper_t-street_p   TO ls_retper-domicilio.
  1469.         MOVE ls_retper_t-str_num_p  TO ls_retper-calle_num.
  1470.         MOVE ls_retper_t-ort01_p    TO ls_retper-localidad.
  1471.         MOVE ls_retper_t-regio_p    TO ls_retper-provincia.
  1472.         MOVE ls_retper_t-pstlz_p    TO ls_retper-c_postal.
  1473.       ENDIF.
  1474. *    ENDLOOP.
  1475.  
  1476. *      READ TABLE gt_ncfact_t INTO ls_ncfact_t WITH KEY num_nc = ls_reg_alv-xblnr.
  1477. **      LOOP AT gt_ncfact_t INTO ls_ncfact_t.
  1478. *      IF sy-subrc EQ 0 AND ls_ncfact_t-num_nc IS NOT INITIAL.
  1479. *        MOVE-CORRESPONDING ls_ncfact_t TO ls_ncfact.
  1480. *      ENDIF.
  1481. **      ENDLOOP.
  1482.  
  1483. *     Determino longitud del registro
  1484.       DESCRIBE FIELD ls_reg_txt LENGTH lv_len IN CHARACTER MODE.
  1485.       IF ls_reg_txt NE ' '.
  1486. *     Agrego lineas al archivo de salida
  1487.         ls_archivo-linea = ls_reg_txt.
  1488.         ls_archivo-inte  = lv_len.
  1489.         INSERT ls_archivo INTO TABLE gt_archivo1.
  1490.       ENDIF.
  1491.       DESCRIBE FIELD ls_retper LENGTH lv_len IN CHARACTER MODE.
  1492.       IF ls_retper NE ' '.
  1493. *     Agrego lineas al archivo de salida
  1494.         ls_archivo-linea = ls_retper.
  1495.         ls_archivo-inte  = lv_len.
  1496.         INSERT ls_archivo INTO TABLE gt_archivo2.
  1497.       ENDIF.
  1498.     ENDLOOP.
  1499. *      READ TABLE gt_ncfact_t INTO ls_ncfact_t WITH KEY num_nc = ls_reg_alv-xblnr.
  1500.     LOOP AT gt_ncfact_t INTO ls_ncfact_t.
  1501.       IF sy-subrc EQ 0 AND ls_ncfact_t-num_nc IS NOT INITIAL.
  1502. *        MOVE-CORRESPONDING ls_ncfact_t TO ls_ncfact.
  1503.         MOVE ls_ncfact_t-cod_lug_em_nc TO ls_ncfact-cod_lug_em_nc.
  1504.         MOVE ls_ncfact_t-num_nc TO ls_ncfact-num_nc.
  1505.         MOVE ls_ncfact_t-cod_lug_em_fac TO ls_ncfact-cod_lug_em_fac.
  1506.         MOVE ls_ncfact_t-num_fac TO ls_ncfact-num_fac.
  1507.         MOVE ls_ncfact_t-tipo_fac TO ls_ncfact-tipo_fac.
  1508.       ENDIF.
  1509.  
  1510.       DESCRIBE FIELD ls_ncfact LENGTH lv_len IN CHARACTER MODE.
  1511.       IF ls_ncfact NE ' '.
  1512. *     Agrego lineas al archivo de salida
  1513.         ls_archivo-linea = ls_ncfact.
  1514.         ls_archivo-inte  = lv_len.
  1515.         INSERT ls_archivo INTO TABLE gt_archivo3.
  1516.       ENDIF.
  1517.     ENDLOOP.
  1518.  
  1519.     SORT gt_archivo1.
  1520.     SORT gt_archivo2.
  1521.     SORT gt_archivo3.
  1522.     DELETE ADJACENT DUPLICATES FROM gt_archivo1.
  1523.     DELETE ADJACENT DUPLICATES FROM gt_archivo2.
  1524.     DELETE ADJACENT DUPLICATES FROM gt_archivo3.
  1525.  
  1526.   ENDMETHOD.                    "armar_archivo_salida
  1527.  
  1528. ENDCLASS.                    "lcl_aplic_as IMPLEMENTATION
  1529.  
  1530. *&---------------------------------------------------------------------*
  1531. *&      Form  F_FORMAT
  1532. *&---------------------------------------------------------------------*
  1533. *       text
  1534. *----------------------------------------------------------------------*
  1535. *      -->P_LS_REG_ALV_BLDAT  text
  1536. *      <--P_LS_REG_TXT_FECHA  text
  1537. *----------------------------------------------------------------------*
  1538. FORM f_format  USING    p_input   TYPE any
  1539.                         p_code    TYPE char1
  1540.                CHANGING p_output  TYPE any.
  1541.  
  1542.   DATA: lv_input  TYPE string,
  1543.         lv_output TYPE string,
  1544.         lv_out1(12) TYPE c,
  1545.         lv_out2(2)  TYPE c.
  1546.  
  1547.   lv_input = p_input.
  1548.  
  1549.   IF p_code EQ 'M'."Monto
  1550.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  1551.       EXPORTING
  1552.         input  = lv_input
  1553.       IMPORTING
  1554.         output = lv_out1.
  1555.  
  1556.     MOVE lv_out1 TO p_output.
  1557.  
  1558.   ELSEIF p_code EQ 'A'."Alicuota o porcentaje
  1559.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  1560.       EXPORTING
  1561.         input  = lv_input
  1562.       IMPORTING
  1563.         output = lv_out2.
  1564.  
  1565.     MOVE lv_out2 TO p_output.
  1566.  
  1567.   ELSE."Otros datos
  1568.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  1569.       EXPORTING
  1570.         input  = lv_input
  1571.       IMPORTING
  1572.         output = lv_output.
  1573.  
  1574.     MOVE lv_output TO p_output.
  1575.   ENDIF.
  1576.  
  1577. ENDFORM.                    " F_FORMAT
  1578.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement