2007 Nov 21 10:40 AM
Hi Abapers,
I have two select options in a selection screen
Customer no (kunnr) and Material (matnr)
I want material f4 help on the basis of Customer No (Kunnr) selected at selection screen.
please provide the code for the same.
Any suggestion welcome.
Thanks,
hi,
try like this...
here i am finding Kunnr for entered company code (Bukrs)
TYPES : BEGIN OF ty_kna1,
kunnr TYPE kna1-kunnr, "CUstomer Code
name1 TYPE kna1-name1, "Customer Code
END OF ty_kna1.
DATA : dyfields LIKE dynpread OCCURS 1 WITH HEADER LINE ,
i_kna1 TYPE TABLE OF ty_kna1 WITH HEADER LINE.
DATA : wa_value_tab TYPE ty_kna1.
DATA : value_tab LIKE wa_value_tab OCCURS 0 WITH HEADER LINE.
DATA : field_tab LIKE dfies OCCURS 0 WITH HEADER LINE.
DATA : return_tab LIKE ddshretval OCCURS 0 WITH HEADER LINE.
PARAMETERS:bukrs LIKE rbkp-bukrs OBLIGATORY.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : rad_but1 RADIOBUTTON GROUP one DEFAULT 'X' USER-COMMAND ucom.
SELECTION-SCREEN COMMENT 3(26) text-003.
<b>SELECT-OPTIONS : kunnr FOR kna1-kunnr.</b>
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : rad_but2 RADIOBUTTON GROUP one.
SELECTION-SCREEN COMMENT 3(26) text-004.
SELECT-OPTIONS : lifnr FOR lfa1-lifnr.
SELECTION-SCREEN END OF LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR kunnr-low.
CHECK NOT bukrs IS INITIAL .
SELECT kna1kunnr kna1name1
INTO TABLE i_kna1
FROM kna1 INNER JOIN vbrk
ON kna1kunnr = vbrkkunag
WHERE vbrk~bukrs = bukrs. "dyfields-fieldvalue.
SORT i_kna1 BY kunnr.
DELETE ADJACENT DUPLICATES FROM i_kna1.
CLEAR : value_tab,field_tab,return_tab.
REFRESH : value_tab,field_tab,return_tab.
field_tab-fieldname = 'KUNNR'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
field_tab-fieldname = 'NAME1'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
field_tab-fieldname = 'KUNNR'.
LOOP AT i_kna1 .
value_tab-kunnr = i_kna1-kunnr.
APPEND value_tab.
CLEAR value_tab.
value_tab-name1 = i_kna1-name1.
APPEND value_tab.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = field_tab-fieldname
TABLES
value_tab = value_tab
field_tab = field_tab
return_tab = return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
kunnr-low = return_tab-fieldval.
ENDIF.
2007 Nov 21 10:43 AM
tables: t001.
data: begin of it001 occurs 0,
bukrs type t001-bukrs,
butxt type t001-butxt,
ort01 type t001-ort01,
land1 type t001-land1,
end of it001.
select-options s_bukrs for t001-bukrs.
initialization.
select bukrs butxt ort01 land1 into table it001 from t001.
sort it001 ascending by bukrs.
delete adjacent duplicates from it001 comparing bukrs.
at selection-screen on value-request for s_bukrs-low.
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
retfield = 'BUKRS'
dynprofield = 'S_BUKRS'
dynpprog = sy-cprog
dynpnr = sy-dynnr
value_org = 'S'
tables
value_tab = it001.
start-of-selection.
REGARDS'
karthik
2007 Nov 21 10:45 AM
hI
SEE THIS CODE IN WHICH I HAD FILTERD THE DATA BASED ON THE SERACH HELP
BEFORE I WROTE THIS CODE FOR MY SELECTION SCREEN FILED THERE ARE LOT OF ENTRIES OTHER THAN MY CONDITION
THEN AFTER WRITING THIS CODE I HAD FILTERD MY CODE DEPENDING ON THE MY CONDITION
TYPES : BEGIN OF ST_OBJID_SH,
OTYPE TYPE HRP1000-OTYPE,
OBJID TYPE HRP1000-OBJID,
END OF ST_OBJID_SH.
DATA : IT_OBJID_SH TYPE STANDARD TABLE OF ST_OBJID_SH.
DATA : WA_OBJID_SH TYPE ST_OBJID_SH.
***********SELECTION SCREEN DESIGN***********************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
*SELECT-OPTIONS : S_OTYPE FOR HRP1001-OTYPE NO INTERVALS .
SELECT-OPTIONS : S_OBJID FOR HRP1001-OBJID NO INTERVALS .
SELECT-OPTIONS : DATE FOR SY-DATUM NO-EXTENSION OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
**********END OF SELECTION SCREEN DESIGN*****************
*********VALIDATION FOR SCREEN FIELDS********************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_OBJID-LOW.
IF S_OBJID IS NOT INITIAL.
SELECT OTYPE OBJID FROM HRP1000
INTO TABLE IT_OBJID_SH
WHERE OTYPE = 'D'.
IF SY-SUBRC EQ 0.
SEARCH HELP FOR QUALIFICATION.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
DDIC_STRUCTURE = ' '
RETFIELD = 'OBJID'
PVALKEY = ' '
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'S_OBJID'
STEPL = 0
WINDOW_TITLE =
VALUE = ' '
VALUE_ORG = 'S'
MULTIPLE_CHOICE = ' '
DISPLAY = ' '
CALLBACK_PROGRAM = ' '
CALLBACK_FORM = ' '
MARK_TAB =
IMPORTING
USER_RESET =
TABLES
VALUE_TAB = IT_OBJID_SH
FIELD_TAB =
RETURN_TAB = RETURN_TAB
DYNPFLD_MAPPING =
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.
.
Reward if uswefull
2007 Nov 21 10:46 AM
Instead of s_prctr you use your select-option name and other details like ur program name, table name..etc
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_prctr-low.
PERFORM f4_help_carrid.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_prctr-high.
PERFORM f4_help_carrid
form f4_help_for_carrid .
NOTE:
Tabname/fieldname is the name of the table and field
for which F4 should be shown.
*
Dynprog/Dynpnr/Dynprofield are the names of the Progran/Dynpro/Field
in which the f4 value should be returned.
*
Value: The value of the Dynpro field when calling the F4 help.
You can limit the values shown, by inseting a value in this parameter
e.g 'A*' to show only values beginning with A
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = 'SFLIGHT'
fieldname = 'CARRID'
SEARCHHELP = ' '
SHLPPARAM = ' '
dynpprog = 'ZDANY_F4_OWN_CALL'
dynpnr = '0100'
dynprofield = 'SFLIGHT-CARRID'
STEPL = 0
value = 'A*'
MULTIPLE_CHOICE = ' '
DISPLAY = ' '
SUPPRESS_RECORDLIST = ' '
CALLBACK_PROGRAM = ' '
CALLBACK_FORM = ' '
TABLES
RETURN_TAB =
EXCEPTIONS
FIELD_NOT_FOUND = 1
NO_HELP_FOR_FIELD = 2
INCONSISTENT_HELP = 3
NO_VALUES_FOUND = 4
OTHERS = 5
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDform. " F4_help_for_carrid
2007 Nov 21 11:01 AM
Hi
data:
begin of t_values occurs 2,
value like kna1-begru,
end of t_values,
t_return like ddshretval occurs 0 with header line.
t_values = 'PAR*'.
append t_values.
t_values = 'UGG'.
append t_values.
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
retfield = 'BEGRU'
value_org = 'S'
tables
value_tab = t_values
return_tab = t_return
exceptions
parameter_error = 1
no_values_found = 2
others = 3.
if sy-subrc = 0.
read table t_return index 1.
o_begru-low = t_return-fieldval.
if o_begru-low = 'PAR*'.
o_begru-option = 'CP'.
else.
o_begru-option = 'EQ'.
endif.
o_begru-sign = 'I'.
append o_begru to s_begru.
else.
o_begru = i_begru.
endif.
Reward points if useful...
Regards
Sreenivas
2007 Nov 21 11:07 AM
hi,
try like this...
here i am finding Kunnr for entered company code (Bukrs)
TYPES : BEGIN OF ty_kna1,
kunnr TYPE kna1-kunnr, "CUstomer Code
name1 TYPE kna1-name1, "Customer Code
END OF ty_kna1.
DATA : dyfields LIKE dynpread OCCURS 1 WITH HEADER LINE ,
i_kna1 TYPE TABLE OF ty_kna1 WITH HEADER LINE.
DATA : wa_value_tab TYPE ty_kna1.
DATA : value_tab LIKE wa_value_tab OCCURS 0 WITH HEADER LINE.
DATA : field_tab LIKE dfies OCCURS 0 WITH HEADER LINE.
DATA : return_tab LIKE ddshretval OCCURS 0 WITH HEADER LINE.
PARAMETERS:bukrs LIKE rbkp-bukrs OBLIGATORY.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : rad_but1 RADIOBUTTON GROUP one DEFAULT 'X' USER-COMMAND ucom.
SELECTION-SCREEN COMMENT 3(26) text-003.
<b>SELECT-OPTIONS : kunnr FOR kna1-kunnr.</b>
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : rad_but2 RADIOBUTTON GROUP one.
SELECTION-SCREEN COMMENT 3(26) text-004.
SELECT-OPTIONS : lifnr FOR lfa1-lifnr.
SELECTION-SCREEN END OF LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR kunnr-low.
CHECK NOT bukrs IS INITIAL .
SELECT kna1kunnr kna1name1
INTO TABLE i_kna1
FROM kna1 INNER JOIN vbrk
ON kna1kunnr = vbrkkunag
WHERE vbrk~bukrs = bukrs. "dyfields-fieldvalue.
SORT i_kna1 BY kunnr.
DELETE ADJACENT DUPLICATES FROM i_kna1.
CLEAR : value_tab,field_tab,return_tab.
REFRESH : value_tab,field_tab,return_tab.
field_tab-fieldname = 'KUNNR'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
field_tab-fieldname = 'NAME1'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
field_tab-fieldname = 'KUNNR'.
LOOP AT i_kna1 .
value_tab-kunnr = i_kna1-kunnr.
APPEND value_tab.
CLEAR value_tab.
value_tab-name1 = i_kna1-name1.
APPEND value_tab.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = field_tab-fieldname
TABLES
value_tab = value_tab
field_tab = field_tab
return_tab = return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
kunnr-low = return_tab-fieldval.
ENDIF.
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |