Crear Matchcodes (ayudas) con una tabla interna.

28 11 2007

El próximo ejemplo sirve para crear ayudas (matchcodes) con una tabla interna de nuestro programa.
Así de simple, hacemos una búsqueda a alguna tabla y el resultado lo guardamos en una tabla interna que se la pasamos a la función F4IF_INT_TABLE_VALUE_REQUEST que nos va a mostrar la ayuda.

Quiero agradecer esta forma de crear ayudas a mi compañero y amigo Rodrigo (http://ramgv-sap.blogspot.com).


*En este ejemplo creo un select-option para un material. Cuya ayuda será *el nº de material para VBELN =  ‘0000000001’ y POSNR = ‘000010’.

TABLES: VBAP,
             DDSHRETVAL.

DATA: BEGIN OF IT_MATNR OCCURS 0,
               MATNR LIKE VBAP-MATNR,
               ARKTX LIKE VBAP-ARKTX,
           END OF IT_MATNR.

DATA: BEGIN OF IT_MATCH OCCURS 0,  “Esta tabla nos devuelve la ayuda
               SHLPNAME  LIKE DDSHRETVAL-SHLPNAME,
               FIELDNAME LIKE DDSHRETVAL-FIELDNAME,
               RECORDPOS LIKE DDSHRETVAL-RECORDPOS,
               FIELDVAL  LIKE DDSHRETVAL-FIELDVAL,
               RETFIELD  LIKE DDSHRETVAL-RETFIELD,
           END OF IT_MATCH.

SELECTION-SCREEN BEGIN OF BLOCK BLQ1 WITH FRAME TITLE TEXT-T01.
  SELECT-OPTIONS: S_MATNR FOR VBAP-MATNR NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN END OF BLOCK BLQ1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_MATNR-LOW.
  SELECT MATNR
              ARKTX
      FROM VBAP
        INTO TABLE IT_MATNR
        WHERE VBELN EQ ‘0000000001’ AND
                    POSNR EQ ‘000010’.

  CALL FUNCTION ‘F4IF_INT_TABLE_VALUE_REQUEST’
    EXPORTING
      RETFIELD        = ‘MATNR’
      WINDOW_TITLE    = ‘Material’
      VALUE_ORG       = ‘S’
    TABLES
      VALUE_TAB       = IT_MATNR
      RETURN_TAB      = IT_MATCH
    EXCEPTIONS
      PARAMETER_ERROR = 1
      NO_VALUES_FOUND = 2
      OTHERS          = 3.

  IF SY-SUBRC EQ 0.
    READ TABLE IT_MATCH INDEX 1.
    MOVE IT_MATCH-FIELDVAL TO S_MATNR-LOW.
  ENDIF.


Technorati tags:

Anuncios




Ayudas (matchcodes) para entradas en base al tipo de datos

27 11 2007

Generalmente cuando queremos agregar ayudas (matchcodes) vamos a la transacción SE11 y nos fijamos qué “Ayuda para búsqueda” tiene asociado el campo.

Pero muchas veces el matchcode es del tipo “Ayudas para entradas en base al tipo de datos”. En esos casos la ayuda se genera con una función.
Por tal motivo la solución es buscar alguna transacción que tenga el matchcode del campo que necesitamos y debuggueamos al momento de abrir la ayuda para encontrar la función.

A continuación voy a dejar un ejemplo para los campos LAUFD (Fecha de Ejecución) y LAUFI (ID Ejecución). Son parámetros muy comunes (Ej: transacción F110).


DATA: TLAUFK LIKE ILAUFK OCCURS 0 WITH HEADER LINE.

PARAMETERS:
            P_LAUFD LIKE F110V-LAUFD OBLIGATORY,   “Fecha de Ejecución
            P_LAUFI LIKE F110V-LAUFI OBLIGATORY.     “ID Ejecución

**Habilito con la tecla F4 el matchcode para el campo LAUFI
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LAUFI.
  REFRESH TLAUFK.
  TLAUFK-LAUFK = SPACE.
  TLAUFK-SIGN = ‘I’.
  APPEND TLAUFK. 

  CALL FUNCTION ‘F4_ZAHLLAUF’
    EXPORTING
      F1TYP = ‘D’
      F2NME = ‘P_LAUFI’
    IMPORTING
      LAUFD = P_LAUFD
      LAUFI = P_LAUFI
    TABLES
      LAUFK = TLAUFK.

 

**Habilito con la tecla F4 el matchcode para el campo LAUFD
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LAUFD.
  REFRESH TLAUFK.
  TLAUFK-LAUFK = SPACE.
  TLAUFK-SIGN = ‘I’.
  APPEND TLAUFK. 

CALL FUNCTION ‘F4_ZAHLLAUF’
    EXPORTING
      F1TYP = ‘D’
      F2NME = ‘P_LAUFI’
    IMPORTING
      LAUFD = P_LAUFD
      LAUFI = P_LAUFI
    TABLES
      LAUFK = TLAUFK.


Technorati tags: