Showing posts with label pop window. Show all posts
Showing posts with label pop window. Show all posts

Friday, November 23, 2007

sap abap program for Take Values from Selection-Screen and Issue Message

My program fills a ztable taking values from the selection-screen. Now, if it a record with the same primary keys , then I need to issue a warning saying that 'Entry for the same combination already exist,'.. The user has to have an option of either cancelling the updation or go ahead with the updation. How do I go about it.

If the program is a report, then use message i.... with 'text'. It will show a message on screen and go back to the selection screen.

start-of-selection.

select single from * your ztable where ...
if sy-subrc <> 0
message ... with 'Primary key exists!!!'
else
perform the insert.
endif.

Or...
start-of-selection.
insert ztable.
if sy-subrc <> 0.
message ... with 'Primary key exists!'.
endif.

then use pop_up_to_confirm_step:

data: l_respuesta. "local variable to hold the answer.
clear l_respuesta.
call function 'POPUP_TO_CONFIRM_STEP'
exporting
defaultoption = 'N'
textline1 = 'Primary key exists in the database'
textline2 = 'Do you want to update?'
titel = 'popup Title'
* START_COLUMN = 25
* START_ROW = 6
importing
answer = l_respuesta
exceptions
others = 1.

if l_respuesta = 'J'.
modify ztable.
if sy-subrc = 0.
mesage i ... with 'Data updated'
endif.
else.
mesage i ... with 'No row updated'
endif.

sap abap program for FM VRM_SET_VALUE To List Box

In my report I created alternative Bill of material (Stlal) from table mast as listbox and that list box must contain 01 to 06 no.s. How to do that? I am using F.M VRM_SET_VALUE.

This example may help you:

TYPE-POOLS: VRM.
DATA: NAME TYPE VRM_ID,
LIST TYPE VRM_VALUES,
VALUE LIKE LINE OF LIST.
PARAMETERS: PS_PARM(10) AS LISTBOX VISIBLE LENGTH 10.
AT SELECTION-SCREEN OUTPUT.
NAME = 'PS_PARM'.
VALUE-KEY = '1'.
VALUE-TEXT = 'LINE 1'.
APPEND VALUE TO LIST.
VALUE-KEY = '2'.
VALUE-TEXT = 'LINE 2'.
APPEND VALUE TO LIST.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = NAME
VALUES = LIST.
START-OF-SELECTION.
WRITE: / 'PARAMETER:', PS_PARM.

sap abap program for Value Request For Parameter

* If you have two parameters, you want to display values(f4) in parameter 2
* depending on the values entered in parameter 1.

REPORT Z_SRI_HELP_VALUE_FOR_TABLES .

tables tcurt.
DATA DYFIELDS LIKE DYNPREAD OCCURS 1 WITH HEADER LINE.
PARAMETERS: P_WAERS LIKE TCURT-WAERS, "Currency
P_LTEXT LIKE TCURT-LTEXT, "Long Text
P_KTEXT LIKE TCURT-KTEXT. "Short Text
*-----------------------------------------------------------------------
*--- Example of updating value of another field on the screen ----------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_WAERS.
CLEAR: DYFIELDS[], DYFIELDS.
*--- select currency
CALL FUNCTION 'HELP_VALUES_GET'
EXPORTING
fieldname = 'WAERS'
tabname = 'TCURT'
IMPORTING
SELECT_VALUE = P_WAERS.
*--- get long text for the selected currency
SELECT SINGLE LTEXT FROM TCURT
INTO DYFIELDS-FIELDVALUE
WHERE SPRAS = SY-LANGU
AND WAERS = P_WAERS.
IF SY-SUBRC <> 0.
CLEAR DYFIELDS-FIELDVALUE.
ENDIF.
*--- update another field
DYFIELDS-FIELDNAME = 'P_LTEXT'.
APPEND DYFIELDS.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
tables
dynpfields = DYFIELDS .
*-----------------------------------------------------------------------
*--- Example of reading value of another field -------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_KTEXT.
*--- read another field
CLEAR: DYFIELDS[], DYFIELDS.
DYFIELDS-FIELDNAME = 'P_WAERS'.
APPEND DYFIELDS.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = DYFIELDS .
READ TABLE DYFIELDS INDEX 1.
*--- get short text and update current field
SELECT SINGLE KTEXT FROM TCURT
INTO P_KTEXT
WHERE SPRAS EQ SY-LANGU
AND WAERS EQ DYFIELDS-FIELDVALUE.
*-----------------------------------------------------------------------

How to add F4 functionality to a paramter variable? Say P_name ie Parameters: P_name like dbtab-fieldname
in At selection-screen on value-request for p_name. How should I add the values john, abraham, linga etc so that these values appear when f4 is pressed on the field in the selection screen?

PARAMETERS: p_name(10).
DATA: BEGIN OF value_tab OCCURS 0,
name(10),
END OF value_tab.
DATA :field_tab LIKE dfies OCCURS 0 WITH HEADER LINE.
DATA : return_tab LIKE ddshretval OCCURS 0 WITH HEADER LINE. DATA : x TYPE string.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_name.

REFRESH value_tab[].
REFRESH field_tab[].
REFRESH return_tab[].
field_tab-fieldname = 'ERNAM'.
field_tab-tabname = 'VBAK'.
APPEND field_tab.
value_tab-name = 'John'.
APPEND value_tab.
value_tab-name = 'Abraham'.
APPEND value_tab.
value_tab-name = 'Lingam'.
APPEND value_tab.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = field_tab-fieldname
TABLES
value_tab = value_tab
field_tab = field_tab
return_tab = return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
p_name = return_tab-fieldval.
ENDIF.

sap abap program for Pop a Message to specific SAP users

Is there anyway to popup a window on particular users screens though abap program?

*
* Pop a Message to specific SAP users
*
* How to get a list of all the currently logged on users?
* How to popup an instant message on a user's monitor?
* How to get a specific user's details?
* Usage of 'POPUP_GET_VALUES' function module to get data from user
* without having to write GUI code
*
* Submitted by : SAP Basis, ABAP Programming and Other IMG Stuff
*
*
REPORT ZPOPUP NO STANDARD PAGE HEADING.
INCLUDE .

DATA: BEGIN OF USR_TABL OCCURS 0.
INCLUDE STRUCTURE UINFO.
DATA: END OF USR_TABL.

DATA: L_LENGTH TYPE I,
T_ABAPLIST LIKE ABAPLIST OCCURS 0 WITH HEADER LINE,
BEGIN OF T_USER OCCURS 0,
COUNTER TYPE I,
SELECTION TYPE C,
MANDT LIKE SY-MANDT,
BNAME LIKE SY-UNAME,
NAME_FIRST LIKE V_ADRP_CP-NAME_FIRST,
NAME_LAST LIKE V_ADRP_CP-NAME_LAST,
DEPARTMENT LIKE V_ADRP_CP-DEPARTMENT,
TEL_NUMBER LIKE V_ADRP_CP-TEL_NUMBER,
END OF T_USER,
L_CLIENT LIKE SY-MANDT,
L_USERID LIKE UINFO-BNAME,
L_OPCODE TYPE X,
L_FUNCT_CODE(1) TYPE C,
L_TEST(200) TYPE C.

L_OPCODE = 2.
CALL 'ThUsrInfo' ID 'OPCODE' FIELD L_OPCODE
ID 'TAB' FIELD USR_TABL-*SYS*.

CLEAR T_USER. REFRESH T_USER.
LOOP AT USR_TABL.
T_USER-MANDT = USR_TABL-MANDT.
T_USER-BNAME = USR_TABL-BNAME.
APPEND T_USER.
ENDLOOP.

SORT T_USER.
DELETE ADJACENT DUPLICATES FROM T_USER.
LOOP AT T_USER.
T_USER-COUNTER = SY-TABIX.
SELECT V~NAME_FIRST

V~NAME_LAST
V~DEPARTMENT
V~TEL_NUMBER
INTO (T_USER-NAME_FIRST,
T_USER-NAME_LAST,
T_USER-DEPARTMENT,
T_USER-TEL_NUMBER)
FROM USR21 AS U
JOIN V_ADRP_CP AS V
ON U~PERSNUMBER = V~PERSNUMBER AND
U~ADDRNUMBER = V~ADDRNUMBER
WHERE U~BNAME = T_USER-BNAME.
ENDSELECT.
MODIFY T_USER.
ENDLOOP.
SORT T_USER BY NAME_LAST NAME_FIRST.
PERFORM DISPLAY_LIST.

TOP-OF-PAGE.
PERFORM DISPLAY_MENU.
* End of top-of-page

TOP-OF-PAGE DURING LINE-SELECTION.
PERFORM DISPLAY_MENU.
* End of top-of-page during line-selection


AT LINE-SELECTION.
IF SY-CUROW = 2.
IF SY-CUCOL < 19.
T_USER-SELECTION = 'X'.
MODIFY T_USER TRANSPORTING SELECTION WHERE SELECTION = ''.
PERFORM DISPLAY_LIST.
ELSEIF SY-CUCOL < 36.
CLEAR T_USER-SELECTION.
MODIFY T_USER TRANSPORTING SELECTION WHERE SELECTION = 'X'.
PERFORM DISPLAY_LIST.
ELSEIF SY-CUCOL < 50.
PERFORM TRANSFER_SELECTION.
PERFORM POPUP_MSG.
ELSEIF SY-CUCOL < 67.
PERFORM TRANSFER_SELECTION.
SORT T_USER BY NAME_LAST.
PERFORM DISPLAY_LIST.
ELSEIF SY-CUCOL < 81.
PERFORM TRANSFER_SELECTION.
SORT T_USER BY NAME_FIRST.
PERFORM DISPLAY_LIST.
ELSEIF SY-CUCOL < 93.
PERFORM TRANSFER_SELECTION.
SORT T_USER BY MANDT.
PERFORM DISPLAY_LIST.
ENDIF.
ENDIF.
* End of line-selection

*&---------------------------------------------------------------------*
*& Form DISPLAY_LIST
*&---------------------------------------------------------------------*
FORM DISPLAY_LIST.
SY-LSIND = 0.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
LOOP AT T_USER.
WRITE: / SY-VLINE, T_USER-SELECTION AS CHECKBOX,
SY-VLINE, T_USER-MANDT,
SY-VLINE, T_USER-BNAME,
SY-VLINE, T_USER-NAME_FIRST(15),
SY-VLINE, T_USER-NAME_LAST(15),
SY-VLINE, T_USER-DEPARTMENT(20),
SY-VLINE, T_USER-TEL_NUMBER(20), SY-VLINE.
HIDE: T_USER-COUNTER, T_USER-SELECTION.
ENDLOOP.
FORMAT COLOR OFF.
WRITE: /(108) SY-ULINE.
ENDFORM. " DISPLAY_LIST

*&---------------------------------------------------------------------*
*& Form DISPLAY_MENU
*&---------------------------------------------------------------------*
FORM DISPLAY_MENU.
FORMAT COLOR COL_HEADING HOTSPOT.
WRITE: (91) SY-ULINE,
/ SY-VLINE NO-GAP, (4) ICON_SELECT_ALL NO-GAP, 'Select All',
SY-VLINE NO-GAP, (4) ICON_DESELECT_ALL NO-GAP, 'Deselect All',
SY-VLINE NO-GAP, (4) ICON_SHORT_MESSAGE NO-GAP, 'Send Popup',
SY-VLINE NO-GAP, (4) ICON_SORT_UP NO-GAP, 'Last Name' NO-GAP,
SY-VLINE NO-GAP, (4) ICON_SORT_UP NO-GAP, 'First Name' NO-GAP,
SY-VLINE NO-GAP, (4) ICON_SORT_UP NO-GAP, 'Client' NO-GAP,
SY-VLINE,
/(91) SY-ULINE,
/(108) SY-ULINE.
FORMAT HOTSPOT OFF.

WRITE: / SY-VLINE, ' ',
SY-VLINE, 'Cli',
SY-VLINE, 'User ',
SY-VLINE, 'First Name ',
SY-VLINE, 'Last Name ',
SY-VLINE, 'Department ',
SY-VLINE, 'Telephone ',
SY-VLINE,
/(108) SY-ULINE.
FORMAT COLOR OFF.
ENDFORM. " DISPLAY_MENU

*&---------------------------------------------------------------------*
*& Form TRANSFER_SELECTION
*&---------------------------------------------------------------------*
FORM TRANSFER_SELECTION.
DO.
READ LINE SY-INDEX FIELD VALUE T_USER-SELECTION.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
MODIFY T_USER TRANSPORTING SELECTION
WHERE COUNTER = T_USER-COUNTER.
ENDDO.
CLEAR T_USER.
ENDFORM. " TRANSFER_SELECTION

*&---------------------------------------------------------------------*
*& Form POPUP_MSG
*&---------------------------------------------------------------------*
FORM POPUP_MSG.
DATA: L_MSG LIKE SM04DIC-POPUPMSG VALUE 'Experimental Message',
L_LEN TYPE I,
L_RET TYPE C.

LOOP AT T_USER WHERE SELECTION = 'X'.
PERFORM GET_MESSAGE CHANGING L_MSG L_RET.
EXIT.
ENDLOOP.
IF L_RET = 'A'. "User cancelled the message
EXIT.
ENDIF.
* Get the message text
L_LEN = STRLEN( L_MSG ).
LOOP AT T_USER WHERE SELECTION = 'X'.
CALL FUNCTION 'TH_POPUP'
EXPORTING
CLIENT = T_USER-MANDT
USER = T_USER-BNAME
MESSAGE = L_MSG
MESSAGE_LEN = L_LENGTH
* CUT_BLANKS = ' '
EXCEPTIONS
USER_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
WRITE: 'User ', T_USER-BNAME, 'not found.'.
ENDIF.
ENDLOOP.
IF SY-SUBRC <> 0.
* Big error! No user has been selected.
MESSAGE ID 'AT' TYPE 'E' NUMBER '315' WITH
'No user selected!'.
EXIT.
ENDIF.
ENDFORM. " POPUP_MSG
*&---------------------------------------------------------------------*
*& Form GET_MESSAGE
*&---------------------------------------------------------------------*
FORM GET_MESSAGE CHANGING P_L_MSG LIKE SM04DIC-POPUPMSG
P_RETURNCODE TYPE C.
DATA: BEGIN OF FIELDS OCCURS 1.
INCLUDE STRUCTURE SVAL.
DATA: END OF FIELDS,
RETURNCODE TYPE C.

FIELDS-TABNAME = 'SM04DIC'.
FIELDS-FIELDNAME = 'POPUPMSG'.
FIELDS-FIELDTEXT = 'Message :'.
CONCATENATE ' - Msg from' SY-UNAME '.' INTO FIELDS-VALUE SEPARATED
BY ' '.
APPEND FIELDS.

CALL FUNCTION 'POPUP_GET_VALUES'
EXPORTING POPUP_TITLE = 'Supply the popup message'

IMPORTING RETURNCODE = P_RETURNCODE
TABLES FIELDS = FIELDS.

IF P_RETURNCODE = 'A'.
EXIT.
ELSE.
READ TABLE FIELDS INDEX 1.
P_L_MSG = FIELDS-VALUE.
ENDIF.
ENDFORM. " GET_MESSAGE
*-- End of Program

ABAP Pop-out box for user confirmation

* To pop-out a box for the user to confirm
*
* Written by :
*
REPORT ZPOPUPCONFIRM.

DATA: X_ANS(1) TYPE C.

call function 'POPUP_TO_CONFIRM_STEP'
exporting
* DEFAULTOPTION = 'Y'
textline1 = 'Do you want to continue'
* TEXTLINE2 = ' '
titel = 'Please Confirm'
* START_COLUMN = 25
* START_ROW = 6
* CANCEL_DISPLAY = 'X'
IMPORTING
ANSWER = X_ANS.

WRITE: / X_ANS.

*-- End of Program

sap ABAP program for POP-UP Window

You had 1 button in the application toolbar of the selection screen, when you click that button, a pop-up window should be displayed containing 3 fields. the data to be displayed depends on the values entered by the user.

1) How to get the pop-up window? Is there any func. module is there?

2) and how to get the fields in the pop-up window? if any func. module is there , what are the parameters to be passed?

USE THIS fm POPUP_TO_DECIDE_INFO .

Parameters required for this FM is the Text you require to display on the popup window.

Two buttons automatically comes on this window a Tick and a x sign if you click tick the output varaible ANSWER is J else it is A .

or

See the below Example:

AT SELECTION-SCREEN ON VALUE-REQUEST FOR SEL_NBA-LOW.
PERFORM ZNEW_VALUE_HELP_NBA.

FORM ZNEW_VALUE_HELP_NBA.

SELECT DISTINCT ZBAREA FROM ZDIVNBABU INTO TABLE ITAB_NBA.

CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
EXPORTING
ENDPOS_COL = 30
ENDPOS_ROW = 40
STARTPOS_COL = 20
STARTPOS_ROW = 30
TITLETEXT = 'Please Choose Your Entry'
IMPORTING
CHOISE = COUNTS
TABLES
VALUETAB = ITAB_NBA
EXCEPTIONS
BREAK_OFF = 1
OTHERS = 2.
IF COUNTS NE 0.
READ TABLE ITAB_NBA INDEX COUNTS.
SEL_NBA-LOW = ITAB_NBA-ZBAREA.
ENDIF.
CLEAR :ITAB_NBA,COUNTS.REFRESH:ITAB_NBA.

ENDFORM. " ZNEW_VALUE_HELP_NBA

Blog Archive