SAP ABAP : Blocking Searchhelp and Create New Searchhelp

How to block a pre-existing search help and create new search help which contains the old ones data and the new one which entered now.

Look at this statement .

parameters :p_pernr like pa0001-pernr MATCHCODE OBJECT new_search.

If you define like this previous search help is gone.

You have to create new search help into the dictionary .

or else .



parameters :p_pernr like pa0001-pernr

define like this
use this event

AT Selection-screen on p_pernr.

under this event call this function module and pass required data .

F4IF_FIELD_VALUE_REQUEST
* F4 help also returning the value to be displayed in internal table

F4IF_INT_TABLE_VALUE_REQUEST
Read More......

SAP ABAP : Attach a Search Help to the Screen Field

I have a requirement to attach a search help to the screen field. When I click on the drop-down list, it should automatically pick the company code that is already displayed on the screen and show the results.

It dosent make any sense for search help to wait for user to input the same company code which is already displayed.

Use this functionality to get help.

FORM HELP_CHECK.


*-- Set up fields to retrieve data

ltab_fields-tabname = 'ZFI_PMNTADV'.
ltab_fields-fieldname = 'CHECT'.
ltab_fields-selectflag = 'X'.
APPEND ltab_fields.

ltab_fields-tabname = 'ZFI_PMNTADV'.
ltab_fields-fieldname = 'PMNT_ADV'.
ltab_fields-selectflag = 'X'.
APPEND ltab_fields.

SORT ltab_fields.
DELETE ADJACENT DUPLICATES FROM ltab_fields.

*-- Fill values
SELECT chect
INTO TABLE ltab_values
FROM zfi_pmntadv
WHERE pmnt_adv NE space.
SORT ltab_values.
DELETE ADJACENT DUPLICATES FROM ltab_values.

CALL FUNCTION 'HELP_VALUES_GET_WITH_TABLE'
EXPORTING
fieldname = 'chect'
tabname = 'zfi_pmntadv'
title_in_values_list = 'Select a value'
IMPORTING
select_value = so_chect
TABLES
fields = ltab_fields
valuetab = ltab_values
EXCEPTIONS
field_not_in_ddic = 01
more_then_one_selectfield = 02
no_selectfield = 03.


ENDFORM. "fiscal_year
Read More......

Splash Screen in ABAP



I created 2 MODAL screens 0806 & 2009
0806 was for start of job spash & 20009 was an exit SPLASH
Used this effectively in a lrge DOI Excel download program..

2 JPG files with a nice Indian Welcome & fancy Bengali Text!
Each Modal scren had 2 Containers
CUSTOM_1 shaped for Picture control
CUSTOM_2 for CL_GUI_TIMER control



* Create 2 MODAL screens 0806 and 2009
* 1 CUSTOM_1 shaped to hold JPG
* and 1 CUSTOM_2 to hold TIMER


REPORT zpp_r012 LINE-SIZE 160
LINE-COUNT 72
MESSAGE-ID zpp01.

DATA: container1 TYPE REF TO cl_gui_custom_container,
container2 TYPE REF TO cl_gui_custom_container,
picture TYPE REF TO cl_gui_picture.

DATA: graphic_url(255),
g_result TYPE i,
g_linesz TYPE i,
g_filesz TYPE i,
g_name(100).

TYPES: t_graphic_line(256) TYPE x.

DATA: graphic_line TYPE t_graphic_line,
graphic_table TYPE TABLE OF t_graphic_line.


*---------------------------------------------------------------------*
* CLASS lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.

PUBLIC SECTION.
CLASS-METHODS: on_finished FOR EVENT finished OF cl_gui_timer.
ENDCLASS. "lcl_event_handler DEFINITION

*---------------------------------------------------------------------*
* CLASS lcl_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
METHOD on_finished.
IF sy-dynnr = 2009.
LEAVE PROGRAM.
ELSE.
PERFORM f_excel_job.
ENDIF.
ENDMETHOD. "on_finished
ENDCLASS. "lcl_event_handler IMPLEMENTATION

DATA timer TYPE REF TO cl_gui_timer.
DATA event_handler TYPE REF TO lcl_event_handler.
DATA timeout TYPE i VALUE '3'.

*&---------------------------------------------------------------------*
* SELECTION-SCREEN DESIGN
*
*&---------------------------------------------------------------------*
SELECTION-SCREEN: BEGIN OF BLOCK b2sels WITH FRAME TITLE text-002.
PARAMETERS: pwerks LIKE mseg-werks OBLIGATORY, "THIS Plant
pbudat LIKE mkpf-budat OBLIGATORY. "THIS Date
SELECTION-SCREEN: END OF BLOCK b2sels.

*&---------------------------------------------------------------------*
* INITIALIZATION EVENT
*
*&---------------------------------------------------------------------*
INITIALIZATION.

*&---------------------------------------------------------------------*
* AT SELECTION-SCREEN EVENT
*
*&---------------------------------------------------------------------*
**Use this EVENT to validate SELECTION-SCREEN
AT SELECTION-SCREEN.


*&---------------------------------------------------------------------*
* START-OF-SELECTION EVENT
*
*&---------------------------------------------------------------------*
START-OF-SELECTION.

CALL SCREEN 0806 STARTING AT 30 4.

*&---------------------------------------------------------------------*
*& Form f_excel_job
*&---------------------------------------------------------------------*
FORM f_excel_job.

* LOTS of Code

CALL SCREEN 2009 STARTING AT 30 4.

ENDFORM. "f_excel_job

** LOTS of CODE

*&---------------------------------------------------------------------*
*& Form getpicurl
*&---------------------------------------------------------------------*
FORM getpicurl.

OPEN DATASET g_name FOR INPUT IN BINARY MODE.

REFRESH graphic_table.
CLEAR g_filesz.

DO.
CLEAR graphic_line.
READ DATASET g_name INTO graphic_line ACTUAL LENGTH g_linesz.

ADD g_linesz TO g_filesz.

APPEND graphic_line TO graphic_table.
IF sy-subrc <> 0.
EXIT.
ENDIF.

ENDDO.

CLOSE DATASET g_name.

CLEAR graphic_url.

CALL FUNCTION 'DP_CREATE_URL'
EXPORTING
type = 'IMAGE'
subtype = 'GIF'
TABLES
data = graphic_table
CHANGING
url = graphic_url
EXCEPTIONS
dp_invalid_parameter = 1
dp_error_put_table = 2
dp_error_general = 3
OTHERS = 4.


IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.


IF graphic_url IS NOT INITIAL.

CALL METHOD picture->clear_picture
EXCEPTIONS
error = 1.

CALL METHOD picture->load_picture_from_url
EXPORTING
url = graphic_url
IMPORTING
RESULT = g_result.

CALL METHOD picture->set_display_mode
EXPORTING
display_mode = picture->display_mode_normal_center
EXCEPTIONS
error = 1.

CALL METHOD cl_gui_cfw=>update_view.
ENDIF.

ENDFORM. "getpicurl

*---------------------------------------------------------------------*
* MODULE zjncpbo OUTPUT screen 0806
*---------------------------------------------------------------------*
MODULE zjncpbo OUTPUT.

MOVE 'NAMASTE.JPG' TO g_name.

CREATE OBJECT: container1 EXPORTING container_name = 'CUSTOM_1',
container2 EXPORTING container_name = 'CUSTOM_2',
picture EXPORTING parent = container1,
timer EXPORTING parent = container2.

SET HANDLER lcl_event_handler=>on_finished FOR timer.

* Start Timer
timer->interval = timeout.
CALL METHOD timer->run.

PERFORM getpicurl.

CALL METHOD cl_gui_cfw=>flush.

ENDMODULE. " PBO

*---------------------------------------------------------------------*
* MODULE zjncpbo2 OUTPUT screen 2009
*---------------------------------------------------------------------*
MODULE zjncpbo2 OUTPUT.

MOVE 'THANKS.JPG' TO g_name.

CREATE OBJECT: container1 EXPORTING container_name = 'CUSTOM_1',
container2 EXPORTING container_name = 'CUSTOM_2',
picture EXPORTING parent = container1,
timer EXPORTING parent = container2.

SET HANDLER lcl_event_handler=>on_finished FOR timer.

* Start Timer
timer->interval = timeout.
CALL METHOD timer->run.

PERFORM getpicurl.

CALL METHOD cl_gui_cfw=>flush.

ENDMODULE.
Read More......

What is the difference between SY-UCOMM and OK_CODE in Dialog Program?

sy-ucomm is for doing the functions what the user wishes to do at that particular event. You use it in menus and other place . this mainly in using

ok_code is generally used in screen as of I have used. You will define the function in the screen. and you can use it in the main program.

ok_code acts just as a temporary variable that stores the value of sy-ucomm.


When user interacts with the screen elements, the function code that you have assigned is filled in the sy-ucomm field which is turn gets reflected in OK_CODE.

In your ABAP programs, you should work with the OK_CODE field instead of SY-UCOMM. There are two reasons for this: Firstly, the ABAP program has full control over fields declared within it, and secondly, you should never change the value of an ABAP system field. However, you should also always initialize the OK_CODE field in an ABAP program for the following reason:

In the same way that the OK_CODE field in the ABAP program and the system field SY-UCOMM receive the contents of the corresponding screen fields in the PAI event, their contents are also assigned to the OK_CODE screen field and system field SYST-UCOMM in the PBO event. Therefore, you must clear the OK_CODE field in the ABAP program to ensure that the function code of a screen is not already filled in the PBO event with an unwanted value. This is particularly important when the next PAI event can be triggered with an empty function code (for example, using ENTER). Empty function codes do not affect SY-UCOMM or the OK_CODE field, and consequently, the old field contents are transported.
Read More......

Change the Input Fields Dynamically in a Screen ABAP Dialog Programming

ABAP Dialog Programming Questions:

How to change the input fields dynamically in a screen which consists of 9 text fields?
Moreover the user must not enter values in some of the input fields where the values are given.

1.If you want to change the input fields on some user input then use 'user-command ac' after the field on which you want the action.
2.Specify the modif id 'xxx' for each screen object.


3.Then in the event 'AT SELECTION-SCREEN ON OUTPUT' loop at screen. check the screen-group1(modif id ) of screen objects and change the status of the object.
4.You can view all the screen attribute from se11.

The following example may help you:

SELECTION-SCREEN BEGIN OF BLOCK 001.
PARAMETERS: P_MRU RADIOBUTTON GROUP SEL DEFAULT 'X' USER-COMMAND AC,
P_PART RADIOBUTTON GROUP SEL.
SELECT-OPTIONS P1 FOR MODIF ID PRT.
SELECT-OPTIONS G1 FOR MODIF ID MRU.
SELECTION-SCREEN END OF BLOCK 001.

AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF P_MRU = 'X'.
IF SCREEN-GROUP1 = 'PRT'.
SCREEN-INPUT = '0'.
ENDIF.
IF SCREEN-GROUP1 = 'MRU'.
SCREEN-INPUT = '1'.
ENDIF.
ELSEIF P_PART = 'X'.
IF SCREEN-GROUP1 = 'MRU'.
SCREEN-INPUT = '0'.
ENDIF.
IF SCREEN-GROUP1 = 'PRT'.
SCREEN-INPUT = '1'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
Read More......
 

blogger templates