Hola que tal, como lo había comentado. En otro post. Las buenas practicas de programación ABAP ignoro.
esto me servirá para ir aprendiendo las mejores practicas ABAP.
Así que el reporte que me ayudaron a hacer funciona pero no se si la forma de hacerlo fue la mas ortodoxa.
El asunto: El tipo que captura las facturas no sabe cuando un proveedor mañoso le dará la misma factura de fletes mas de una vez y el muy wey la capture, PIOR aun el de CXP también le pase MIRO.
El bombero: Un reporte que basado en los textos cabecera de la ME21N, donde se captura la referencia de la factura del fletista. Muestre si ya hay algún documento asociado a esa referencia.
El formato:
SOLICITUD DE COMPRA | REFERENCIA DE LA FACTURA | SALIDA DE EMBARQUES | FECHA FACTURA | NOMBRE DEL PROVEEDOR DE FLETES | FACTURA DE CXP | IMPORTE | MONEDA | IDENTIFICADOR DE DUPLICIDAD DE REFERENCAS |
El bosquejo:
EKKO | BSIK | VFKP | EKKO | LFA1 | BSIK | BSIK | EKKO
EBELN | ZUONR | REBEL | AEDAT | NAME1 | BELNR | WRBTR | WAERS
En algunos casos uso BSAK y sus correspondientes.
El código:
Aclaro que uso ZTB_TXTOCOM porque me sirve para otro reporte pero de BI. Por el momento se vacía cada vez que corren el reporte pero después haré otra cosa con esa tabla.
PURA COSA FEA!!!
REPORT ZFLETES3.
TABLES: ekko.
SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_fecha FOR ekko-aedat.
SELECTION-SCREEN: END OF BLOCK a1.
data: lt_line TYPE STANDARD TABLE OF tline WITH HEADER LINE,
line TYPE STANDARD TABLE OF tline WITH HEADER LINE,
l_langu TYPE thead-tdspras,
l_doc TYPE tdobname,
tdlinetxt type string,
thead(50) type c,
uno(20) TYPE C,
dos(20) TYPE C,
tres(20) TYPE C,
cuatro(20) TYPE C,
cinco(20) TYPE C,
seis(20) TYPE C,
siete(20) TYPE C,
ocho(20) TYPE C,
nueve(20) TYPE C,
diez(20) TYPE C,
once(20) TYPE C,
doce(20) TYPE C,
trece(20) TYPE C,
catorce(20) TYPE C,
quince(20) TYPE C,
diesiseis(20) TYPE C,
v_total type p decimals 2,
iva type p decimals 2
.
data: begin of gt_ca occurs 0,
ocpedido type EKKO-EBELN,
fecha type EKKO-AEDAT,
moneda type EKKO-WAERS,
provid type EKKO-LIFNR,
nombre type LFA1-NAME1,
tipo type EKKO-BSART,
statu type EKKO-STATU,
end of gt_ca.
data: begin of gt_vfk occurs 0,
embarque type VFKP-REBEL,
subtotal type VFKP-NETWR,
iva type VFKP-MWSBP,
total type VFKP-NETWR,
end of gt_vfk.
data: begin of gt_ekp occurs 0,
ocpedido type EKBE-EBELN,
indicadoriva type EKBE-MWSKZ,
subtotal type EKBE-WRBTR,
factura type EKBE-BELNR,
end of gt_ekp.
data: begin of gt_sik occurs 0,
referencia type BSIK-ZUONR,
factura type BSIK-BELNR,
importe type BSIK-WRBTR,
"subt type BSIK-SKFBT,
end of gt_sik.
data: begin of gt_sak occurs 0,
referencia type BSAK-ZUONR,
factura type BSAK-BELNR,
importe type BSAK-WRBTR,
"subt type BSIK-SKFBT,
end of gt_sak.
data: begin of gt_fin occurs 0,
ocpedido1 type EKKO-EBELN,
referencia1 type BSIK-ZUONR,
embarque1 type VFKP-REBEL,
fecha1 type EKKO-AEDAT,
nombre1 type LFA1-NAME1,
factura1 type BSIK-BELNR,
importe1 type BSIK-WRBTR,
moneda1 type EKKO-WAERS,
texto(70) TYPE C,
duplicado(10) TYPE C,
acumulador type BSIK-WRBTR,
end of gt_fin.
DATA :gt_cat TYPE slis_t_fieldcat_alv,
gs_cat LIKE LINE OF gt_cat.
DATA: pos type i value 1. "Codigo agregado
START-OF-SELECTION.
PERFORM zte_seleccion1. "Codigo agregado
perform zte_alv1.
*&---------------------------------------------------------------------
*& Form ZTE_SELECCION1
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
FORM ZTE_SELECCION1.
delete from ZTB_TXTOCOM.
"message 'select' type 'I' .
select a~EBELN a~AEDAT a~WAERS a~LIFNR d~NAME1 a~BSART a~STATU from EKKO as a
join LFA1 as d ON a~LIFNR EQ d~LIFNR
into table gt_ca
where AEDAT IN s_fecha AND a~BSART = 'ZLIQ'. "a~AEDAT BETWEEN '20100101' AND '20160101'.
REfresh gt_fin.
if sy-subrc EQ 0.
"message 'select2' type 'I' .
LOOP at gt_ca.
"clear gt_fin.
at first. " Codigo agregado
"message 'select3' type 'I' .
endat.
if gt_ca-statu EQ 'X'. "FLETES PT"
CLEAR gt_vfk.
select B~REBEL B~NETWR B~MWSBP B~BASWR from VFKP as B into table gt_vfk
where B~EBELN EQ gt_ca-ocpedido. "B~TDLNR EQ gt_ca-provid and
gt_fin-acumulador = 0.
if sy-subrc EQ 0.
LOOP at gt_vfk.
gt_fin-acumulador = gt_fin-acumulador + gt_vfk-subtotal + gt_vfk-iva.
gt_fin-embarque1 = gt_vfk-embarque.
ENDLOOP.
endif.
else.
"FLETES MP Y GASTOS"
CLEAR gt_ekp. iva = '0.16'.
select B~EBELN B~MWSKZ B~WRBTR B~BELNR from EKBE as B into table gt_ekp
where B~BEWTP EQ 'Q' AND B~EBELN EQ gt_ca-ocpedido.
gt_fin-acumulador = 0.
if sy-subrc EQ 0.
LOOP at gt_ekp.
if gt_ekp-indicadoriva EQ 'W4'.
gt_fin-acumulador = gt_fin-acumulador + gt_ekp-subtotal + ( gt_ekp-subtotal * iva ) .
else.
gt_fin-acumulador = gt_fin-acumulador + gt_ekp-subtotal.
endif.
"gt_fin-acumulador = gt_fin-acumulador + gt_vfk-subtotal + gt_vfk-iva.
"gt_fin-embarque1 = gt_vfk-embarque.
ENDLOOP.
endif.
gt_fin-embarque1 = gt_ca-ocpedido.
endif.
CLEAR gt_sik. CLEAR gt_sak.
select c~ZUONR c~BELNR c~WRBTR from BSIK as c into table gt_sik
where c~SKFBT EQ gt_fin-acumulador AND c~SHKZG EQ 'H' and c~BLART EQ 'RE' and c~LIFNR EQ gt_ca-provid.
if sy-subrc EQ 0.
LOOP at gt_sik.
gt_fin-referencia1 = gt_sik-referencia.
gt_fin-factura1 = gt_sik-factura.
gt_fin-importe1 = gt_sik-importe.
ENDLOOP.
ELSE.
select c~ZUONR c~BELNR c~WRBTR from BSAK as c into table gt_sak
where c~SKFBT EQ gt_fin-acumulador AND c~SHKZG EQ 'H' and c~BLART EQ 'RE' AND c~LIFNR EQ gt_ca-provid.
if sy-subrc EQ 0.
LOOP at gt_sak.
gt_fin-referencia1 = gt_sak-referencia.
gt_fin-factura1 = gt_sak-factura.
gt_fin-importe1 = gt_sak-importe.
ENDLOOP.
endif.
endif.
gt_fin-ocpedido1 = gt_ca-ocpedido.
gt_fin-fecha1 = gt_ca-fecha.
gt_fin-nombre1 = gt_ca-nombre.
gt_fin-moneda1 = gt_ca-moneda.
*&---------------------------------------------------------------------*
REFRESH lt_line.
CLEAR l_doc.
* CONCATENATE gt_ca-TMATNR gt_fin-TWERKS gt_fin-TVTWEG INTO l_doc RESPECTING BLANKS.
l_doc = gt_ca-ocpedido. "'4500000124'.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'F01'
language = 'S'
name = l_doc
object = 'EKKO'
TABLES
lines = lt_line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
CLEAR tdlinetxt.
IF sy-subrc EQ 0.
READ TABLE lt_line INTO line INDEX 1.
LOOP AT lt_line INTO line.
CONCATENATE tdlinetxt line-tdline
INTO tdlinetxt SEPARATED BY space.
"write: 'OK',tdlinetxt .
ENDLOOP.
"else.
"MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
"WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
gt_fin-texto = tdlinetxt.
"write: / 'OK',gt_ca-REFERENCIA , gt_ca-TIPO , gt_ca-ESTATU , gt_ca-TEXTO .
"INSERT INTO ZTB_TXTOCOM VALUES gt_ca. "APPEND gt_fin.
"MODIFY gt_ca2 FROM gt_ca.
"write: 'ok',gt_fin.
*&---------------------------------------------------------------------*
"write: / 'DATOS ',gt_fin-ocpedido1 ,gt_fin-referencia1 ,gt_fin-embarque1,gt_fin-fecha1 ,gt_fin-nombre1 ,gt_fin-factura1 ,gt_fin-importe1,gt_fin-moneda1.
APPEND gt_fin. "inserta en la tabla
data: gt_cd type table of ZTB_TXTOCOM with header line,
gt_dp type table of ZTB_TXTOCOM with header line.
data: begin of gt_dp2 occurs 0,
REFERENCIA type ZTB_TXTOCOM-REFERENCIA,
end of gt_dp2.
SPLIT gt_fin-texto AT ',' INTO uno dos tres cuatro cinco seis siete ocho nueve diez once doce trece catorce quince diesiseis.
"write: / 'split ',uno ,dos , tres, cuatro, cinco, seis, siete, ocho, nueve, diez, once, doce, trece, catorce, quince, diesiseis.
if uno NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = uno. CLEAR gt_dp. select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = uno.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if dos NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = dos. CLEAR gt_dp. select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = dos.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if tres NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = tres. CLEAR gt_dp.select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = tres.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if cuatro NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu.gt_cd-TEXTO = cuatro. CLEAR gt_dp. select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = cuatro.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if cinco NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = cinco. CLEAR gt_dp.select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = cinco.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if seis NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = seis. CLEAR gt_dp.select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = seis.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if siete NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = siete.CLEAR gt_dp.select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = siete.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if ocho NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = ocho. CLEAR gt_dp.select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = ocho.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if nueve NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = nueve.CLEAR gt_dp.select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = nueve.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if diez NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = diez. CLEAR gt_dp.select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = diez.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if once NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = once. CLEAR gt_dp.select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = once.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if doce NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = doce. CLEAR gt_dp.select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = doce.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if trece NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = trece.CLEAR gt_dp. select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = trece.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if catorce NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = catorce.CLEAR gt_dp.select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = catorce.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if quince NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = quince. CLEAR gt_dp.select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = quince.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
if diesiseis NE ''.
CLEAR gt_cd. gt_cd-REFERENCIA = gt_ca-ocpedido. gt_cd-TIPO = gt_ca-tipo. gt_cd-TIPO = gt_ca-statu. gt_cd-TEXTO = diesiseis.CLEAR gt_dp.select * FROM ZTB_TXTOCOM INTO table gt_dp where TEXTO = diesiseis.
if sy-subrc EQ 0.
gt_cd-DUPLICS ='Duplicado'. LOOP at gt_dp. update ZTB_TXTOCOM set DUPLICS ='Duplicado' where REFERENCIA = gt_dp-REFERENCIA. ENDLOOP.
endif.
APPEND gt_cd. INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
endif.
* DO contador TIMES.
* CLEAR gt_cd.
* APPEND gt_cd.
* INSERT INTO ZTB_TXTOCOM VALUES gt_cd.
* ENDDO.
ENDLOOP.
*&---------------------------------------------------------------------*
"VERIFICAR DUPLICADOS
REFRESH gt_dp.
CLEAR gt_dp.
select REFERENCIA from ZTB_TXTOCOM into table gt_dp2 where DUPLICS EQ 'Duplicado' GROUP BY REFERENCIA.
if sy-subrc EQ 0.
LOOP at gt_dp2.
READ TABLE gt_fin WITH KEY ocpedido1 = gt_dp2-REFERENCIA.
IF sy-subrc EQ 0.
gt_fin-duplicado = 'Duplicado'. MODIFY gt_fin INDEX sy-tabix."gt_fin with key gt_dp2-REFERENCIA
"APPEND gt_fin.
ENDIF.
ENDLOOP.
endif.
*&---------------------------------------------------------------------*
* else.
* write: / 'no '.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
ENDFORM. " ZTE_SELECCION1
*&---------------------------------------------------------------------
*& Form ZTE_ALV1
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
FORM ZTE_ALV1 .
CHECK gt_fin IS NOT INITIAL.
REFRESH gt_cat.
*CLEAR gs_cat.
gs_cat-fieldname = 'OCPEDIDO1'.
gs_cat-ref_fieldname ='EBELN'.
gs_cat-SELTEXT_M = 'OC'.
gs_cat-tabname = 'GT_FIN_'.
gs_cat-ref_tabname ='EKKO'.
"gs_cat-emphasize = 'C411'.
ADD 1 TO pos.
gs_cat-col_pos = pos.
APPEND gs_cat TO gt_cat.
gs_cat-fieldname = 'REFERENCIA1'.
gs_cat-ref_fieldname ='ZUONR'.
gs_cat-SELTEXT_M = 'REF'.
gs_cat-tabname = 'GT_FIN_'.
gs_cat-ref_tabname ='BSIK'.
"gs_cat-emphasize = 'C411'.
ADD 1 TO pos.
gs_cat-col_pos = pos.
APPEND gs_cat TO gt_cat.
gs_cat-fieldname = 'EMBARQUE1'.
gs_cat-ref_fieldname ='REBEL'.
gs_cat-SELTEXT_M = 'EMB'.
gs_cat-tabname = 'GT_FIN_'.
gs_cat-ref_tabname ='VFKP'.
"gs_cat-emphasize = 'C411'.
ADD 1 TO pos.
gs_cat-col_pos = pos.
APPEND gs_cat TO gt_cat.
* CLEAR gs_cat.
gs_cat-fieldname = 'FECHA1'.
gs_cat-ref_fieldname ='AEDAT'.
gs_cat-SELTEXT_M = 'Fecha_'.
gs_cat-tabname = 'GT_FIN_'.
gs_cat-ref_tabname ='EKKO'.
"gs_cat-emphasize = 'C601'.
ADD 1 TO pos.
gs_cat-col_pos = pos.
APPEND gs_cat TO gt_cat.
gs_cat-fieldname = 'NOMBRE1'.
gs_cat-ref_fieldname ='NAME1'.
gs_cat-SELTEXT_M = 'PROV'.
gs_cat-tabname = 'GT_FIN_'.
gs_cat-ref_tabname ='LFA1'.
"gs_cat-emphasize = 'C601'.
ADD 1 TO pos.
gs_cat-col_pos = pos.
APPEND gs_cat TO gt_cat.
gs_cat-fieldname = 'FACTURA1'.
gs_cat-ref_fieldname ='BELNR'.
gs_cat-SELTEXT_M = 'FAC'.
gs_cat-tabname = 'GT_FIN_'.
gs_cat-ref_tabname ='BSIK'.
"gs_cat-emphasize = 'C601'.
ADD 1 TO pos.
gs_cat-col_pos = pos.
APPEND gs_cat TO gt_cat.
gs_cat-fieldname = 'IMPORTE1'.
gs_cat-ref_fieldname ='WRBTR'.
gs_cat-SELTEXT_M = 'IMP'.
gs_cat-tabname = 'GT_FIN_'.
gs_cat-ref_tabname ='BSIK'.
"gs_cat-emphasize = 'C601'.
ADD 1 TO pos.
gs_cat-col_pos = pos.
APPEND gs_cat TO gt_cat.
* CLEAR gs_cat.
gs_cat-fieldname = 'MONEDA1'.
gs_cat-ref_fieldname ='WAERS'.
gs_cat-SELTEXT_M = 'Moneda_'.
gs_cat-tabname = 'GT_FIN_'.
gs_cat-ref_tabname ='EKKO'.
"gs_cat-emphasize = 'C600'.
ADD 1 TO pos.
gs_cat-col_pos = pos.
APPEND gs_cat TO gt_cat.
gs_cat-fieldname = 'TEXTO'.
gs_cat-ref_fieldname ='TEXTO'.
gs_cat-SELTEXT_M = 'TEXTO'.
gs_cat-tabname = 'GT_FIN_'.
gs_cat-ref_tabname ='ZTB_TXTOCOM'.
"gs_cat-emphasize = 'C600'.
ADD 1 TO pos.
gs_cat-col_pos = pos.
APPEND gs_cat TO gt_cat.
gs_cat-fieldname = 'DUPLICADO'.
gs_cat-ref_fieldname ='DUPLICS'.
gs_cat-SELTEXT_M = 'DUPLICADOS'.
gs_cat-tabname = 'GT_FIN_'.
gs_cat-ref_tabname ='ZTB_TXTOCOM'.
gs_cat-emphasize = 'C601'.
ADD 1 TO pos.
gs_cat-col_pos = pos.
APPEND gs_cat TO gt_cat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' "llamado a la tabla de creacion en pantalla
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
IT_FIELDCAT = gt_cat[]
TABLES
T_OUTTAB = gt_fin[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM.