domingo, 30 de septiembre de 2012

Crear un List box en pantalla


Para crear un list box en selection screen:

PARAMETERS: p_day TYPE char4 AS LISTBOX VISIBLE LENGTH 6 OBLIGATORY.

TYPE-POOLS: vrm.
DATA: l_sid TYPE  vrm_id,
      l_i_val TYPE vrm_values,
      l_val LIKE LINE OF l_i_val.

INITIALIZATION.
  l_sid = 'p_day'.
  l_val-key = '0'.
  l_val-text = 'SUN'.
  APPEND l_val TO l_i_val.

  l_val-key = '1'.
  l_val-text = 'MON'.
  APPEND l_val TO l_i_val.

  l_val-key = '2'.
  l_val-text = 'TUE'.
  APPEND l_val TO l_i_val.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = l_sid
      values          = l_i_val
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.
  IF sy-subrc = 0.

  ENDIF.


-----------------------------------------------------------------
Para crear un list box en una dynpro:

THE TOP INCLUDE:


TYPES: begin of stru_t161t,
               BSTYP type t161t-BSTYP,
               BSART type t161t-BSART,
               BATXT type BATXT,
            end of stru_t161t.

types : BEGIN OF STRU_TEXT,                "STRUCTURE FOR FUNCTION MODULE
             KEY(40) TYPE C,                       " FOR DROPDOWN BOX
             TEXT(80) TYPE C,
          END OF STRU_TEXT.

data : it_t161t type TABLE OF stru_t161t,
         wa_t161t type stru_t161t,
        it_text type  TABLE OF STRU_TEXT,
        wa_text type STRU_TEXT.

IN THE PBO:
MODULE STATUS_1000 OUTPUT.
SELECT
   BSTYP
   BSART
   BATXT
  into table it_t161t
  from t161t
  where bstyp = 'B'
    and SPRAS = 'E'.

clear wa_text.
refresh it_text.

  loop at it_t161t into wa_t161t.
     move wa_t161t-bsart to wa_text-key.
     move wa_t161t-batxt to wa_text-text.
    append wa_text to it_text.
  endloop.


  CALL FUNCTION 'VRM_SET_VALUES'
  EXPORTING
    ID                    = 'V_DRPDWN'  "'V_DRPDWN' is the screen name of the dropdown field
    VALUES                = it_text
EXCEPTIONS
  ID_ILLEGAL_NAME       = 1
  OTHERS                = 2
          .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE.                 " STATUS_1000  OUTPUT