‎2010 Mar 07 4:55 AM
Hi,
I wanted to pass two fields in the value table as well as in return structure two fields can you provide me a structure for this
Regards
p619380
‎2010 Mar 08 5:48 AM
Hi
Check the following
" Just Execute this pilot program and verify
PARAMETERS : carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
fldate TYPE sflight-fldate.
DATA : itab TYPE TABLE OF sflight WITH HEADER LINE.
DATA : fmap TYPE TABLE OF dselc WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR carrid." If it is a selection Screen
else in PROCESS ON VALUE REQUEST
SELECT * FROM sflight INTO TABLE itab.
SORT itab BY carrid connid fldate.
DELETE ADJACENT DUPLICATES FROM itab
COMPARING carrid connid fldate.
fmap-fldname = 'CARRID'.
fmap-dyfldname = 'CARRID'.
APPEND fmap.
fmap-fldname = 'CONNID'.
fmap-dyfldname = 'CONNID'.
APPEND fmap.
fmap-fldname = 'FLDATE'.
fmap-dyfldname = 'FLDATE'.
APPEND fmap.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
ddic_structure = 'SFLIGHT'
retfield = 'CARIID'
* PVALKEY = ' '
dynpprog = sy-repid
dynpnr = sy-dynnr
DYNPROFIELD = 'CARRID'
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
value_org = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
value_tab = itab
* FIELD_TAB =
* RETURN_TAB =
dynpfld_mapping = fmap
* EXCEPTIONS
* PARAMETER_ERROR = 1
* NO_VALUES_FOUND = 2
* OTHERS = 3
.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.Cheerz
Ram
‎2010 Mar 07 5:45 AM
Hi ,
Try this
DATA: T_RETURN TYPE TABLE OF DDSHRETVAL WITH HEADER LINE.
SELECT SERNR MATNR FROM EQUI INTO TABLE ITAB_EQUI
WHERE MATNR = F4_MATNR.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'SERNR'
DYNPPROG = SY-REPID
DYNPNR = '0100'
DYNPROFIELD = 'EQUI-SERNR'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = ITAB_EQUI
RETURN_TAB = T_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.
CLEAR F4_MATNR .
Regards
Jitendra
‎2010 Mar 08 5:29 AM
My question to how to get two fields when f4 is clicked,
any structure to be passed
‎2010 Mar 08 5:40 AM
Hi,
<li>After F4_int_table_value_request function module call call DYNP_VALUES_UPDATE function module pass second field name and corresponding field name, two fields are update when you select the value from F4 help.
<li>Try this way.
Thanks
Venkat
REPORT zvenkat_f4_for_parameters MESSAGE-ID zmsg .
TYPES:BEGIN OF t_t001w,
werks TYPE t001w-werks,
name1 TYPE t001w-name1,
END OF t_t001w,
t_return_tab TYPE ddshretval.
DATA:w_t001w TYPE t_t001w,
w_return_tab TYPE t_return_tab.
DATA:i_t001w TYPE STANDARD TABLE OF t_t001w,
i_return_tab TYPE STANDARD TABLE OF t_return_tab.
DATA:w_dynpfields TYPE dynpread,
i_dynpfields LIKE STANDARD TABLE OF dynpread.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :p_werks TYPE t001w-werks,
p_name1 TYPE t001w-name1.
SELECTION-SCREEN END OF BLOCK b1.
"F4 Help for Werks
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_werks.
IF i_t001w[] IS INITIAL.
SELECT werks name1
FROM t001w
INTO TABLE i_t001w.
ENDIF.
"Function module for F4 help
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'WERKS' "field name on f4 help window
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_WERKS' "Screen field name
value_org = 'S'
TABLES
value_tab = i_t001w
return_tab = i_return_tab.
READ TABLE i_return_tab INTO w_return_tab INDEX 1.
p_werks = w_return_tab-fieldval.
READ TABLE i_t001w INTO w_t001w WITH KEY werks = p_werks.
IF sy-subrc = 0.
w_dynpfields-fieldname = 'P_NAME1'.
w_dynpfields-fieldvalue = w_t001w-name1.
APPEND w_dynpfields TO i_dynpfields.
CLEAR w_dynpfields.
"DYNP_VALUES_UPDATE
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = i_dynpfields.
ENDIF.
‎2010 Mar 08 5:48 AM
Hi
Check the following
" Just Execute this pilot program and verify
PARAMETERS : carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
fldate TYPE sflight-fldate.
DATA : itab TYPE TABLE OF sflight WITH HEADER LINE.
DATA : fmap TYPE TABLE OF dselc WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR carrid." If it is a selection Screen
else in PROCESS ON VALUE REQUEST
SELECT * FROM sflight INTO TABLE itab.
SORT itab BY carrid connid fldate.
DELETE ADJACENT DUPLICATES FROM itab
COMPARING carrid connid fldate.
fmap-fldname = 'CARRID'.
fmap-dyfldname = 'CARRID'.
APPEND fmap.
fmap-fldname = 'CONNID'.
fmap-dyfldname = 'CONNID'.
APPEND fmap.
fmap-fldname = 'FLDATE'.
fmap-dyfldname = 'FLDATE'.
APPEND fmap.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
ddic_structure = 'SFLIGHT'
retfield = 'CARIID'
* PVALKEY = ' '
dynpprog = sy-repid
dynpnr = sy-dynnr
DYNPROFIELD = 'CARRID'
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
value_org = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
value_tab = itab
* FIELD_TAB =
* RETURN_TAB =
dynpfld_mapping = fmap
* EXCEPTIONS
* PARAMETER_ERROR = 1
* NO_VALUES_FOUND = 2
* OTHERS = 3
.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.Cheerz
Ram
‎2010 Mar 08 6:21 AM
Try this code.
This may help you.
DATA : BEGIN OF WA_EKPO,
WERKS TYPE EKPO-WERKS, "Plant
END OF WA_EKPO.
give number of fields u want in this structure.
DATA: IT_RETURN LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_BUKRS.
CALL FUNCTION 'HELP_VALUES_GET'
EXPORTING
FIELDNAME = 'BUKRS'
TABNAME = 'EKPO'
IMPORTING
SELECT_VALUE = P_BUKRS.
CLEAR : WA_EKPO, IT_EKPO[].
SELECT DISTINCT WERKS FROM EKPO
INTO TABLE IT_EKPO
WHERE BUKRS = P_BUKRS.
DELETE IT_EKPO WHERE WERKS EQ ''.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_WERKS.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'WERKS'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = IT_EKPO
RETURN_TAB = IT_RETURN.
WRITE IT_RETURN-FIELDVAL TO P_WERKS.
If you want to write two fields, use this write statement for your second field also.
Regards,
Prabu S
‎2010 Mar 08 7:31 AM
Hello Jansi,
You can use this code:
PARAMETERS:
p_carrid TYPE spfli-carrid,
p_cname TYPE scarr-carrname.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_carrid.
TYPES: t_return_tab TYPE ddshretval.
TYPES: BEGIN OF ty_line,
carrid TYPE spfli-carrid,
carrname TYPE scarr-carrname,
END OF ty_line.
DATA: it_list TYPE STANDARD TABLE OF ty_line,
w_return_tab TYPE t_return_tab,
i_return_tab TYPE STANDARD TABLE OF t_return_tab,
v_repid TYPE sy-repid,
v_dynnr TYPE sy-dynnr.
DATA:
it_map TYPE STANDARD TABLE OF dselc,
wa_map TYPE dselc.
v_repid = sy-repid.
v_dynnr = sy-dynnr.
SELECT carrid carrname
FROM scarr
INTO TABLE it_list.
IF sy-subrc = 0.
wa_map-fldname = 'F0001'. "Field for Position 1
wa_map-dyfldname = 'P_CARRID'.
APPEND wa_map TO it_map.
wa_map-fldname = 'F0002'. "Field for Position 2
wa_map-dyfldname = 'P_CNAME'.
APPEND wa_map TO it_map.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CARRID'
dynpprog = v_repid
dynpnr = v_dynnr
dynprofield = 'P_CARRID'
value_org = 'S'
TABLES
value_tab = it_list
dynpfld_mapping = it_map
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
* Do nothing
ENDIF.
ENDIF.Cheers,
Suhas
PS: The code suggested by Ram will work if you have used an DDIC_STRUCTURE. But if you are using a local internal table as VALUE_TAB i think you cannot implement that logic.
Edited by: Suhas Saha on Mar 8, 2010 1:05 PM