Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Problem generating ALV

Former Member
0 Likes
569

hello, i'm trying to display a report with Alv Grid Display, but when generating the catalog i get this dump : Exception condition "NO_FIELDCATALOG_AVAILABLE" raised. I really don't know where is the problem on the source code, because the print table is not blank. This is the code:

TABLES: bsis , bsas , znom.

*----


Estructura de la Tabla----


*

TYPES: BEGIN OF t_nomina,

bukrs LIKE bsis-bukrs,

hkont LIKE bsis-hkont, "Numero de cuenta de mayor

*TXT50 LIKE BSIS-TXT50,

gsber LIKE bsis-gsber, "Division

budat LIKE bsis-budat, "Fecha de Contabilizacion

*shkzg LIKE BSIS-SHKZG, "Indicador Debe / Haber

wrbtr LIKE bsis-wrbtr, "Importe en moneda de documento

END OF t_nomina.

*Data: begin of t_upload occurs 0,

  • budat1 like bsis-budat,

  • budat2 like bsis-budat,

  • bukrs like bsis-bukrs,

  • hwaer like BKPF-hwaer,

  • clave(2),

*MTHS 06.08.2007

DATA: t_bsis LIKE bsis OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF t_upload OCCURS 0,

fecha1(10),

fecha2(10),

socied(4),

moneda(3),

clave(2),

cuent1(10),

import(13),

divisi(4),

cuent2(10),

descri(50),

END OF t_upload.

DATA: BEGIN OF nom_archivo OCCURS 0,

texto LIKE rlgrap-filename,

END OF nom_archivo.

DATA: BEGIN OF nom_archivo2 OCCURS 0,

texto LIKE rlgrap-filename,

END OF nom_archivo2.

DATA: BEGIN OF t_des OCCURS 0,

cuenta(10),

descri(50),

END OF t_des.

DATA: BEGIN OF t_data OCCURS 0,

budat LIKE bsis-budat,

bukrs LIKE bsis-bukrs,

gsber LIKE bsis-gsber,

hkont LIKE bsis-hkont,

descr LIKE t087j-txt50,

wrbtr LIKE bsis-wrbtr,

END OF t_data.

DATA: BEGIN OF t_data2 OCCURS 0,

budat LIKE bsis-budat,

bukrs LIKE bsis-bukrs,

gsber LIKE bsis-gsber,

hkont LIKE bsis-hkont,

wrbtr LIKE bsis-wrbtr,

END OF t_data2.

DATA: BEGIN OF t_col OCCURS 0,

budat LIKE bsis-budat,

bukrs LIKE bsis-bukrs,

hkont LIKE bsis-hkont,

wrbtr LIKE bsis-wrbtr,

END OF t_col.

DATA: BEGIN OF t_print OCCURS 0,

cuenta(10),

descri(50),

divisi(4),

fecha(10),

import TYPE p DECIMALS 2,

import2 TYPE p DECIMALS 2,

difer TYPE p DECIMALS 2,

END OF t_print.

*----


Definir la tabla interna que vamos a utilizar----


*

DATA: tab_nomina TYPE TABLE OF t_nomina.

DATA: wa_nomina TYPE t_nomina.

DATA: iline TYPE i.

DATA: wa_znom TYPE znom.

DATA: flag(1) TYPE c.

*MTHS 06.08.2007

DATA: contador(2) TYPE n,

debe LIKE bsis-dmbtr,

haber LIKE bsis-dmbtr,

f_date LIKE bsis-budat,

texto(150),

campo(100),

answer(1),

documento LIKE bkpf-belnr,

sw(10). "MG

************************************************************************

DATA: w_field TYPE slis_t_fieldcat_alv,

w_field_wa LIKE LINE OF w_field,

w_layout TYPE slis_layout_alv,

i_events TYPE slis_t_event,

w_events LIKE LINE OF i_events,

w_repid LIKE sy-repid,

w_topheader TYPE slis_t_listheader,

w_top LIKE LINE OF w_topheader.

DATA: i_grid TYPE lvc_s_glay.

DATA: field TYPE slis_t_fieldcat_alv,

gs_layout TYPE slis_layout_alv,

g_repid LIKE sy-repid,

g_inclu LIKE sy-repid,

field2 TYPE slis_t_fieldcat_alv,

gs_layout2 TYPE slis_layout_alv.

DATA: g_status_set TYPE slis_formname VALUE 'PF_STATUS_SET'.

DATA: selfield TYPE slis_selfield.

DATA: ucomm LIKE sy-ucomm.

************************************************************************

***Definicion de lo que va a aparecer en pantalla para el usuario*****

  • Pantalla de Seleccion

SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME TITLE text-007.

PARAMETERS: p_cami LIKE rlgrap-filename OBLIGATORY

. "Archivo

SELECTION-SCREEN END OF BLOCK b0.

  • MatchCode para Archivo

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_cami.

  • Función para simular la busqueda de archivo en windows

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

def_filename = ' '

def_path = p_cami

mask = ',..'

mode = 'O'

title = 'Archivo a importar'

IMPORTING

filename = p_cami

EXCEPTIONS

inv_winsys = 01

no_batch = 02

selection_cancel = 03

selection_error = 04.

INITIALIZATION.

  • report = sy-repid.

g_repid = sy-repid.

CLEAR flag.

contador = 1.

debe = 0.

haber = 0.

sw = 0.

*****Comienzo de la selección***********************

START-OF-SELECTION.

PERFORM cargar_datos.

****Finalización de la selección*********************

END-OF-SELECTION.

*********Función para la carga de datos***************

FORM cargar_datos .

************************************************************************

  • Separar nombre del archivo de la ruta donde fue leido

************************************************************************

TRANSLATE p_cami TO UPPER CASE.

SPLIT p_cami AT '' INTO TABLE nom_archivo.

DESCRIBE TABLE nom_archivo LINES contador.

READ TABLE nom_archivo INDEX contador.

SPLIT nom_archivo-texto AT '.' INTO TABLE nom_archivo2.

DESCRIBE TABLE nom_archivo2 LINES contador.

READ TABLE nom_archivo2 INDEX contador.

IF nom_archivo2-texto NE 'XLS'. " and nom_archivo2-texto ne 'xls'.

DATA: registros TYPE i.

DATA: wa_nomina TYPE t_nomina.

  • data : it_fichero type linea occurs 0 with header line.

INSERT znom FROM wa_znom.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

  • CODEPAGE = ' '

filename = p_cami

  • FILETYPE = 'ASC'

  • HEADLEN = ' '

  • LINE_EXIT = ' '

  • TRUNCLEN = ' '

  • USER_FORM = ' '

  • USER_PROG = ' '

  • DAT_D_FORMAT = ' '

  • IMPORTING

  • FILELENGTH =

TABLES

data_tab = t_upload

EXCEPTIONS

conversion_error = 1

file_open_error = 2

file_read_error = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

OTHERS = 10

.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

LOOP AT t_upload.

SPLIT t_upload-descri AT space INTO t_des-cuenta t_des-descri.

APPEND t_des.

CONDENSE t_upload-cuent2.

CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'

EXPORTING

date_external = t_upload-fecha1

IMPORTING

date_internal = t_upload-fecha1

EXCEPTIONS

date_external_is_invalid = 1

OTHERS = 2.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

MOVE t_upload-fecha1 TO t_data-budat.

MOVE t_upload-socied TO t_data-bukrs.

MOVE t_upload-import TO t_data-wrbtr.

MOVE t_upload-cuent2 TO t_data-gsber.

MOVE t_des-cuenta TO t_data-hkont.

MOVE t_des-descri TO t_data-descr.

APPEND t_data.

ENDLOOP.

LOOP AT t_data.

  • Rellena con ceros a la izquierda para hacer la consulta

  • a la tabla

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

input = t_data-hkont

IMPORTING

output = t_data-hkont.

  • Convierte el formato de fecha que viene en el .txt

  • para poder hacer la consulta

MODIFY t_data.

ENDLOOP.

SELECT

budat

bukrs

gsber

hkont

wrbtr

INTO CORRESPONDING FIELDS OF TABLE t_data2

FROM bsis

FOR ALL ENTRIES IN t_data

WHERE hkont EQ t_data-hkont

AND bukrs EQ t_data-bukrs

AND budat EQ t_data-budat.

IF sy-subrc NE 0. "Si no hay resultados busco en la BSAS

SELECT

budat

bukrs

gsber

hkont

wrbtr

INTO CORRESPONDING FIELDS OF TABLE t_data2

FROM bsas

FOR ALL ENTRIES IN t_data

WHERE hkont EQ t_data-hkont

AND bukrs EQ t_data-bukrs

AND budat EQ t_data-budat.

ENDIF.

ENDIF.

LOOP AT t_data2.

MOVE-CORRESPONDING t_data2 TO t_col.

COLLECT t_col.

CLEAR t_col.

ENDLOOP.

SORT t_col BY hkont budat.

LOOP AT t_data.

MOVE t_data-gsber TO t_print-divisi.

MOVE t_data-hkont TO t_print-cuenta.

MOVE t_data-wrbtr TO t_print-import.

MOVE t_data-descr TO t_print-descri.

APPEND t_print.

ENDLOOP.

LOOP AT t_print.

READ TABLE t_upload WITH KEY cuent1 = t_print-cuenta.

IF sy-subrc EQ 0.

t_print-fecha = t_upload-fecha1.

MODIFY t_print INDEX sy-tabix.

ENDIF.

READ TABLE t_col WITH KEY hkont = t_print-cuenta.

IF sy-subrc EQ 0.

t_print-import2 = t_col-wrbtr.

MODIFY t_print INDEX sy-tabix.

t_print-difer = t_print-import - t_print-import2.

MODIFY t_print.

CLEAR: t_print, t_upload, t_col.

ENDIF.

ENDLOOP.

PERFORM do_alv.

*****************MTHS 06.08.2007

ENDFORM.

*&----


*

*& Form do_alv

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM do_alv.

BREAK-POINT.

PERFORM do_fieldcat.

PERFORM do_layout.

PERFORM do_events.

PERFORM do_sort.

PERFORM call_alv.

ENDFORM. " do_alv

*&----


*

*& Form do_layout

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM do_layout .

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = i_events.

READ TABLE i_events

WITH KEY name = slis_ev_top_of_page

INTO w_events.

IF sy-subrc = 0.

MOVE 'ENCABEZADO' TO w_events-form.

MODIFY i_events FROM w_events INDEX sy-tabix.

ENDIF.

gs_layout-zebra = 'X'.

gs_layout-detail_popup = 'X'.

i_grid-edt_cll_cb = 'X'.

SORT t_print BY cuenta fecha.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = g_repid "Nombre del programa

i_callback_pf_status_set = g_status_set

  • i_callback_user_command = 'CONTABILIZAR'

it_fieldcat = field[] "Catalogo de Salida

is_layout = gs_layout "Layout de Salida

it_events = i_events

i_grid_settings = i_grid

TABLES

t_outtab = t_print "Tabla Interna con Datos

EXCEPTIONS

program_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE e162(00) WITH 'Problema al Imprimir el Reporte'.

ENDIF.

  • CLEAR w_layout.

  • w_layout-zebra = 'X'.

  • w_layout-f2code = '&ETA'.

  • w_layout-detail_popup = 'X'."striped pattern

ENDFORM. " do_layout

*----


*

  • FORM call_alv *

*----


*

  • ........ *

*----


*

FORM call_alv.

  • CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

  • EXPORTING

  • i_callback_program = report

  • is_layout = w_layout

  • it_fieldcat = i_fieldcat

  • i_save = 'X'

  • it_events = i_events

    • it_sort = i_sort

  • TABLES

  • t_outtab = t_print

  • EXCEPTIONS

  • program_error = 1

  • OTHERS = 2.

ENDFORM. "call_alv

*&----


*

*& Form do_fieldcat

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM do_fieldcat .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = g_repid

i_internal_tabname = 'T_PRINT'

  • I_STRUCTURE_NAME =

  • I_CLIENT_NEVER_DISPLAY = 'X'

  • I_INCLNAME =

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

ct_fieldcat = field.

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT field INTO w_field_wa.

CASE w_field_wa-fieldname.

WHEN 'CUENTA'.

w_field_wa-tabname = 't_print'.

w_field_wa-seltext_m = 'Cuenta de Mayor'.

MODIFY field FROM w_field_wa.

WHEN 'DESCRI'.

w_field_wa-tabname = 't_print'.

w_field_wa-seltext_m = 'Descripcion'.

MODIFY field FROM w_field_wa.

WHEN 'DIVISI'.

w_field_wa-tabname = 't_print'.

w_field_wa-seltext_m = 'Division'.

MODIFY field FROM w_field_wa.

WHEN 'FECHA'.

w_field_wa-tabname = 't_print'.

w_field_wa-seltext_m = 'Fecha'.

MODIFY field FROM w_field_wa.

WHEN 'IMPORT'.

w_field_wa-tabname = 't_print'.

w_field_wa-seltext_m = 'Importe archivo'.

MODIFY field FROM w_field_wa.

WHEN 'IMPORT2'.

w_field_wa-tabname = 't_print'.

w_field_wa-seltext_m = 'Importe SAP'.

MODIFY field FROM w_field_wa.

WHEN 'DIFER'.

w_field_wa-tabname = 't_print'.

w_field_wa-seltext_m = 'Diferencia'.

MODIFY field FROM w_field_wa.

ENDCASE.

ENDLOOP.

ENDFORM. " do_fieldcat

*&----


*

*& Form do_sort

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

*

FORM do_sort .

*

  • CLEAR w_sort.

  • REFRESH i_sort.

*

  • CLEAR w_sort.

  • w_sort-fieldname = 'CUENTA'.

  • w_sort-tabname = 't_print'.

  • w_sort-up = 'X'.

  • APPEND w_sort TO i_sort.

ENDFORM. " do_sort

*&----


*

*& Form do_events

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM do_events .

  • REFRESH i_events.

  • CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

  • EXPORTING

  • i_list_type = 0

  • IMPORTING

  • et_events = i_events

  • EXCEPTIONS

  • list_type_wrong = 1

  • OTHERS = 2.

*

    • Leer los eventos que me interesan

*

  • CLEAR w_events.

  • READ TABLE i_events INTO w_events WITH KEY name = slis_ev_top_of_page

*.

  • IF sy-subrc = 0.

  • MOVE 'MI_TOP_OF_PAGE' TO w_events-form.

  • MODIFY i_events FROM w_events INDEX sy-tabix.

  • ENDIF.

ENDFORM. " do_events

*----


*

  • FORM alv_top_of_page *

*----


*

  • ........ *

*----


*

FORM alv_top_of_page.

DATA: fecha1(10) TYPE c.

CLEAR: w_topheader[].

w_top-typ = 'H'. "H=Header, S=Selection, A=Action

w_top-key = ''.

w_top-info = 'ALSTOM, Venezuela S.A'.

APPEND w_top TO w_topheader.

w_top-typ = 'H'. "H=Header, S=Selection, A=Action

w_top-key = ''.

w_top-info = 'REPORTE DE CONCILIACIÓN DE NÓMINA'.

APPEND w_top TO w_topheader.

w_top-typ = 'S'. "H=Header, S=Selection, A=Action

w_top-key = 'Fecha'.

WRITE sy-datum TO fecha1 .

w_top-info = fecha1.

APPEND w_top TO w_topheader.

w_top-typ = 'S'. "H=Header, S=Selection, A=Action

w_top-key = 'Usuario'.

w_top-info = sy-uname.

APPEND w_top TO w_topheader.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

i_logo = 'LOGO'

it_list_commentary = w_topheader.

ENDFORM. "alv_top_of_page

1 REPLY 1
Read only

AlexGiguere
Contributor
0 Likes
455

The type (T_PRINT) of your internal table should be declare in the dictionnary,

please try it and let me know,

With release > 4.7, we can use local type to declare internal table using the new ALV OM,

Reward point, thanks

Alex