‎2008 Apr 30 10:10 AM
Hi all
how to create "Help Value Request". It will appear when user pressing F4 (help) on an input field to request list of available value. if user given 'Z*' ..it shows ony the value which is starting with z.
pls help me.
thanks in advance.
indu
‎2008 Apr 30 10:14 AM
If it's in a report, you could use the sentence AT SELECTION SCREEN ON VALUE REQUEST.
‎2008 Apr 30 10:18 AM
Hi Indu,
For providing the Help value for a particular field you need to provide for this field a check table.
Reward points if helpful.
Thanks,
Asha
‎2008 Apr 30 10:20 AM
F4IF_INT_TABLE_VALUE_REQUEST
This function module displays a value list that you created in an ABAP program. The value list is passed to the function module as the table parameter VALUE_TAB. If you specify the import parameters DYNPPROG, DYNPNR, and DYNPROFIELD, the users selection is returned to the corresponding field on the screen. If you specify the table parameter RETURN_TAB, the selection is returned into the table instead.
FM DYNP_VALUES_READ can read the values of screen fields
Have a look at below sample code:
REPORT ZTEST_F4 .
DATA : BEGIN OF ITAB OCCURS 0,
NAME LIKE KNVK-NAMEV,
E_MAIL LIKE ADR6-SMTP_ADDR,
END OF ITAB.
PARAMETER : P_EMAIL LIKE ADR6-SMTP_ADDR.
INITIALIZATION.
ITAB-NAME = 'A'.
ITAB-E_MAIL = email@removed '.
APPEND ITAB.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_EMAIL.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'E_MAIL'
DYNPPROG = 'ZTEST_F4'
DYNPNR = '1000'
DYNPROFIELD = 'P_EMAIL'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = ITAB
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
Another Code sample:
REPORT DEMO_DYNPRO_F4_HELP_MODULE.
TYPES: BEGIN OF VALUES,
CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID,
END OF VALUES.
DATA: CARRIER(3) TYPE C,
CONNECTION(4) TYPE C.
DATA: PROGNAME LIKE SY-REPID,
DYNNUM LIKE SY-DYNNR,
DYNPRO_VALUES TYPE TABLE OF DYNPREAD,
FIELD_VALUE LIKE LINE OF DYNPRO_VALUES,
VALUES_TAB TYPE TABLE OF VALUES.
CALL SCREEN 100.
MODULE INIT OUTPUT.
PROGNAME = SY-REPID.
DYNNUM = SY-DYNNR.
CLEAR: FIELD_VALUE, DYNPRO_VALUES.
FIELD_VALUE-FIELDNAME = 'CARRIER'.
APPEND FIELD_VALUE TO DYNPRO_VALUES.
ENDMODULE.
MODULE CANCEL INPUT.
LEAVE PROGRAM.
ENDMODULE.
MODULE VALUE_CONNECTION INPUT.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = PROGNAME
DYNUMB = DYNNUM
TRANSLATE_TO_UPPER = 'X'
TABLES
DYNPFIELDS = DYNPRO_VALUES.
READ TABLE DYNPRO_VALUES INDEX 1 INTO FIELD_VALUE.
SELECT CARRID CONNID
FROM SPFLI
INTO CORRESPONDING FIELDS OF TABLE VALUES_TAB
WHERE CARRID = FIELD_VALUE-FIELDVALUE.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'CONNID'
DYNPPROG = PROGNAME
DYNPNR = DYNNUM
DYNPROFIELD = 'CONNECTION'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = VALUES_TAB.
ENDMODULE.
The screen flow logic is as follows:
PROCESS BEFORE OUTPUT.
MODULE INIT.
PROCESS AFTER INPUT.
MODULE CANCEL AT EXIT-COMMAND.
PROCESS ON VALUE-REQUEST.
FIELD CONNECTION MODULE VALUE_CONNECTION.
For the Flight number field, the POV module VALUE_CONNECTION is called. The
function module DYNP_VALUE_READ transports the value of the screen field CARRIER into the program. The program then reads the corresponding values from the database table SPFLI into the internal table VALUES_TAB using a SELECT statement, and passes the internal table to F4IF_INT_TABLE_VALUE_REQUEST. This displays the internal table as input help, and places the users selection into the screen field CONNECTION.
I hope it helps.
Best Regards,
Vibha
Please mark all the helpful answers
‎2008 Apr 30 10:21 AM
hi chk this sample code:
TYPES:
BEGIN OF T_EKPO,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MENGE LIKE EKPO-MENGE,
NETPR LIKE EKPO-NETPR,
END OF T_EKPO,
BEGIN OF T_VALTAB,
BUKRS LIKE T001-BUKRS,
END OF T_VALTAB.
DATA: I_EKKO TYPE STANDARD TABLE OF EKKO,
I_EKPO TYPE STANDARD TABLE OF T_EKPO.
SELECTION-SCREEN BEGIN OF BLOCK B1.
SELECT-OPTIONS: S_BUKRS FOR T001-BUKRS.
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN ON S_BUKRS.
IF S_BUKRS IS INITIAL.
MESSAGE E000(ZZ) WITH TEXT-001.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_BUKRS-LOW.
PERFORM VALUE_REQ USING S_BUKRS-LOW.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_BUKRS-HIGH.
PERFORM VALUE_REQ USING S_BUKRS-HIGH.
*&---------------------------------------------------------------------*
*& Form VALUE_REQ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM VALUE_REQ USING P_BUKRS.
I_FIELDTAB-TABNAME = 'T001'.
I_FIELDTAB-FIELDNAME = 'BUKRS'.
APPEND I_FIELDTAB.
SELECT BUKRS
FROM T001
INTO TABLE I_VALTAB.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = I_FIELDTAB-FIELDNAME
TABLES
VALUE_TAB = I_VALTAB
FIELD_TAB = I_FIELDTAB
RETURN_TAB = I_RETTAB
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC = 0.
P_BUKRS = I_RETTAB-FIELDVAL.
ENDIF.
ENDFORM. " VALUE_REQregards,
madhu
‎2008 Apr 30 10:23 AM
Hi,
Check the below code.
parameters: p_name like p0001-ename.
data: begin of it_name occurs 0,
name like p0001-ename,
end of it_name.
data: v_num type i.
at selection-screen on value-request for p_name.
if v_num is initial.
it_name-name = 'India'.
append it_name.
it_name-name = 'China'.
append it_name.
it_name-name = 'Japan'.
append it_name.
it_name-name = 'Indonesia'.
append it_name.
v_num = v_num + 1.
endif.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'NAME'
DYNPPROG = SY-CPROG
DYNPNR = SY-DYNNR
DYNPROFIELD = 'P_NAME'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = IT_NAME
RETURN_TAB = 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.