09-04-2012 1:43 PM
Hi All,
I have below issue:
there are two fields on the selection screen p_matnr & p_mtart
when i selected f4 help for p_matnr then corresponding value will be populate on p_mtart without pressing ENTER or any input action.
Thanks in advance,
Pradeep
09-04-2012 2:33 PM
Hi Pradeep,
You have to use the FM 'DYNP_VALUES_UPDATE' to update the selection-screen parameter values dynamically without triggering POB event. Means that, when you call F4 on MATNR and returned with selection of perticular material number, then u can read the MTART and update the screen field P_MTART with the derived value using the above FM.
Hope this helps...
Best Regards
VS Naidu.
09-04-2012 2:45 PM
Hi,
In one of my program i have done that by this way,
DATA : it_return1 LIKE ddshretval OCCURS 0 WITH HEADER LINE,
it_return2 LIKE ddshretval OCCURS 0 WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_id.
PERFORM show_f4_help.
*&---------------------------------------------------------------------*
*& Form SHOW_F4_HELP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM show_f4_help .
DATA: BEGIN OF it_person_id OCCURS 0,
person_id TYPE t7ehs00_mappernr-person_id,
END OF it_person_id.
DATA : wa_person_id LIKE LINE OF it_person_id.
SELECT DISTINCT person_id FROM t7ehs00_mappernr
INTO CORRESPONDING FIELDS OF TABLE it_person_id.
CLEAR it_person_id .
SORT it_person_id BY person_id.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'P_ID'
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'P_ID'
value_org = 'S'
display = 'F'
TABLES
value_tab = it_person_id
* FIELD_TAB =
return_tab = it_return1
* DYNPFLD_MAPPING =
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
p_id = it_return1-fieldval.
ENDFORM. " SHOW_F4_HELP
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_number.
PERFORM show_f4_help1.
*&---------------------------------------------------------------------*
*& Form SHOW_F4_HELP1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM show_f4_help1 .
DATA : BEGIN OF it_srv_number OCCURS 0,
srv_number TYPE t7ehs00_service-srv_number,
END OF it_srv_number.
DATA: it_srv_number1 LIKE TABLE OF it_srv_number.
DATA: BEGIN OF it_intpernr OCCURS 0,
intpernr TYPE t7ehs00_mappernr-intpernr,
person_id TYPE t7ehs00_mappernr-person_id,
END OF it_intpernr.
DATA : wa_intpernr LIKE LINE OF it_intpernr.
DATA : lv_fieldvalue TYPE dynfieldvalue,
lwa_dynpread TYPE dynpread,
lt_dynpread TYPE TABLE OF dynpread.
lwa_dynpread-fieldname = 'FORMO'.
APPEND lwa_dynpread TO lt_dynpread.
lwa_dynpread-fieldname = 'VISION'.
APPEND lwa_dynpread TO lt_dynpread.
lwa_dynpread-fieldname = 'STOOL'.
APPEND lwa_dynpread TO lt_dynpread.
lwa_dynpread-fieldname = 'P_ID'.
APPEND lwa_dynpread TO lt_dynpread.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = lt_dynpread
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.
IF sy-subrc IS INITIAL.
CLEAR : lwa_dynpread.
READ TABLE lt_dynpread INTO lwa_dynpread WITH KEY fieldname = 'P_ID'.
p_id = lwa_dynpread-fieldvalue.
READ TABLE lt_dynpread INTO lwa_dynpread WITH KEY fieldname = 'FORMO'.
formo = lwa_dynpread-fieldvalue.
IF formo NE 'X'.
READ TABLE lt_dynpread INTO lwa_dynpread WITH KEY fieldname = 'VISION'.
vision = lwa_dynpread-fieldvalue.
IF vision NE 'X'.
READ TABLE lt_dynpread INTO lwa_dynpread WITH KEY fieldname = 'STOOL'.
stool = lwa_dynpread-fieldvalue.
ENDIF.
ENDIF.
ENDIF.
U can try like this
Regards
Gourav.
09-04-2012 4:53 PM
Hi Pradeep,
Try this code...
DATA: lt_dselc TYPE STANDARD TABLE OF dselc,
ls_dselc TYPE dselc.
DATA: lt_returntab TYPE TABLE OF ddshretval,
ls_returntab TYPE ddshretval.
TYPES:BEGIN OF ty_mara,
matnr TYPE mara-matnr,
mtart TYPE mara-mtart,
END OF ty_mara.
TYPES: tt_mara TYPE STANDARD TABLE OF ty_mara.
DATA: lt_mara TYPE tt_mara,
ls_mara TYPE ty_mara.
PARAMETERS: p_matnr TYPE mara-matnr,
p_mtart TYPE mara-mtart.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.
CLEAR lt_dselc[].
ls_dselc-fldname = 'F0002'.
ls_dselc-dyfldname = 'P_MTART'.
APPEND ls_dselc TO lt_dselc.
CLEAR ls_dselc.
DATA: lwa_dynpread TYPE dynpread,
lt_dynpread TYPE TABLE OF dynpread.
lwa_dynpread-fieldname = 'P_MATNR'.
APPEND lwa_dynpread TO lt_dynpread.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = lt_dynpread
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.
READ TABLE lt_dynpread INTO lwa_dynpread INDEX 1.
CONCATENATE '%' lwa_dynpread-FIELDVALUE '%' INTO p_matnr.
SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE lt_mara WHERE matnr LIKE p_matnr.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_MATNR'"QC_PARENT'
value_org = 'S'
TABLES
value_tab = lt_mara
return_tab = lt_returntab
dynpfld_mapping = lt_dselc
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE lt_returntab INTO ls_returntab INDEX 1.
IF sy-subrc = 0.
READ TABLE lt_mara INTO ls_mara WITH KEY matnr = ls_returntab-fieldval.
p_mtart = ls_mara-mtart.
ENDIF.