Friday, 8 December 2017

F4 Help Option for Parameter and Select Option

Here is a Program which defines the F4 help on Selection Screen. On the screen there are two fields 1. Company Code and 2. Project Definition. Here the company code is the Parameter and the project definition is the Select Option. In this program there is no manual entry. Every input will be given by using F4 help. 

The company codes will be coming uniquely by using F4 help. In database one company code contains lot of Projects. Hence unique company code is necessary while pressing the F4 button.


Then the Project Definition Low field will also have to be selected by using F4 help. Here in the value table all project definition will not come. Only the projects which are under selected company code will come for the Low field. Other projects will not come in value table. Similarly the High field will have to be selected by using F4 help. High filed will show the value table data which are greater than the low field and under that selected company. 


REPORT  zabap_gui1.

*---------PROJ & PRPS Tables Declaration-------------------------------*
*----------------------------------------------------------------------*
TABLES: proj, prps.

*---------Structure Declaration for different Internal Tables----------*
*----------------------------------------------------------------------*
TYPES:
       "Structure to create F4 Help for Company Code
       BEGIN OF ty_vbukr,
        vbukr TYPE proj-vbukr, "Company code
       END OF ty_vbukr,

       "Structure to create F4 Help for Project definition
       BEGIN OF ty_pspid,
        pspid TYPE proj-pspid, "Project definition
       END OF ty_pspid.

DATA:
      "Internal Tables of Value Table for F4 Help
      it_vbukr   TYPE STANDARD TABLE OF ty_vbukr,
      it_pspid   TYPE STANDARD TABLE OF ty_pspid,
      it_pspid1  TYPE STANDARD TABLE OF ty_pspid,

      "Internal Tables of Return Table for F4 Help
      wa_return1 TYPE ddshretval,
      wa_return2 TYPE ddshretval,
      wa_return3 TYPE ddshretval,
      it_return1 TYPE STANDARD TABLE OF ddshretval,
      it_return2 TYPE STANDARD TABLE OF ddshretval,
      it_return3 TYPE STANDARD TABLE OF ddshretval.

CONSTANTS:
           "Constants for F4IF_INT_TABLE_VALUE_REQUEST
           c_vbukr     TYPE dfies-fieldname VALUE 'P_VBUKR',
           c_pspid_l   TYPE dfies-fieldname VALUE 'P_PSPID-LOW',
           c_pspid_h   TYPE dfies-fieldname VALUE 'P_PSPID-HIGH',
           c_vorg      TYPE char1  VALUE 'S'.

*---------SELECTION SCREEN---------------------------------------------*
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_vbukr LIKE proj-vbukr.
SELECT-OPTIONS s_pspid FOR proj-pspid.
SELECTION-SCREEN END OF BLOCK b1.

*---------AT SELECTION-SCREEN ON VALUE-REQUEST for COMPANY CODE--------*
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vbukr.
  SELECT DISTINCT vbukr FROM proj INTO TABLE it_vbukr.
  IF sy-subrc = 0.
    SORT it_vbukr BY vbukr.
  ENDIF.

  "Function Module to create F4 help
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = c_vbukr
      value_org       = c_vorg
    TABLES
      value_tab       = it_vbukr
      return_tab      = it_return1
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.

  IF it_return1 IS NOT INITIAL.
    LOOP AT it_return1 INTO wa_return1.
      p_vbukr = wa_return1-fieldval.
    ENDLOOP.
    SELECT pspid FROM proj INTO TABLE it_pspid
    WHERE vbukr = p_vbukr.
    IF sy-subrc = 0.
      SORT it_pspid BY pspid.
    ENDIF.
  ENDIF.

*-----AT SELECTION-SCREEN ON VALUE-REQUEST for PROJECT DEFINITION------*
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_pspid-low.

  "Function Module to create F4 help
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = c_pspid_l
      value_org       = c_vorg
    TABLES
      value_tab       = it_pspid
      return_tab      = it_return2
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.

  IF it_return2 IS NOT INITIAL.
    LOOP AT it_return2 INTO wa_return2.
      s_pspid-low = wa_return2-fieldval.
    ENDLOOP.
    SELECT pspid FROM proj INTO TABLE it_pspid1
      WHERE pspid GT s_pspid-low
        AND vbukr = p_vbukr.
    IF sy-subrc = 0.
      SORT it_pspid1 BY pspid.
    ENDIF.
  ENDIF.

*-----AT SELECTION-SCREEN ON VALUE-REQUEST for PROJECT DEFINITION------*
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_pspid-high.

  "Function Module to create F4 help
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = c_pspid_h
      value_org       = c_vorg
    TABLES
      value_tab       = it_pspid1
      return_tab      = it_return3
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.

  IF it_return3 IS NOT INITIAL.
    LOOP AT it_return3 INTO wa_return3.
      s_pspid-high = wa_return3-fieldval.
    ENDLOOP.
  ENDIF.


Below is the Output:

1. Selection Screen:




2. F4 on Company Code:




3. F4 on Project Definition Low Field (All projects are coming from company 0142): Total 2598 Entries




4. F4 on Project Definition High Field (All projects will be Greater than Low field with company 0142): Total 2589 Entries



5. Finally Data have been Selected:


No comments:

Post a Comment