✒️Las recomendaciones para desarrollar aplicaciones ABAP en SAP HANA
Las recomendaciones para desarrollar aplicaciones ABAP en SAP HANA
En cuanto a la optimización de rendimiento, hay que familiarizarse con lo que ya trae SAP, estudiarlo y ver si es viable su uso.
Hay veces que en funciones estándar te ves falta de optimización, puede ser que sea código que lleva ahí desde vete tú a saber cuando.
Por ejemplo, para mostrar el nombre del mes de una fecha determinada en el idioma seleccionado, es tan sencillo como acceder a la tabla T247
que tiene todos los nombres de los meses en todos los idiomas y simplemente hacer un SELECT. Con cuatro líneas lo resuelves:
SELECT SINGLE ltx FROM t247 INTO (vl_mes) WHERE spras = sy-langu AND mnr = v_fecha+4(2).
IF sy-subrc NE 0.
vl_mes = 'XXXXXXXXXX'.
ENDIF.
Si lo haces mediante la funcion, por ejemplo, /CPD/GET_MONTH_NAME, solo en el llamado a la función ya estás utilizando más líneas
de código que las cuatro necesarias. Ver el código más abajo.
Si analizas el código de la función verás que ya hay 57 líneas (incluidos los comentarios).
A primera vista ya hay un doble SELECT que hacen exactamente lo mismo (si lo encuentra lo vuelve a leer, ¿?)
Además esa función llama a otra función ('DATE_CHECK_PLAUSIBILITY'). Otras 70 líneas más.
En definitiva, que sabiendo dónde está la información que necesitamos (T247), cómo está estructurada (IDIOMA, MES, TEXTO BREVE, TEXTO LARGO) y cómo acceder a ella (IDIOMA Y MES), en muchos casos no será necesario utilizar más líneas de código que las necesarias.
De lo que se trata es de programar bien, pero analizar antes, como siempre, es mejor.
Espero que este aporte te sea de utilidad.
CALL FUNCTION '/CPD/GET_MONTH_NAME'
EXPORTING
DATE = sy-datum
language = sy-langu
* MONTH_NUMBER = '00'
IMPORTING
LANGU_BACK = sy-langu
LONGTEXT = vg_nombre_mes
* SHORTTEXT =
EXCEPTIONS
CALENDAR_ID = 1
DATE_ERROR = 2
NOT_FOUND = 3
WRONG_INPUT = 4
OTHERS = 5
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
FUNCTION /CPD/GET_MONTH_NAME.
*"--------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(DATE) LIKE SY-DATUM DEFAULT '00000000'
*" VALUE(LANGUAGE) LIKE SY-LANGU
*" VALUE(MONTH_NUMBER) LIKE T247-MNR DEFAULT '00'
*" EXPORTING
*" VALUE(LANGU_BACK) LIKE SY-LANGU
*" VALUE(LONGTEXT) LIKE T247-LTX
*" VALUE(SHORTTEXT) LIKE T247-KTX
*" EXCEPTIONS
*" CALENDAR_ID
*" DATE_ERROR
*" NOT_FOUND
*" WRONG_INPUT
*"--------------------------------------------------------------------
IF ( DATE IS INITIAL ) AND ( MONTH_NUMBER IS INITIAL ).
RAISE WRONG_INPUT.
ENDIF.
*
IF NOT MONTH_NUMBER IS INITIAL.
IF ( MONTH_NUMBER < '01' ) OR ( MONTH_NUMBER > '12' ).
RAISE WRONG_INPUT.
ENDIF.
IF ( NOT DATE IS INITIAL ) AND ( DATE+4(2) <> MONTH_NUMBER ).
RAISE WRONG_INPUT.
ENDIF.
ENDIF.
*
IF NOT DATE IS INITIAL.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
DATE = DATE
EXCEPTIONS
PLAUSIBILITY_CHECK_FAILED = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
RAISE DATE_ERROR.
ENDIF.
MONTH_NUMBER = DATE+4(2).
ENDIF.
*
SELECT SINGLE * FROM T247 WHERE SPRAS = LANGUAGE
AND MNR = MONTH_NUMBER.
IF SY-SUBRC NE 0.
SELECT SINGLE * FROM T247 WHERE SPRAS = SY-LANGU
AND MNR = MONTH_NUMBER.
IF SY-SUBRC NE 0.
RAISE NOT_FOUND.
ENDIF.
ENDIF.
SHORTTEXT = T247-KTX.
LONGTEXT = T247-LTX.
LANGU_BACK = T247-SPRAS.
ENDFUNCTION.
 
 
 
Sobre el autor
Publicación académica de Fernando Morales Del Rosario, en su ámbito de estudios para el Máster ABAP for HANA.
Fernando Morales Del Rosario
Profesión: Analista Programador - España - Legajo: HF78E
✒️Autor de: 17 Publicaciones Académicas
🎓Cursando Actualmente: Master ABAP for HANA
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Mi objetivo es poner en práctica lo aprendido y alcanzar un buen nivel como programador abap.
Certificación Académica de Fernando Morales