Mostrar Errores Estándar en un POPUP
Cada vez que ejecutamos un módulo de funciones estándar es habitual que dicho módulo retorne una tabla de mensajes. Esta tabla de mensajes nos indicará si la ejecución ha ido bien o en caso contrario los errores que se han producido.
En nuestros programas es habitual que tengamos que mostrar un log de errores a los usuarios una vez han ejecutado una funcionalidad. Como no queremos construir una ventana a medida para mostrar los errores, podemos utilizar la siguiente función estándar que hace dicho trabajo por nosotros:
C14ALD_BAPIRET2_SHOW
Si rellenamos la tabla de tipo BAPIRET2, y ejecutamos el módulo de funciones podremos ver el siguiente resultado:
Ayuda Z para un campo en una Screen
Si necesitamos añadir una ayuda para búsqueda sobre un campo que facilite la entrada de datos a los usuarios, pero los datos que necesitamos añadir para la selección los queremos fijar nosotros, podemos usar el siguiente código ABAP:
* Declaraciones de Variables **************************** TYPES: BEGIN OF ty_fields. INCLUDE STRUCTURE help_value. TYPES: END OF ty_fields. TYPES: BEGIN OF ty_helptab, feld(50), END OF ty_helptab. DATA: it_centro TYPE TABLE OF t001w, et_centtro LIKE LINE OF it_centro, it_fields TYPE TABLE OF ty_fields, et_fields LIKE LINE OF it_fields, it_helptab TYPE TABLE OF ty_helptab, et_helptab LIKE LINE OF it_helptab. * Variables para Tablas de Información (F1) de Ayuda de Usuario. DATA: gv_tabla_f1 LIKE help_info-tabname, gv_campo_f1 LIKE help_info-fieldname. * Asociar Ayuda a un Campo de la Pantalla de Selección *************************************************************** * Variable de la Pantalla para la Ayuda AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_werks. PERFORM prepara_ayuda_centro_z. PERFORM ayuda USING 'Centros de 0 a 100' CHANGING p_centro. * Rutina de Carga de Datos de la Ayuda *************************************************************** FORM prepara_ayuda_centro_z. * Campo que se muestra en el F1 gv_campo_f1 = 'WERKS'. gv_tabla_f1 = 'T001W'. FREE it_ihelp_fields. CLEAR: et_fields, it_fields[]. et_fields-tabname = 'T001W'. " Tabla de referencia del campo et_fields-fieldname = 'WERKS'. " Campo para mostrar en la ayuda et_fields-selectflag = 'X'. " Flag de Retorno del Campo APPEND et_fields TO it_fields. * Para mostrar otro campo, en este caso la Descripción et_fields-tabname = 'T001W'. " Tabla de referencia del campo et_fields-fieldname = 'NAME1'. " Descripción et_fields-selectflag = ''. " Sin Retorno APPEND et_fields TO it_fields. CLEAR : it_helptab[], it_centro[]. SELECT werks name1 FROM t001w INTO CORRESPONDING FIELDS OF TABLE it_centro WHERE werks BETWEEN '0' AND '100' ORDER BY werks ASCENDING. * Rellena la Tabla de Valores de uno a uno en orden LOOP AT it_centro INTO et_centro. et_helptab-feld = et_centro-werks. APPEND it_helptab. et_helptab-feld = et_centro-name1. APPEND et_helptab TO it_helptab. ENDLOOP. ENDFORM. * Rutina Lanzador de la Ayuda *************************************************************** FORM ayuda USING p_titulo CHANGING p_return. CALL FUNCTION 'HELP_VALUES_GET_WITH_TABLE' EXPORTING TITEL = p_titulo fieldname = gv_campo_f1 tabname = gv_tabla_f1 IMPORTING SELECT_VALUE = p_return TABLES FIELDS = it_fields VALUETAB = it_helptab EXCEPTIONS FIELD_NOT_IN_DDIC = 1 MORE_THEN_ONE_SELECTFIELD = 2 NO_SELECTFIELD = 3 OTHERS = 4. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM.
Convertir Importes de Carácter a Decimal
La conversión de importes en ABAP es un poco liosa y se generan dumps a menudo debido a una mala conversión de importes recibidos en formato carácter o String. En ABAP los importes se guardan en un tipo CURRENCY, es decir, un número decimal.
Si queremos convertir de formato carácter a un formato CURRENCY, como por ejemplo el elemento de datos DMBTR de la tabla estándar de posiciones contables FI de SAP podemos usar el siguiente código para convertir las variables:
" Quito el separador REPLACE ALL OCCURRENCES OF '.' IN string_importe WITH space. " Elimino Posibles Espacios CONDENSE string_importe NO-GAPS. " Convierto a DMBTR que es una variable ABAP de tipo decimal " para importes, concretamente de posiciones de documentos FI PACK string_importe TO dmbtr.



