PDA

Ver la Versión Completa : Alguien m ayuda con un DUMP?


Driau
21/11/07, 13:46:37
Hola a todos. He realizado un pequeño programa. Le he modificado un poco los botones del ALV para que cuando le doy a 'PROCESAR' me genere un fichero. Éste es el codigo:

REPORT ZDESNOTIFICAR.

************************************************************************
* TAULES DE BASE DE DADES *
************************************************************************
TABLES: AFRU.


************************************************************************
* TYPES *
************************************************************************


************************************************************************
* TYPE-POOLS *
************************************************************************
TYPE-POOLS: SLIS.


************************************************************************
* VARIABLES *
************************************************************************
DATA: V_LINES TYPE I.
DATA: G_REPID LIKE SY-REPID.

*VARIABLES ALV
DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: WA_FIELDCAT TYPE LINE OF SLIS_T_FIELDCAT_ALV.


************************************************************************
* TAULES INTERNES *
************************************************************************

DATA: BEGIN OF IT_AFRU OCCURS 0,
AUFNR LIKE AFRU-AUFNR,
RMZHL LIKE AFRU-RMZHL,
LMNGA LIKE AFRU-LMNGA,
MEINH LIKE AFRU-GMEIN,
END OF IT_AFRU.

DATA: BEGIN OF IT_OUT OCCURS 0,
AUFNR LIKE AFRU-AUFNR,
RMZHL LIKE AFRU-RMZHL,
LMNGA LIKE AFRU-LMNGA,
MEINH LIKE AFRU-MEINH,
END OF IT_OUT.



************************************************************************
* PANTALLA DE SELECCIÓ *
************************************************************************

*INSERTAR NUMERO DE OF
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.

PARAMETERS:
P_AUFNR LIKE AFRU-AUFNR. "NÚMERO DE OF

SELECTION-SCREEN END OF BLOCK b1.


*************************************************************************
* AT SELECTION-SCREEN *
*************************************************************************



*************************************************************************
* PROGRAMA PRINCIPAL *
*************************************************************************
START-OF-SELECTION.

G_REPID = SY-REPID.
SELECT AUFNR RMZHL LMNGA MEINH
FROM AFRU
INTO CORRESPONDING FIELDS OF TABLE IT_AFRU
WHERE AUFNR = P_AUFNR.

LOOP AT IT_AFRU.
IT_AFRU-MEINH = 'UN'.
APPEND IT_AFRU TO IT_OUT.
ENDLOOP.

*PREPARAMOS EL ALV-GRID
DESCRIBE TABLE IT_OUT LINES V_LINES.
CASE V_LINES.
WHEN 0.
MESSAGE TEXT-002 TYPE 'S'.
EXIT.
WHEN OTHERS.
PERFORM CATALEG_ALV.
PERFORM LAYOUT_ALV USING GS_LAYOUT.
PERFORM MOSTRAR_ALV.
ENDCASE.


************************************************************************
* FORM: CATALEG_ALV *
* *
************************************************************************
FORM CATALEG_ALV.
CLEAR IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'RMZHL'.
WA_FIELDCAT-SELTEXT_L = 'Nº de Palet'.
WA_FIELDCAT-OUTPUTLEN = 10.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'LMNGA'.
WA_FIELDCAT-SELTEXT_L = 'Cantidad'.
WA_FIELDCAT-OUTPUTLEN = 10.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MEINH'.
WA_FIELDCAT-SELTEXT_L = 'Unidad de medida'.
WA_FIELDCAT-OUTPUTLEN = 15.
WA_FIELDCAT-JUST = 'R'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
ENDFORM. "CATALEG_ALV


************************************************************************
* FORM: LAYOUT_ALV *
* *
************************************************************************

FORM LAYOUT_ALV USING LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
LS_LAYOUT-ZEBRA = 'X'.
LS_LAYOUT-BOX_FIELDNAME = 'CHECKBOX'.
ENDFORM. "LAYOUT_ALV


*************************************************************************
* FORM: FUNCIÓ PER A MOSTRAR L'ALV PER PANTALLA *
* *
*************************************************************************
FORM MOSTRAR_ALV.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
IT_FIELDCAT = IT_FIELDCAT
IS_LAYOUT = GS_LAYOUT
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
TABLES
T_OUTTAB = IT_OUT .
IF SY-SUBRC <> 0.
ENDIF.
ENDFORM. "MOSTRAR_ALV



*************************************************************************
* FORM: SET_PF_STATUS *
* *
*************************************************************************
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STATUS_ALV'.
ENDFORM. " SET_PF_STATUS


**************************************************************************
* FORM: GENERAR_FICHERO *
* *
**************************************************************************
FORM GENERAR_FICHERO.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
filename = TEXT-003
filetype = 'ASC'
TABLES
data_tab = IT_OUT
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.
ENDFORM. "GENERAR_FICHERO



*************************************************************************
* FORM: USER_COMMAND *
* *
*************************************************************************
FORM USER_COMMAND USING RF_UCOMM LIKE SY-UCOMM
RS TYPE SLIS_SELFIELD.
CASE RF_UCOMM.
WHEN 'PROCESAR'.
PERFORM GENERAR_FICHERO.
RS-REFRESH = 'X'.
ENDCASE.

ENDFORM. "user_command



El problema es que en cuanto le doy al boton de GENERAR me da un error del siguiente tipo:

Err.tmpo.ejec. MOVE_TO_LIT_NOTALLOWED_NODATA

Assignment error: Overwriting a protected field.

The program tried to assign a new value to the field "<L_BOX>" even though
it is protected against changes.


La verdad es que no se que hacer...alguien se ha encontrado con lo mismo alguna vez????

Gracias!

nenuke
22/11/07, 14:44:50
Prueba a quitar la linea RS-REFRESH = 'X'.

Saludos.

su86
06/03/08, 16:13:43
A mi me pasa lo mismo y no se que hacer

larmadovr
06/03/08, 16:29:05
Intenta hacer algo como lo siguiente:

Crea una estructura con los datos de la tabla it_out
Y despues has lo siguiente:

TYPES: BEGIN OF st_output.
INCLUDE STRUCTURE ztablaquetucreas.
TYPES: END OF st_output.

DATA: it_out TYPE STANDARD TABLE OF st_output WITH HEADER LINE.


NOTA: Es muy probable que tu problema es por los tipos de datos, en caso de que no se solucione tu problema me comentas y lo sigo analizando.

Saludos.

abapconsultoria
06/03/08, 17:27:40
Podrias pegar el dump entero ??

Saludos.

DavidXD_XD
06/03/08, 18:04:15
El problema del programa es el PF-STATUS, dame un toq y t paso como deberias hacerlo :D

DavidXD_XD
06/03/08, 18:58:41
Ya ta corregido, el problema era por la constante CHECKBOX que colocabas en el layout.

REPORT ZPRUEBA_1 MESSAGE-ID SABAPDOCU.
**************************************************
**********************
* TAULES DE BASE DE DADES *
**************************************************
**********************
TABLES: AFRU.
**************************************************
**********************
* TYPES *
**************************************************
**********************

**************************************************
**********************
* TYPE-POOLS *
**************************************************
**********************
TYPE-POOLS: SLIS.

**************************************************
**********************
* VARIABLES *
**************************************************
**********************
DATA: V_LINES TYPE I.
DATA: G_REPID LIKE SY-REPID.

*VARIABLES ALV
DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: WA_FIELDCAT TYPE LINE OF SLIS_T_FIELDCAT_ALV.

**************************************************
**********************
* TAULES INTERNES *
**************************************************
**********************

DATA: BEGIN OF IT_AFRU OCCURS 0,
AUFNR LIKE AFRU-AUFNR,
RMZHL LIKE AFRU-RMZHL,
LMNGA LIKE AFRU-LMNGA,
MEINH LIKE AFRU-GMEIN,
END OF IT_AFRU.

DATA: BEGIN OF IT_OUT OCCURS 0,
AUFNR LIKE AFRU-AUFNR,
RMZHL LIKE AFRU-RMZHL,
LMNGA LIKE AFRU-LMNGA,
MEINH LIKE AFRU-MEINH,
END OF IT_OUT.

**************************************************
**********************
* PANTALLA DE SELECCIÓ *
**************************************************
**********************

*INSERTAR NUMERO DE OF
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_AUFNR LIKE AFRU-AUFNR. "NÚMERO DE OF
SELECTION-SCREEN END OF BLOCK b1.

**************************************************
***********************
* AT SELECTION-SCREEN *
**************************************************
***********************

**************************************************
***********************
* PROGRAMA PRINCIPAL *
**************************************************
***********************
START-OF-SELECTION.

G_REPID = SY-REPID.
SELECT AUFNR RMZHL LMNGA MEINH
FROM AFRU
INTO CORRESPONDING FIELDS OF TABLE IT_AFRU
WHERE AUFNR = P_AUFNR.

LOOP AT IT_AFRU.
IT_AFRU-MEINH = 'UN'.
APPEND IT_AFRU TO IT_OUT.
ENDLOOP.

*PREPARAMOS EL ALV-GRID
DESCRIBE TABLE IT_OUT LINES V_LINES.
CASE V_LINES.
WHEN 0.
MESSAGE S888 WITH 'No hay nada'.
EXIT.
WHEN OTHERS.
PERFORM CATALEG_ALV.
PERFORM LAYOUT_ALV USING GS_LAYOUT.
PERFORM MOSTRAR_ALV.
ENDCASE.
**************************************************
**********************
* FORM: CATALEG_ALV *
* *
**************************************************
**********************
FORM CATALEG_ALV.
CLEAR IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'RMZHL'.
WA_FIELDCAT-SELTEXT_L = 'Nº de Palet'.
WA_FIELDCAT-OUTPUTLEN = 10.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'LMNGA'.
WA_FIELDCAT-SELTEXT_L = 'Cantidad'.
WA_FIELDCAT-OUTPUTLEN = 10.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MEINH'.
WA_FIELDCAT-SELTEXT_L = 'Unidad de medida'.
WA_FIELDCAT-OUTPUTLEN = 15.
WA_FIELDCAT-JUST = 'R'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
ENDFORM. "CATALEG_ALV

**************************************************
**********************
* FORM: LAYOUT_ALV *
* *
**************************************************
**********************

FORM LAYOUT_ALV USING LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
* LS_LAYOUT-ZEBRA = 'X'.
* LS_LAYOUT-BOX_FIELDNAME = 'CHECKBOX'.
ENDFORM. "LAYOUT_ALV

**************************************************
***********************
* FORM: FUNCIÓ PER A MOSTRAR L'ALV PER PANTALLA *
* *
**************************************************
***********************
FORM MOSTRAR_ALV.

DATA : gt_events TYPE slis_t_event,
ls_events TYPE slis_alv_event.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events.

READ TABLE gt_events INTO ls_events WITH KEY name = 'USER_COMMAND'.
ls_events-form = 'USER_COMMAND'.
MODIFY gt_events FROM ls_events INDEX sy-tabix TRANSPORTING form.
CLEAR ls_events.
READ TABLE gt_events INTO ls_events WITH KEY name = 'PF_STATUS_SET'.
ls_events-form = 'SET_PF_STATUS'.
MODIFY gt_events FROM ls_events INDEX sy-tabix TRANSPORTING form.
* SET PF-STATUS 'STATUS_ALV'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = IT_FIELDCAT
* IS_LAYOUT = GS_LAYOUT
IT_EVENTS = gt_events[]
TABLES
T_OUTTAB = IT_OUT .
IF SY-SUBRC <> 0.
ENDIF.

ENDFORM. "MOSTRAR_ALV

**************************************************
***********************
* FORM: SET_PF_STATUS *
* *
**************************************************
***********************
FORM SET_PF_STATUS USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STATUS_ALV'.
ENDFORM. " SET_PF_STATUS

**************************************************
************************
* FORM: GENERAR_FICHERO *
* *
**************************************************
************************
FORM GENERAR_FICHERO.

CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
filename = 'C:\texto.txt'
filetype = 'ASC'
TABLES
data_tab = IT_OUT
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.

ENDFORM. "GENERAR_FICHERO
**************************************************
***********************
* FORM: USER_COMMAND *
* *
**************************************************
***********************
FORM USER_COMMAND USING RF_UCOMM LIKE SY-UCOMM
RS TYPE SLIS_SELFIELD.
CASE RF_UCOMM.
WHEN 'PROCESAR'.
RS-REFRESH = 'X'.
PERFORM GENERAR_FICHERO.
WHEN 'BACK'.
LEAVE TO LIST-PROCESSING.
ENDCASE.

ENDFORM. "user_command

Cualquier inquietud no dudes en consultar ... suerte !!! :D

viccas
21/05/14, 21:27:42
Yo tuve el mismo inconveniente, y lo solucione, en caso de que si quieras usar las cajas de selección, declarando CHECKBOX en las variables de mi tabla interna, así ya tendremos la opción de seleccionar determinados registros.

yisus1988
09/12/14, 08:37:33
Exacto, yo tuve el problema y lo solucioné como comenta viccas.

En la estructura de la tabla que se monta en la ALV, me faltaba declarar el parámetro (SEL) de selección, de tipo CHAR1.