IF_FPM_TOKEN_PROVIDER FPM:相对日期的令牌提供

IF_FPM_TOKEN_PROVIDER FPM: Token Provider for relative dates

当我们需要自定义一个日期描述,方便用户选择或过滤时,可以使用接口IF_FPM_TOKEN_PROVIDER

显示效果如下

 

 不使用该接口时显示效果

 

 

实现步骤

1. 创建一个类 ycl_token_provider , 增加接口IF_FPM_TOKEN_PROVIDER的使用,并实施方法

代码如下

  METHOD if_fpm_token_provider~get_tokens.
    "定义令牌:光棍节、程序员节
    CASE iv_name.
      WHEN 'FLDATE'.
        et_token = VALUE #( ( token = 'TOKEN_1111' text = '光棍节' )
                            ( token = 'TOKEN_1024' text = '程序员节' )
                            ( token = 'TOKEN_MONTH' text = '当前月' ) ).
    ENDCASE.

  ENDMETHOD.
  METHOD if_fpm_token_provider~resolve_token.
    "令牌解析:光棍节-11月11日、程序员节-10月24日
    DATA: lv_datum TYPE sy-datum.
    CASE iv_name.
      WHEN 'FLDATE'.
        CASE iv_token.
          WHEN 'TOKEN_1111'.
            ev_low  = sy-datum+0(4) && '1111'.
          WHEN 'TOKEN_1024'.
            ev_low  = sy-datum+0(4) && '1024'.
          WHEN 'TOKEN_MONTH'.
            ev_low  = sy-datum+0(6) && '01'.
            CALL FUNCTION 'SN_LAST_DAY_OF_MONTH'
              EXPORTING
                day_in       = sy-datum
              IMPORTING
                end_of_month = lv_datum.
            ev_high = lv_datum.
        ENDCASE.
    ENDCASE.

  ENDMETHOD.

 

2. 在我们需要使用的日期字段上, 增加属性TOKEN的赋值

 

 

    DATA: lo_rel_date TYPE REF TO ycl_token_provider.
    ls_field_descr-name = 'FLDATE'.
    ls_field_descr-text = 'Flight Date'.
    " relative dates
    CREATE OBJECT lo_rel_date TYPE ycl_token_provider.
    ls_field_descr-token = lo_rel_date.

    APPEND ls_field_descr TO et_field_description_attr.
    CLEAR ls_field_descr.

 

参考资料:

https://blogs.sap.com/2021/09/20/fpm-team-relative-dates-in-search-list-ats-and-tree-uibbs/

 

posted @ 2021-11-10 10:34  客于溟  阅读(74)  评论(0)    收藏  举报