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

at selection screen on value request with select option

SwarnaliBasu
Participant
0 Likes
10,270

HI

i was using AT SELECTION SCREEN ON VALUR REQUEST FOR 'PARAMETER', But now i want AT SELECTION-SCREEN ON VALUR-REQUEST FOR 'SELECT OPTION', on doing that they are asking me to specify select-option-low or hig , but when i m mentioning the same its functionality is not working properly as it was with parameter.

i am mentioning the code below, see if someone ca help

 PARAMETERS: p_grpid LIKE apqi-groupid.AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_grpid." and p_grpid-high.

  PERFORM f_choose_bdc USING 'GROUPID'
                              'p_grpid'
                     CHANGING p_grpid.

  CHECK NOT p_grpid IS INITIAL.

  SELECT qid INTO p_qid FROM apqi UP TO 2 ROWS
                       WHERE datatyp = c_bdc
                         AND  mandant = sy-mandt
                         AND groupid = p_grpid.
*                         AND qstate = 'E'.
*                         and CREDATE = s_date
*                         AND cretime = s_time.
  ENDSELECT.

  CHECK sy-dbcnt = 2.

  PERFORM f_choose_bdc USING 'QID' ''
                     CHANGING p_qid. 

HI

i was using AT SELECTION SCREEN ON VALUR REQUEST FOR 'PARAMETER', But now i want AT SELECTION-SCREEN ON VALUR-REQUEST FOR 'SELECT OPTION', on doing that they are asking me to specify select-option-low or hig , but when i m mentioning the same its functionality is not working properly as it was with parameter.

i am mentioning the code below, see if someone ca help

 PARAMETERS: p_grpid LIKE apqi-groupid.AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_grpid." and p_grpid-high.

  PERFORM f_choose_bdc USING 'GROUPID'
                              'p_grpid'
                     CHANGING p_grpid.

  CHECK NOT p_grpid IS INITIAL.

  SELECT qid INTO p_qid FROM apqi UP TO 2 ROWS
                       WHERE datatyp = c_bdc
                         AND  mandant = sy-mandt
                         AND groupid = p_grpid.
*                         AND qstate = 'E'.
*                         and CREDATE = s_date
*                         AND cretime = s_time.
  ENDSELECT.

  CHECK sy-dbcnt = 2.

  PERFORM f_choose_bdc USING 'QID' ''
                     CHANGING p_qid. 

7 REPLIES 7
Read only

SwarnaliBasu
Participant
0 Likes
3,941

FORM f_choose_bdc USING u_value1 TYPE fieldname
                         u_value2 TYPE dynfnam
                CHANGING u_val. 

  TYPES:
    BEGIN OF ty_s_values,
      qid      TYPE apq_quid,
      groupid  TYPE apq_grpn,
      creator  TYPE apq_mapn,
      credate  TYPE apq_crda,
      cretime  TYPE apq_crti,
      transcnt TYPE apq_tran,
      msgcnt   TYPE apq_reco,
    END OF ty_s_values.

  DATA:
    lt_values  TYPE TABLE OF ty_s_values,
    lt_return  TYPE  TABLE OF ddshretval,
    wg_return  LIKE ddshretval,
    l_progname TYPE sy-repid,
    l_dynnum   TYPE sy-dynnr.

  l_progname = sy-repid.
  l_dynnum   = sy-dynnr.

  IF u_value1 = 'GROUPID'.
    SELECT groupid qid userid credate cretime transcnt msgcnt
      FROM apqi
      INTO CORRESPONDING FIELDS OF TABLE lt_values
     WHERE datatyp = c_bdc
       AND mandant = sy-mandt
             AND qstate = 'E'
       AND credate IN s_date
      AND cretime IN s_time.
  ELSE.
    SELECT groupid qid userid credate cretime transcnt msgcnt
      FROM apqi
      INTO CORRESPONDING FIELDS OF TABLE lt_values
     WHERE datatyp = c_bdc
       AND mandant = sy-mandt
       AND groupid = p_grpid
       AND qstate = 'E'
      AND credate IN s_date
      AND cretime IN s_time.
  ENDIF.

* F4 help
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = u_value1
      dynpprog        = l_progname
      dynpnr          = l_dynnum
      dynprofield     = u_value2
      value_org       = 'S'
    TABLES
      value_tab       = lt_values
      return_tab      = lt_return
    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.

  CHECK NOT lt_return[] IS INITIAL.
  READ TABLE lt_return INTO wg_return INDEX 1.
  u_val = wg_return-fieldval.

ENDFORM.                               " F_CHOOSE_BDC 
Read only

Former Member
0 Likes
3,941

Hello Swarnali,

That's right! if you are using select option then you have specify either low or high as select option is also kind of internal table

having columns like sign option low high. So in this case you have to write two events of AT SELECTION-SCREEN ON VALUE REQUEST for <select-option>-LOW and <select-option>-HIGH.

Previously with parameter you are using only parameter name which is again acting as single column internal table.

You can also use select option as single value using NO INTERVAL addition while defining select-option.

Check if this can help!

Thanks,

Augustin.

Read only

Former Member
0 Likes
3,941

Hi Swarnali,

Try this.

PARAMETERS: p_grpid LIKE apqi-groupid.

select-options : s_grpid for apqi-groupid.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_grpid-low.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'GROUPID'

dynprofield = s_grpid-low'

dynpprog = sy-cprog

dynpnr = sy-dynnr

value_org = 'S'

TABLES

value_tab = gt_mview_f4.

similarly you can code for s_grpid-high.

Hope this will help.

Regards,

Vijay

Read only

Former Member
0 Likes
3,941

Hi,

Please check this code for F4 help using select options


TABLES: VBAK.
 
DATA: BEGIN OF T_VBELN OCCURS 0,
      VBELN TYPE VBAK-VBELN,
      END OF T_VBELN.
 
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-T01.
  SELECT-OPTIONS: S_SCREEN FOR VBAK-VBELN.
SELECTION-SCREEN END OF BLOCK B1.
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_screen-low.
SELECT VBELN FROM VBAK INTO TABLE T_VBELN.
IF SY-SUBRC = 0.
 
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield               = 'VBELN'
     DYNPPROG               = 'ZTRIAL'
     DYNPNR                 = SY-DYNNR
     DYNPROFIELD            = 'S_SCREEN'
     VALUE_ORG              = 'S'  
    tables
      value_tab              = T_VBELN
   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.
ENDIF.

 

Read only

Former Member
0 Likes
3,941

Hi,

While using your perform operation you should define structure type of your parameter.

Read only

Former Member
0 Likes
3,941

Nice, coding came in handy. I remembered ON VALUE-REQUEST and needed to use it. By the code snippets in this thread work was done quickly. As I did not find out how to ~eward a ~oint for this, just this reply.

Thanks

Matthias

Read only

0 Likes
3,941

Thanks for your revealed intention of _warding _points. actually none of the codes given as answer was really helpful so i had to solve it on my own...

Regards

Swarnali