🚀PROMO #PLANCARRERA2024 - 🔥Bonificaciones, Precios Congelados y Cuotas

 X 

✒️Las recomendaciones para desarrollar aplicaciones ABAP en SAP HANA

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.

SAP Senior


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