10-23-2007 9:57 AM
i have one field (list box) 'division' on the screen 'vbap-zzdivision' in which i want to populate values from the database table, how to do that? can anybody give me syntax of the query to be written in PBO?
thanx
10-23-2007 10:01 AM
Hi,
Please refer standard program "rsdemo_dropdown_listbox".
REPORT rsdemo_dropdown_listbox .
DATA init.
TABLES scarr.
TABLES spfli.
TABLES sflight.
TABLES sbook.
DATA save_ok LIKE sy-ucomm.
DATA ok_code LIKE sy-ucomm.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
IF init is initial.
SET PF-STATUS 'GRUND'.
SET TITLEBAR '100'.
* preset of listboxes
spfli-carrid = 'LH'.
sflight-carrid = 'LH'.
sbook-carrid = 'LH'.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module SET_DATA_CARRID INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE set_data_carrid INPUT.
TYPES: BEGIN OF type_carrid,
carrid LIKE spfli-carrid,
carrname LIKE scarr-carrname,
END OF type_carrid.
DATA itab_carrid TYPE STANDARD TABLE OF type_carrid WITH HEADER LINE.
SELECT carrid carrname
FROM scarr
INTO CORRESPONDING FIELDS OF TABLE itab_carrid.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CARRID'
value_org = 'S'
TABLES
value_tab = itab_carrid
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
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. " SET_DATA_CARRID INPUT
*&---------------------------------------------------------------------*
*& Module FILL_CARRID OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE fill_carrid OUTPUT.
* Do not use this process (but it works)
TYPE-POOLS vrm.
DATA values TYPE vrm_values WITH HEADER LINE.
IF init is initial.
SELECT * FROM scarr.
values-text = scarr-carrname.
values-key = scarr-carrid.
APPEND values.
ENDSELECT.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'SBOOK-CARRID'
values = values[]
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.
ENDIF.
scarr-carrid = 'LH'.
init = 'X'.
ENDMODULE. " FILL_CARRID OUTPUT
*&---------------------------------------------------------------------*
*& Module EVENT_FROM_LISTBOX INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE event_from_listbox INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'LISTBOX_2'.
MESSAGE i300(eu) WITH save_ok.
WHEN 'LISTBOX_3'.
MESSAGE i300(eu) WITH save_ok.
ENDCASE.
ENDMODULE. " EVENT_FROM_LISTBOX INPUT
*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit INPUT.
LEAVE PROGRAM.
ENDMODULE. " EXIT INPUT
10-23-2007 10:01 AM
Hi,
Please refer standard program "rsdemo_dropdown_listbox".
REPORT rsdemo_dropdown_listbox .
DATA init.
TABLES scarr.
TABLES spfli.
TABLES sflight.
TABLES sbook.
DATA save_ok LIKE sy-ucomm.
DATA ok_code LIKE sy-ucomm.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
IF init is initial.
SET PF-STATUS 'GRUND'.
SET TITLEBAR '100'.
* preset of listboxes
spfli-carrid = 'LH'.
sflight-carrid = 'LH'.
sbook-carrid = 'LH'.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module SET_DATA_CARRID INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE set_data_carrid INPUT.
TYPES: BEGIN OF type_carrid,
carrid LIKE spfli-carrid,
carrname LIKE scarr-carrname,
END OF type_carrid.
DATA itab_carrid TYPE STANDARD TABLE OF type_carrid WITH HEADER LINE.
SELECT carrid carrname
FROM scarr
INTO CORRESPONDING FIELDS OF TABLE itab_carrid.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CARRID'
value_org = 'S'
TABLES
value_tab = itab_carrid
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
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. " SET_DATA_CARRID INPUT
*&---------------------------------------------------------------------*
*& Module FILL_CARRID OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE fill_carrid OUTPUT.
* Do not use this process (but it works)
TYPE-POOLS vrm.
DATA values TYPE vrm_values WITH HEADER LINE.
IF init is initial.
SELECT * FROM scarr.
values-text = scarr-carrname.
values-key = scarr-carrid.
APPEND values.
ENDSELECT.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'SBOOK-CARRID'
values = values[]
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.
ENDIF.
scarr-carrid = 'LH'.
init = 'X'.
ENDMODULE. " FILL_CARRID OUTPUT
*&---------------------------------------------------------------------*
*& Module EVENT_FROM_LISTBOX INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE event_from_listbox INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'LISTBOX_2'.
MESSAGE i300(eu) WITH save_ok.
WHEN 'LISTBOX_3'.
MESSAGE i300(eu) WITH save_ok.
ENDCASE.
ENDMODULE. " EVENT_FROM_LISTBOX INPUT
*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit INPUT.
LEAVE PROGRAM.
ENDMODULE. " EXIT INPUT
10-23-2007 10:01 AM
Check this standard program for reference -
DEMO_DYNPRO_DROPDOWN_LISTBOX
Regards,
Amit
Reward all helpful replies.
10-23-2007 10:02 AM
Hi..
To fill the Values into Listbox in PBO module use this Logic.
REFRESH list.
LOOP AT r_werks.
name = 'PLANT'.
value-key = r_werks-low.
value-text = r_werks-low.
APPEND value TO list.
ENDLOOP.
<b> CALL FUNCTION 'VRM_SET_VALUES'
</b> EXPORTING
id = name
values = list.
CLEAR plant.
REWARD IF HELPFUL.
10-23-2007 10:05 AM
Hi,
Try like this.
In flow Logic.
PROCESS ON VALUE-REQUEST.
FIELD ifmtp-form_type MODULE fm_drop.
MODULE fm_drop INPUT.
CLEAR ifmtp.
REFRESH ifmtp.
ifmtp-form_type = 'C'.
APPEND ifmtp.
ifmtp-form_type = 'F'.
APPEND ifmtp.
ifmtp-form_type = 'H'.
APPEND ifmtp.
(If u have data from Dictionary that u write select statement and append data in ifmtp table).
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'FORM_TYPE'
value_org = 'S'
TABLES
value_tab = ifmtp.
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. " fm_drop INPUT
in TOP Module
Declare like this.
DATA : BEGIN OF ifmtp OCCURS 0,
form_type LIKE zform_track_mast-form_type,
END OF ifmtp.
ifmtp-form_type -
Field name on screen
fm_drop -
Module Name
regards,
Omkar.
10-23-2007 11:31 AM