SAP搜索帮助.docx
《SAP搜索帮助.docx》由会员分享,可在线阅读,更多相关《SAP搜索帮助.docx(11页珍藏版)》请在冰豆网上搜索。
![SAP搜索帮助.docx](https://file1.bdocx.com/fileroot1/2023-2/11/8b106fcd-620a-46c7-894b-d0169efdf732/8b106fcd-620a-46c7-894b-d0169efdf7321.gif)
SAP搜索帮助
搜索帮助增强
增加各公司代码中的银行科目
先找到集中搜索帮助SAKO
F-02
/H
在里面添加个基本搜索帮助ZR000SH_FI016
注意:
对话类型要设置成C
注意:
参数要匹配
点param.assignment
把BUKRS去掉只留最终输出的SAKNR
有两张方法:
方法一\用视图创建
这种方法做不需要取数,视图就是数据源
只需在DISP里面就OK了
最终的数据放在表record_tab
DATA:
BEGIN OF t_tab OCCURS 0,
bukrs LIKE t001-bukrs,
saknr LIKE ska1-saknr,
txt50 LIKE skat-txt50,
END OF t_tab.
DATA:
t_itab LIKE t_tab OCCURS 0 WITH HEADER LINE.
DATA:
BEGIN OF t_table OCCURS 0,
bukrs LIKE t001-bukrs,
saknr LIKE skb1-saknr,
hktid LIKE t012k-hktid, "标识
text1 LIKE t012t-text1, "描述
* refzl LIKE t012k-refzl, "专户
* banka LIKE bnka-banka, "银行名称
* bankl LIKE bnka-bankl, "银行号码
END OF t_table.
DATA:
t_table1 LIKE t_table OCCURS 0 WITH HEADER LINE.
DATA:
BEGIN OF t_temp OCCURS 10 .
INCLUDE STRUCTURE seahlpres.
DATA:
END OF t_temp.
DATA:
wa_shlp LIKE LINE OF shlp-selopt.
DATA:
g_string(14),
* g_string(50),
g_t TYPE i.
RANGES:
s_bukrs FOR t001-bukrs,
s_saknr FOR skat-saknr.
FIELD-SYMBOLS:
LIKE LINE OF t_tab.
* EXIT immediately, if you do not want to handle this step
IF callcontrol-step <> 'SELONE' AND
callcontrol-step <> 'SELECT' AND
" AND SO ON
callcontrol-step <> 'DISP'.
EXIT.
ENDIF.
IF callcontrol-step = 'SELONE'.
* PERFORM SELONE .........
EXIT.
ENDIF.
IF callcontrol-step = 'SELECT'.
ENDIF.
IF callcontrol-step = 'DISP'.
* CLEAR wa_shlp.
* LOOP AT shlp-selopt INTO wa_shlp.
* IF wa_shlp-shlpname = 'ZR000SH_FI016' AND wa_shlp-shlpfield = 'BUKRS'.
* s_bukrs-sign = 'I'.
* s_bukrs-option = 'EQ'.
* s_bukrs-low = wa_shlp-low.
* s_bukrs-high = wa_shlp-high.
* APPEND s_bukrs.
* ELSEIF wa_shlp-shlpname = 'ZR000SH_FI016' AND wa_shlp-shlpfield = 'SAKNR'.
* s_saknr-sign = 'I'.
* s_saknr-option = 'EQ'.
* s_saknr-low = wa_shlp-low.
* s_saknr-high = wa_shlp-high.
* APPEND s_bukrs.
* ENDIF.
*
* CLEAR wa_shlp.
* ENDLOOP.
*
* SELECT t001~bukrs ska1~saknr skat~txt50 INTO CORRESPONDING FIELDS OF TABLE t_tab
* FROM ska1
* INNER JOIN skat ON ska1~mandt = skat~mandt AND ska1~ktopl = skat~ktopl AND ska1~saknr = skat~saknr AND skat~spras = sy-langu
* INNER JOIN skb1 ON ska1~mandt = skb1~mandt AND ska1~saknr = skb1~saknr
* INNER JOIN t001 ON t001~ktopl = ska1~ktopl AND t001~mandt = skb1~mandt AND t001~bukrs = skb1~bukrs
* WHERE t001~bukrs IN s_bukrs
* AND skat~saknr IN s_saknr.
CALL FUNCTION 'F4UT_PARAMETER_VALUE_GET'
EXPORTING
parameter = 'BUKRS'
fieldname = 'BUKRS' " Reference to search help parameter
TABLES
shlp_tab = shlp_tab " Reference to field of Seatinfo
record_tab = record_tab
results_tab = t_itab
CHANGING
shlp = shlp
callcontrol = callcontrol.
CALL FUNCTION 'F4UT_PARAMETER_VALUE_GET'
EXPORTING
parameter = 'SAKNR'
fieldname = 'SAKNR' " Reference to search help parameter
TABLES
shlp_tab = shlp_tab " Reference to field of Seatinfo
record_tab = record_tab
results_tab = t_itab
CHANGING
shlp = shlp
callcontrol = callcontrol.
CALL FUNCTION 'F4UT_PARAMETER_VALUE_GET'
EXPORTING
parameter = 'TXT50'
fieldname = 'TXT50' " Reference to search help parameter
TABLES
shlp_tab = shlp_tab " Reference to field of Seatinfo
record_tab = record_tab
results_tab = t_itab
CHANGING
shlp = shlp
callcontrol = callcontrol.
CLEAR t_itab.
SELECT skb1~bukrs skb1~saknr t012k~hktid t012t~text1 "bnka~banka bnka~bankl
INTO CORRESPONDING FIELDS OF TABLE t_table1
FROM skb1
INNER JOIN t012 ON t012~bukrs = skb1~bukrs AND t012~hbkid = skb1~hbkid
INNER JOIN t012k ON t012k~bukrs = t012~bukrs AND t012k~hbkid = t012~hbkid "AND t012k~hktid = t012~hktid
INNER JOIN t012t ON t012t~bukrs = t012k~bukrs AND t012t~hbkid = t012k~hbkid AND t012t~hktid = t012k~hktid
* INNER JOIN bnka ON bnka~banks = t012~bukrs AND bnka~bankl = t012~bankl
FOR ALL entries IN t_itab
WHERE skb1~bukrs = t_itab-bukrs
AND skb1~saknr = t_itab-saknr.
LOOP AT t_itab.
READ TABLE t_table1 WITH KEY bukrs = t_itab-bukrs saknr = t_itab-saknr.
IF sy-subrc = 0.
t_table1-text1 = t_table1-text1+0(45).
CLEAR t_itab-txt50.
CONCATENATE t_table1-text1 t_table1-hktid INTO t_itab-txt50.
MODIFY t_itab.
ENDIF.
ENDLOOP.
* CLEAR record_tab.
* LOOP AT record_tab INTO t_temp.
* COLLECT t_temp.
* ENDLOOP.
*
* g_t = 0.
* LOOP AT t_temp.
* g_t = g_t + 1.
* read table t_itab index g_t.
* CLEAR t_temp-string.
* CONCATENATE t_itab-bukrs t_itab-saknr INTO g_string.
* t_temp-string+29(14) = g_string.
* t_temp-string+53(50) = t_itab-txt50.
* MODIFY t_temp.
* ENDLOOP.
* REFRESH record_tab.
* record_tab[] = t_temp[].
CLEAR record_tab.
REFRESH record_tab.
CALL FUNCTION 'F4UT_RESULTS_MAP'
* EXPORTING
* SOURCE_STRUCTURE = 'ZFUTEST1'
* APPLY_RESTRICTIONS = ' '
TABLES
shlp_tab = shlp_tab
record_tab = record_tab
source_tab = t_itab[]
CHANGING
shlp = shlp
callcontrol = callcontrol.
* ENDIF.
ENDIF.
ENDFUNCTION.
第二种方法、
建立数据库表
FUNCTION ZTEST_EXIT.
*"----------------------------------------------------------------------
*"*"Local interface:
*" TABLES
*" SHLP_TAB TYPE SHLP_DESCT
*" RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*" VALUE(SHLP) TYPE SHLP_DESCR
*" VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*"----------------------------------------------------------------------
* BREAK GAOWW.
* Local fields
DATA:
BEGIN OF TEXT_TAB OCCURS 0,
BUKRS LIKE T001-BUKRS,
SAKNR LIKE SKAT-SAKNR,
TXT50 LIKE SKAT-TXT50,
END OF TEXT_TAB.
DATA:
T_ITAB LIKE TEXT_TAB OCCURS 0 WITH HEADER LINE.
DATA:
WA_SHLP LIKE LINE OF SHLP-SELOPT.
RANGES:
S_BUKRS FOR T001-BUKRS,
S_SAKNR FOR SKAT-SAKNR.
FIELD-SYMBOLS:
LIKE LINE OF TEXT_TAB.
* EXIT immediately, if you do not want to handle this step
IF CALLCONTROL-STEP <> 'SELONE' AND
CALLCONTROL-STEP <> 'SELECT' AND
" AND SO ON
CALLCONTROL-STEP <> 'DISP'.
EXIT.
ENDIF.
IF CALLCONTROL-STEP = 'SELONE'.
* PERFORM SELONE .........
EXIT.
ENDIF.
CLEAR WA_SHLP.
LOOP AT SHLP-SELOPT INTO WA_SHLP.
IF WA_SHLP-SHLPNAME = 'ZSAKO' AND WA_SHLP-SHLPFIELD = 'BUKRS'.
S_BUKRS-SIGN = 'I'.
S_BUKRS-OPTION = 'EQ'.
S_BUKRS-LOW = WA_SHLP-LOW.
S_BUKRS-HIGH = WA_SHLP-HIGH.
APPEND S_BUKRS.
ELSEIF WA_SHLP-SHLPNAME = 'ZSAKO' AND WA_SHLP-SHLPFIELD = 'SAKNR'.
S_SAKNR-SIGN = 'I'.
S_SAKNR-OPTION = 'EQ'.
S_SAKNR-LOW = WA_SHLP-LOW.
S_SAKNR-HIGH = WA_SHLP-HIGH.
APPEND S_BUKRS.
ENDIF.
CLEAR WA_SHLP.
ENDLOOP.
IF CALLCONTROL-STEP = 'SELECT'.
ENDIF.
IF CALLCONTROL-STEP = 'DISP'.
SELECT T001~BUKRS SKAT~SAKNR SKAT~TXT50 INTO CORRESPONDING FIELDS OF TABLE TEXT_TAB
FROM SKAT
INNER JOIN T001 ON T001~KTOPL = SKAT~KTOPL
WHERE T001~BUKRS IN S_BUKRS
AND SKAT~SAKNR IN S_SAKNR
AND SKAT~SPRAS = SY-LANGU.
IF TEXT_TAB[] IS NOT INITIAL.
T_ITAB[] = TEXT_TAB[].
CLEAR RECORD_TAB.
REFRESH RECORD_TAB.
CALL FUNCTION 'F4UT_RESULTS_MAP'
* EXPORTING
* SOURCE_STRUCTURE = 'ZFUTEST1'
* APPLY_RESTRICTIONS = ' '
TABLES
SHLP_TAB = SHLP_TAB
RECORD_TAB = RECORD_TAB
SOURCE_TAB = TEXT_TAB[]
CHANGING
SHLP = SHLP
CALLCONTROL = CALLCONTROL.
ENDIF.
* EXIT.
ENDIF.
* callcontrol-step = 'DISP'.
ENDFUNCTION.