Mostrando entradas con la etiqueta EJEMPLO. Mostrar todas las entradas
Mostrando entradas con la etiqueta EJEMPLO. Mostrar todas las entradas

martes, 11 de junio de 2019

Declaraciones Inline en ABAP 7.40 (Inline declarations)

******************************************************************************** * INFORMACIÓN GENERAL - GENERAL INFORMATION ******************************************************************************** *^ Autor - Author : José Manrique Valderrama *^ Objetivo - Objetive : Inline Declaratinos *^ Website : abapejemplos.blogspot.com ******************************************************************************** REPORT Zjm_demo_inline. START-OF-SELECTION. " Declarar tabla en un SELECT SELECT * UP TO 1 ROWS FROM mara INTO TABLE @DATA(gdt_mara). " Declarar Work Area READ TABLE gdt_mara INTO DATA(gwa_mara) INDEX 1. " Declarar Field Symbol READ TABLE gdt_mara ASSIGNING FIELD-SYMBOL() INDEX 1. " Declarar una variable con valor inicial. DATA(gs_string) = 'Hola Mundo'. " Declarar variables en SPLIT en cadenas SPLIT gs_string AT space INTO DATA(ls_substring1) DATA(ls_substring2). " Declarar variable de tabla en SPLIT SPLIT gs_string AT space INTO TABLE DATA(gdt_string). " Declarar un parámetro de retorno en métodos. DATA(gi_digits) = cl_abap_math=>get_number_of_digits( '1240' ).

sábado, 4 de noviembre de 2017

BAPI_SHIPMENT_CREATE - VT01N

******************************************************************************** * INFORMACIÓN GENERAL - GENERAL INFORMATION ******************************************************************************** *^ Autor - Author : José Manrique Valderrama *^ Objetivo - Objetive : Creación de Documento de transporte (Shipment) - VT01N *^ Website : abapejemplos.blogspot.com ******************************************************************************** REPORT zjm_demo_shipment. PARAMETERS: p_tplst TYPE vttk-tplst OBLIGATORY, p_shtyp TYPE vttk-shtyp OBLIGATORY, p_vbeln TYPE lips-vbeln. DATA: gdt_item TYPE STANDARD TABLE OF bapishipmentitem, gdt_dlin TYPE STANDARD TABLE OF bapishipmentheaderdeadline, gdt_ret2 TYPE bapiret2_tab. DATA: gwa_header TYPE bapishipmentheader. FIELD-SYMBOLS: <fs_item> TYPE bapishipmentitem, <fs_dlin> TYPE bapishipmentheaderdeadline, <fs_ret2> TYPE bapiret2. DATA: gv_tknum TYPE vttk-tknum. START-OF-SELECTION. REFRESH: gdt_item, gdt_dlin, gdt_ret2. CLEAR: gwa_header, gv_tknum. "Cabecera del Documento de transporte gwa_header-shipment_type = p_shtyp. gwa_header-trans_plan_pt = p_tplst. "Se inicia en status Planificado "Se puede iniciar en otro status, se deben marcar todos los status previos gwa_header-status_plan = abap_true. "Se completa la fecha y hora de cada status APPEND INITIAL LINE TO gdt_dlin ASSIGNING <fs_dlin>. <fs_dlin>-time_type = 'HDRSTPLDT'. <fs_dlin>-time_stamp_utc = sy-datum && sy-uzeit. <fs_dlin>-time_zone = 'UTC'. *SAP-Note 531207 *TIME_TYPE = HDRSTPLDT --> Date/time of end of planning *TIME_TYPE = HDRSTCIPDT --> PLANNED date/time of check-in *TIME_TYPE = HDRSTCIADT --> ACTUAL date/time of check-in *TIME_TYPE = HDRSTLSPDT --> PLANNED date/time of loading start *TIME_TYPE = HDRSTLSADT --> ACTUAL date/time of loading start *TIME_TYPE = HDRSTLEPDT --> PLANNED date/time of loading end *TIME_TYPE = HDRSTLEADT --> ACTUAL date/time of loading end *TIME_TYPE = HDRSTCPDT --> PLANNED date/time of shipment completion *TIME_TYPE = HDRSTCADT --> ACTUAL date/time of shipment completion *TIME_TYPE = HDRSTSSPDT --> PLANNED date/time of shipment start *TIME_TYPE = HDRSTSSADT --> ACTUAL date/time of shipment start *TIME_TYPE = HDRSTSEPDT --> PLANNED date/time of shipment end *TIME_TYPE = HDRSTSEADT --> ACTUAL date/time of shipment end "Se pueden asignar las entregas, no es obligatorio. IF p_vbeln IS NOT INITIAL. APPEND INITIAL LINE TO gdt_item ASSIGNING . <fs_item>-delivery = p_vbeln. ENDIF. "Se ejecuta la BAPI CALL FUNCTION 'BAPI_SHIPMENT_CREATE' EXPORTING headerdata = gwa_header IMPORTING transport = gv_tknum TABLES headerdeadline = gdt_dlin itemdata = gdt_item return = gdt_ret2. "Si GV_TKNUM tiene un valor, se creó el transporte IF gv_tknum IS INITIAL. READ TABLE gdt_ret2 ASSIGNING <fs_ret2> WITH KEY type = 'E'. IF sy-subrc EQ 0. "Mensaje de la BAPI MESSAGE <fs_ret2>-message TYPE 'S' DISPLAY LIKE 'E'. ENDIF. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = abap_true. ENDIF.

sábado, 23 de abril de 2016

ALV Factory - Ordenamiento, Totales y Subtotales

******************************************************************************** * INFORMACIÓN GENERAL - GENERAL INFORMATION ******************************************************************************** *^ Autor - Author : José Manrique Valderrama *^ Objetivo - Objetive : TEST - ALV FACTORY *^ Website : abapejemplos.blogspot.com ******************************************************************************** REPORT zjm_demo_alv_factory. DATA: gtd_sflight TYPE STANDARD TABLE OF sflight. DATA: gwa_sflight TYPE sflight. DATA: go_alv TYPE REF TO cl_salv_table, go_sorts TYPE REF TO cl_salv_sorts, go_aggrs TYPE REF TO cl_salv_aggregations. * Párametros de selección PARAMETERS: p_carrid TYPE sflight-carrid OBLIGATORY. SELECT-OPTIONS: s_connid FOR gwa_sflight-connid, s_fldate FOR gwa_sflight-fldate. START-OF-SELECTION. SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE gtd_sflight WHERE carrid EQ p_carrid AND connid IN s_connid AND fldate IN s_fldate. IF sy-subrc NE 0. "No se encontraron datos para esta ejecución MESSAGE s425(fr) DISPLAY LIKE 'E'. RETURN. ENDIF. TRY. cl_salv_table=>factory( IMPORTING r_salv_table = go_alv CHANGING t_table = gtd_sflight ). CATCH cx_salv_msg. "Se ha producido un error en ALV MESSAGE s899(salv_exception) DISPLAY LIKE 'E'. RETURN. ENDTRY. go_sorts = go_alv->get_sorts( ). TRY. go_sorts->add_sort( columnname = 'FLDATE' "Columna a ordenar position = 1 "1er criterio de ordenamiento sequence = if_salv_c_sort=>sort_up "Orden Ascendente subtotal = abap_true ). "Se utiliza para Subtotales CATCH cx_salv_data_error cx_salv_not_found cx_salv_existing . "Se ha producido un error en ALV MESSAGE s899(salv_exception) DISPLAY LIKE 'E'. RETURN. ENDTRY. go_aggrs = go_alv->get_aggregations( ). TRY. go_aggrs->add_aggregation( columnname = 'PAYMENTSUM' "Columna aggregation = if_salv_c_aggregation=>total ). "Totalizar(suma) CATCH cx_salv_data_error cx_salv_not_found cx_salv_existing . "Se ha producido un error en ALV MESSAGE s899(salv_exception) DISPLAY LIKE 'E'. RETURN. ENDTRY. * Se activan todas las funciones(botones) estándar del ALV go_alv->get_functions( )->set_all( abap_true ). go_alv->display( ).
Salida del ALV

domingo, 20 de marzo de 2016

Envío de correo con PDF - OO

******************************************************************************** * INFORMACIÓN GENERAL - GENERAL INFORMATION ******************************************************************************** *^ Autor - Author : José Manrique Valderrama *^ Objetivo - Objetive : Envío de correos OO con PDF *^ Website : abapejemplos.blogspot.com ******************************************************************************** REPORT zjm_demo_email. DATA: gdt_text TYPE soli_tab, gdt_lines TYPE tline_t, gdt_pdf TYPE solix_tab. DATA: gwa_parameters TYPE ssfctrlop, gwa_outoptions TYPE ssfcompop, gwa_outinfo TYPE ssfcrescl. DATA: go_bcs TYPE REF TO cl_bcs, go_document TYPE REF TO cl_document_bcs, go_address TYPE REF TO cl_cam_address_bcs. DATA: gs_formname TYPE tdsfname, gs_subject TYPE so_obj_des, gs_result TYPE os_boolean, gs_funcname TYPE rs38l_fnam, gs_file TYPE xstring, gi_size TYPE i, gs_archivo TYPE so_obj_des. PARAMETERS: p_email TYPE ad_smtpadr. START-OF-SELECTION. gs_formname = 'ZJM_DEMO_EMAIL'. "Se obtiene el nombre del Módulo de Funciones para el SMARTFORM CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = gs_formname IMPORTING fm_name = gs_funcname EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc NE 0. "Error en el nombre del SMARTFORM, revisar RETURN. ENDIF. "Se completan datos para la ejecución del SMARTFORM CLEAR gwa_parameters. "Indicar que se va a recibir el OTF gwa_parameters-getotf = abap_true. "No mostar pantalla de diálogo de impresión gwa_parameters-no_dialog = abap_true. "Sin previsualización gwa_parameters-preview = abap_false. "Se completan datos específicos de la impresión CLEAR gwa_outoptions. gwa_outoptions-tddest = 'LP01'. "Impresora para simulación CALL FUNCTION gs_funcname EXPORTING control_parameters = gwa_parameters output_options = gwa_outoptions user_settings = abap_false "Activar si se usa config. del usuario IMPORTING job_output_info = gwa_outinfo EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc NE 0. "Error al ejecutar el SMARTFORM, revisar RETURN. ENDIF. "Se convierte el OTF obtenido a formato PDF, en GS_FILE CALL FUNCTION 'CONVERT_OTF' EXPORTING format = 'PDF' IMPORTING bin_filesize = gi_size bin_file = gs_file TABLES otf = gwa_outinfo-otfdata lines = gdt_lines EXCEPTIONS err_max_linewidth = 1 err_format = 2 err_conv_not_possible = 3 err_bad_otf = 4 OTHERS = 5. IF sy-subrc NE 0. "Error al convertir OTF a PDF RETURN. ENDIF. "La cadena binaria obtenida se convierte en tabla CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = gs_file TABLES binary_tab = gdt_pdf. "Esta tabla se envía por correo TRY. go_bcs = cl_bcs=>create_persistent( ). CATCH cx_send_req_bcs. "Error al crear objeto de correo RETURN. ENDTRY. APPEND 'Se adjunta PDF, descargar archivo' TO gdt_text. gs_subject = 'Asunto del correo con PDF'. TRY. go_document = cl_document_bcs=>create_document( i_type = 'RAW' i_text = gdt_text i_subject = gs_subject ). CATCH cx_document_bcs. "Error al crear contenido del correo RETURN. ENDTRY. gs_archivo = 'ARCHIVO_PDF'. "Nombre del archivo sin extensión "Se adjunta el PDF TRY. go_document->add_attachment( EXPORTING i_attachment_type = 'PDF' i_attachment_subject = gs_archivo i_att_content_hex = gdt_pdf ). CATCH cx_document_bcs. RETURN. ENDTRY. TRY. go_address = cl_cam_address_bcs=>create_internet_address( p_email ). CATCH cx_address_bcs. "Error al crear objeto de destinatario RETURN. ENDTRY. TRY. go_bcs->set_document( go_document ). CATCH cx_send_req_bcs. "Error al asignar el objeto de correo RETURN. ENDTRY. TRY. go_bcs->add_recipient( go_address ). CATCH cx_send_req_bcs. "Error al agregar destinatario a la lista RETURN. ENDTRY. TRY. go_bcs->set_send_immediately( abap_true ). CATCH cx_send_req_bcs. "Error al marcar el correo como envio inmediato RETURN. ENDTRY. TRY. "Enviar con error en pantalla gs_result = go_bcs->send( abap_true ). CATCH cx_send_req_bcs. "Error al setear el envío de correo RETURN. ENDTRY. IF gs_result EQ abap_true. "Se confirma el envío, es necesario. COMMIT WORK. ENDIF.
Este es el SMARTFORM que se enviará por correo:





Resultado del envío de correo:







PDF Adjunto:

Envío de correo OO con HTML

******************************************************************************** * INFORMACIÓN GENERAL - GENERAL INFORMATION ******************************************************************************** *^ Autor - Author : José Manrique Valderrama *^ Objetivo - Objetive : Envío de correos OO con HTML *^ Website : abapejemplos.blogspot.com ******************************************************************************** REPORT zjm_demo_email. DATA: gdt_html TYPE soli_tab. DATA: go_bcs TYPE REF TO cl_bcs, go_document TYPE REF TO cl_document_bcs, go_address TYPE REF TO cl_cam_address_bcs. DATA: gs_subject TYPE so_obj_des, gs_result TYPE os_boolean. PARAMETERS: p_email TYPE ad_smtpadr. START-OF-SELECTION. TRY. go_bcs = cl_bcs=>create_persistent( ). CATCH cx_send_req_bcs. "Error al crear objeto de correo RETURN. ENDTRY. APPEND '<HTML>' TO gdt_html. APPEND '<H1>Título 1</H1>' TO gdt_html. APPEND '<H2>Título 2</H2>' TO gdt_html. APPEND '<H3>Título 3</H3>' TO gdt_html. APPEND '<TABLE BORDER = "1">' TO gdt_html. APPEND '<TR>' TO gdt_html. APPEND '<TD><B>Campo 1</B></TD>' TO gdt_html. APPEND '<TD><B>Campo 2</B></TD>' TO gdt_html. APPEND '</TR>' TO gdt_html. APPEND '<TR>' TO gdt_html. APPEND '<TD>Valor 1</TD>' TO gdt_html. APPEND '<TD>Valor 2</TD>' TO gdt_html. APPEND '</TR>' TO gdt_html. APPEND '</TABLE>' TO gdt_html. APPEND '</HTML>' TO gdt_html. gs_subject = 'Asunto del correo HTML'. TRY. go_document = cl_document_bcs=>create_document( i_type = 'HTM' i_text = gdt_html i_subject = gs_subject ). CATCH cx_document_bcs. "Error al crear contenido del correo RETURN. ENDTRY. TRY. go_address = cl_cam_address_bcs=>create_internet_address( p_email ). CATCH cx_address_bcs. "Error al crear objeto de destinatario RETURN. ENDTRY. TRY. go_bcs->set_document( go_document ). CATCH cx_send_req_bcs. "Error al asignar el objeto de correo RETURN. ENDTRY. TRY. go_bcs->add_recipient( go_address ). CATCH cx_send_req_bcs. "Error al agregar destinatario a la lista RETURN. ENDTRY. TRY. go_bcs->set_send_immediately( abap_true ). CATCH cx_send_req_bcs. "Error al marcar el correo como envio inmediato RETURN. ENDTRY. TRY. "Enviar con error en pantalla gs_result = go_bcs->send( abap_true ). CATCH cx_send_req_bcs. "Error al setear el envío de correo RETURN. ENDTRY. IF gs_result EQ abap_true. "Se confirma el envío, es necesario. COMMIT WORK. ENDIF.
Resultado:





sábado, 12 de marzo de 2016

Funciones útiles - Números

******************************************************************************** * INFORMACIÓN GENERAL - GENERAL INFORMATION ******************************************************************************** *^ Autor - Author : José Manrique Valderrama *^ Objetivo - Objetive : Funciones útiles para números *^ Website : abapejemplos.blogspot.com ******************************************************************************** REPORT zjm_demo_funciones. START-OF-SELECTION. DATA: lwa_words TYPE spell. DATA: ls_docum TYPE char10 VALUE '12453', li_int TYPE i VALUE -35626, ls_int TYPE char10, li_numer TYPE i, li_denom TYPE i. *Completa un texto con números con ceros a la izquierda. WRITE: / 'El valor', ls_docum, 'después de completar con ceros a la izquierda:'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = ls_docum IMPORTING output = ls_docum. WRITE ls_docum. *Elimina los ceros a la izquierda de una cadena con números. WRITE: / 'El valor', ls_docum, 'después de quitar los ceros a la izquierda:'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = ls_docum IMPORTING output = ls_docum. WRITE ls_docum. ls_int = li_int. *Coloca el signo a la izquierda de un número negativo WRITE: / 'El número', ls_int, 'con el signo al inicio es:'. CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' CHANGING value = ls_int. WRITE: ls_int. *Obtiene un número en letras y sus dígitos individualmente CALL FUNCTION 'SPELL_AMOUNT' EXPORTING amount = 1135414 IMPORTING in_words = lwa_words EXCEPTIONS not_found = 1 too_large = 2 OTHERS = 3. IF sy-subrc EQ 0. WRITE: / '1135414 en palabras es:', lwa_words-word. ENDIF. *Convierte un número en fracción ( numerador y denominador ) CALL FUNCTION 'CONVERT_TO_FRACTION' EXPORTING input = '1245.56' IMPORTING nominator = li_numer denominator = li_denom EXCEPTIONS conversion_overflow = 1 OTHERS = 2. IF sy-subrc EQ 0. WRITE: / '1245.56 =', li_numer, '/', li_denom. ENDIF.
Resultado

Funciones Útiles - Unidades de Medida

******************************************************************************** * INFORMACIÓN GENERAL - GENERAL INFORMATION ******************************************************************************** *^ Autor - Author : José Manrique Valderrama *^ Objetivo - Objetive : Funciones útiles para unidades de medida *^ Website : abapejemplos.blogspot.com ******************************************************************************** REPORT zjm_demo_funciones. START-OF-SELECTION. DATA: ls_matnr TYPE matnr VALUE '030000009', lp_menge TYPE menge_d. *Convierte unidades para un material específico CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' EXPORTING i_matnr = ls_matnr i_in_me = 'UNI' i_out_me = 'KG' i_menge = 10 IMPORTING e_menge = lp_menge EXCEPTIONS error_in_application = 1 error = 2 OTHERS = 3. IF sy-subrc EQ 0. WRITE: / '10 Unidades de', ls_matnr, 'equivalen a', lp_menge, 'KG'. ENDIF. *Convierte unidades del mismo tipo( Masa, Tiempo, Longitud, etc. ) CALL FUNCTION 'UNIT_CONVERSION_SIMPLE' EXPORTING input = lp_menge unit_in = 'KG' unit_out = 'G' IMPORTING output = lp_menge EXCEPTIONS conversion_not_found = 1 division_by_zero = 2 input_invalid = 3 output_invalid = 4 overflow = 5 type_invalid = 6 units_missing = 7 unit_in_not_found = 8 unit_out_not_found = 9 OTHERS = 10. IF sy-subrc EQ 0. WRITE: / '100 KG equivalen a', lp_menge, 'G'. ENDIF.
Resultado

Funciones útiles - Fechas y Hora

******************************************************************************** * INFORMACIÓN GENERAL - GENERAL INFORMATION ******************************************************************************** *^ Autor - Author : José Manrique Valderrama *^ Objetivo - Objetive : Funciones útiles para fechas *^ Website : abapejemplos.blogspot.com ******************************************************************************** REPORT zjm_demo_funciones. DATA: ld_datum TYPE sy-datum, ls_dat08 TYPE char8, ls_dat10 TYPE char10, lt_uzeit TYPE sy-uzeit, ls_dia TYPE ish_daytxt, ls_mes TYPE fcltx. START-OF-SELECTION. * Suma días, meses y años a una fecha. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' EXPORTING date = sy-datum days = 3 months = 1 signum = '+' years = 0 IMPORTING calc_date = ld_datum. WRITE: / 'Hoy es', sy-datum, 'dentro de 1 mes y 3 días será', ld_datum. * Resta días, meses y años a una fecha. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' EXPORTING date = sy-datum days = 3 months = 1 signum = '-' years = 0 IMPORTING calc_date = ld_datum. WRITE: / 'Hoy es', sy-datum, 'hace 1 mes y 3 días fue', ld_datum. * Se cualquier cantidad de tiempo a una fecha y hora CALL FUNCTION 'END_TIME_DETERMINE' EXPORTING duration = 456 *Minutos = MIN, Segundos = 'S', Horas = STD, etc. unit = 'MIN' IMPORTING end_date = ld_datum end_time = lt_uzeit CHANGING start_date = sy-datum start_time = sy-uzeit EXCEPTIONS factory_calendar_not_found = 1 date_out_of_calendar_range = 2 date_not_valid = 3 unit_conversion_error = 4 si_unit_missing = 5 parameters_no_valid = 6 OTHERS = 7. IF sy-subrc EQ 0. WRITE: / 'Hoy es', sy-datum, 'hora', sy-uzeit, ', dentro de 456 minutos será', ld_datum, 'hora', lt_uzeit. ENDIF. *Convierte una fecha de formato externo a interno CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL' EXPORTING date_external = '10.10.2016' IMPORTING date_internal = ls_dat08 EXCEPTIONS date_external_is_invalid = 1 OTHERS = 2. IF sy-subrc EQ 0. WRITE: / 'La fecha 10.10.2016 se representa internamente en SAP como', ls_dat08. ENDIF. *Convierte una fecha de formato interno a externo CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL' EXPORTING date_internal = '20151009' IMPORTING date_external = ls_dat10 EXCEPTIONS date_internal_is_invalid = 1 OTHERS = 2. IF sy-subrc EQ 0. WRITE: / 'La fecha interna 20151009 se visualiza como:', ls_dat10. ENDIF. *Obtiene el nombre del día en el que cae una fecha CALL FUNCTION 'ISH_GET_DAY_OF_WEEK' EXPORTING date = '19850123' IMPORTING day_txt = ls_dia. WRITE: / 'El 23 de enero de 1985 fue un día', ls_dia. *Obtiene el último día del mes CALL FUNCTION 'FKK_LAST_DAY_OF_MONTH' EXPORTING day_in = sy-datum IMPORTING last_day_of_month = ld_datum EXCEPTIONS day_in_no_date = 1 OTHERS = 2. IF sy-subrc EQ 0. WRITE: / 'El último día de este mes es:', ld_datum. ENDIF. *Obtiene el nombre de un mes CALL FUNCTION 'ISP_GET_MONTH_NAME' EXPORTING date = sy-datum language = sy-langu IMPORTING longtext = ls_mes EXCEPTIONS calendar_id = 1 date_error = 2 not_found = 3 wrong_input = 4 OTHERS = 5. IF sy-subrc EQ 0. WRITE: / 'Hoy', sy-datum, 'estamos en el mes de', ls_mes. ENDIF.
Resultado

domingo, 6 de marzo de 2016

Fullscreen ALV GRID Factory - Creación de Reporte simple

******************************************************************************** * INFORMACIÓN GENERAL - GENERAL INFORMATION ******************************************************************************** *^ Autor - Author : José Manrique Valderrama *^ Objetivo - Objetive : TEST - ALV FACTORY *^ Website : abapejemplos.blogspot.com ******************************************************************************** REPORT zjm_demo_alv_factory. * Declaración de variables DATA: gtd_sflight TYPE STANDARD TABLE OF sflight. DATA: gwa_sflight TYPE sflight. DATA: go_alv TYPE REF TO cl_salv_table. * Párametros de selección PARAMETERS: p_carrid TYPE sflight-carrid OBLIGATORY. SELECT-OPTIONS: s_connid FOR gwa_sflight-connid, s_fldate FOR gwa_sflight-fldate. START-OF-SELECTION. SELECT * FROM sflight INTO TABLE gtd_sflight WHERE carrid EQ p_carrid AND connid IN s_connid AND fldate IN s_fldate. IF sy-subrc NE 0. "No se encontraron datos para esta ejecución MESSAGE s425(fr) DISPLAY LIKE 'E'. RETURN. ENDIF. TRY. cl_salv_table=>factory( IMPORTING r_salv_table = go_alv CHANGING t_table = gtd_sflight ). CATCH cx_salv_msg. "Se ha producido un error en ALV MESSAGE s899(salv_exception) DISPLAY LIKE 'E'. RETURN. ENDTRY. go_alv->display( ).
Párametros de selección


Salida del ALV

Fullscreen ALV Grid Factory - Botones Estándar del ALV

******************************************************************************** * INFORMACIÓN GENERAL - GENERAL INFORMATION ******************************************************************************** *^ Autor - Author : José Manrique Valderrama *^ Objetivo - Objetive : TEST - ALV FACTORY - CL_SALV_FUNCTIONS_LIST *^ Website : abapejemplos.blogspot.com ******************************************************************************** REPORT zjm_demo_alv_factory. * Declaración de variables DATA: gtd_sflight TYPE STANDARD TABLE OF sflight. DATA: gwa_sflight TYPE sflight. DATA: go_alv TYPE REF TO cl_salv_table, go_functions TYPE REF TO cl_salv_functions_list. * Párametros de selección PARAMETERS: p_carrid TYPE sflight-carrid OBLIGATORY. SELECT-OPTIONS: s_connid FOR gwa_sflight-connid, s_fldate FOR gwa_sflight-fldate. START-OF-SELECTION. SELECT * FROM sflight INTO TABLE gtd_sflight WHERE carrid EQ p_carrid AND connid IN s_connid AND fldate IN s_fldate. IF sy-subrc NE 0. "No se encontraron datos para esta ejecución MESSAGE s425(fr) DISPLAY LIKE 'E'. RETURN. ENDIF. TRY. cl_salv_table=>factory( IMPORTING r_salv_table = go_alv CHANGING t_table = gtd_sflight ). CATCH cx_salv_msg. "Se ha producido un error en ALV MESSAGE s899(salv_exception) DISPLAY LIKE 'E'. RETURN. ENDTRY. go_functions = go_alv->get_functions( ). go_functions->set_sort_asc( abap_true ). "Ordenar ascendentemente go_functions->set_sort_desc( abap_true ). "Ordenar descendentemente ** Se activan todas las funciones * go_functions->set_all( abap_true ). go_alv->display( ).
Salida del ALV



Los métodos para activar las funciones se encuentran en la clase CL_SALV_FUNCTIONS_LIST, algunas funciones solo están disponibles de acuerdo al modo de ejecución( ALV List, ALV Tree, Fullscreen Grid, Dynpro Grid ).

ALV Factory - Color en Celda, Fila o Columna

******************************************************************************** * INFORMACIÓN GENERAL - GENERAL INFORMATION ******************************************************************************** *^ Autor - Author : José Manrique Valderrama *^ Objetivo - Objetive : TEST - ALV FACTORY *^ Website : abapejemplos.blogspot.com ******************************************************************************** REPORT zjm_demo_alv_factory. TYPES: BEGIN OF gty_sflight. INCLUDE STRUCTURE sflight. * Columna para controlar el color por celda o fila TYPES: color TYPE lvc_t_scol, END OF gty_sflight. * Declaración de variables DATA: gtd_sflight TYPE STANDARD TABLE OF gty_sflight. DATA: gwa_sflight TYPE sflight, gwa_color TYPE lvc_s_colo. DATA: go_alv TYPE REF TO cl_salv_table, go_columns TYPE REF TO cl_salv_columns_table, go_column TYPE REF TO cl_salv_column_table. * Párametros de selección PARAMETERS: p_carrid TYPE sflight-carrid OBLIGATORY. FIELD-SYMBOLS: <fs_sflight> TYPE gty_sflight, <fs_color> TYPE lvc_s_scol. SELECT-OPTIONS: s_connid FOR gwa_sflight-connid, s_fldate FOR gwa_sflight-fldate. START-OF-SELECTION. SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE gtd_sflight WHERE carrid EQ p_carrid AND connid IN s_connid AND fldate IN s_fldate. IF sy-subrc NE 0. "No se encontraron datos para esta ejecución MESSAGE s425(fr) DISPLAY LIKE 'E'. RETURN. ENDIF. LOOP AT gtd_sflight ASSIGNING <fs_sflight>. * Si el campo SEATSOCC es cero, la fila es amarilla IF <fs_sflight>-seatsocc EQ 0. APPEND INITIAL LINE TO <fs_sflight>-color ASSIGNING <fs_color>. * Color de fila: dejar en blanco <fs_color>-fname = space. <fs_color>-color-col = 3. "Amarillo <fs_color>-color-int = 1. <fs_color>-color-inv = 0. ENDIF. * Campo PAYMENTSUM: si es mayor que 100000, verde, sino rojo IF <fs_sflight>-paymentsum GT 100000. APPEND INITIAL LINE TO <fs_sflight>-color ASSIGNING <fs_color>. * Color de celda: llenar columna <fs_color>-fname = 'PAYMENTSUM'. <fs_color>-color-col = 5. "Verde <fs_color>-color-int = 0. <fs_color>-color-inv = 0. ELSE. APPEND INITIAL LINE TO <fs_sflight>-color ASSIGNING <fs_color>. * Color de celda: llenar columna <fs_color>-fname = 'PAYMENTSUM'. <fs_color>-color-col = 6. "Rojo <fs_color>-color-int = 0. <fs_color>-color-inv = 0. ENDIF. ENDLOOP. TRY. cl_salv_table=>factory( IMPORTING r_salv_table = go_alv CHANGING t_table = gtd_sflight ). CATCH cx_salv_msg. "Se ha producido un error en ALV MESSAGE s899(salv_exception) DISPLAY LIKE 'E'. RETURN. ENDTRY. * Se activan todas las funciones go_alv->get_functions( )->set_all( abap_true ). go_columns = go_alv->get_columns( ). * La columna COLOR contiene el color por celda o fila go_columns->set_color_column( 'COLOR' ). * Setea color para una columnar gwa_color-col = 5. "Verde gwa_color-int = 1. gwa_color-inv = 0. * Columna CURRENCY verde go_column ?= go_columns->get_column( 'CURRENCY' ). go_column->set_color( gwa_color ). go_alv->display( ).
Salida del ALV