Macros para mensajes de batch-input y BAPI

Introducción

La gestión de mensajes en Batch-Input y BAPI es bastante horrorosa, teniendo en cuenta además que utilizan dos estructuras muy similares pero con nombres de campos muy parecidos, lo que suele llevar a confusiones frustrantes cuando intentamos analizar el resultado.

Estas macros permiten gestionar los mensajes de ambos tipo de llamadas unificando criterios y simplificando al máximo el código a utilizar.

Las macros

  • vc_messtab2bapiret messtab bapiret2: mueve una estructura bdcmsgcoll a bapiret2.
  • vc_bapiret2messtab bapiret2 messtab: mueve una estructura bapiret2 a bdcmsgcoll.
  • vc_messtab2mensaje messtab cadenadetexto: construye un mensaje como texto a partir de una estructura bdcmsgcoll.
  • vc_bapiret2mensaje bapiret2 cadenadetexto: construye un mensaje como texto a partir de una estructura bapiret2.

El código

* _     _    ___                 _
*| |__ (_)  / / |__   __ _ _ __ (_)   _ __ ___   ___ ___ ___  __ _  __ _  ___ ___
*| '_ \| | / /| '_ \ / _` | '_ \| |  | '_ ` _ \ / _ \ __| __|/ _` |/ _` |/ _ \ __|
*| |_) | |/ / | |_) | (_| | |_) | |  | | | | | |  __/__ \__ \ (_| | (_| |  __/__ \
*|_.__/|_|_/  |_.__/ \__,_| .__/|_|  |_| |_| |_|\___|___/___/\__,_|\__, |\___|___/
*                         |_|                                      |___/
* as seen in http://glob.cranf.net
* ASCII art made using http://ascii.cranf.net
*
***********************************************************************
DEFINE vc_messtab2bapiret."convierte estructura messtab de BI a bapiret2
  "vc_messtab2bapiret messtab bapiret2.
  "lo hace de línea en línea, no usando tablas
  perform vc_messtab2bapiret using &1 changing &2.
END-OF-DEFINITION.
*
FORM vc_messtab2bapiret USING pbi TYPE bdcmsgcoll
                      CHANGING pbapi TYPE bapiret2.
  pbapi-type = pbi-msgtyp.
  pbapi-id = pbi-msgid.
  pbapi-number = pbi-msgnr.
  pbapi-message_v1 = pbi-msgv1.
  pbapi-message_v2 = pbi-msgv2.
  pbapi-message_v3 = pbi-msgv3.
  pbapi-message_v4 = pbi-msgv4.
ENDFORM.                    "vc_messtab2bapiret
***********************************************************************
DEFINE vc_bapiret2messtab. "convierte estructura bapiret2 a messtab de BI
  "vc_bapiret2messtab bapiret2 messtab.
  "lo hace de línea en línea, no usando tablas
  perform vc_bapiret2messtab using &1 changing &2.
END-OF-DEFINITION.
*
FORM vc_bapiret2messtab USING pbapi TYPE bapiret2
                     CHANGING pbi TYPE bdcmsgcoll.
  pbi-msgtyp = pbapi-type.
  pbi-msgid = pbapi-id.
  pbi-msgnr = pbapi-number.
  pbi-msgv1 = pbapi-message_v1.
  pbi-msgv2 = pbapi-message_v2.
  pbi-msgv3 = pbapi-message_v3.
  pbi-msgv4 = pbapi-message_v4.
ENDFORM.                    "vc_bapiret2messtab
***********************************************************************
DEFINE vc_messtab2mensaje. "convierte estructura messtab en mensaje verbal
  "vc_messtab2mensaje messtab cadenadetexto
  perform vc_messtab2mensaje using &1 changing &2.
END-OF-DEFINITION.
*
FORM vc_messtab2mensaje USING pbi TYPE bdcmsgcoll
                     CHANGING pmensaje.

  DATA lmsgid LIKE sy-msgid.
  DATA lmsgnr LIKE sy-msgno.
  DATA lmensaje LIKE sy-lisel.
  DATA lmsgv1 TYPE symsgv.
  DATA lmsgv2 TYPE symsgv.
  DATA lmsgv3 TYPE symsgv.
  DATA lmsgv4 TYPE symsgv.

  lmsgid = pbi-msgid.
  lmsgnr = pbi-msgnr.
  lmsgv1 = pbi-msgv1.
  lmsgv2 = pbi-msgv2.
  lmsgv3 = pbi-msgv3.
  lmsgv4 = pbi-msgv4.

  CALL FUNCTION 'RPY_MESSAGE_COMPOSE'
    EXPORTING
      language          = sy-langu
      message_id        = lmsgid
      message_number    = lmsgnr
      message_var1      = lmsgv1
      message_var2      = lmsgv2
      message_var3      = lmsgv3
      message_var4      = lmsgv4
    IMPORTING
      message_text      = lmensaje
    EXCEPTIONS
      message_not_found = 1
      OTHERS            = 2.
  IF sy-subrc <> 0.
    CLEAR lmensaje.
  ENDIF.
  pmensaje = lmensaje.
ENDFORM.                    "vc_messtab2mensaje
***********************************************************************
DEFINE vc_bapiret2mensaje."convierte estructura bapiret2 en mensaje verbal
  perform vc_bapiret2mensaje using &1 changing &2.
END-OF-DEFINITION.
*
FORM vc_bapiret2mensaje USING pbapi TYPE bapiret2
                     CHANGING pmensaje.
  DATA lbi TYPE bdcmsgcoll.
  vc_bapiret2messtab pbapi lbi.
  vc_messtab2mensaje lbi pmensaje.
ENDFORM.                    "vc_bapiret2mensaje
***********************************************************************

Shameless self-promotion

Tengo unas estupendas macros para hacer Batch-Input en mi compactador de código BI. Échales un vistazo.

Publicado en: SAP Sin comentarios ▼

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

[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.