Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

selection screen, listbox

Former Member
0 Likes
372

Hello,

I used the following code to populate date for a listbox on a selection screen. The first FORM module gets distinct bom level of a bom input. The second FORM module sets values to the listbox. After I input a bom number, press 'Enter', and choose a bom level, the ALV displays and everything goes well so far. When I go back, all values in the listbox disappeared except the number I choose. That is to say, previously, there are 5 values, after an execution of the program, I go back, and there are only one number in the list. But I wanna the original list to be displayed.

My second question is how to trigger the code of populating listbox other than by pressing Enter. If the user input a new bom number, I wanna the listbox populated automatically without pressing Enter.

Best regards,

-------------------------------------------------------------------

AT SELECTION-SCREEN OUTPUT.

   IF rd_bom = 'X'.
     ASSIGN s_matnum-low TO <matnum>.

     PERFORM EXPLODE_BOM   USING <matnum>.
     PERFORM GET_BOM_LEVEL USING 'lb_lev'.
   ENDIF.

-------------------------------------------------------------------

FORM EXPLODE_BOM USING MATNUM TYPE MATNR.
   DATA: id_name TYPE VRM_ID VALUE 'lb_lev',
         lt_values TYPE VRM_VALUES,
         ls_values LIKE LINE OF lt_values.

   CLEAR: gt_bom[], gt_bom_lvl[].

     CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
       EXPORTING
         STLAL     = '01'        " Alternative BOM
         CAPID     = 'PP01'      " Application ID
         DATUV     = SY-DATUM    " Validity date
         MTNRV     = MATNUM      " Material
         WERKS     = p_plant     " Plant
         STLAN     = '1'
         MEHRS     = 'X'         " Multi-level explosion
       TABLES
         STB       = gt_bom
       EXCEPTIONS
         ALT_NOT_FOUND         1
         CALL_INVALID          2
         MATERIAL_NOT_FOUND    3
         MISSING_AUTHORIZATION 4
         NO_BOM_FOUND          5
         NO_PLANT_DATA         6
         NO_SUITABLE_BOM_FOUND 7.

   IF NOT MATNUM IS INITIAL.
       gs_bom-stufe = 0.
       gs_bom-idnrk = MATNUM.
       INSERT gs_bom INTO gt_bom INDEX 1.
       CLEAR gs_bom.

       APPEND LINES OF gt_bom TO gt_bom_lvl.
   ENDIF.

ENDFORM.

-------------------------------------------------------------------
FORM GET_BOM_LEVEL USING IDNAME TYPE VRM_ID.
   DATA: lt_values  TYPE VRM_VALUES,
         ls_values  TYPE VRM_VALUE,
         lv_lb_lns  TYPE I,
         lv_bt_lns  TYPE I.

   CLEAR: lt_values[], lv_lb_lns, lv_bt_lns.

   SORT gt_bom_lvl ASCENDING BY STUFE.
   DELETE ADJACENT DUPLICATES FROM gt_bom_lvl COMPARING STUFE.

   LOOP AT gt_bom_lvl INTO gs_bom_lvl.
     ls_values-text = ls_values-key = gs_bom_lvl-stufe.
     APPEND ls_values TO lt_values.

     CLEAR: gs_bom_lvl,
            ls_values.
   ENDLOOP.

   DESCRIBE TABLE gt_bom_lvl LINES lv_bt_lns.
   DESCRIBE TABLE lt_values  LINES lv_lb_lns.

   IF lv_bt_lns > 1 AND lv_lb_lns > 1.
     CALL FUNCTION 'VRM_SET_VALUES'
       EXPORTING
         ID     = IDNAME
         VALUES = lt_values
       EXCEPTIONS
         ID_ILLEGAL_NAME = 1
         OTHERS          = 2
         .
   ENDIF.
ENDFORM.

1 REPLY 1
Read only

Former Member
0 Likes
300

Hi ts,

           It is not the case, Check are you clearing any data while displaying alv or which pressing back from alv.

Regards,

Vikram