2007 Apr 18 7:33 AM
Hello Gurus!!!
Could you please give me some code related to search help.
Thanks in advance,
Sachin
Hello Gurus!!!
Could you please give me some code related to search help.
Thanks in advance,
Sachin
2007 Apr 18 8:36 AM
Hi,
part of an search-function in sales.
IF callcontrol-step = 'SELONE'.
MOVE 'A' TO trvog. " Default only, no sense.
IF sy-linsz NE 0. " Believe or not: the only way to
DATA vtvid LIKE sy-repid. " determine in change/create mod.
GET PARAMETER ID 'VTV' FIELD vtvid. " for case we are in popup
MOVE vtvid TO trvog.
ELSE.
TABLES: t180. " get trvog from table t180
SELECT SINGLE * FROM t180 WHERE tcode = sy-tcode.
IF sy-subrc EQ 0.
IF t180-trvog CA '0123456789'.
trvog = t180-trvog.
ENDIF.
ENDIF.
ENDIF.
IF trvog CA '0123456789'.
DELETE shlp_tab WHERE shlpname = 'VMVAD'.
DELETE shlp_tab WHERE shlpname = 'VMVAH'.
IF trvog > 3. " for transactiongroup > 3
DELETE shlp_tab WHERE shlpname = 'VMVAC'.
DELETE shlp_tab WHERE shlpname = 'VMVAF'.
DELETE shlp_tab WHERE shlpname = 'VMVAM'.
ENDIF.
IF trvog < 3. " for transactiongroup < 3
DELETE shlp_tab WHERE shlpname = 'VMVAB'.
ENDIF.
IF trvog EQ 2. " transactiongroup 2
DELETE shlp_tab WHERE shlpname = 'VMVAF'.
ENDIF.
IF trvog NE 4. " not transactiongroup 4
DELETE shlp_tab WHERE shlpname = 'VMVAI'.
ENDIF.
trvogmod = trvog MOD 2.
IF trvogmod NE 0. " just transactiongroup 0, 2, 4
DELETE shlp_tab WHERE shlpname = 'VMVAF'.
DELETE shlp_tab WHERE shlpname = 'VMVAN'.
ENDIF.
ENDIF.
ENDIF.
*==================NL
IF callcontrol-step = 'PRESEL1'.
IF callcontrol-step EQ 'DISP'.
exit.
break loreni1.
*
Matnr Offset/Länge lesen
READ TABLE shlp-fielddescr INTO ld_dfies_wa
WITH KEY fieldname = 'MATNR'.
IF sy-subrc IS INITIAL.
i = sy-tabix.
ld_offset_matnr = ld_dfies_wa-offset.
ld_leng_matnr = ld_dfies_wa-leng.
Material nur 13 Stellen anzeigen
ld_dfies_wa-outputlen = 16.
MODIFY shlp-fielddescr FROM ld_dfies_wa INDEX i.
ENDIF.
Matnr Offset/Länge lesen
READ TABLE shlp-fielddescr INTO ld_dfies_wa
WITH KEY fieldname = 'ERNAM'.
IF sy-subrc IS INITIAL.
i = sy-tabix.
ld_offset_ernam = ld_dfies_wa-offset.
ld_leng_ernam = ld_dfies_wa-leng.
Material nur 13 Stellen anzeigen
ld_dfies_wa-outputlen = 8.
MODIFY shlp-fielddescr FROM ld_dfies_wa INDEX i.
ENDIF.
vbeln Offset/Länge lesen
READ TABLE shlp-fielddescr INTO ld_dfies_wa
WITH KEY fieldname = 'VBELN'.
IF sy-subrc IS INITIAL.
i = sy-tabix.
ld_offset_vbeln = ld_dfies_wa-offset.
ld_leng_vbeln = ld_dfies_wa-leng.
Material nur 13 Stellen anzeigen
ld_dfies_wa-outputlen = 16.
MODIFY shlp-fielddescr FROM ld_dfies_wa INDEX i.
ENDIF.
Posnr Offset/Länge lesen
READ TABLE shlp-fielddescr INTO ld_dfies_wa
WITH KEY fieldname = 'POSNR'.
IF sy-subrc IS INITIAL.
i = sy-tabix.
ld_offset_posnr = ld_dfies_wa-offset.
ld_leng_posnr = ld_dfies_wa-leng.
Material nur 13 Stellen anzeigen
ld_dfies_wa-outputlen = 16.
MODIFY shlp-fielddescr FROM ld_dfies_wa INDEX i.
ENDIF.
Langtext Offset/Länge lesen, Überschrift ändern
READ TABLE shlp-fielddescr INTO ld_dfies_wa
WITH KEY fieldname = 'ABGRU'.
IF sy-subrc IS INITIAL.
i = sy-tabix.
i = '14'.
ld_offset_ltext = ld_dfies_wa-offset.
ld_leng_ltext = ld_dfies_wa-leng.
ld_offset_ltext = '5'.
*ld_leng_ltext = '10'.
ld_dfies_wa-reptext = 'Absagegrund'.
ld_dfies_wa-scrtext_s = 'Absagegr'.
ld_dfies_wa-scrtext_m = 'Absagegrund'.
ld_dfies_wa-scrtext_l = 'Absagegrund'.
MODIFY shlp-fielddescr FROM ld_dfies_wa INDEX i.
LOOP AT record_tab.
break loreni1.
ENDLOOP.
ENDIF.
Implemented under SE11 / Searchfunction-Exit
Regards
Nicole
2007 Apr 19 6:54 AM
Hi,
I think you want a code for a dynamic search help. So i have i sample code here where you get the Fiscal Year(TXT_FISYR) based on the document number (TXT_DOCNO).This code is for the module pool program
Before the module you need to create an internal table which will hold the results of the Search help query you write.
Also these declarations must be made in the main program:-
DATA: progname TYPE sy-repid,
dynnum TYPE sy-dynnr,
dynpro_values TYPE TABLE OF dynpread,
field_value LIKE LINE OF dynpro_values.
you need to declare the below module in the flow logic of the screen in the process on value-request block and it is like this:-
PROCESS ON VALUE-REQUEST.
FIELD TXT_FISYR MODULE VALUE_GJAHR.
then you can double click and get the module in the main program
MODULE VALUE_GJAHR INPUT.
progname = sy-repid.
dynnum = sy-dynnr.
CLEAR: field_value, dynpro_values.
field_value-fieldname = 'TXT_DOCNO'.
APPEND field_value TO dynpro_values.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = 'BKPF'
fieldname = 'BELNR'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'TXT_DOCNO'.
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 BUKRS BELNR GJAHR
FROM BKPF
INTO CORRESPONDING FIELDS OF TABLE it_doc1
WHERE BELNR = field_value-fieldvalue.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'GJAHR'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'TXT_FISYR'
value_org = 'S'
TABLES
value_tab = it_doc1.
ENDMODULE. " VALUE_GJAHR INPUT
********************************************************************************************
In case you want a simple search help then you can create it in SAP transaction SE11 and then assign it to the field in the module pool program in the Dict tab in attributes of the field.
2007 Apr 19 7:20 AM
Hi ,
Plz go through this program.
TYPES: BEGIN OF ty_sectgrp,
sectgrp TYPE zpat003_sector-sectgrp, "Sector group
END OF ty_sectgrp,
BEGIN OF ty_sector,
sector TYPE zpat003_sector-sector, "Sector
END OF ty_sector,
BEGIN OF ty_level,
zcode TYPE zpat001_f4help-zcode,
ztext TYPE zpat001_f4help-ztext,
END OF ty_level,
DATA : it_sectgrp TYPE TABLE OF ty_sectgrp,
it_sector TYPE TABLE OF ty_sector,
it_level TYPE TABLE OF ty_level,
iit_secgr TYPE TABLE OF dynpread,
it_sector1 TYPE TABLE OF ty_sector.
DATA : gw_retfield TYPE dfies-fieldname,
gw_dynprofield TYPE help_info-dynprofld.
****WA_DISP is the workarea of the final internal table IT_DISP.
****WA_FCAT is the workarea of the field catalog IT_FCAT.
DATA: wa_secgr TYPE dynpread,
wa_sectgrp TYPE ty_sectgrp.
----
PARAMETERS pr_* *
----
SELECTION-SCREEN BEGIN OF BLOCK bcp WITH FRAME TITLE text-001.
Parameters of Sector group,Sector,Level and Year respectively.
PARAMETERS : pr_secgr TYPE p0001-zz_sectgrp OBLIGATORY,
pr_sect TYPE p0001-zz_sector OBLIGATORY,
pr_year TYPE t549q-pabrj OBLIGATORY.
select-options : so_level for p0001-zz_level0001 no intervals.
SELECTION-SCREEN END OF BLOCK bcp.
************************************************************************
Initialisation *
*
************************************************************************
INITIALIZATION.
REFRESH it_sectgrp.
SELECT sectgrp
FROM zpat003_sector
INTO TABLE it_sectgrp
WHERE sectgrp <> space.
SORT it_sectgrp BY sectgrp.
DELETE ADJACENT DUPLICATES FROM it_sectgrp.
wa_secgr-fieldname = c_sgrp.
APPEND wa_secgr TO it_secgr.
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST *
*
************************************************************************
****To obtain F4 help for the parameters in the selction screen
****F4 for Sector group in selection screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pr_secgr.
gw_retfield = c_sectgrp.
gw_dynprofield = c_sgrp.
PERFORM f008_get_help_values TABLES it_sectgrp
CHANGING gw_retfield gw_dynprofield.
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST *
*
************************************************************************
***F4 for Sector in selection screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pr_sect.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = it_secgr.
READ TABLE it_secgr INTO wa_secgr INDEX 1.
REFRESH it_sector.
IF wa_secgr-fieldvalue IS NOT INITIAL.
SELECT sector
FROM zpat003_sector
INTO TABLE it_sector
WHERE sectgrp = wa_secgr-fieldvalue.
ELSE.
SELECT sector
FROM zpat003_sector
INTO TABLE it_sector
WHERE sectgrp <> space.
ENDIF.
SORT it_sector BY sector.
DELETE ADJACENT DUPLICATES FROM it_sector.
gw_retfield = c_sect.
gw_dynprofield = c_sector.
PERFORM f008_get_help_values TABLES it_sector
CHANGING gw_retfield gw_dynprofield .
************************************************************************
AT SELECTION-SCREEN *
*
************************************************************************
AT SELECTION-SCREEN.
if pnppersg-low is not initial.
find pnppersg-low in sy-abcde+0(8).
if sy-subrc is not initial.
message 'Enter the valid Employee Group' type 'E'.
endif.
endif.
CLEAR wa_sectgrp.
READ TABLE it_sectgrp INTO wa_sectgrp WITH KEY sectgrp = pr_secgr.
IF wa_sectgrp IS INITIAL.
MESSAGE text-042 TYPE c_e.
ENDIF.
REFRESH it_sector1.
SELECT sector
FROM zpat003_sector
INTO TABLE it_sector1
WHERE sectgrp = pr_secgr
AND sector = pr_sect.
IF it_sector1 IS INITIAL.
MESSAGE text-043 TYPE c_e.
ENDIF.
****F4 for Level in selection screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_level-low.
SELECT zcode ztext
FROM zpat001_f4help
INTO TABLE it_level
WHERE zfield = c_zlevel.
SORT it_level BY zcode.
DELETE ADJACENT DUPLICATES FROM it_level.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = c_zcode
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = c_prlevel
value_org = c_s
TABLES
value_tab = it_level
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc IS NOT INITIAL.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
&----
*& Form f008_get_help_values
&----
To get F4 help for parameters dynamically
----
FORM f008_get_help_values TABLES p_value_tab
CHANGING p_retfield TYPE dfies-fieldname
p_dynprofield TYPE help_info-dynprofld.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = p_retfield
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = p_dynprofield
value_org = c_s
TABLES
value_tab = p_value_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc IS NOT INITIAL.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " f008_get_help_values
Rewards some points.
Rgds,
P.Naganjana Reddy
2011 Aug 08 4:04 PM
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |