How to Create Popup Help

New Site Address: http://abap.mirrorz.com

Make your own free website on Tripod.com



Home

Definitions
OK Code Values
Other Useful Tips
SAP and ABAP Links
SAP Functions
SAP Reports
SAP Tables
Source Code
Transaction Codes

Site Map (Index)

ABAP Keyword Help


How to Create Popup Help

This example was done mostly from memory, not in the ABAP editor, so it probably will not compile, it is only to show how to call the functions used here.


Source Code Listing
*-- F4 help for Payroll Administrator
AT SELECTION SCREEN ON VALUE REQUEST FOR P_SACHA.
    PERFORM VALUES_SACHA.
*-- F4 help for Pay Scale Group
AT SELECTION SCREEN ON VALUE REQUEST FOR P_TRFGR.
*-- F4 help for Pay Scale Level
AT SELECTION SCREEN ON VALUE REQUEST FOR P_TRFST.
*---------------------------------------------------------------------*
*      FORM  VALUES_SACHA
*---------------------------------------------------------------------*
*       Provide popup help for the Payroll Admin field
*---------------------------------------------------------------------*
FORM VALUES_SACHA.

  REFRESH: LTAB_DYNPSELECT,
           LTAB_DYNPVALUETAB.

  PERFORM READ_VALUE_FROM_SCREEN USING SY-REPID
                   SY-DYNNR
                   'PA0001-WERKS'
          CHANGING LTAB_DYNPSELECT-FLDNAME
                   LTAB_DYNPSELECT-FLDINH.

  APPEND LTAB_DYNPSELECT.

  LTAB_DYNPSELECT-FLDNAME = 'MANDT'.
  APPEND LTAB_DYNPSELECT.

  LTAB_DYNPSELECT-FLDNAME = 'SACHX'.
  APPEND LTAB_DYNPSELECT.

  PERFORM SHOW_HELP TABLES LTAB_DYNPSELECT
       LTAB_DYNPVALUETAB
 USING 'T526'
       'SACHX'
                  CHANGING PA0001-SACHA.

ENDFORM.         " VALUES_SACHA
*---------------------------------------------------------------------*
*       FORM VALUES_TRFGR
*---------------------------------------------------------------------*
*       Provide popup help for Pay Scale Group
*---------------------------------------------------------------------*
FORM VALUES_TRFGR.

  REFRESH: LTAB_DYNPSELECT,
           LTAB_DYNPVALUETAB.

  LTAB_DYNPSELECT-FLDNAME = 'MANDT'.
  APPEND LTAB_DYNPSELECT.

  LTAB_DYNPSELECT-FLDNAME = 'MOLGA'.
  SELECT SINGLE MOLGA FROM T001P
         INTO   LTAB_DYNPSELECT-FLDINH
          WHERE WERKS = *PA0001-WERKS
          AND   BTRTL = *PA0001-BTRTL.
  IF SY-SUBRC NE 0.
    LTAB_DYNPSELECT-FLDINH = SPACE.
  ENDIF.
  APPEND LTAB_DYNPSELECT.

  LTAB_DYNPSELECT-FLDNAME = 'TRFAR'.
  LTAB_DYNPSELECT-FLDINH  = *PA0008-TRFAR.
  APPEND LTAB_DYNPSELECT.

  LTAB_DYNPSELECT-FLDNAME = 'TRFGB'.
  LTAB_DYNPSELECT-FLDINH  = *PA0008-TRFGB.
  APPEND LTAB_DYNPSELECT.

  LTAB_DYNPSELECT-FLDNAME = 'TRFKZ'.
  SELECT SINGLE TRFKZ FROM T503
         INTO  LTAB_DYNPSELECT-FLDINH
         WHERE PERSG = *PA0001-PERSG
         AND   PERSK = *PA0001-PERSK.
  IF SY-SUBRC NE 0.
    LTAB_DYNPSELECT-FLDINH = SPACE.
  ENDIF.
  APPEND LTAB_DYNPSELECT.

  LTAB_DYNPSELECT-FLDNAME = 'TRFGR'.
  LTAB_DYNPSELECT-FLDINH  = SPACE.
  APPEND LTAB_DYNPSELECT.

  PERFORM SHOW_HELP TABLES LTAB_DYNPSELECT
       LTAB_DYNPVALUETAB
 USING 'T510'
       'TRFGR'
                  CHANGING PA0008-TRFGR.

  PERFORM UPDATE_VALUE_ON_SCREEN USING SY-REPID
                   SY-DYNNR
                   'PA0008-TRFGR'
                   PA0008-TRFGR.

ENDFORM.         " VALUES_TRFGR
*---------------------------------------------------------------------*
*      FORM  VALUES_TRFST 
*---------------------------------------------------------------------*
*       Provide popup help for Pay Scale Area
*---------------------------------------------------------------------*
FORM VALUES_TRFST.

  REFRESH: LTAB_DYNPSELECT,
           LTAB_DYNPVALUETAB.

  LTAB_DYNPSELECT-FLDNAME = 'MANDT'.
  APPEND LTAB_DYNPSELECT.

  LTAB_DYNPSELECT-FLDNAME = 'MOLGA'.
  SELECT SINGLE MOLGA FROM T001P
         INTO   LTAB_DYNPSELECT-FLDINH
          WHERE WERKS = *PA0001-WERKS
          AND   BTRTL = *PA0001-BTRTL.
  IF SY-SUBRC NE 0.
    LTAB_DYNPSELECT-FLDINH = SPACE.
  ENDIF.
  APPEND LTAB_DYNPSELECT.

  LTAB_DYNPSELECT-FLDNAME = 'TRFAR'.
  LTAB_DYNPSELECT-FLDINH  = *PA0008-TRFAR.
  APPEND LTAB_DYNPSELECT.

  LTAB_DYNPSELECT-FLDNAME = 'TRFGB'.
  LTAB_DYNPSELECT-FLDINH  = *PA0008-TRFGB.
  APPEND LTAB_DYNPSELECT.

  LTAB_DYNPSELECT-FLDNAME = 'TRFKZ'.
  SELECT SINGLE TRFKZ FROM T503
         INTO  LTAB_DYNPSELECT-FLDINH
         WHERE PERSG = *PA0001-PERSG
         AND   PERSK = *PA0001-PERSK.
  IF SY-SUBRC NE 0.
    LTAB_DYNPSELECT-FLDINH = SPACE.
  ENDIF.
  APPEND LTAB_DYNPSELECT.

  PERFORM READ_VALUE_FROM_SCREEN USING SY-REPID
                   SY-DYNNR
                   'PA0008-TRFGR'
          CHANGING LTAB_DYNPSELECT-FLDNAME
                   LTAB_DYNPSELECT-FLDINH.

  APPEND LTAB_DYNPSELECT.

  LTAB_DYNPSELECT-FLDNAME = 'TRFST'.
  LTAB_DYNPSELECT-FLDINH  = SPACE.
  APPEND LTAB_DYNPSELECT.

  PERFORM SHOW_HELP TABLES LTAB_DYNPSELECT
       LTAB_DYNPVALUETAB
 USING 'T510'
       'TRFST'
                  CHANGING PA0008-TRFST.

  PERFORM UPDATE_VALUE_ON_SCREEN USING SY-REPID
                   SY-DYNNR
                   'PA0008-TRFST'
                   PA0008-TRFST.

ENDFORM.                 " VALUES_TRFST  
*---------------------------------------------------------------------*
*       FORM SHOW_HELP        *
*---------------------------------------------------------------------*
*       ........              *
*---------------------------------------------------------------------*
*  -->  FTAB_DYNPSELECT       *
*  -->  FTAB_DYNPVALUETAB     *
*  -->  FSTR_HELP_INFO        *
*  -->  F_NEWVALUE            *
*---------------------------------------------------------------------*
FORM SHOW_HELP TABLES FTAB_DYNPSELECT   STRUCTURE DSELC
  FTAB_DYNPVALUETAB STRUCTURE DVAL
               USING  F_CHECKTABLE      LIKE HELP_INFO-CHECKTABLE
  F_CHECKFIELD      LIKE HELP_INFO-CHECKFIELD
             CHANGING F_NEWVALUE.

  DATA: LSTR_HELP_INFO LIKE HELP_INFO.
  DATA: LC_SELECTION_VALUE LIKE HELP_INFO-FLDVALUE.
  DATA: LC_SELECTION(1)    TYPE C.

*-- Fill in fields required for help function call
  LSTR_HELP_INFO-CALL       = 'T'.
  LSTR_HELP_INFO-OBJECT     = 'F'.
  LSTR_HELP_INFO-SPRAS      = SY-LANGU.
  LSTR_HELP_INFO-CHECKTABLE = F_CHECKTABLE.
  LSTR_HELP_INFO-CHECKFIELD = F_CHECKFIELD.

  CALL FUNCTION 'HELP_START'
       EXPORTING
            HELP_INFOS   = LSTR_HELP_INFO
       IMPORTING
            SELECTION    = LC_SELECTION
            SELECT_VALUE = LC_SELECTION_VALUE
       TABLES
            DYNPSELECT   = FTAB_DYNPSELECT
            DYNPVALUETAB = FTAB_DYNPVALUETAB
       EXCEPTIONS
            OTHERS       = 1.

  IF LC_SELECTION NE SPACE AND SY-SUBRC = 0.
    F_NEWVALUE = LC_SELECTION_VALUE.
  ENDIF.

ENDFORM.           " SHOW_HELP

*---------------------------------------------------------------------*
*       FORM READ_VALUE_FROM_SCREEN               *
*---------------------------------------------------------------------*
*       ........              *
*---------------------------------------------------------------------*
*  -->  F_REPID               *
*  -->  F_DYNNR               *
*  -->  VALUE(F_FIELDNAME_IN) *
*  -->  F_FIELDNAME_OUT       *
*  -->  F_FIELDVALUE          *
*---------------------------------------------------------------------*
FORM READ_VALUE_FROM_SCREEN USING F_REPID
              F_DYNNR
              VALUE(F_FIELDNAME_IN)
     CHANGING F_FIELDNAME_OUT
              F_FIELDVALUE.

  DATA: LTAB_FIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
  DATA: LC_DYNAME LIKE SY-REPID.
  DATA: LC_DYNUMB LIKE SY-DYNNR.
  DATA: LC_DUMMY(1) TYPE C.

*-- Read the screen to see if the user has entered a value for WERKS
  LTAB_FIELDS-FIELDNAME = F_FIELDNAME_IN.
  append ltab_fields.

  LC_DYNAME = F_REPID.
  LC_DYNUMB = F_DYNNR.

  CALL FUNCTION 'DYNP_VALUES_READ'
       EXPORTING
            DYNAME     = LC_DYNAME
            DYNUMB     = LC_DYNUMB
       TABLES
            dynpfields = ltab_fields
       EXCEPTIONS
            OTHERS     = 01.
  read table ltab_fields index 1.
*-- Return the value from the screen
  IF SY-SUBRC EQ 0.
    SPLIT LTAB_FIELDS-FIELDNAME AT '-'
          INTO LC_DUMMY
          F_FIELDNAME_OUT.
    F_FIELDVALUE = LTAB_FIELDS-FIELDVALUE.
  ENDIF.

ENDFORM.           " READ_VALUE_FROM_SCREEN
*---------------------------------------------------------------------*
*       FORM UPDATE_VALUE_ON_SCREEN               *
*---------------------------------------------------------------------*
*       The PROCESS ON VALUE-REQUEST does not always return blanks.   *
*       If a blank value is to be returned, this routine must be      *
*       called.
*---------------------------------------------------------------------*
*  -->  F_REPID               *
*  -->  F_DYNNR               *
*  -->  VALUE(F_FIELDNAME)    *
*  -->  F_FIELDVALUE          *
*---------------------------------------------------------------------*
FORM UPDATE_VALUE_ON_SCREEN USING F_REPID
              F_DYNNR
              VALUE(F_FIELDNAME)
              F_FIELDVALUE.

  DATA: LTAB_FIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.

  DATA: LC_DYNAME LIKE SY-REPID.
  DATA: LC_DYNUMB LIKE SY-DYNNR.

  LC_DYNAME = SY-REPID.
  LC_DYNUMB = SY-DYNNR.

  LTAB_FIELDS-FIELDNAME  = F_FIELDNAME.
  LTAB_FIELDS-FIELDVALUE = F_FIELDVALUE.
  APPEND LTAB_FIELDS.

  CALL FUNCTION 'DYNP_VALUES_UPDATE'
       EXPORTING
            DYNAME     = LC_DYNAME
            DYNUMB     = LC_DYNUMB
       TABLES
            DYNPFIELDS = LTAB_FIELDS
       EXCEPTIONS
            OTHERS     = 8.

ENDFORM.           " UPDATE_VALUE_ON_SCREEN

New Site Address: http://abap.mirrorz.com


Send any hints or tips to ABAP Hints & Tips .
All submissions will be recognized along with the tip.

Get a cool web address
Free subdomains from
ShortURL.com