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,也非常欢迎大家参与 ...
随机推荐
- day31_8.12并发编程二线程
一.进程间的通信 在进程中,可以通过Queue队列进行通信,队列有两个特点: 1.先进先出.(先来的数据先被取出) 2.管道式存取.(数据取出一次后就不会在有了) 在python中有以下方法来操作数据 ...
- luoguP3312 [SDOI2014]数表
题意 默认\(n\leqslant m\). 设\(f(i)\)表示\(i\)的约数和,因为是积性函数,可以用线性筛求. 先不考虑\(a\)的限制,我们推下式子: \(\sum\limits_{i=1 ...
- window.open()与window.showModuleDialog()
一.window.showModalDialog() 模态对话框. (只支持IE浏览器)window.showModelessDialog() 非模态对话框. 基本语法:vReturnVa ...
- 关于const关键字
const:ES6新增关键字,用于声明创建一个值的只读引用. 我们都知道,const一般用来定义常量,在声明的时候需要赋初始值,而且初始值一旦赋值,便不能改变. 但是以上说的是针对于基本类型数据的定义 ...
- calc()在less中编译报错
calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢? calc() 函数用于动态计算长度值. 需要注意的是,运算符前后都 ...
- 复杂模拟 | 1017 模拟N个顾客M个柜台进行排队
#include <stdio.h> #include <memory.h> #include <math.h> #include <string> # ...
- Codeforces Round 584 题解
-- A,B 先秒切,C 是个毒瘤细节题,浪费了很多时间后终于过了. D 本来是个 sb 题,然而还是想了很久,不过幸好没什么大事. E1,看了一会就会了,然而被细节坑死,好久才过. 感觉 E2 很可 ...
- [LeetCode] 23. Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. E ...
- wpf “{DependencyProperty.UnsetValue}”不是属性“Background”的有效值。异常
, 在wpf模板中, 有一个Background绑定的值不存在导致的异常, 我的是有这个没有导致的错误, 自己添加之后就没有了
- (十三)golang--程序流程控制
1.顺序控制 若没有判断,没有跳转,程序由上至下依次执行 2.分支控制 单分支if 条件表达式 { 执行代码块} 双分支if 条件表达式 { 执行代码块1} else { 执行代码块2} 多分支if ...