FPM 1.1正式版 Search & List
前面写的FPM都是自己练习用的。直到自己正式用了一个,才发现一些小问题。feeder class写在一起和分开写有好有坏,这里就不说了。
自己做了个小的查询报表如下:
现在来按SAP官方的做法来重新做练习。
一.整体结构:
1.search structure,feeder class,search event process
2.list structure,feeder class
3.Application Controller CLass
这是双主表查询,而且表名较长,沿用了前面练习里的转换模式,所以代码看起来繁琐些。
二:具体实施:
1.查询结构:
结果结构:
Controller的Feeder class:添加接口类,并激活下面的方法。
Search 的Feeder class:添加接口类,并激活下面的方法。
LIST的Feeder class:添加接口类,激活方法。
Search的Feeder class实现:
METHOD if_fpm_guibb_search~get_definition.
DATA:gt_field TYPE TABLE OF fpmgb_s_searchfield_descr,
gw_field TYPE fpmgb_s_searchfield_descr,
gt_value TYPE fpmgb_t_namevalue,
gw_value TYPE fpmgb_s_namevalue. DEFINE setv.
gw_value-value = &.
gw_value-name = &.
APPEND gw_value TO gt_value.
END-OF-DEFINITION. eo_field_catalog_attr ?= cl_abap_structdescr=>describe_by_name( 'ZCRMJP002' ).
"品牌下拉
gw_field-name = 'ZZZBRAND'.
SELECT line_key AS value value1 AS name INTO CORRESPONDING FIELDS OF TABLE gt_value FROM zcrmt_domain_t WHERE tab_name = 'ZTVS_BRAND' AND spras = sy-langu.
gw_field-enumeration[] = gt_value[].
gw_field-is_of_type = 'EN'.
APPEND gw_field TO et_field_description_attr. "inprogress 下拉
CLEAR:gt_value[],gw_field.
gw_field-name = 'ZZDLYRSN'.
SELECT estat AS value text AS name INTO CORRESPONDING FIELDS OF TABLE gt_value FROM zdelay_reason WHERE spras = 'J'."sy-langu.
gw_field-enumeration[] = gt_value[].
gw_field-is_of_type = 'EN'.
APPEND gw_field TO et_field_description_attr. "inprogress 下拉
CLEAR:gt_value[],gw_field.
gw_field-name = 'DATE_RANGE'.
setv 'D+0' 'D+0 今日'.
setv 'D-1' 'D-1 昨日'.
setv 'M+0' 'M+0 今月'.
setv 'M-1' 'M-1 先月'.
* setv 'W+0' 'W+0 今週'.
* setv 'W-1' 'W-1 先週'.
setv 'Y+0' 'Y+0 今年'.
setv 'Y-1' 'Y-1 去年'.
gw_field-enumeration[] = gt_value[].
gw_field-max_1_value = 'X'.
gw_field-is_of_type = 'EN'.
APPEND gw_field TO et_field_description_attr. "CHARG TYPE 下拉
CLEAR:gt_value[],gw_field.
gw_field-name = 'ZZCHARG_TYPE'.
SELECT line_key AS value value1 AS name INTO CORRESPONDING FIELDS OF TABLE gt_value
FROM zcrmt_domain_t WHERE spras = 'J'"sy-langu.
AND tab_name = 'ZJP_REPAIR_CHARGETPYE'.
gw_field-enumeration[] = gt_value[].
gw_field-is_of_type = 'EN'.
APPEND gw_field TO et_field_description_attr. "Process Type 下拉
CLEAR:gt_value[],gw_field.
gw_field-name = 'PROCESS_TYPE'.
SELECT process_type AS value p_description_20 AS name INTO CORRESPONDING FIELDS OF TABLE gt_value FROM crmc_proc_type_t WHERE langu = sy-langu
AND ( process_type BETWEEN 'ZSV1' AND 'ZSV4' OR process_type EQ 'ZWO3' OR process_type EQ 'ZWO4' ).
gw_field-enumeration[] = gt_value[].
gw_field-ddic_shlp_name = 'ZCRM_PROCESS_TYPE'.
gw_field-is_of_type = 'EN'.
APPEND gw_field TO et_field_description_attr.
ENDMETHOD.
METHOD if_fpm_guibb_search~process_event.
DATA:lr_fpm TYPE REF TO if_fpm,
lr_event_data TYPE REF TO cl_fpm_parameter. IF io_event->mv_event_id = if_fpm_guibb_search=>fpm_execute_search.
"取当前FPM对象实例
lr_fpm = cl_fpm_factory=>get_instance( ).
"创建FPM传输参数对象
CREATE OBJECT lr_event_data.
"将查询条件信息赋值到参数对象
lr_event_data->if_fpm_parameter~set_value(
iv_key = 'SEL_TAB'
iv_value = it_fpm_search_criteria ). lr_event_data->if_fpm_parameter~set_value(
iv_key = 'MAX_NUM'
iv_value = iv_max_num_results ).
"数据抛转
lr_fpm->raise_event_by_id(
iv_event_id = if_fpm_guibb_list=>gc_event_list_filter
io_event_data = lr_event_data ). ENDIF.
ENDMETHOD.
LIST的Feeder Class处理:
定义结构表:
METHOD if_fpm_guibb_list~get_data.
IF iv_eventid->mv_event_id = if_fpm_guibb_list=>gc_event_list_filter.
ct_data = gt_result.
ev_data_changed = abap_true.
ENDIF.
ENDMETHOD.
METHOD if_fpm_guibb_list~get_definition.
DATA:gt_table TYPE TABLE OF zcrmjp003.
DATA:gw_field TYPE fpmgb_s_listfield_descr,
gt_value TYPE wdr_context_attr_value_list,
gt_dd03l TYPE TABLE OF dd03l,
gw_dd03l LIKE LINE OF gt_dd03l.
eo_field_catalog ?= cl_abap_tabledescr=>describe_by_data( gt_table ). SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRMJP003' AND inttype = 'C'.
LOOP AT gt_dd03l INTO gw_dd03l.
gw_field-name = gw_dd03l-fieldname.
gw_field-allow_sort = 'X'.
gw_field-allow_filter = 'X'.
APPEND gw_field TO et_field_description.
ENDLOOP.
ENDMETHOD.
METHOD if_fpm_guibb_list~process_event.
DATA:lt_fpm_search TYPE fpmgb_t_search_criteria,
lv_max TYPE i,
ls_rsds TYPE rsdsselopt.
TYPES:BEGIN OF ty_part,
guid_hi TYPE crmt_object_guid,
addr_nr TYPE ad_addrnum,
addr_type TYPE ad_adrtype,
partner_fct TYPE crmt_partner_fct,
END OF ty_part,
BEGIN OF ty_adrc,
addrnumber TYPE ad_addrnum,
name1 TYPE ad_name1,
smtp_addr TYPE ad_smtpadr,
tel_number TYPE ad_tlnmbr1,
street TYPE ad_street,
str_suppl1 TYPE ad_strspp1,
str_suppl2 TYPE ad_strspp2,
post_code1 TYPE ad_pstcd1,
city1 TYPE ad_city1,
region TYPE regio,
END OF ty_adrc,
BEGIN OF ty_type,
process_type TYPE crmt_process_type,
p_description_20 TYPE crmt_description_20,
user_stat_proc TYPE j_stsma,
END OF ty_type,
BEGIN OF ty_zso1,
object_id TYPE crmt_object_id,
zzrepchg_type TYPE zsrve_repchg_type,
ref_object_id TYPE crmt_object_id,
END OF ty_zso1,
BEGIN OF ty_item,
guid TYPE crmt_object_guid,
header TYPE crmt_object_guid,
zzzsp_price TYPE zadtel000072,
zzafld00001f TYPE zadtel000073,
quantity TYPE crmt_schedlin_quan,
END OF ty_item,
BEGIN OF ty_head,
guid TYPE crmt_object_guid,
zzafld000005 TYPE zadtel000018,
zzfld00000j TYPE zdtel00003p,
zzfld00000k TYPE zdtel00003q,
zzafld00001c TYPE zadtel000081,
END OF ty_head.
DATA:lt_where TYPE rsds_where_tab,
ls_where LIKE LINE OF lt_where,
vt_where TYPE rsds_where_tab.
DATA:lt_order TYPE TABLE OF zcrmjp003,
ls_order TYPE zcrmjp003.
DATA:lc_para TYPE REF TO cl_fpm_parameter.
DATA:ls_value TYPE string,
rt_zzafld000005 TYPE RANGE OF zadtel000018,
rs_zzafld000005 LIKE LINE OF rt_zzafld000005,
rt_zzztransaid TYPE RANGE OF ztransaid,
rs_zzztransaid LIKE LINE OF rt_zzztransaid,
gt_search_index TYPE fpmgb_t_search_criteria,
gw_search LIKE LINE OF gt_search_index,
gt_search_head TYPE fpmgb_t_search_criteria,
gt_protype TYPE TABLE OF crmc_proc_type_t,
gw_protype TYPE crmc_proc_type_t,
gt_part TYPE TABLE OF ty_part,
vt_part TYPE TABLE OF ty_part,
gw_part LIKE LINE OF gt_part,
gt_adrc TYPE TABLE OF ty_adrc,
gw_adrc LIKE LINE OF gt_adrc,
gt_type TYPE TABLE OF ty_type,
gw_type LIKE LINE OF gt_type,
gt_tj30t TYPE TABLE OF tj30t,
gw_tj30t LIKE LINE OF gt_tj30t,
gt_zso1 TYPE TABLE OF ty_zso1,
gw_zso1 LIKE LINE OF gt_zso1,
gt_zcrmt0046 TYPE TABLE OF zcrmt0046,
gw_zcrmt0046 LIKE LINE OF gt_zcrmt0046,
gt_head TYPE TABLE OF ty_head,
gw_head LIKE LINE OF gt_head,
gt_item TYPE TABLE OF ty_item,
gw_item LIKE LINE OF gt_item,
gt_domain TYPE TABLE OF zcrmt_domain_t,
gw_domain TYPE zcrmt_domain_t,
v_e0075 TYPE datum,
v_e0080 TYPE datum,
v_ss TYPE string,
v_ll TYPE string,
v_flag TYPE c,
gv_index TYPE i. DATA:ls_result TYPE zcrmjp003. IF io_event->mv_event_id = if_fpm_guibb_list=>gc_event_list_filter. io_event->mo_event_data->get_value(
EXPORTING iv_key = 'SEL_TAB'
IMPORTING ev_value = lt_fpm_search ). io_event->mo_event_data->get_value(
EXPORTING iv_key = 'MAX_NUM'
IMPORTING ev_value = lv_max ). REFRESH:gt_result.
gt_search_index[] = lt_fpm_search[]."转移查询条件,待处理.
LOOP AT gt_search_index INTO gw_search.
gv_index = sy-tabix.
IF gw_search-search_attribute = 'ZNOT_CHARGED' AND gw_search-low IS NOT INITIAL.
v_flag = 'X'.
DELETE gt_search_index INDEX gv_index.
ENDIF.
IF gw_search-search_attribute = 'ZZAFLD000005' OR gw_search-search_attribute = 'ZZZTRANSAID'
OR gw_search-search_attribute = 'ZZCANSHIP'.
APPEND gw_search TO gt_search_head.
DELETE gt_search_index INDEX gv_index.
ENDIF.
IF gw_search-search_attribute = 'DATE_RANGE'."时间周期
DATA:v_date TYPE datum.
DELETE gt_search_index INDEX gv_index.
gw_search-search_attribute = 'POSTING_DATE'.
IF gw_search-low = 'D+0'."今天
gw_search-low = sy-datlo.
ELSEIF gw_search-low = 'D-0'."昨天
gw_search-low = sy-datlo - .
ELSEIF gw_search-low = 'M+0'."当月
gw_search-low = sy-datlo+() && ''.
gw_search-high = sy-datlo.
gw_search-operator = .
ELSEIF gw_search-low = 'M-1'."上月
v_date = sy-datlo+() && ''."当月1号
v_date = v_date - ."上月底
gw_search-low = sy-datlo+() && ''.
gw_search-high = v_date.
gw_search-operator = .
ELSEIF gw_search-low = 'Y+0'."今年
gw_search-low = sy-datlo+() && ''.
gw_search-high = sy-datlo+() && ''.
gw_search-operator = .
ELSEIF gw_search-low = 'Y+-1'."去年
v_date = sy-datlo+() && ''."今年1号
v_date = v_date - ."去年年底
gw_search-low = v_date+() && ''.
gw_search-high = v_date.
gw_search-operator = .
ENDIF.
APPEND gw_search TO gt_search_index.
ENDIF.
ENDLOOP.
IF gt_search_index[] IS NOT INITIAL.
TRY .
CALL METHOD cl_fpm_guibb_search_conversion=>to_abap_select_where_tab
EXPORTING
it_fpm_search_criteria = gt_search_index
iv_table_name = 'ZHSB_ORDER_INDEX'
* io_field_catalog = mo_catalog
IMPORTING
et_abap_select_table = lt_where.
CATCH cx_fpmgb.
ENDTRY.
APPEND LINES OF lt_where TO vt_where.REFRESH:lt_where.
ENDIF.
IF gt_search_head[] IS NOT INITIAL.
TRY .
CALL METHOD cl_fpm_guibb_search_conversion=>to_abap_select_where_tab
EXPORTING
it_fpm_search_criteria = gt_search_head
iv_table_name = 'CRMD_ORDERADM_H'
* io_field_catalog = mo_catalog
IMPORTING
et_abap_select_table = lt_where.
CATCH cx_fpmgb.
ENDTRY.
IF vt_where IS NOT INITIAL.
APPEND 'AND' TO vt_where.
ENDIF.
APPEND LINES OF lt_where TO vt_where.REFRESH:lt_where.
ENDIF. LOOP AT vt_where INTO ls_where.
LOOP AT gt_search_index INTO gw_search.
SEARCH ls_where FOR gw_search-search_attribute.
IF sy-subrc = .
CONCATENATE gw_search-search_attribute ` ` INTO v_ll.
CONCATENATE 'a~' gw_search-search_attribute INTO v_ss.
REPLACE ALL OCCURRENCES OF v_ll IN ls_where WITH v_ss .
ENDIF.
ENDLOOP.
LOOP AT gt_search_head INTO gw_search.
SEARCH ls_where FOR gw_search-search_attribute.
IF sy-subrc = .
CONCATENATE gw_search-search_attribute ` ` INTO v_ll.
CONCATENATE 'b~' gw_search-search_attribute INTO v_ss.
REPLACE ALL OCCURRENCES OF v_ll IN ls_where WITH v_ss .
ENDIF.
ENDLOOP.
APPEND ls_where TO lt_where.
ENDLOOP.
REFRESH:vt_where. IF v_flag = 'X'.
IF lt_where[] IS NOT INITIAL.
APPEND 'AND ( A~TXT04 = ''Z075'' )' TO lt_where.
APPEND 'AND ( A~ZZWARRANTY IN (''O'',''E'') )' TO lt_where.
APPEND 'AND ( A~PROCESS_TYPE = ''ZSV1'' )' TO lt_where.
APPEND 'AND ( A~ZZONTIME = '''' )' TO lt_where.
ELSE.
APPEND ' A~TXT04 = ''Z075'' ' TO lt_where.
APPEND 'AND ( A~ZZWARRANTY IN (''O'',''E'') )' TO lt_where.
APPEND 'AND ( A~PROCESS_TYPE = ''ZSV1'' )' TO lt_where.
APPEND 'AND ( A~ZZONTIME = '''' )' TO lt_where.
ENDIF.
ENDIF. SELECT a~guid
a~object_id
a~process_type
a~stat_user AS estat
a~description
* b~zzafld000005
* b~zzfld00000j AS zzfld00000j
* b~zzfld00000k AS zzfld00000k
* b~zzzafld00001c AS zzzafld00001c
a~end_user AS soldto
a~created_at
a~zzzbrand
a~zzwarranty
a~zzcharg_type
a~provider AS zs_provider_id
a~po_number_sold
a~created_by
a~zzzsymptomsgroup
* b~zzfld00000j AS zzfld00000j
* b~zzfld00000k AS zzfld00000k
* b~zzzafld00001c
INTO CORRESPONDING FIELDS OF TABLE lt_order
FROM zhsb_order_index AS a
INNER JOIN crmd_orderadm_h AS b
ON a~guid = b~guid
UP TO lv_max ROWS
WHERE (lt_where).
* INTO CORRESPONDING FIELDS OF TABLE lt_order UP TO iv_max_num_results ROWS WHERE (lt_where).
IF sy-subrc = .
"取品牌描述,取收费类型描述
SELECT * INTO TABLE gt_domain FROM zcrmt_domain_t WHERE tab_name = 'ZTVS_BRAND' AND spras = 'J'.
SELECT * APPENDING TABLE gt_domain FROM zcrmt_domain_t WHERE tab_name = 'ZJP_REPAIR_CHARGETPYE' AND spras = 'J'."sy-langu. SORT lt_order BY object_id ASCENDING. SELECT guid
zzafld000005
zzfld00000j
zzfld00000k
zzzafld00001c
INTO TABLE gt_head
FROM crmd_orderadm_h
FOR ALL ENTRIES IN lt_order
WHERE guid = lt_order-guid. SELECT crmc_proc_type~process_type
crmc_proc_type_t~p_description_20
crmc_proc_type~user_stat_proc
INTO TABLE gt_type
FROM crmc_proc_type
INNER JOIN crmc_proc_type_t
ON crmc_proc_type~process_type = crmc_proc_type_t~process_type
WHERE ( crmc_proc_type~process_type BETWEEN 'ZSV1' AND 'ZSV4' OR crmc_proc_type~process_type EQ 'ZWO3' OR crmc_proc_type~process_type EQ 'ZWO4' )
AND crmc_proc_type_t~langu = 'J'."sy-langu."取单据类型描述. IF gt_type IS NOT INITIAL.
SELECT * INTO TABLE gt_tj30t FROM tj30t FOR ALL ENTRIES IN gt_type WHERE stsma = gt_type-user_stat_proc AND spras = 'J'."sy-langu."取状态描述.
ENDIF. "取partner信息
SELECT crmd_link~guid_hi
crmd_partner~addr_nr
crmd_partner~addr_type
crmd_partner~partner_fct
INTO TABLE gt_part
FROM crmd_link
INNER JOIN crmd_partner
ON crmd_link~guid_set = crmd_partner~guid
FOR ALL ENTRIES IN lt_order
WHERE crmd_link~guid_hi = lt_order-guid
AND crmd_partner~partner_fct IN ('','ZHSI00SP')
AND crmd_link~objtype_set = ''."PARTNER REFRESH:vt_part.
vt_part[] = gt_part[].
SORT vt_part BY addr_nr.
DELETE ADJACENT DUPLICATES FROM vt_part COMPARING addr_nr.
IF vt_part[] IS NOT INITIAL.
SELECT adrc~addrnumber
adrc~name1
adr6~smtp_addr
adrc~tel_number
adrc~street
adrc~str_suppl1
adrc~str_suppl2
adrc~post_code1
adrc~city1
adrc~region
INTO TABLE gt_adrc
FROM adrc
LEFT JOIN adr6
ON adrc~addrnumber = adr6~addrnumber
FOR ALL ENTRIES IN vt_part
WHERE adrc~addrnumber = vt_part-addr_nr.
REFRESH:vt_part.
ENDIF. "取后续符合条件的ZSO1单据
SELECT object_id
zzrepchg_type
ref_object_id
INTO TABLE gt_zso1
FROM zhsb_sales_index FOR ALL ENTRIES IN lt_order
WHERE ref_object_id = lt_order-object_id
AND sales_org = 'O 50000231'
AND process_type = 'ZSO1'
AND stat_user <> 'E0007'. "取In Progress的变更日志
SELECT * INTO TABLE gt_zcrmt0046 FROM zcrmt0046 FOR ALL ENTRIES IN lt_order
WHERE bt_guid = lt_order-guid AND zzdlyrsn IN ('E0075','E0080'). "取项目数量金额
SELECT crmd_orderadm_i~guid
crmd_orderadm_i~header
crmd_orderadm_i~zzzsp_price
crmd_orderadm_i~zzafld00001f
crmd_schedlin~quantity
INTO TABLE gt_item
FROM crmd_orderadm_i
INNER JOIN crmd_schedlin
ON crmd_schedlin~item_guid = crmd_orderadm_i~guid
FOR ALL ENTRIES IN lt_order
WHERE crmd_schedlin~event_type = 'ORDER'
AND crmd_orderadm_i~header = lt_order-guid. LOOP AT lt_order INTO ls_order.
MOVE-CORRESPONDING ls_order TO ls_result.
READ TABLE gt_head INTO gw_head WITH KEY guid = ls_order-guid.
IF sy-subrc = .
ls_result-zzafld000005 = gw_head-zzafld000005.
ls_result-zzfld00000j = gw_head-zzfld00000j.
ls_result-zzfld00000k = gw_head-zzfld00000k.
ls_result-zzafld00001c = gw_head-zzafld00001c.
ENDIF.
READ TABLE gt_type INTO gw_type WITH KEY process_type = ls_order-process_type.
IF sy-subrc = .
ls_result-process_type_txt = gw_type-p_description_20.
READ TABLE gt_tj30t INTO gw_tj30t WITH KEY stsma = gw_type-user_stat_proc estat = ls_result-estat.
IF sy-subrc = .
ls_result-concatstatuser = gw_tj30t-txt30.
ENDIF.
ENDIF.
"取partner信息
READ TABLE gt_part INTO gw_part WITH KEY guid_hi = ls_order-guid partner_fct = ''.
IF sy-subrc = .
READ TABLE gt_adrc INTO gw_adrc WITH KEY addrnumber = gw_part-addr_nr.
IF sy-subrc = .
CONCATENATE gw_adrc-name1 '/' gw_adrc-city1 space gw_adrc-post_code1 INTO ls_result-sold_to_party_list.
ENDIF.
ENDIF. READ TABLE gt_part INTO gw_part WITH KEY guid_hi = ls_order-guid partner_fct = 'ZHSI00SP'.
IF sy-subrc = .
READ TABLE gt_adrc INTO gw_adrc WITH KEY addrnumber = gw_part-addr_nr.
IF sy-subrc = .
ls_result-zs_provider_name = gw_adrc-name1.
ENDIF.
ENDIF. LOOP AT gt_zso1 INTO gw_zso1 WHERE ref_object_id = ls_result-object_id.
IF ls_result-zzwarranty = 'E' AND gw_zso1-zzrepchg_type = ''.
ls_result-zeucorder = gw_zso1-object_id.
ELSEIF ls_result-zzwarranty = 'O' AND ls_result-zzcharg_type <> ''.
ls_result-zeucorder = gw_zso1-object_id.
ELSEIF ls_result-zzcharg_type = ''.
ls_result-zrcorder = gw_zso1-object_id.
ELSEIF ls_result-zzcharg_type <> '' AND ls_result-zzwarranty = 'E' AND ls_result-zzcharg_type = ''.
ls_result-zrcorder = gw_zso1-object_id.
ENDIF.
ENDLOOP. LOOP AT gt_zcrmt0046 INTO gw_zcrmt0046 WHERE bt_guid = ls_order-guid.
IF gw_zcrmt0046-zzdlyrsn = 'E0075'.
v_e0075 = gw_zcrmt0046-crdat.
ELSEIF gw_zcrmt0046-zzdlyrsn = 'E0080'.
v_e0080 = gw_zcrmt0046-crdat.
ENDIF.
ENDLOOP.
IF v_e0075 IS NOT INITIAL AND v_e0080 IS NOT INITIAL.
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
i_date_from = v_e0080
i_date_to = v_e0075
IMPORTING
e_days = ls_result-zquote_day.
ENDIF. LOOP AT gt_item INTO gw_item WHERE header = ls_order-guid.
ls_result-zclamun = ls_result-zclamun + gw_item-zzzsp_price * gw_item-quantity.
ENDLOOP. READ TABLE gt_domain INTO gw_domain WITH KEY tab_name = 'ZTVS_BRAND' line_key = ls_order-zzzbrand.
IF sy-subrc = .
ls_result-zzzbrandt = gw_domain-value1.
ENDIF.
READ TABLE gt_domain INTO gw_domain WITH KEY tab_name = 'ZJP_REPAIR_CHARGETPYE' line_key = ls_order-zzcharg_type.
IF sy-subrc = .
ls_result-zzcharg_typet = gw_domain-value1.
ENDIF. APPEND ls_result TO gt_result.
CLEAR:ls_result.
ENDLOOP.
ENDIF.
IF gt_result[] IS NOT INITIAL.
ev_result = 'OK'.
ENDIF.
ENDIF. ENDMETHOD.
下面开始FPM页面配置。
T-code:FPM_WB.
点击创建空的FPM程序。
输入程序名称和描述,选择OverView Page
保存本地。
点击编辑配置。
....剩下的好像搞了几百遍了,添加SEARCH UIBB.LIST UIBB.配置,添加字段。。。不写了,浪费时间。
最后结果如下图:
FPM 1.1正式版 Search & List的更多相关文章
- Java 开源博客——B3log Solo 0.6.6 正式版公布了!
Java 开源博客 -- B3log Solo 0.6.6 正式版公布了!欢迎大家下载. 该版本号引入了数据库连接池:Druid. 另外,欢迎观摩 B3log 团队的新项目:Noty,也很欢迎大家參与 ...
- Java 开源博客——B3log Solo 0.6.7 正式版公布了!
Java 开源博客 -- B3log Solo 0.6.7 正式版公布了!欢迎大家下载. 另外,欢迎观摩 B3log 团队的新项目:Wide,也很欢迎大家參与进来 :-) 特性 基于标签的文章分类 P ...
- 按钮的图标 Button icons-JQUERY MOBILE 1.0正式版中文手册
按钮的图标 Button icons-JQUERY MOBILE 1.0正式版中文手册 data-icon属性可以被用来创建如下所示的图标 左箭头data-icon="arrow-l&quo ...
- Java 开源博客——B3log Solo 0.6.1 正式版发布了!
Java 开源博客 —— B3LOG Solo 0.6.1 正式版发布了!欢迎大家下载. 该版本主要是改善细节体验,并加入了一款 Metro 风格的皮肤. 特性 基于标签的文章分类 Ping Goog ...
- 最强 IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...
- Android Studio 3.1 正式版
欢迎大家推荐自己在Android开发过程中用的好用的工具.学习开发教程.用到设计素材.如果你觉得本站对你有用,你可以点击底部的分享按钮,把本站分享到社交网络让你的小伙伴和更多的人知道. 或者可以考虑捐 ...
- 终于等到你,最强 IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...
- Java 开源博客——B3log Solo 0.6.7 正式版发布了!
Java 开源博客 -- B3log Solo 0.6.7 正式版发布了!欢迎大家下载. 另外,欢迎观摩 B3log 团队的新项目:Wide,也非常欢迎大家参与进来 :-) 特性 基于标签的文章分类 ...
- Java 开源博客——B3log Solo 0.6.6 正式版发布了!
Java 开源博客 -- B3log Solo 0.6.6 正式版发布了!欢迎大家下载. 该版本引入了数据库连接池:Druid. 另外,欢迎观摩 B3log 团队的新项目:Noty,也非常欢迎大家参与 ...
随机推荐
- 虚拟机使用配置固定IP
首先打开虚拟机 打开xshell5连接虚拟机(比较方便,这里默认设置过Linux的ip,只是不固定) 输入ifconfig,可以查看网管相关配置信息: 然后输入 vi /etc/sysconfi ...
- 【Spark】
spark-submit --class "org.apache.spark.examples.sql.JavaSparkSQLExample" --master local co ...
- 每天一道Rust-LeetCode(2019-06-05)
每天一道Rust-LeetCode(2019-06-05) 最长回文子串 坚持每天一道题,刷题学习Rust. 接续昨天,最长会问字符串的另一种解法 题目描述 解题过程 //leetcode最快解法 / ...
- MySql5.7InnoDB全文索引(针对中文搜索)
1.ngram and MeCab full-text parser plugins 全文检索在MySQL里面很早就支持了,只不过一直以来只支持英文.缘由是他从来都使用空格来作为分词的分隔符,而对于中 ...
- 通过SimpleHTTPServer实现树莓派与主机传输文件
默认情况我们的Raspberry Pi已经安装了python 2.7版本.python2 中默认包含了SimpleHTTPServer这个库.因此我们可以直接拿来使用. 从名字中我们就可以看出来,他是 ...
- idea中使用python环境
idea中使用python环境,需要下载相关的python sdk 可以添加选择自己的python环境
- xpath获取标签对本身含内容, 获取html内容
通常使用xpath我们直接定位到标签后, 使用/text() 或 //text()来获取标签对之间的文本值, 但特殊情况下我们也需要获取标签本身含文本值, 操作如下: 文件为html, 标签对结构如下 ...
- BBS_02day
目录 BBS_02day: 展示个人所有文章: 点赞,点彩功能: 评论功能: BBS_02day: 展示个人所有文章: def article_detail(request,username,arti ...
- thinkphp5.0 - 安装
1.thinkphp 5.0 可以通过下载,git 等方式安装,我这里采用下载完整版安装,解压到一个目录下就行了 2.配置 web 服务器配置文件,我是用的是 nginx(nginx/1.9.15) ...
- mysql,字符串类型id,获取最大值
说明,这个id是字符串类型,但是实际值是一个整数,获取最大值的方法是: select max(cast(id as SIGNED)) from table 另外,mysql生成伪列的方法: SELEC ...