workshop tutorial trabajo programaciĆ³n mega curso course completo basico sap abap

trabajo - sap abap tutorial



Tipo booleano preferido para el desarrollo ABAP (4)

SAP no tiene un tipo de datos central para los valores booleanos. Además, los tipos booleanos de nivel superior en SAP suelen tener tres estados: verdadero (''X''), falso ('''') y desconocido (''-'').

Ahora, obviamente, los booleanos son la piedra angular de gran parte de mi trabajo de desarrollo, pero me di cuenta de que no he sido terriblemente consistente en mi uso de tipo (elemento de datos). Hasta ahora creo que estos son los más comunes:

  • abap_bool : definido en el grupo de tipos abap, sin restricciones pero las constantes se definen para verdadero, falso, desconocido, sí y no
  • os_boolean : elemento de datos, Sí (''X'') o No ('''')
  • xfeld : el elemento de datos, Verdadero (''X'') o Falso (''''), carece de una etiqueta de campo, descrito como una casilla de verificación

En mi código, he usado principalmente abap_bool ya que puedo trabajar con constantes en lugar de valores de caracteres, no es que no pueda asignar abap_true a un xfeld . Sin embargo, se me ha advertido que este grupo de tipos podría no estar siempre disponible.

Ahora me estoy preguntando acerca de las mejores prácticas para los valores booleanos, específicamente:

  • ¿Hay algún tipo preferido que debería usar?
  • ¿El uso del grupo de tipos abap causará problemas en ciertos módulos o escenarios?
  • ¿Importa la posibilidad de que abap_bool contenga un valor de carácter desconocido o cualquier valor de carácter?

Actualización para la versión 7.40, SP08 :

Con la versión 7.40, SP08, obtienes las llamadas de método predictivo y puedes codificar algo como:

IF cl_abap_demo_services=>is_production_system( ). "There is no ''= abap_true'' needed! cl_demo_output=>display( ''This demo cannot be executed in a production system'' ). LEAVE PROGRAM. ENDIF.

Su método (en el ejemplo is_production_system ) debe devolver un ABAP_BOOL-value (abap_true (''X'') o abap_false (''''))

La ayuda en línea tiene un ejemplo.


De acuerdo con la regla 6.11 de las Pautas de programación oficiales de ABAP , debe usar abap_bool.

Regla 6.11: usar el tipo de datos abap_bool para los valores de verdad

Para manejar explícitamente los valores de verdad, use el tipo abap_bool como una solución para un tipo de datos booleano real. Un objeto de datos que se declara de esta manera no debe contener otros valores que no sean las constantes correspondientes, abap_true y abap_false (como abap_undefined).


Lamentablemente, esta es la perdición de ABAP ... no tiene un tipo booleano fundamental ... solo expresiones booleanas. ¡Así que lo maravilloso de ABAP es que hay tantos tipos booleanos para elegir!

Después de muchos años, creo que la mejor manera es simplemente rodar la tuya (por desgracia). Si realiza un desarrollo basado en clases, siempre agregue constantes true y false (y undefined si lo desea) en su clase base, y defina sus propios tipos boolean y / o boolean_undefined.


Yo uso el tipo de grupo ABAP y sus constantes en la codificación. Siempre debería estar disponible, aunque es posible que tenga que incluirlo manualmente en sistemas más antiguos. Para los elementos del diccionario, prefiero crear mis propios elementos de datos utilizando cualquiera de los dominios predeterminados para poder agregar descripciones que se adapten a mis necesidades. Puedes usar WDY_BOOLEAN también.