|
********************************************************************************
* 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( |
Mostrando entradas con la etiqueta UTILES. Mostrar todas las entradas
Mostrando entradas con la etiqueta UTILES. Mostrar todas las entradas
martes, 11 de junio de 2019
Declaraciones Inline en ABAP 7.40 (Inline declarations)
Etiquetas:
7.40,
7.50,
ABAP,
DECLARACION,
DECLARATION,
EJEMPLO,
EXAMPLE,
HANA,
HOW TO,
INLINE,
OO,
PROGRAMACIÓN,
SAMPLE,
SAP,
UTILES
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. |
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. |
Envío de correos OO
| ******************************************************************************** * INFORMACIÓN GENERAL - GENERAL INFORMATION ******************************************************************************** *^ Autor - Author : José Manrique Valderrama *^ Objetivo - Objetive : Envío de correos OO *^ Website : abapejemplos.blogspot.com ******************************************************************************** REPORT zjm_demo_email. DATA: gdt_text 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 'Ese es el cuerpo del correo' TO gdt_text. gs_subject = 'Asunto del correo'. 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. 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. |
sábado, 12 de marzo de 2016
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. |
Suscribirse a:
Entradas (Atom)