Archivos Mensuales: enero 2010

Simular interacción del usuario desde código

Introducción

En ocasiones es necesario simular que el usuario ha efectuado un comando. El caso más típico: cuando necesitamos que se redibuje una dynpro tras haber rellenado varios campos tras un F4 custom, ya que en condiciones normales sólo se actualizará a la vista el campo sobre el que efectuamos el F4. Y en este caso bastará que simulemos un enter para que la pantalla se redibuje.

Para el caso concreto de redibujar una dynpro existen funciones más o menos complicadas/sofisticadas como DYNP_VALUES_UPDATE, pero son un rollo. Para simular un enter (o cualquier otro código de función) bastará con ejecutar la siguiente función.

El código

  CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
   EXPORTING
     FUNCTIONCODE                 = '/00' "enter: cambiar por el que sea necesario
   EXCEPTIONS
     FUNCTION_NOT_SUPPORTED       = 1
     OTHERS                       = 2
            .
Publicado en: SAP Sin comentarios ▼

Saltos de línea sin y con UNICODE

Sin UNICODE

En versiones NO unicode de SAP la manera de trabajar con saltos de línea para ficheros de texto es muy sencilla:

  DATA: CRLF(2) TYPE X VALUE '0D0A'.
  DATA: CADENA TYPE STRING.

  CONCATENATE
  'SALTO' CRLF
  'DE LINEA' INTO CADENA.

Con UNICODE

Pero en versiones más modernas, ya unicode, esto no nos sirve de nada. Para ello, SAP ha creado una clase, CL_ABAP_CHAR_UTILITIES que nos permite definir los mismos caracteres de manera menos transparente pero sí más despreocupada:

  DATA lcrlf(2).
  lcrlf = cl_abap_char_utilities=>cr_lf.

Otros códigos, como el tabulador, también se consiguen tirando de la misma clase.

  DATA ltab.
  ltab = cl_abap_char_utilities=>horizontal_tab.

Es importante señalar que la combinación de códigos CR+LF es la adecuada para definir saltos de línea en sistemas windows y protocolos como SMTP. En UNIX nos bastará con LF.

Publicado en: SAP Sin comentarios ▼
[c] Alberto Viñuela Miranda / Cranfcom 2013-2014

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.