Está en la página 1de 13

Examen Basico de Abap Solucionario

*&---------------------------------------------------------------------*
*& Report ZEXA_PROGRAMA
*& ---------------------------------------------------------------------*
*& ------------------------------ Z_BSIK_00_PROGRAAM
*& ZALVREPORTE DYNPRO
*& 369 LEERLO
*& 350 EMPESAR DE AHI
*& 1 Creamos el objeto CUSTOM_CONTAINER apuntando a nuestro CUSTOM_CONTROL *&
(Cuyo nombre est almacenado en la variable MYCONTAINER).
REPORT ZEXA_PROGRAMA MESSAGE-ID CU.
TABLES: T001, BSIK, T005T.
TYPES: BEGIN OF TY_T001,
BUKRS TYPE T001-BUKRS,
BUTXT TYPE T001-BUTXT,
ADRNR TYPE T001-ADRNR,
ORT01 TYPE T001-ORT01,
LANDX TYPE T005T-LANDX,
END OF TY_T001.
DATA: T_T001 TYPE STANDARD TABLE OF TY_T001.
*
T_ZT001 TYPE STANDARD TABLE OF T001 WITH HEADER LINE.
DATA: SOC TYPE T001-BUKRS,
PAIS TYPE C.
START-OF-SELECTION.
CALL SCREEN '100'.
FORM OBTENER_DATOS.
SOC = T001-BUKRS.
* SELECT BUKRS BUTXT ADRNR ORT01 LANDX
SELECT SINGLE BUKRS BUTXT ADRNR ORT01 LAND1
INTO (T001-BUKRS,T001-BUTXT,T001-ADRNR,
T001-ORT01,T001-LAND1)
* INTO TABLE T_T001
FROM T001
*FROM T001 INNER JOIN T005T
*
ON T005T~LAND1 = T001~LAND1
WHERE T001~BUKRS EQ SOC.
IF SY-SUBRC <> 0.
MESSAGE E654 WITH SOC.
ENDIF.
SET PARAMETER ID 'BUK' FIELD SOC.
1

RFJB

ENDFORM.
*&---------------------------------------------------------------------*
*&
Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS '100'.
SET TITLEBAR '100'.
ENDMODULE.
" STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
DATA: OK_CODE TYPE SY-UCOMM.
OK_CODE = SY-UCOMM.
CLEAR SY-UCOMM.
CASE OK_CODE.
WHEN 'DETALLE'.
SUBMIT Z_BSIK_OO_PROGRAM AND RETURN.
*
SUBMIT Z_BSIK_PROGRAM AND RETURN.
WHEN 'BACK'.
SET SCREEN 0.
LEAVE SCREEN.
CLEAR SY-UCOMM.
WHEN 'EXIT'.
SET SCREEN 0.
LEAVE SCREEN.
CLEAR SY-UCOMM.
WHEN 'CANCEL'.
LEAVE PROGRAM.
WHEN ''.
PERFORM OBTENER_DATOS.
ENDCASE.
ENDMODULE.

" USER_COMMAND_0100 INPUT

Siguiente parte es el ALVOO


*&---------------------------------------------------------------------*
*& Report Z_BSIK_OO_PROGRAM
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT Z_BSIK_OO_PROGRAM.
*INCLUDE ZDOWN_TEXTO_INCLUDE.
DATA: E_UCOMM TYPE SY-UCOMM.
CLASS LCL_EVENT_HANDLER DEFINITION DEFERRED.
*----------------------------------------------------------------------*
*
CLASS LCL_EVENT_HANDLER DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_EVENT_HANDLER DEFINITION.
PUBLIC SECTION.
METHODS:
* PARA IMPLEMENTAR USER_COMMANDS
HANDLE_USER_COMMAND
FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID IMPORTING E_UCOMM,
* HOTSPOT CLICK CONTROL
handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no.
*--Double-click control
*handle_double_click
*FOR EVENT double_click OF cl_gui_alv_grid
*IMPORTING e_row e_column,
*--To be triggered before user commands
*handle_before_user_command
*FOR EVENT before_user_command OF cl_gui_alv_grid
*IMPORTING e_ucomm ,
*--To be triggered after user commands
*handle_after_user_command
*FOR EVENT context_menu_request OF cl_gui_alv_grid
*IMPORTING e_object.
*--To control button clicks
*handle_button_click
*FOR EVENT button_click OF cl_gui_alv_grid
*IMPORTING e_oject e_ucomm .
ENDCLASS.

"LCL_EVENT_HANDLER DEFINITION

*----------------------------------------------------------------------*
*
CLASS LCL_EVENT_HANDLER IMPLEMENTATION
*----------------------------------------------------------------------*

*
*----------------------------------------------------------------------*
CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
*--Handle User Command
METHOD handle_user_command .
PERFORM handle_user_command USING e_ucomm .
ENDMETHOD.
"handle_user_command
*--Handle Hotspot Click
METHOD handle_hotspot_click .
PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no .
ENDMETHOD .
"handle_hotspot_click
*--Handle Double Click
*METHOD handle_double_click .
*PERFORM handle_double_click USING e_row e_column es_row_no .
*ENDMETHOD.
*--Handle Before User Command
*METHOD handle_before_user_command .
*PERFORM handle_before_user_command USING e_ucomm .
*ENDMETHOD.
*--Handle After User Command
*METHOD handle_context_menu_request .
*PERFORM handle_context_menu_request USING e_object .
*ENDMETHOD.
*--Handle Button Click
*METHOD handle_button_click .
*PERFORM handle_button_click USING e_object e_ucomm .
*ENDMETHOD.
ENDCLASS.

"LCL_EVENT_HANDLER IMPLEMENTATION

*DECLARACION DE TABLAS
TABLES: BSIK.
*DECLARACION DE TYPES-POOLS
TYPE-POOLS: SLIS, truxs.
*DECLRACION DE LA ESTRUCTURA
TYPES: BEGIN OF TY_BSIK,
BUKRS TYPE BSIK-BUKRS,
LIFNR TYPE BSIK-LIFNR,
GJAHR TYPE BSIK-GJAHR,
MONAT TYPE BSIK-MONAT,
BELNR TYPE BSIK-BELNR,
BUDAT TYPE BSIK-BUDAT,
WAERS TYPE BSIK-WAERS,

DMBTR TYPE BSIK-DMBTR,


WRBTR TYPE BSIK-WRBTR,
END OF TY_BSIK.
* DECLARACION DE TABLAS INTERNAS
DATA: T_BSIK TYPE STANDARD TABLE OF TY_BSIK,
GS_LAYOUT TYPE LVC_S_LAYO,
GT_FIELDCAT TYPE LVC_T_FCAT,
GS_VARIANT TYPE DISVARIANT,
*
gt_salida type bsik,
gt_salida2 type truxs_t_text_data.
* DECLARACION DE VARIABLES
DATA: MYCONTAINER TYPE SCRFNAME VALUE 'CUSTOM_ALV',
CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
GRID1 TYPE REF TO CL_GUI_ALV_GRID,
X_SAVE.
DATA: GR_EVENT_HANDLER TYPE REF TO LCL_EVENT_HANDLER.
FIELD-SYMBOLS: <FS_BSIK> LIKE LINE OF T_BSIK.
* STAR-OF-SELECTION
START-OF-SELECTION.
PERFORM CARGAR_DATOS.
PERFORM FILL_LAYOUT.
PERFORM FILL_CATALOG.
PERFORM LLAMAR_ALV.
CALL SCREEN 0100.
*&---------------------------------------------------------------------*
*&
Form handle_hotspot_click
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->I_ROW_ID text
*
-->I_COLUMN_ID text
*
-->IS_ROW_NO text
*----------------------------------------------------------------------*
FORM handle_hotspot_click USING i_row_id TYPE lvc_s_row
i_column_id TYPE lvc_s_col
is_row_no TYPE lvc_s_roid.
DATA: GT_LIST TYPE TY_BSIK.
READ TABLE T_BSIK INTO GT_LIST INDEX IS_ROW_NO-ROW_ID.
IF SY-SUBRC = 0 AND I_COLUMN_ID-FIELDNAME = 'BUKRS' .
* CASE i_column_id.
* WHEN 'BUKRS'.
SET PARAMETER ID 'BLN' FIELD GT_LIST-BELNR.
SET PARAMETER ID 'BUK' FIELD GT_LIST-BUKRS.

SET PARAMETER ID 'GJR' FIELD GT_LIST-GJAHR.


CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
* ENDCASE.
ENDIF .
ENDFORM .
"handle_hotspot_click
*&---------------------------------------------------------------------*
*&
Form HANDLE_USER_COMMAND
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM HANDLE_USER_COMMAND USING I_UCOMM TYPE SY-UCOMM.
DATA: LT_SELECTED_ROWS TYPE LVC_T_ROID,
LS_SELECTED_ROW TYPE LVC_S_ROID,
GT_LIST TYPE TY_BSIK.
CALL METHOD GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_SELECTED_ROWS.
READ TABLE LT_SELECTED_ROWS INTO LS_SELECTED_ROW INDEX 1.
IF SY-SUBRC NE 0.
MESSAGE S000(SU) WITH 'SELECCIONE UNA FILA!'(203).
ELSE.
READ TABLE T_BSIK INTO GT_LIST INDEX LS_SELECTED_ROW-ROW_ID.
IF SY-SUBRC = 0.
SET PARAMETER ID 'BLN' FIELD GT_LIST-BELNR.
SET PARAMETER ID 'BUK' FIELD GT_LIST-BUKRS.
SET PARAMETER ID 'GJR' FIELD GT_LIST-GJAHR.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDFORM.

"HANDLE_USER_COMMAND

* FORM CARGAR_DATOS
FORM CARGAR_DATOS.
DATA: VALOR(4) TYPE C.
GET PARAMETER ID 'BUK' FIELD VALOR.
SELECT BUKRS LIFNR GJAHR MONAT BELNR BUDAT WAERS DMBTR WRBTR
INTO TABLE T_BSIK
FROM BSIK
WHERE BUKRS EQ VALOR.
* WHERE BUKRS IN S_BUKRS.
ENDFORM. "CARGAR_DATOS

*&---------------------------------------------------------------------*
*&
Form bajar_a_texto
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
form bajar_a_texto.
CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
EXPORTING
I_FIELD_SEPERATOR
= '|'
* I_LINE_HEADER
=
* I_FILENAME
=
* I_APPL_KEEP
=''
TABLES
I_TAB_SAP_DATA
= T_BSIK
CHANGING
I_TAB_CONVERTED_DATA
= gt_salida2
EXCEPTIONS
CONVERSION_FAILED
=1
OTHERS
=2
.
IF SY-SUBRC <> 0.
WRITE: / 'FALL LA CONVERSION DE DATOS'.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
* CALL FUNCTION 'GUI_DOWNLOAD'
*
EXPORTING
**
BIN_FILESIZE
=
*
FILENAME
='E:\download.txt'
*
FILETYPE
= 'ASC'
**
APPEND
=''
*
WRITE_FIELD_SEPARATOR
= '|'
**
HEADER
= '00'
*
TRUNC_TRAILING_BLANKS
= '|'
**
WRITE_LF
= 'X'
**
COL_SELECT
=''
**
COL_SELECT_MASK
=''
**
DAT_MODE
=''
**
CONFIRM_OVERWRITE
=''
**
NO_AUTH_CHECK
=''
**
CODEPAGE
=''
**
IGNORE_CERR
= ABAP_TRUE
**
REPLACEMENT
= '#'
**
WRITE_BOM
=''
**
TRUNC_TRAILING_BLANKS_EOL
= 'X'
**
WK1_N_FORMAT
=''
**
WK1_N_SIZE
=''
**
WK1_T_FORMAT
=''
**
WK1_T_SIZE
=''
**
IMPORTING

**
FILELENGTH
=
*
TABLES
*
DATA_TAB
= T_BSIK
**
FIELDNAMES
=
* EXCEPTIONS
*
FILE_WRITE_ERROR
=1
*
NO_BATCH
=2
*
GUI_REFUSE_FILETRANSFER
=3
*
INVALID_TYPE
=4
*
NO_AUTHORITY
=5
*
UNKNOWN_ERROR
=6
*
HEADER_NOT_ALLOWED
=7
*
SEPARATOR_NOT_ALLOWED
=8
*
FILESIZE_NOT_ALLOWED
=9
*
HEADER_TOO_LONG
= 10
*
DP_ERROR_CREATE
= 11
*
DP_ERROR_SEND
= 12
*
DP_ERROR_WRITE
= 13
*
UNKNOWN_DP_ERROR
= 14
*
ACCESS_DENIED
= 15
*
DP_OUT_OF_MEMORY
= 16
*
DISK_FULL
= 17
*
DP_TIMEOUT
= 18
*
FILE_NOT_FOUND
= 19
*
DATAPROVIDER_EXCEPTION
= 20
*
CONTROL_FLUSH_ERROR
= 21
*
OTHERS
= 22
*
.
* IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*
WRITE:/ 'Programa fall al descargar datos'.
* ENDIF.
CALL FUNCTION 'DOWNLOAD'
TABLES
data_tab = t_bsik
EXCEPTIONS
OTHERS = 8.
IF sy-subrc <> 0.
WRITE: / 'Program failed to download data.'.
ENDIF.
ENDIF.
ENDFORM.

"bajar_a_texto

*&---------------------------------------------------------------------*
*&
Form FILL_LAYOUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*

FORM FILL_LAYOUT.
GS_LAYOUT-SEL_MODE = 'A'.
ENDFORM.

"FILL_LAYOUT

*&---------------------------------------------------------------------*
*&
Form FILL_CATALOG
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM FILL_CATALOG.
DATA: GS_FIELDCAT TYPE LVC_S_FCAT.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-TABNAME = 'T_BSIK'. "NOM TABLA CON ESTRUCTURA DE ALV.
GS_FIELDCAT-FIELDNAME = 'BUKRS'. " NOM DEL CAMPO A MOSTRAR.
GS_FIELDCAT-KEY = 'X'.
GS_FIELDCAT-HOTSPOT = 'X'.
GS_FIELDCAT-REPTEXT = 'Sociedad'."TEXTO QUE MOSTRARA EL CAMPO
GS_FIELDCAT-COL_POS = 1. " POS. QUE TENDRA EL CAMPO EN EL ALV.
GS_FIELDCAT-OUTPUTLEN = 15. " ES LA CANTIDAD DE CARACTERES DE SALIDA.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-TABNAME = 'T_BSIK'. "NOM TABLA CON ESTRUCTURA DE ALV.
GS_FIELDCAT-FIELDNAME = 'LIFNR'. " NOM DEL CAMPO A MOSTRAR.
GS_FIELDCAT-REPTEXT = 'Nmero Cuenta'."TEXTO QUE MOSTRARA EL CAMPO
GS_FIELDCAT-COL_POS = 1. " POS. QUE TENDRA EL CAMPO EN EL ALV.
GS_FIELDCAT-OUTPUTLEN = 15. " ES LA CANTIDAD DE CARACTERES DE SALIDA.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-TABNAME = 'T_BSIK'.
GS_FIELDCAT-FIELDNAME = 'GJAHR'.
GS_FIELDCAT-REPTEXT = 'Ejercicio'.
GS_FIELDCAT-COL_POS = 2.
GS_FIELDCAT-OUTPUTLEN = 11.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-TABNAME = 'T_BSIK'.
GS_FIELDCAT-FIELDNAME = 'MONAT'.
GS_FIELDCAT-REPTEXT = 'Mes Contable'.
GS_FIELDCAT-COL_POS = 3.
GS_FIELDCAT-OUTPUTLEN = 14.
APPEND GS_FIELDCAT TO GT_FIELDCAT.

CLEAR GS_FIELDCAT.
GS_FIELDCAT-TABNAME = 'T_BSIK'.
GS_FIELDCAT-FIELDNAME = 'BELNR'.
GS_FIELDCAT-REPTEXT = 'Dumento Contable'.
GS_FIELDCAT-COL_POS = 4.
GS_FIELDCAT-OUTPUTLEN = 18.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-TABNAME = 'T_BSIK'.
GS_FIELDCAT-FIELDNAME = 'BUDAT'.
GS_FIELDCAT-REPTEXT = 'Contabilizacin'.
GS_FIELDCAT-COL_POS = 5.
GS_FIELDCAT-OUTPUTLEN = 17.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-TABNAME = 'T_BSIK'.
GS_FIELDCAT-FIELDNAME = 'WAERS'.
GS_FIELDCAT-REPTEXT = 'Moneda'.
GS_FIELDCAT-COL_POS = 6.
GS_FIELDCAT-OUTPUTLEN = 8.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-TABNAME = 'T_BSIK'.
GS_FIELDCAT-FIELDNAME = 'DMBTR'.
GS_FIELDCAT-REPTEXT = 'Importe Mon. Local'.
GS_FIELDCAT-COL_POS = 7.
GS_FIELDCAT-OUTPUTLEN = 20.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-TABNAME = 'T_BSIK'.
GS_FIELDCAT-FIELDNAME = 'WRBTR'.
GS_FIELDCAT-REPTEXT = 'Importe Mon. Dmto'.
GS_FIELDCAT-COL_POS = 8.
GS_FIELDCAT-OUTPUTLEN = 20.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
ENDFORM.

"FILL_CATALOG

*&---------------------------------------------------------------------*
*&
Form LLAMAR_ALV
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM LLAMAR_ALV.
IF CUSTOM_CONTAINER IS INITIAL.

CREATE OBJECT CUSTOM_CONTAINER


EXPORTING
CONTAINER_NAME = MYCONTAINER
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
ENDIF.
CREATE OBJECT GRID1
EXPORTING
I_PARENT = CUSTOM_CONTAINER.
CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_VARIANT
= GS_VARIANT
I_SAVE
= X_SAVE
I_DEFAULT
= 'X'
IS_LAYOUT
= GS_LAYOUT
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT
IT_OUTTAB
= T_BSIK[].
CALL METHOD GRID1->SET_READY_FOR_INPUT
EXPORTING
I_READY_FOR_INPUT = 0.
ENDFORM.
"LLAMAR_ALV
*&---------------------------------------------------------------------*
*&
Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS '100'.
SET TITLEBAR 'TITLE001'.
* CREAMOS UNA INSTANCIA PARA EL EVENTO HANDLER Y
* REGISTRAMOS LOS METODOS PARA MANEJAR LOS EVENTOS DEL ALV.
CREATE OBJECT GR_EVENT_HANDLER.
*SET HANDLER gr_event_handler->handle_user_command FOR GRID1.
*SET HANDLER gr_event_handler->handle_hotspot_click FOR GRID1.
*SET HANDLER gr_event_handler->handle_double_click FOR GRID1.
*SET HANDLER gr_event_handler->handle_before_user_command
*FOR GRID1.
*SET HANDLER gr_event_handler->handle_context_menu_request
*FOR GRID1.
*SET HANDLER gr_event_handler->handle_button_click FOR GRID1.

ENDMODULE.

" STATUS_0100 OUTPUT

*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
DATA: OK_CODE TYPE SY-UCOMM.
OK_CODE = SY-UCOMM.
CASE OK_CODE.
WHEN 'BACK' OR 'EXIT'.
SET SCREEN 0.
LEAVE SCREEN.
CLEAR SY-UCOMM.
WHEN 'CANCEL'.
LEAVE PROGRAM.
WHEN 'CALLFB03'.
*
PERFORM HANDLE_USER_COMMAND.
when 'EXPORTAR'.
include ZDOWN_TEXTO_INCLUDE.
*
perform bajar_a_texto.
ENDCASE.
ENDMODULE.

" USER_COMMAND_0100 INPUT

También podría gustarte