SAP搜索帮助
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SAP搜索帮助
搜索帮助增强
增加各公司代码中的银行科目
先找到集中搜索帮助SAKO
F-02
/ H
在里面添加个基本搜索帮助ZR000SH_FI016
注意: 对话类型要设置成C
注意:参数要匹配
点param.assignment
把BUKRS去掉只留最终输出的SAKNR 有两张方法:
方法一\ 用视图创建
这种方法做不需要取数, 视图就是数据源只需在DISP里面就OK了
最终的数据放在表record_tab DATA:BEGIN OF t_tab OCCURS0, bukrs LIKE t001-bukrs,
saknr LIKE ska1-saknr,
txt50 LIKE skat-txt50,
END OF t_tab.
DATA: t_itab LIKE t_tab OCCURS0WITH HEADER LINE.
DATA:BEGIN OF t_table OCCURS0,
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 OCCURS0WITH HEADER LINE.
DATA: BEGIN OF t_temp OCCURS10 .
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-shlpfiel d = '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 FIELD S OF TABLE t_tab
* FROM ska1
* INNER JOIN skat ON ska1~mandt = skat~mandt AND ska1~ktopl = sk at~ktopl AND ska1~saknr = skat~saknr AND skat~spras = sy-langu
* INNER JOIN skb1 ON ska1~mandt = skb1~mandt AND ska1~saknr = sk b1~saknr
* INNER JOIN t001 ON t001~ktopl = ska1~ktopl AND t001~mandt = sk b1~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'" Re ference to search help parameter TABLES
shlp_tab = shlp_tab " R eference 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'" Re ference to search help parameter
TABLES
shlp_tab = shlp_tab " R eference 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 = skb 1~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 = t0 12~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_ita b-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 OCCURS0,
BUKRS LIKE T001-BUKRS,
SAKNR LIKE SKAT-SAKNR,
TXT50 LIKE SKAT-TXT50,
END OF TEXT_TAB.
DATA: T_ITAB LIKE TEXT_TAB OCCURS0WITH 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.。