2009 Aug 14 8:53 AM
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.
2009 Aug 14 8:54 AM
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
2009 Aug 14 9:11 AM
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.
2009 Aug 14 9:26 AM
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
2009 Aug 14 9:37 AM
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.
2009 Aug 14 10:03 AM
Hi,
While using your perform operation you should define structure type of your parameter.
2009 Oct 03 10:04 AM
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
2009 Oct 05 7:30 AM
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