Advertisement
ezecasti18

Untitled

Aug 25th, 2022
1,495
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 58.18 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_zar_fi_cnv_cd2_t TYPE TABLE OF zar_fi_cnv_cd2_t,
  174.           gt_zar_fi_cnv_sib_t TYPE TABLE OF zar_fi_cnv_sib_t,
  175.           gt_zar_fi_cnv_siv_t TYPE TABLE OF zar_fi_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_zar_fi_cla_doc_t REDEFINITION,
  190.       necesita_zar_fi_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 = 'ZAR_FI_CNV_CD2_T'.
  239. *      WHEN 'BTN_AS2'.
  240. *        r_lv_tabla = 'ZAR_FI_CNV_SIB_T'.
  241. *      WHEN 'BTN_AS3'.
  242. *        r_lv_tabla = 'ZAR_FI_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_ZAR_FI_CLA_DOC_T                                  *
  255. *----------------------------------------------------------------------*
  256. *      ¿Necesita entradas en la tabla ZAR_FI_CLA_DOC_T?                  *
  257. *----------------------------------------------------------------------*
  258.   METHOD necesita_zar_fi_cla_doc_t.
  259.     r_lv_necesita = abap_true.
  260.   ENDMETHOD.                    "necesita_ZAR_FI_CLA_DOC_T
  261. *----------------------------------------------------------------------*
  262. *      Method necesita_ZAR_FI_CLA_OPE_T                                  *
  263. *----------------------------------------------------------------------*
  264. *      ¿Necesita entradas en la ZAR_FI_CLA_OPE_T?                        *
  265. *----------------------------------------------------------------------*
  266.   METHOD necesita_zar_fi_cla_ope_t.
  267.     r_lv_necesita = abap_true.
  268.   ENDMETHOD.                    "necesita_ZAR_FI_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 zar_fi_cnv_cd2_t INTO TABLE gt_zar_fi_cnv_cd2_t.
  279.  
  280. *   Conversion tipo de situaciones frente a IIBB
  281.     SELECT * FROM zar_fi_cnv_sib_t INTO TABLE gt_zar_fi_cnv_sib_t.
  282.  
  283. *   Conversion tipo de situaciones frente a IVA
  284.     SELECT * FROM zar_fi_cnv_siv_t INTO TABLE gt_zar_fi_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_zar_fi_cnv_cd2_t TYPE zar_fi_cnv_cd2_t,
  303.           ls_zar_fi_cnv_sib_t TYPE zar_fi_cnv_sib_t,
  304.           ls_zar_fi_cnv_siv_t TYPE zar_fi_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 zar_fi_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(
  377.           EXPORTING
  378.             i_lv_bukrs = ls_bkpf-bukrs
  379.             i_lv_belnr = ls_bkpf-belnr
  380.             i_lv_gjahr = ls_bkpf-gjahr
  381.             i_lv_koart = ls_bseg_k_d-koart
  382.             i_lv_lifnr = ls_bseg_k_d-lifnr
  383.             i_lv_kunnr = ls_bseg_k_d-kunnr
  384.           CHANGING
  385.             c_lv_stcd1 = lv_stcd1
  386.             c_lv_stcd2 = lv_stcd2
  387.             c_lv_stcdt = lv_stcdt
  388.             c_lv_name1 = lv_name1
  389.             c_lv_fityp = lv_fityp
  390.             c_lv_regio = lv_regio
  391.             c_lv_stras = lv_stras
  392.             c_lv_telf1 = lv_telf1
  393.             c_lv_pstlz = lv_pstlz
  394.             c_lv_ort01 = lv_ort01
  395.             c_lv_mcod3 = lv_mcod3
  396.             c_lv_adrnr = lv_adrnr
  397.             c_lv_gridt = lv_gridt ).
  398.  
  399. * Datos globales:
  400.  
  401.         vg_retper = 'PER'.
  402.  
  403.         ls_reg_alv-retper = 'PER'.
  404.  
  405.         ls_reg_alv-bukrs = ls_bkpf-bukrs.
  406.  
  407.         ls_reg_alv-belnr = ls_bkpf-belnr.
  408.  
  409.         ls_reg_alv-gjahr = ls_bkpf-gjahr.
  410.  
  411. *       Fecha
  412.         ls_reg_alv-bldat = ls_bkpf-bldat.
  413.  
  414. *       Tipo Doc
  415.         ls_reg_alv-stcdt_p = lv_stcdt.
  416.  
  417. *       Documento
  418.         ls_reg_alv-stcd1_p = lv_stcd1.
  419.  
  420.         " Disclaimer:
  421.         " Por definición funcional, los pagos van a tomar el numero de documento interno
  422.         " de SAP y no el XBLNR, también el tipo de documento va a ser de 99 (otros documentos)
  423.  
  424.         READ TABLE gt_zfi_tuc_doc_ref INTO ls_zfi_tuc_doc_ref WITH KEY blart = ls_bkpf-blart.
  425.  
  426.         IF sy-subrc EQ 0.
  427.           CONCATENATE ls_bkpf-belnr(2) ls_bkpf-belnr+4 INTO lv_xblnr.
  428.           ls_reg_alv-xblnr = lv_xblnr.
  429.           ls_reg_alv-tipo_doc = 99.
  430.           CLEAR lv_xblnr.
  431.         ELSE.
  432.           IF ls_bkpf-xblnr NE space.
  433. *           Letra de comprobante
  434.             lv_nrocomp_aux = ls_bkpf-xblnr+13(1).
  435.             IF lv_nrocomp_aux IS INITIAL.
  436.               ls_reg_alv-letra = ls_bkpf-xblnr+4(1).
  437.             ELSE.
  438.               ls_reg_alv-letra = ls_bkpf-xblnr+5(1).
  439.             ENDIF.
  440. *           Cod.lugar emisión
  441.             IF lv_nrocomp_aux IS INITIAL.
  442.               ls_reg_alv-cod_lug_em = ls_bkpf-xblnr(4).
  443.             ELSE.
  444.               ls_reg_alv-cod_lug_em = ls_bkpf-xblnr+1(4).
  445.             ENDIF.
  446. *           Número del comprobante
  447.             IF lv_nrocomp_aux IS INITIAL.
  448.               ls_reg_alv-xblnr = ls_bkpf-xblnr+5(8).
  449.             ELSE.
  450.               ls_reg_alv-xblnr = ls_bkpf-xblnr+6(8).
  451.             ENDIF.
  452.           ENDIF.
  453.         ENDIF.
  454.  
  455. *       Base cálculo
  456.         ls_reg_alv-hwbas = ls_bset-hwbas.
  457. *       Porcentaje
  458.         ls_reg_alv-kbetr = ls_bset-kbetr / 10.
  459. *       Monto
  460.         ls_reg_alv-hwste = ls_bset-hwste.
  461.  
  462. *       Tipo de Comprobante:
  463.         READ TABLE gt_zar_fi_cnv_cd2_t INTO ls_zar_fi_cnv_cd2_t WITH KEY blart = ls_bkpf-blart
  464.                                                                          letra = ls_reg_alv-letra.
  465.         IF sy-subrc = 0.
  466.  
  467.           lv_len = strlen( ls_zar_fi_cnv_cd2_t-cnvc2 ).
  468.  
  469.           CASE lv_len. "Por definición funcional, si un tipo de comprobante tiene 3 caracteres, se toman los dos últimos.
  470.             WHEN 2.
  471.               ls_reg_alv-tipo_doc = ls_zar_fi_cnv_cd2_t-cnvc2.
  472.             WHEN 3.
  473.               ls_reg_alv-tipo_doc = ls_zar_fi_cnv_cd2_t-cnvc2+1(2).
  474.           ENDCASE.
  475.  
  476.           CLEAR lv_len.
  477.  
  478.         ENDIF.
  479.  
  480.         COLLECT ls_reg_alv INTO gt_caba.
  481.  
  482. * Segundo fichero:
  483.  
  484. *       Tipo Doc
  485.         ls_ret_per-stcdt_p = lv_stcdt.
  486.  
  487. *       Documento
  488.         ls_ret_per-stcd1_p = lv_stcd1.
  489.  
  490. *       Nombre
  491.         ls_ret_per-name1_p = lv_name1.
  492.  
  493. *       Calle y num
  494.  
  495.         SELECT SINGLE street house_num1
  496.           FROM adrc
  497.           INTO (ls_ret_per-street_p , ls_ret_per-str_num_p)
  498.           WHERE addrnumber = lv_adrnr.
  499.  
  500. *       Localidad
  501.         ls_ret_per-ort01_p = lv_ort01.
  502.  
  503. *       Provincia
  504.  
  505.         SELECT SINGLE bezei
  506.           FROM t005u
  507.           INTO ls_ret_per-regio_p
  508.           WHERE spras = sy-langu AND
  509.                 land1 = 'AR'     AND
  510.                 bland = lv_regio.
  511.  
  512. *       Codigo postal
  513.         ls_ret_per-pstlz_p = lv_pstlz.
  514.  
  515.         COLLECT ls_ret_per INTO gt_retper_t.
  516.  
  517. * Tercer Archivo:
  518.  
  519.         REFRESH t_bseg_nc.
  520.         CLEAR: t_bseg_nc,
  521.                ls_bseg_nc.
  522.  
  523.         IF ls_bkpf-blart EQ 'DJ' OR
  524.            ls_bkpf-blart EQ 'Z3' OR
  525.            ls_bkpf-blart EQ 'ZC' OR
  526.            ls_bkpf-blart EQ 'ZG'.
  527.  
  528.           SELECT *
  529.             FROM bseg
  530.             INTO TABLE t_bseg_nc
  531.             WHERE bukrs = ls_bkpf-bukrs AND
  532.                   belnr = ls_bkpf-belnr AND
  533.                   gjahr = ls_bkpf-gjahr AND
  534.                   bschl = '11'.
  535.         ENDIF.
  536.  
  537.         LOOP AT t_bseg_nc INTO ls_bseg_nc.
  538.  
  539.           IF ls_bseg_nc-bschl EQ '11' AND ls_bseg_nc-rebzg IS NOT INITIAL.
  540.  
  541.             SELECT SINGLE *
  542.               FROM bkpf
  543.               INTO wa_asoc
  544.               WHERE belnr = ls_bseg_nc-rebzg
  545.                AND  bukrs = ls_bseg_nc-bukrs
  546.                AND  gjahr = ls_bseg_nc-rebzj.
  547.  
  548.             IF sy-subrc EQ 0.
  549.  
  550. *          Cod.lugar emisión fact.
  551.               lv_nrocomp_aux = wa_asoc-xblnr+13(1).
  552.               IF lv_nrocomp_aux IS INITIAL.
  553.                 ls_ncfact-cod_lug_em_fac = wa_asoc-xblnr(4).
  554.               ELSE.
  555.                 ls_ncfact-cod_lug_em_fac = wa_asoc-xblnr+1(4).
  556.               ENDIF.
  557.  
  558. *          Numero fact.
  559.               lv_nrocomp_aux = wa_asoc-xblnr+13(1).
  560.               IF lv_nrocomp_aux IS INITIAL.
  561.                 ls_ncfact-num_fac = wa_asoc-xblnr+5(8).
  562.               ELSE.
  563.                 ls_ncfact-num_fac = wa_asoc-xblnr+6(8).
  564.               ENDIF.
  565.             ENDIF.
  566.  
  567. *           Letra fact.
  568.             IF lv_nrocomp_aux IS INITIAL.
  569.               ls_ncfact-letra_fc = wa_asoc-xblnr+4(1).
  570.             ELSE.
  571.               ls_ncfact-letra_fc = wa_asoc-xblnr+5(1).
  572.             ENDIF.
  573.  
  574. *         Cod.lugar emisión NC
  575.             IF lv_nrocomp_aux IS INITIAL.
  576.               ls_ncfact-cod_lug_em_nc = ls_bkpf-xblnr(4).
  577.             ELSE.
  578.               ls_ncfact-cod_lug_em_nc = ls_bkpf-xblnr+1(4).
  579.             ENDIF.
  580.  
  581. *           Letra NC
  582.             IF lv_nrocomp_aux IS INITIAL.
  583.               ls_ncfact-letra_nc = ls_bkpf-xblnr+4(1).
  584.             ELSE.
  585.               ls_ncfact-letra_nc = ls_bkpf-xblnr+5(1).
  586.             ENDIF.
  587.  
  588. *         Número del comprobante NC
  589.             IF lv_nrocomp_aux IS INITIAL.
  590.               ls_ncfact-num_nc = ls_bkpf-xblnr+5(8).
  591.             ELSE.
  592.               ls_ncfact-num_nc = ls_bkpf-xblnr+6(8).
  593.             ENDIF.
  594.  
  595. *          Documento SAP FC
  596.  
  597.             ls_ncfact-doc_sap_fc = wa_asoc-belnr.
  598.  
  599. *       Tipo de Factura:
  600.             READ TABLE gt_zar_fi_cnv_cd2_t INTO ls_zar_fi_cnv_cd2_t WITH KEY blart = wa_asoc-blart
  601.                                                                              letra = ls_reg_alv-letra.
  602.             IF sy-subrc = 0.
  603.  
  604.               lv_len = strlen( ls_zar_fi_cnv_cd2_t-cnvc2 ).
  605.  
  606.               CASE lv_len. "Por definición funcional, si un tipo de comprobante tiene 3 caracteres, se toman los dos últimos.
  607.                 WHEN 2.
  608.                   ls_ncfact-tipo_fac = ls_zar_fi_cnv_cd2_t-cnvc2.
  609.                 WHEN 3.
  610.                   ls_ncfact-tipo_fac = ls_zar_fi_cnv_cd2_t-cnvc2+1(2).
  611.               ENDCASE.
  612.  
  613.               CLEAR lv_len.
  614.             ENDIF.
  615.  
  616.  
  617.             APPEND ls_ncfact TO gt_ncfact_t.
  618.  
  619.           ENDIF.
  620.         ENDLOOP.
  621.  
  622.  
  623.       ENDLOOP.
  624.     ENDLOOP.
  625.  
  626.   ENDMETHOD.                    "armar_tabla_aplicativo_per
  627. *----------------------------------------------------------------------*
  628. *      Method armar_tabla_aplicativo_ret                               *
  629. *----------------------------------------------------------------------*
  630.   METHOD armar_tabla_aplicativo_ret.
  631.  
  632.     TYPES:
  633.       BEGIN OF ty_fact,
  634.         belnr TYPE bseg-belnr,
  635.         buzei TYPE bseg-buzei,
  636.         augbl TYPE bseg-augbl,
  637.         xblnr TYPE bkpf-xblnr,
  638.         del   TYPE c LENGTH 1,
  639.       END   OF ty_fact,
  640.       ty_t_fact TYPE STANDARD TABLE OF ty_fact,
  641.  
  642.       BEGIN OF ty_bset_fact,
  643.         belnr TYPE bset-belnr,
  644.         buzei TYPE bset-buzei,
  645.         fwste TYPE bset-fwste,
  646.       END   OF ty_bset_fact,
  647.       ty_t_bset_fact TYPE STANDARD TABLE OF ty_bset_fact,
  648.  
  649.       BEGIN OF ty_bkpf_fact,
  650.         belnr TYPE bkpf-belnr,
  651.         xblnr TYPE bkpf-xblnr,
  652.       END   OF ty_bkpf_fact,
  653.       ty_t_bkpf_fact TYPE STANDARD TABLE OF ty_bkpf_fact,
  654.  
  655.  
  656.       BEGIN OF ty_iva,
  657.         belnr      TYPE bseg-belnr,
  658.         xblnr_fact TYPE bkpf-xblnr,
  659.         fwste      TYPE bset-fwste,
  660.       END   OF ty_iva,
  661.       ty_t_iva TYPE STANDARD TABLE OF ty_iva.
  662.  
  663.     DATA:
  664.       ls_reg_alv          TYPE gty_data_t,
  665.       ls_reg_txt          TYPE gty_data,
  666.       ls_ret_per          TYPE gty_retper_t,
  667.       ls_bkpf             TYPE bkpf,
  668.       ls_bseg_k_d         TYPE bseg,
  669.       ls_with_item        TYPE with_item,
  670.       ls_zar_fi_cnv_cd2_t TYPE zar_fi_cnv_cd2_t,
  671.       ls_zar_fi_cnv_sib_t TYPE zar_fi_cnv_sib_t,
  672.       ls_zar_fi_cnv_siv_t TYPE zar_fi_cnv_siv_t,
  673.       ls_zfi_tuc_doc_ref  TYPE zfi_tuc_doc_ref,
  674.       lv_stcd1            TYPE kna1-stcd1,
  675.       lv_stcd2            TYPE kna1-stcd2,
  676.       lv_stcdt            TYPE kna1-stcdt,
  677.       lv_name1            TYPE kna1-name1,
  678.       lv_fityp            TYPE kna1-fityp,
  679.       lv_regio            TYPE kna1-regio,
  680.       lv_stras            TYPE kna1-stras,
  681.       lv_telf1            TYPE kna1-telf1,
  682.       lv_pstlz            TYPE kna1-pstlz,
  683.       lv_ort01            TYPE kna1-ort01,
  684.       lv_mcod3            TYPE kna1-mcod3,
  685.       lv_adrnr            TYPE kna1-adrnr,
  686.       lv_gridt            TYPE knb1-gridt,
  687.       ls_archivo          TYPE gty_archivo,
  688.       wa_asoc             TYPE bkpf,
  689.       ls_ncfact           LIKE LINE OF gt_ncfact_t,
  690.       lv_len              TYPE i,
  691.       lv_xblnr            TYPE xblnr,
  692.       lv_exemption        TYPE wt_exrt.
  693.  
  694.     DATA:
  695.       lt_fact           TYPE ty_t_fact,
  696.       lt_bset_fact      TYPE ty_t_bset_fact,
  697.       lt_iva            TYPE ty_t_iva,
  698.       ls_iva            TYPE ty_iva,
  699.       lt_bkpf_fact      TYPE ty_t_bkpf_fact,
  700.       lt_bkpf_fact_pago TYPE ty_t_bkpf_fact,
  701.       ls_bkpf_fact_pago TYPE ty_bkpf_fact,
  702.       lv_iva            TYPE ty_iva-fwste,
  703.       lv_xblnr_fact     TYPE ty_iva-xblnr_fact,
  704.       lt_aux_fact       LIKE lt_fact,
  705.       lv_nrocomp_aux    TYPE c LENGTH 12,
  706.       lt_r_belnr        TYPE RANGE OF bseg-belnr,
  707.       ls_r_belnr        LIKE LINE OF lt_r_belnr.
  708.  
  709.     DATA: vl_tabix TYPE sy-tabix.
  710.     DATA: vl_alicu TYPE c.
  711.     DATA lv_aux    TYPE /bev3/chumnet.
  712.     DATA lv_aux_2  TYPE /bev3/chumnet.
  713.     DATA lv_dif    TYPE /bev3/chumnet.
  714.  
  715.     FIELD-SYMBOLS:
  716.       <fs_bkpf>           TYPE bkpf,
  717.       <fs_fact>           TYPE ty_fact,
  718.       <fs_bset_fact>      TYPE ty_bset_fact,
  719.       <fs_bkpf_fact>      TYPE ty_bkpf_fact,
  720.       <fs_bkpf_fact_pago> TYPE ty_bkpf_fact,
  721.       <fs_iva>            TYPE ty_iva.
  722.  
  723. *   Range documentos pago
  724.     ls_r_belnr-sign = 'I'.
  725.     ls_r_belnr-option = 'EQ'.
  726.     LOOP AT gt_bkpf ASSIGNING <fs_bkpf>.
  727.       ls_r_belnr-low = <fs_bkpf>-belnr.
  728.       APPEND ls_r_belnr TO lt_r_belnr.
  729.     ENDLOOP.
  730.  
  731. *   Facturas asociadas a los pagos
  732.     SELECT belnr
  733.            buzei
  734.            augbl
  735.       FROM bseg
  736.       INTO TABLE lt_fact
  737.       WHERE bukrs = p_bukrs   AND
  738.             gjahr IN so_gjahr AND
  739.             augbl IN lt_r_belnr.
  740.  
  741.     LOOP AT lt_fact ASSIGNING <fs_fact>.
  742.       IF <fs_fact>-belnr EQ <fs_fact>-augbl.
  743.         <fs_fact>-del = 'X'.
  744.       ENDIF.
  745.     ENDLOOP.
  746.     DELETE lt_fact WHERE del = 'X'.
  747.     SORT lt_fact BY belnr buzei augbl.
  748.  
  749.     IF lt_fact[] IS NOT INITIAL.
  750.  
  751.       lt_aux_fact = lt_fact.
  752.       SORT lt_aux_fact BY belnr.
  753.       DELETE ADJACENT DUPLICATES FROM lt_aux_fact COMPARING belnr.
  754.  
  755. *     Info BKPF facturas
  756.       SELECT belnr
  757.              xblnr
  758.         FROM bkpf
  759.         INTO TABLE lt_bkpf_fact
  760.         FOR ALL ENTRIES IN lt_aux_fact
  761.         WHERE bukrs = p_bukrs   AND
  762.               gjahr IN so_gjahr AND
  763.               belnr = lt_aux_fact-belnr.
  764.  
  765. *     Info BSET facturas
  766.       SELECT belnr
  767.              buzei
  768.              fwste
  769.         FROM bset
  770.         INTO TABLE lt_bset_fact
  771.         FOR ALL ENTRIES IN lt_fact
  772.         WHERE bukrs = p_bukrs AND
  773.               belnr = lt_fact-belnr AND
  774.               gjahr IN so_gjahr     AND
  775.               buzei = lt_fact-buzei AND
  776.               ktosl = 'VST'.
  777.  
  778.       SORT lt_fact BY augbl belnr buzei.
  779.  
  780. *     IVA para el doc de pago
  781.       LOOP AT lt_fact ASSIGNING <fs_fact>.
  782.         ls_iva-belnr      = <fs_fact>-augbl.
  783.         ls_iva-fwste = 0.
  784.         LOOP AT lt_bset_fact ASSIGNING <fs_bset_fact>
  785.           WHERE belnr = <fs_fact>-belnr AND
  786.                 buzei = <fs_fact>-buzei.
  787.  
  788.           ls_iva-fwste = ls_iva-fwste + <fs_bset_fact>-fwste.
  789.  
  790.         ENDLOOP.
  791.         COLLECT ls_iva INTO lt_iva.
  792.  
  793. *     XBLNR de la factura
  794.         ls_bkpf_fact_pago-belnr = <fs_fact>-augbl. "Nro Pago
  795.         READ TABLE lt_bkpf_fact
  796.           ASSIGNING <fs_bkpf_fact>
  797.           WITH KEY belnr = <fs_fact>-belnr
  798.           BINARY SEARCH.
  799.         IF sy-subrc EQ 0.
  800.           ls_bkpf_fact_pago-xblnr = <fs_bkpf_fact>-xblnr.
  801.         ENDIF.
  802.         APPEND ls_bkpf_fact_pago TO lt_bkpf_fact_pago.
  803.  
  804.       ENDLOOP.
  805.  
  806.       SORT lt_bkpf_fact_pago BY belnr.
  807.       DELETE ADJACENT DUPLICATES FROM lt_bkpf_fact_pago COMPARING belnr.
  808.  
  809.     ENDIF.
  810.  
  811. *   Analizo los documentos obtenidos
  812.     LOOP AT gt_bkpf INTO ls_bkpf.
  813.  
  814.       CLEAR gt_with_item2[].
  815.       LOOP AT gt_with_item INTO ls_with_item WHERE bukrs = ls_bkpf-bukrs
  816.                                                AND belnr = ls_bkpf-belnr
  817.                                                AND gjahr = ls_bkpf-gjahr.
  818.         APPEND ls_with_item TO gt_with_item2.
  819.       ENDLOOP.
  820.       CLEAR vl_alicu.
  821.       DESCRIBE TABLE gt_with_item2 LINES vl_tabix.
  822.  
  823.  
  824.       LOOP AT gt_with_item INTO ls_with_item WHERE     bukrs = ls_bkpf-bukrs
  825.                                                    AND belnr = ls_bkpf-belnr
  826.                                                    AND gjahr = ls_bkpf-gjahr.
  827.  
  828.         CLEAR ls_reg_alv.
  829.  
  830. *       Busco el registro de BSEG correspondiente al proveedor/cliente
  831.         READ TABLE gt_bseg_k_d INTO ls_bseg_k_d WITH KEY bukrs = ls_bkpf-bukrs
  832.                                                          belnr = ls_bkpf-belnr
  833.                                                          gjahr = ls_bkpf-gjahr.
  834.         CHECK sy-subrc EQ 0.
  835. *       Obtener correctamente los datos del proveedor o del cliente segun corresponda
  836.         CALL METHOD obtener_datos_prov_clie(
  837.           EXPORTING
  838.             i_lv_bukrs = ls_bkpf-bukrs
  839.             i_lv_belnr = ls_bkpf-belnr
  840.             i_lv_gjahr = ls_bkpf-gjahr
  841.             i_lv_koart = ls_bseg_k_d-koart
  842.             i_lv_lifnr = ls_bseg_k_d-lifnr
  843.             i_lv_kunnr = ls_bseg_k_d-kunnr
  844.           CHANGING
  845.             c_lv_stcd1 = lv_stcd1
  846.             c_lv_stcd2 = lv_stcd2
  847.             c_lv_stcdt = lv_stcdt
  848.             c_lv_name1 = lv_name1
  849.             c_lv_regio = lv_regio
  850.             c_lv_stras = lv_stras
  851.             c_lv_telf1 = lv_telf1
  852.             c_lv_pstlz = lv_pstlz
  853.             c_lv_ort01 = lv_ort01
  854.             c_lv_mcod3 = lv_mcod3
  855.             c_lv_adrnr = lv_adrnr
  856.             c_lv_fityp = lv_fityp
  857.             c_lv_gridt = lv_gridt ).
  858.  
  859. * Datos globales:
  860.  
  861.         vg_retper = 'RET'.
  862.  
  863.         ls_reg_alv-retper = 'RET'.
  864.  
  865.         ls_reg_alv-bukrs = ls_bkpf-bukrs.
  866.  
  867.         ls_reg_alv-belnr = ls_bkpf-belnr.
  868.  
  869.         ls_reg_alv-gjahr = ls_bkpf-gjahr.
  870.  
  871. *       Fecha
  872.         ls_reg_alv-bldat = ls_bkpf-bldat.
  873.  
  874. *       Tipo Doc
  875.         ls_reg_alv-stcdt_r = lv_stcdt.
  876.  
  877. *       Documento
  878.         ls_reg_alv-stcd1_r = lv_stcd1.
  879.  
  880.         " Disclaimer:
  881.         " Por definición funcional, los pagos van a tomar el numero de documento interno
  882.         " de SAP y no el XBLNR, también el tipo de documento va a ser de 99 (otros documentos)
  883.  
  884.         READ TABLE gt_zfi_tuc_doc_ref INTO ls_zfi_tuc_doc_ref WITH KEY blart = ls_bkpf-blart.
  885.  
  886.         IF sy-subrc EQ 0.
  887.           CONCATENATE ls_bkpf-belnr(2) ls_bkpf-belnr+4 INTO lv_xblnr.
  888.           ls_reg_alv-xblnr = lv_xblnr.
  889.           ls_reg_alv-tipo_doc = 99.
  890.           CLEAR lv_xblnr.
  891.         ELSE.
  892.           IF ls_bkpf-xblnr NE space.
  893. *           Letra de comprobante
  894.             lv_nrocomp_aux = ls_bkpf-xblnr+13(1).
  895.             IF lv_nrocomp_aux IS INITIAL.
  896.               ls_reg_alv-letra = ls_bkpf-xblnr+4(1).
  897.             ELSE.
  898.               ls_reg_alv-letra = ls_bkpf-xblnr+5(1).
  899.             ENDIF.
  900. *           Cod.lugar emisión
  901.             IF lv_nrocomp_aux IS INITIAL.
  902.               ls_reg_alv-cod_lug_em = ls_bkpf-xblnr(4).
  903.             ELSE.
  904.               ls_reg_alv-cod_lug_em = ls_bkpf-xblnr+1(4).
  905.             ENDIF.
  906. *           Número del comprobante
  907.             IF lv_nrocomp_aux IS INITIAL.
  908.               ls_reg_alv-xblnr = ls_bkpf-xblnr+5(8).
  909.             ELSE.
  910.               ls_reg_alv-xblnr = ls_bkpf-xblnr+6(8).
  911.             ENDIF.
  912.           ENDIF.
  913.         ENDIF.
  914.  
  915. *       Base cálculo
  916.         ls_reg_alv-wt_qsshh = ls_with_item-wt_qsshh.
  917.  
  918. *       Alicuota
  919.  
  920.         IF ls_with_item-wt_qszrt IS INITIAL.
  921.           ls_reg_alv-qsatz = ls_with_item-qsatz.
  922.         ELSE.
  923.           lv_exemption = ls_with_item-wt_qszrt / 100. " Aplicamos el porcentaje de exención a la alícuota
  924.           ls_reg_alv-qsatz = ls_with_item-qsatz * ( 1 - lv_exemption ).
  925.         ENDIF.
  926.  
  927.  
  928. *       Monto
  929.         ls_reg_alv-wt_qbshh = ls_with_item-wt_qbshh.
  930.  
  931. *       Tipo de Comprobante:
  932.         READ TABLE gt_zar_fi_cnv_cd2_t INTO ls_zar_fi_cnv_cd2_t WITH KEY blart = ls_bkpf-blart
  933.                                                                          letra = ls_reg_alv-letra.
  934.         IF sy-subrc = 0.
  935.  
  936.           lv_len = strlen( ls_zar_fi_cnv_cd2_t-cnvc2 ).
  937.  
  938.           CASE lv_len. "Por definición funcional, si un tipo de comprobante tiene 3 caracteres, se toman los dos últimos.
  939.             WHEN 2.
  940.               ls_reg_alv-tipo_doc = ls_zar_fi_cnv_cd2_t-cnvc2.
  941.             WHEN 3.
  942.               ls_reg_alv-tipo_doc = ls_zar_fi_cnv_cd2_t-cnvc2+1(2).
  943.           ENDCASE.
  944.  
  945.           CLEAR lv_len.
  946.  
  947.         ENDIF.
  948.  
  949.         COLLECT ls_reg_alv INTO gt_caba_ret.
  950.  
  951. * Segundo fichero:
  952.  
  953. *       Tipo Doc
  954.         ls_ret_per-stcdt_r = lv_stcdt.
  955.  
  956. *       Documento
  957.         ls_ret_per-stcd1_r = lv_stcd1.
  958.  
  959. *       Nombre
  960.         ls_ret_per-name1_r = lv_name1.
  961.  
  962. *       Calle y num
  963.  
  964.         SELECT SINGLE street house_num1
  965.           FROM adrc
  966.           INTO (ls_ret_per-street_r , ls_ret_per-str_num_r)
  967.           WHERE addrnumber = lv_adrnr.
  968.  
  969. *       Localidad
  970.         ls_ret_per-ort01_r = lv_ort01.
  971.  
  972. *       Provincia
  973.  
  974.         SELECT SINGLE bezei
  975.           FROM t005u
  976.           INTO ls_ret_per-regio_r
  977.           WHERE spras = sy-langu AND
  978.                 land1 = 'AR'     AND
  979.                 bland = lv_regio.
  980.  
  981. *       Codigo postal
  982.         ls_ret_per-pstlz_r = lv_pstlz.
  983.  
  984.         COLLECT ls_ret_per INTO gt_retper_t.
  985.  
  986.       ENDLOOP.
  987.     ENDLOOP.
  988.  
  989.     APPEND LINES OF gt_caba_ret TO gt_caba.
  990.     APPEND LINES OF gt_retper_t TO gt_retper.
  991.     APPEND LINES OF gt_ncfact   TO gt_ncfact.
  992.  
  993.   ENDMETHOD.                    "armar_tabla_aplicativo_ret
  994. *----------------------------------------------------------------------*
  995. *      Method armar_fieldcat                                           *
  996. *----------------------------------------------------------------------*
  997. *      Armar fieldcat                                                  *
  998. *----------------------------------------------------------------------*
  999.   METHOD armar_fieldcat.
  1000.     DATA: ls_fieldcat TYPE slis_fieldcat_alv. "LVC_S_FCAT.
  1001.  
  1002.     load_fieldcat         'RETPER'
  1003.                           'Tipo de operación'
  1004.                           'Tipo de operación'
  1005.                           'Tipo de operación'
  1006.                           0 space space.
  1007.  
  1008.     load_fieldcat         'BUKRS'
  1009.                           'Soc.'(091)
  1010.                           'Sociedad'(092)
  1011.                           'Sociedad'(092)
  1012.                           0 space space.
  1013.  
  1014.     IF rb_ar1 IS NOT INITIAL .
  1015.  
  1016.       load_fieldcat         'BELNR'
  1017.                             'Documento SAP'(093)
  1018.                             'Documento SAP'(093)
  1019.                             'Documento SAP'(093)
  1020.                             0 space space.
  1021.  
  1022.       load_fieldcat         'GJAHR'
  1023.                             'Ejercicio'(094)
  1024.                             'Ejercicio'(094)
  1025.                             'Ejercicio'(094)
  1026.                             0 space space.
  1027.     ENDIF.
  1028.  
  1029.  
  1030.     load_fieldcat           'TIPO_NIF'
  1031.                             'Tipo NIF'
  1032.                             'Tipo NIF'
  1033.                             'Tipo NIF'
  1034.                             0 space space.
  1035.  
  1036.     load_fieldcat           'NIF'
  1037.                             'NIF'
  1038.                             'NIF'
  1039.                             'NIF'
  1040.                             0 space space.
  1041.  
  1042.     load_fieldcat           'NAME1'
  1043.                             'Razon Social'
  1044.                             'Razon Social'
  1045.                             'Razon Social'
  1046.                             0 space space.
  1047. *    ENDIF.
  1048.  
  1049.  
  1050.     IF rb_ar1 IS NOT INITIAL.
  1051.  
  1052. *      IF vg_retper EQ 'RET'.
  1053.  
  1054.       load_fieldcat           'TIPO_DOC'
  1055.                               'Tipo doc'
  1056.                               'Tipo doc'
  1057.                               'Tipo doc'
  1058.                               0 space space.
  1059.  
  1060.       load_fieldcat           'LETRA'
  1061.                               'Letra doc'
  1062.                               'Letra doc'
  1063.                               'Letra doc'
  1064.                               0 space space.
  1065.  
  1066.       load_fieldcat           'COD_LUG_EM'
  1067.                               'Sucursal'
  1068.                               'Sucursal'
  1069.                               'Sucursal'
  1070.                               0 space space.
  1071.  
  1072.       load_fieldcat           'XBLNR'
  1073.                               'Numero doc'
  1074.                               'Numero doc'
  1075.                               'Numero doc'
  1076.                               0 space space.
  1077.  
  1078.       load_fieldcat           'BLDAT'
  1079.                               'Fecha del documento'
  1080.                               'Fecha del documento'
  1081.                               'Fecha del documento'
  1082.                                0 space space.
  1083.  
  1084. *        IF vg_retper EQ 'PER'.
  1085.  
  1086. *          load_fieldcat           'HWBAS'
  1087. *                                  'Base calc.'
  1088. *                                  'Base calc.'
  1089. *                                  'Base calc.'
  1090. *                                  0 space space.
  1091. *
  1092. *          load_fieldcat           'KBETR'
  1093. *                                  'Porcentaje'
  1094. *                                  'Porcentaje'
  1095. *                                  'Porcentaje'
  1096. *                                  0 space space.
  1097. *
  1098. *          load_fieldcat           'HWSTE'
  1099. *                                  'Monto'
  1100. *                                  'Monto'
  1101. *                                  'Monto'
  1102. *                                  0 space space.
  1103.  
  1104. *        ELSE.
  1105.  
  1106.       load_fieldcat           'HWBAS'
  1107.                               'Base calc.'
  1108.                               'Base calc.'
  1109.                               'Base calc.'
  1110.                               0 space space.
  1111.  
  1112.       load_fieldcat           'QSATZ'
  1113.                               'Alicuota'
  1114.                               'Alicuota'
  1115.                               'Alicuota'
  1116.                               0 space space.
  1117.  
  1118.       load_fieldcat           'WT_QBSHH'
  1119.                               'Monto RET/PER'
  1120.                               'Monto RET/PER'
  1121.                               'Monto RET/PER'
  1122.                               0 space space.
  1123.  
  1124.     ENDIF.
  1125.  
  1126.     IF rb_ar2 IS NOT INITIAL.
  1127.  
  1128.       load_fieldcat           'STREET'
  1129.                               'Calle'
  1130.                               'Calle'
  1131.                               'Calle'
  1132.                               0 space space.
  1133.  
  1134.       load_fieldcat           'STR_NUM'
  1135.                               'Numero calle'
  1136.                               'Numero calle'
  1137.                               'Numero calle'
  1138.                               0 space space.
  1139.  
  1140.       load_fieldcat           'ORT01'
  1141.                               'Localidad'
  1142.                               'Localidad'
  1143.                               'Localidad'
  1144.                               0 space space.
  1145.  
  1146.       load_fieldcat           'REGIO'
  1147.                               'Provincia'
  1148.                               'Provincia'
  1149.                               'Provincia'
  1150.                               0 space space.
  1151.  
  1152.       load_fieldcat           'PSTLZ'
  1153.                               'Codigo postal'
  1154.                               'Codigo postal'
  1155.                               'Codigo postal'
  1156.                               0 space space.
  1157.     ENDIF.
  1158.  
  1159.     IF rb_ar3 IS NOT INITIAL.
  1160.  
  1161.       load_fieldcat         'BELNR'
  1162.                             'Documento SAP NC'
  1163.                             'Documento SAP NC'
  1164.                             'Documento SAP NC'
  1165.                             0 space space.
  1166.  
  1167.       load_fieldcat         'GJAHR'
  1168.                             'Ejercicio'
  1169.                             'Ejercicio'
  1170.                             'Ejercicio'
  1171.                             0 space space.
  1172.  
  1173.       load_fieldcat           'COD_LUG_EM_NC'
  1174.                               'Sucursal NC'
  1175.                               'Sucursal NC'
  1176.                               'Sucursal NC'
  1177.                               0 space space.
  1178.  
  1179.       load_fieldcat           'LETRA_NC'
  1180.                               'Letra NC'
  1181.                               'Letra NC'
  1182.                               'Letra NC'
  1183.                               0 space space.
  1184.  
  1185.       load_fieldcat           'NUM_NC'
  1186.                               'Referencia NC'
  1187.                               'Referencia NC'
  1188.                               'Referencia NC'
  1189.                               0 space space.
  1190.  
  1191.       load_fieldcat           'DOC_SAP_FC'
  1192.                               'Documento SAP FC'
  1193.                               'Documento SAP FC'
  1194.                               'Documento SAP FC'
  1195.                               0 space space.
  1196.  
  1197.       load_fieldcat           'COD_LUG_EM_FAC'
  1198.                               'Sucursal FC'
  1199.                               'Sucursal FC'
  1200.                               'Sucursal FC'
  1201.                               0 space space.
  1202.  
  1203.  
  1204.       load_fieldcat           'LETRA_FC'
  1205.                               'Letra FC'
  1206.                               'Letra FC'
  1207.                               'Letra FC'
  1208.                               0 space space.
  1209.  
  1210.       load_fieldcat           'NUM_FAC'
  1211.                               'Referencia FC'
  1212.                               'Referencia FC'
  1213.                               'Referencia FC'
  1214.                               0 space space.
  1215.  
  1216.       load_fieldcat           'TIPO_FAC'
  1217.                               'Tipo de Doc.FC'
  1218.                               'Tipo de Doc.FC'
  1219.                               'Tipo de Doc.FC'
  1220.                               0 space space.
  1221.  
  1222.     ENDIF.
  1223.  
  1224. *   Completa con los campos generales, para todos los aplicativos.
  1225. *    super->armar_fieldcat( CHANGING c_lt_fieldcat = c_lt_fieldcat ).
  1226.  
  1227.   ENDMETHOD.                    "armar_fieldcat
  1228. *----------------------------------------------------------------------*
  1229. *      Method asignar_tabla                                            *
  1230. *----------------------------------------------------------------------*
  1231. *      Asignar tabla                                                   *
  1232. *----------------------------------------------------------------------*
  1233.   METHOD asignar_tabla.
  1234.  
  1235.     DATA: wa_data   LIKE LINE OF gt_caba,
  1236.           wa_retper LIKE LINE OF gt_retper_t,
  1237.           wa_ncfac  LIKE LINE OF gt_ncfact_t,
  1238.           wa_data1  LIKE LINE OF gt_data1,
  1239.           wa_data2  LIKE LINE OF gt_data2,
  1240.           wa_data3  LIKE LINE OF gt_data3,
  1241.           wa_aux    LIKE LINE OF gt_bseg,
  1242.           lv_blart  TYPE blart.
  1243.  
  1244.     LOOP AT gt_caba INTO wa_data.
  1245.       MOVE-CORRESPONDING wa_data TO wa_data1.
  1246.       IF wa_data-stcdt_r IS NOT INITIAL.
  1247.         wa_data1-tipo_nif = wa_data-stcdt_r.
  1248.         wa_data1-nif      = wa_data-stcd1_r.
  1249.         wa_data1-hwbas    = wa_data-wt_qsshh.
  1250.         wa_data1-qsatz    = wa_data-qsatz.
  1251.         wa_data1-wt_qbshh = wa_data-wt_qbshh.
  1252.       ELSE.
  1253.         wa_data1-tipo_nif = wa_data-stcdt_p.
  1254.         wa_data1-nif      = wa_data-stcd1_p.
  1255.         wa_data1-hwbas    = wa_data-hwbas.
  1256.         wa_data1-qsatz    = wa_data-kbetr.
  1257.         wa_data1-wt_qbshh = wa_data-hwste.
  1258.       ENDIF.
  1259.  
  1260. *    LOOP AT gt_retper_t INTO wa_retper.
  1261.       IF wa_data-stcdt_r IS NOT INITIAL.
  1262.         READ TABLE gt_retper_t INTO wa_retper WITH KEY stcd1_r = wa_data-stcd1_r.
  1263.       ELSE.
  1264.         READ TABLE gt_retper_t INTO wa_retper WITH KEY stcd1_p = wa_data-stcd1_p.
  1265.       ENDIF.
  1266.       MOVE-CORRESPONDING wa_retper TO wa_data2.
  1267.       IF wa_retper-stcdt_r IS NOT INITIAL.
  1268.         MOVE wa_retper-name1_r   TO wa_data1-name1.
  1269.         MOVE wa_retper-name1_r   TO wa_data2-name1.
  1270.         MOVE wa_retper-name1_r   TO wa_data3-name1.
  1271.       ELSE.
  1272.         MOVE wa_retper-name1_p   TO wa_data1-name1.
  1273.         MOVE wa_retper-name1_p   TO wa_data2-name1.
  1274.         MOVE wa_retper-name1_p   TO wa_data3-name1.
  1275.       ENDIF.
  1276. *    ENDLOOP.
  1277.  
  1278. *      IF rb_ar1 IS NOT INITIAL.
  1279.       APPEND wa_data1 TO gt_data1.
  1280. *        ASSIGN gt_data1 TO <fs_alv>.
  1281. *      ELSEIF rb_ar2 IS NOT INITIAL.
  1282.       MOVE-CORRESPONDING wa_data1 TO wa_data2.
  1283. *        LOOP AT gt_retper_t INTO wa_retper.
  1284.  
  1285.       IF wa_data-stcdt_r IS NOT INITIAL.
  1286.         READ TABLE gt_retper_t INTO wa_retper WITH KEY stcd1_r = wa_data-stcd1_r.
  1287.       ELSE.
  1288.         READ TABLE gt_retper_t INTO wa_retper WITH KEY stcd1_p = wa_data-stcd1_p.
  1289.       ENDIF.
  1290.  
  1291.       MOVE-CORRESPONDING wa_retper TO wa_data2.
  1292.       IF wa_retper-stcdt_r IS NOT INITIAL.
  1293.         MOVE wa_retper-name1_r    TO wa_data2-name1.
  1294.         MOVE wa_retper-street_r   TO wa_data2-street.
  1295.         MOVE wa_retper-str_num_r  TO wa_data2-str_num.
  1296.         MOVE wa_retper-ort01_r    TO wa_data2-ort01.
  1297.         MOVE wa_retper-regio_r    TO wa_data2-regio.
  1298.         MOVE wa_retper-pstlz_r    TO wa_data2-pstlz.
  1299.       ELSE.
  1300.         MOVE wa_retper-name1_p    TO wa_data2-name1.
  1301.         MOVE wa_retper-street_p   TO wa_data2-street.
  1302.         MOVE wa_retper-str_num_p  TO wa_data2-str_num.
  1303.         MOVE wa_retper-ort01_p    TO wa_data2-ort01.
  1304.         MOVE wa_retper-regio_p    TO wa_data2-regio.
  1305.         MOVE wa_retper-pstlz_p    TO wa_data2-pstlz.
  1306.       ENDIF.
  1307.       APPEND wa_data2 TO gt_data2.
  1308. *        ENDLOOP.
  1309. *        ASSIGN gt_data2 TO <fs_alv>.
  1310. *      ELSEIF rb_ar3 IS NOT INITIAL.
  1311.       IF wa_data-stcdt_r IS NOT INITIAL.
  1312.         wa_data3-name1 = wa_retper-name1_r.
  1313.       ELSE.
  1314.         wa_data3-name1 = wa_retper-name1_p.
  1315.       ENDIF.
  1316.       MOVE-CORRESPONDING wa_data1 TO wa_data3.
  1317.  
  1318.       LOOP AT gt_ncfact_t INTO wa_ncfac.
  1319.  
  1320.         IF wa_ncfac-num_nc EQ wa_data-xblnr.
  1321. *      READ TABLE gt_ncfact_t INTO wa_ncfac WITH KEY num_nc  = wa_data-xblnr.
  1322.  
  1323.           IF sy-subrc EQ 0 AND wa_ncfac IS NOT INITIAL.
  1324.             MOVE-CORRESPONDING wa_ncfac TO wa_data3.
  1325. *          MOVE wa_data-belnr TO wa_data3-belnr.
  1326.             IF wa_data3-retper NE 'RET'.
  1327.  
  1328.               SELECT SINGLE blart
  1329.                 FROM bkpf
  1330.                 INTO lv_blart
  1331.                 WHERE bukrs = wa_data3-bukrs AND
  1332.                       belnr = wa_data3-belnr AND
  1333.                       gjahr = wa_data3-gjahr.
  1334.  
  1335.               IF  lv_blart EQ 'DJ' OR
  1336.                   lv_blart EQ 'Z3' OR
  1337.                   lv_blart EQ 'ZG' OR
  1338.                   lv_blart EQ 'ZC'.
  1339.                 APPEND wa_data3 TO gt_data3.
  1340.               ENDIF.
  1341.             ENDIF.
  1342.           ENDIF.
  1343.         ENDIF.
  1344.       ENDLOOP.
  1345.  
  1346.       ASSIGN gt_data3 TO <fs_alv>.
  1347.  
  1348.       CLEAR: wa_data,
  1349.              wa_data1,
  1350.              wa_data2,
  1351.              wa_data3.
  1352.     ENDLOOP.
  1353.  
  1354.     SORT gt_data2 BY nif.
  1355.     DELETE ADJACENT DUPLICATES FROM gt_data2 COMPARING nif.
  1356.     SORT gt_data3 BY bukrs belnr gjahr.
  1357.     DELETE ADJACENT DUPLICATES FROM gt_data3 COMPARING bukrs belnr gjahr.
  1358.  
  1359.     IF rb_ar1 IS NOT INITIAL.
  1360.       ASSIGN gt_data1 TO <fs_alv>.
  1361.     ELSEIF rb_ar2 IS NOT INITIAL.
  1362.       ASSIGN gt_data2 TO <fs_alv>.
  1363.     ELSEIF rb_ar3 IS NOT INITIAL.
  1364.       ASSIGN gt_data3 TO <fs_alv>.
  1365.     ENDIF.
  1366.   ENDMETHOD.                    "asignar_tabla
  1367. *----------------------------------------------------------------------*
  1368. *      Method tipo_impuesto                                            *
  1369. *----------------------------------------------------------------------*
  1370. *      Devuelve el tipo de impuesto, para realizar o no funcionalidades*
  1371. *----------------------------------------------------------------------*
  1372.   METHOD tipo_impuesto.
  1373.     r_lv_tipo_impuesto = 'P'(c03).
  1374.   ENDMETHOD.                    "tipo_impuesto
  1375.   METHOD armar_archivo_salida.
  1376.  
  1377.     DATA:
  1378.       ls_reg_alv  TYPE gty_data_t,
  1379.       ls_reg_txt  TYPE gty_data,
  1380.       ls_retper   TYPE gty_retper,
  1381.       ls_retper_t TYPE gty_retper_t,
  1382.       ls_ncfact_t LIKE LINE OF gt_ncfact_t,
  1383.       ls_ncfact   TYPE gty_ncfact,
  1384.       lv_len      TYPE i,
  1385.       ls_archivo  TYPE gty_archivo,
  1386.       lv_num1(12) TYPE c,
  1387.       lv_dec1(2)  TYPE c,
  1388.       lv_num2(2)  TYPE c,
  1389.       lv_dec2(3)  TYPE c,
  1390.       lv_aux      TYPE string,
  1391.       lv_aux2     TYPE string.
  1392.  
  1393.     SORT gt_caba BY bldat.
  1394.     SORT gt_retper BY stcd1_r stcd1_p.
  1395.     DELETE ADJACENT DUPLICATES FROM gt_retper COMPARING stcd1_r stcd1_p.
  1396.  
  1397.     LOOP AT gt_caba INTO ls_reg_alv.
  1398.  
  1399.       CLEAR lv_aux.
  1400.  
  1401.       PERFORM f_format USING ls_reg_alv-bldat       ' ' CHANGING lv_aux.
  1402.       MOVE lv_aux TO ls_reg_txt-fecha.
  1403.       PERFORM f_format USING ls_reg_alv-tipo_doc    ' ' CHANGING lv_aux.
  1404.       MOVE lv_aux TO ls_reg_txt-tipocomp.
  1405.       PERFORM f_format USING ls_reg_alv-letra       ' ' CHANGING lv_aux.
  1406.       MOVE lv_aux TO ls_reg_txt-letra.
  1407.       PERFORM f_format USING ls_reg_alv-cod_lug_em  ' ' CHANGING lv_aux.
  1408.       MOVE lv_aux TO ls_reg_txt-cod_lug_em.
  1409.       PERFORM f_format USING ls_reg_alv-xblnr       ' ' CHANGING lv_aux.
  1410.       MOVE lv_aux TO ls_reg_txt-numero.
  1411.  
  1412.       IF ls_reg_alv-stcdt_p IS NOT INITIAL.
  1413.         PERFORM f_format USING ls_reg_alv-stcdt_p ' ' CHANGING lv_aux.
  1414.         MOVE lv_aux TO ls_reg_txt-tipodoc.
  1415.         PERFORM f_format USING ls_reg_alv-stcd1_p ' ' CHANGING lv_aux.
  1416.         MOVE lv_aux TO ls_reg_txt-documento.
  1417.         lv_aux = ls_reg_alv-hwbas.
  1418.         SPLIT lv_aux AT '.' INTO lv_num1 lv_dec1.
  1419.         PERFORM f_format USING lv_num1 'M' CHANGING lv_num1.
  1420.         "        PERFORM f_format USING lv_dec1 CHANGING lv_dec1.
  1421.         CONCATENATE lv_num1 '.' lv_dec1(2) INTO ls_reg_txt-base_calc.
  1422.         lv_aux = ls_reg_alv-kbetr.
  1423.         SPLIT lv_aux  AT '.' INTO lv_num2 lv_dec2.
  1424.         PERFORM f_format USING lv_num2 'A' CHANGING lv_num2.
  1425.         "        PERFORM f_format USING lv_dec2 CHANGING lv_dec2.
  1426.         CONCATENATE lv_num2 '.' lv_dec2(3) INTO ls_reg_txt-porc_ali.
  1427.         lv_aux = ls_reg_alv-hwste.
  1428.         SPLIT lv_aux AT '.' INTO lv_num1 lv_dec1.
  1429.         PERFORM f_format USING lv_num1 'M' CHANGING lv_num1.
  1430.         "        PERFORM f_format USING lv_dec1 CHANGING lv_dec1.
  1431.         CONCATENATE lv_num1 '.' lv_dec1(2) INTO ls_reg_txt-monto_pr.
  1432.       ELSE.
  1433.         PERFORM f_format USING ls_reg_alv-stcdt_r ' ' CHANGING lv_aux.
  1434.         MOVE lv_aux TO ls_reg_txt-tipodoc.
  1435.         PERFORM f_format USING ls_reg_alv-stcd1_r ' ' CHANGING lv_aux.
  1436.         MOVE lv_aux TO ls_reg_txt-documento.
  1437.         lv_aux = ls_reg_alv-wt_qsshh.
  1438.         SPLIT lv_aux AT '.' INTO lv_num1 lv_dec1.
  1439.         PERFORM f_format USING lv_num1 'M' CHANGING lv_num1.
  1440.         "        PERFORM f_format USING lv_dec1 CHANGING lv_dec1.
  1441.         CONCATENATE lv_num1 '.' lv_dec1 INTO ls_reg_txt-base_calc.
  1442.         lv_aux = ls_reg_alv-qsatz.
  1443.         SPLIT lv_aux AT '.' INTO lv_num2 lv_dec2.
  1444.         PERFORM f_format USING lv_num2 'A' CHANGING lv_num2.
  1445.         "        PERFORM f_format USING lv_dec2 CHANGING lv_dec2.
  1446.         CONCATENATE lv_num2 '.' lv_dec2 INTO ls_reg_txt-porc_ali.
  1447.         lv_aux = ls_reg_alv-wt_qbshh.
  1448.         SPLIT lv_aux AT '.' INTO lv_num1 lv_dec1.
  1449.         PERFORM f_format USING lv_num1 'M' CHANGING lv_num1.
  1450.         "        PERFORM f_format USING lv_dec1 CHANGING lv_dec1.
  1451.         CONCATENATE lv_num1 '.' lv_dec1 INTO ls_reg_txt-monto_pr.
  1452.       ENDIF.
  1453.  
  1454. *      LOOP AT gt_retper_t INTO ls_retper_t.
  1455.       IF ls_reg_alv-stcdt_p IS NOT INITIAL.
  1456.         READ TABLE gt_retper_t INTO ls_retper_t WITH KEY stcd1_p = ls_reg_alv-stcd1_p.
  1457.       ELSE.
  1458.         READ TABLE gt_retper_t INTO ls_retper_t WITH KEY stcd1_r = ls_reg_alv-stcd1_r.
  1459.       ENDIF.
  1460.  
  1461.       IF ls_retper_t-stcdt_r IS NOT INITIAL.
  1462.         MOVE ls_retper_t-stcdt_r    TO ls_retper-tipodoc.
  1463.         MOVE ls_retper_t-stcd1_r    TO ls_retper-documento.
  1464.         MOVE ls_retper_t-name1_r    TO ls_retper-nombre.
  1465.         MOVE ls_retper_t-street_r   TO ls_retper-domicilio.
  1466.         MOVE ls_retper_t-str_num_r  TO ls_retper-calle_num.
  1467.         MOVE ls_retper_t-ort01_r    TO ls_retper-localidad.
  1468.         MOVE ls_retper_t-regio_r    TO ls_retper-provincia.
  1469.         MOVE ls_retper_t-pstlz_r    TO ls_retper-c_postal.
  1470.       ELSE.
  1471.         MOVE ls_retper_t-stcdt_p    TO ls_retper-tipodoc.
  1472.         MOVE ls_retper_t-stcd1_p    TO ls_retper-documento.
  1473.         MOVE ls_retper_t-name1_p    TO ls_retper-nombre.
  1474.         MOVE ls_retper_t-street_p   TO ls_retper-domicilio.
  1475.         MOVE ls_retper_t-str_num_p  TO ls_retper-calle_num.
  1476.         MOVE ls_retper_t-ort01_p    TO ls_retper-localidad.
  1477.         MOVE ls_retper_t-regio_p    TO ls_retper-provincia.
  1478.         MOVE ls_retper_t-pstlz_p    TO ls_retper-c_postal.
  1479.       ENDIF.
  1480. *    ENDLOOP.
  1481.  
  1482. *      READ TABLE gt_ncfact_t INTO ls_ncfact_t WITH KEY num_nc = ls_reg_alv-xblnr.
  1483. **      LOOP AT gt_ncfact_t INTO ls_ncfact_t.
  1484. *      IF sy-subrc EQ 0 AND ls_ncfact_t-num_nc IS NOT INITIAL.
  1485. *        MOVE-CORRESPONDING ls_ncfact_t TO ls_ncfact.
  1486. *      ENDIF.
  1487. **      ENDLOOP.
  1488.  
  1489. *     Determino longitud del registro
  1490.       DESCRIBE FIELD ls_reg_txt LENGTH lv_len IN CHARACTER MODE.
  1491.       IF ls_reg_txt NE ' '.
  1492. *     Agrego lineas al archivo de salida
  1493.         ls_archivo-linea = ls_reg_txt.
  1494.         ls_archivo-inte  = lv_len.
  1495.         INSERT ls_archivo INTO TABLE gt_archivo1.
  1496.       ENDIF.
  1497.       DESCRIBE FIELD ls_retper LENGTH lv_len IN CHARACTER MODE.
  1498.       IF ls_retper NE ' '.
  1499. *     Agrego lineas al archivo de salida
  1500.         ls_archivo-linea = ls_retper.
  1501.         ls_archivo-inte  = lv_len.
  1502.         INSERT ls_archivo INTO TABLE gt_archivo2.
  1503.       ENDIF.
  1504.     ENDLOOP.
  1505. *      READ TABLE gt_ncfact_t INTO ls_ncfact_t WITH KEY num_nc = ls_reg_alv-xblnr.
  1506.     LOOP AT gt_ncfact_t INTO ls_ncfact_t.
  1507.       IF sy-subrc EQ 0 AND ls_ncfact_t-num_nc IS NOT INITIAL.
  1508. *        MOVE-CORRESPONDING ls_ncfact_t TO ls_ncfact.
  1509.         MOVE ls_ncfact_t-cod_lug_em_nc TO ls_ncfact-cod_lug_em_nc.
  1510.         MOVE ls_ncfact_t-num_nc TO ls_ncfact-num_nc.
  1511.         MOVE ls_ncfact_t-cod_lug_em_fac TO ls_ncfact-cod_lug_em_fac.
  1512.         MOVE ls_ncfact_t-num_fac TO ls_ncfact-num_fac.
  1513.         MOVE ls_ncfact_t-tipo_fac TO ls_ncfact-tipo_fac.
  1514.       ENDIF.
  1515.  
  1516.       DESCRIBE FIELD ls_ncfact LENGTH lv_len IN CHARACTER MODE.
  1517.       IF ls_ncfact NE ' '.
  1518. *     Agrego lineas al archivo de salida
  1519.         ls_archivo-linea = ls_ncfact.
  1520.         ls_archivo-inte  = lv_len.
  1521.         INSERT ls_archivo INTO TABLE gt_archivo3.
  1522.       ENDIF.
  1523.     ENDLOOP.
  1524.  
  1525.     SORT gt_archivo1.
  1526.     SORT gt_archivo2.
  1527.     SORT gt_archivo3.
  1528.     DELETE ADJACENT DUPLICATES FROM gt_archivo1.
  1529.     DELETE ADJACENT DUPLICATES FROM gt_archivo2.
  1530.     DELETE ADJACENT DUPLICATES FROM gt_archivo3.
  1531.  
  1532.   ENDMETHOD.                    "armar_archivo_salida
  1533.  
  1534. ENDCLASS.                    "lcl_aplic_as IMPLEMENTATION
  1535.  
  1536. *&---------------------------------------------------------------------*
  1537. *&      Form  F_FORMAT
  1538. *&---------------------------------------------------------------------*
  1539. *       text
  1540. *----------------------------------------------------------------------*
  1541. *      -->P_LS_REG_ALV_BLDAT  text
  1542. *      <--P_LS_REG_TXT_FECHA  text
  1543. *----------------------------------------------------------------------*
  1544. FORM f_format  USING    p_input   TYPE any
  1545.                         p_code    TYPE char1
  1546.                CHANGING p_output  TYPE any.
  1547.  
  1548.   DATA: lv_input    TYPE string,
  1549.         lv_output   TYPE string,
  1550.         lv_out1(12) TYPE c,
  1551.         lv_out2(2)  TYPE c.
  1552.  
  1553.   lv_input = p_input.
  1554.  
  1555.   IF p_code EQ 'M'."Monto
  1556.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  1557.       EXPORTING
  1558.         input  = lv_input
  1559.       IMPORTING
  1560.         output = lv_out1.
  1561.  
  1562.     MOVE lv_out1 TO p_output.
  1563.  
  1564.   ELSEIF p_code EQ 'A'."Alicuota o porcentaje
  1565.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  1566.       EXPORTING
  1567.         input  = lv_input
  1568.       IMPORTING
  1569.         output = lv_out2.
  1570.  
  1571.     MOVE lv_out2 TO p_output.
  1572.  
  1573.   ELSE."Otros datos
  1574.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  1575.       EXPORTING
  1576.         input  = lv_input
  1577.       IMPORTING
  1578.         output = lv_output.
  1579.  
  1580.     MOVE lv_output TO p_output.
  1581.   ENDIF.
  1582.  
  1583. ENDFORM.                    " F_FORMAT
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement