Skip to content

ABAP Keyword Documentation →  ABAP − Reference →  SAP GUI User Dialogs →  General Dynpros →  Field Help, Input Help, and Dropdown List Boxes →  Field Helps, Input Helps, and Dropdown List Boxes - Examples 

Dynpros, List Box with Value List from PBO Module

This example demonstrates a non-recommended way to enable a dropdown list box.

Other versions: 7.31 | 7.40 | 7.54

Source Code

REPORT demo_dynpro_dropdown_listbox.

DATA: name  TYPE vrm_id,
      list  TYPE vrm_values,
      value LIKE LINE OF list.

DATA: wa_spfli TYPE spfli,
      ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.

TABLES demof4help.

name = 'DEMOF4HELP-CONNID'.

CALL SCREEN 100.

MODULE cancel INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE init_listbox OUTPUT.

  CLEAR: demof4help-connid,
         list.

  SELECT  connid, cityfrom, cityto, deptime
          FROM spfli
          WHERE carrid = @demof4help-carrier2
          INTO CORRESPONDING FIELDS OF @wa_spfli.

    value-key  = wa_spfli-connid.

    WRITE wa_spfli-deptime TO value-text USING EDIT MASK '__:__:__'.

    value-text =
      |{ value-text } { wa_spfli-cityfrom } { wa_spfli-cityto }|.
    APPEND value TO list.

  ENDSELECT.

  IF sy-subrc <> 0.
    MESSAGE 'No connections for that airline' TYPE 'I' DISPLAY LIKE 'E'.
    LEAVE TO SCREEN 100.
  ENDIF.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = name
      values = list.

ENDMODULE.

MODULE user_command_100.
  save_ok = ok_code.
  CLEAR ok_code.
  IF save_ok = 'CARRIER' AND NOT demof4help-carrier2 IS INITIAL.
    LEAVE TO SCREEN 200.
  ELSE.
    SET SCREEN 100.
  ENDIF.
ENDMODULE.

MODULE user_command_200.
  save_ok = ok_code.
  CLEAR ok_code.
  IF save_ok = 'SELECTED'.
    MESSAGE i888(sabapdemos) WITH text-001 demof4help-carrier2
                                         demof4help-connid.
    CLEAR demof4help.
  ENDIF.
ENDMODULE.

Description

The static next dynpro number of dynpro 100 is 200. The input field is assigned the component CARRIER2 of the structure DEMOF4HELP from ABAP Dictionary. Its dropdown attribute is L, the output length is 15, the value list attribute is empty, and it is assigned the function code CARRIER. The function code of the pushbutton is CANCEL with the function type E. The screen flow logic is as follows:

PROCESS BEFORE OUTPUT.
PROCESS AFTER INPUT.
  MODULE cancel AT EXIT-COMMAND.
  MODULE user_command_100.

The static next dynpro number of dynpro 200 is 100. The input field is assigned the component CONNID of the structure DEMOF4HELP from ABAP Dictionary. Its dropdown attribute is L, the output length is 30, the value list attribute is A, and it is assigned the SELECTED function code. The function code of the pushbutton is CANCEL with the function type E. The screen flow logic is as follows:

PROCESS BEFORE OUTPUT.
  MODULE init_listbox.
PROCESS AFTER INPUT.
  MODULE cancel AT EXIT-COMMAND.
  MODULE user_command_200.

The user is not allowed to enter values in the screen fields. When selecting the input field on dynpro 100, the user sees a value list in the list box derived from the input help of the DEMOF4HELP-CARRIER2 field. In this case, this is the search help H_SCARR assigned to the SCARR check table in ABAP Dictionary. The value list contains the names of the airlines. When the user selects an entry, the dynpro field is filled with the ID of the airline, and the event PAI is triggered. The module user_command_100 checks the OK field and calls dynpro 200.

At the PBO event of dynpro 200, the system fills an internal table called list with values from database table SPFLI. The key component is filled with the flight numbers, and other relevant information is placed in the text field. The list table is passed to the VRM_SET_VALUES function module. When the user chooses the input field on dynpro 200, the text column of the internal table is displayed in the list box. When the user selects an entry, the dynpro field is filled with the associated entry from the key column, and the event PAI is triggered. The module user_command_200 checks and processes the OK field.