通过RH_TYPE_STRUC_HELP构建搜索帮助返回多个值到屏幕select-option “部门”

HR模块中经常需要用“部门”即“组织单位”作为检索条件,要是构建一个搜索帮助,如下所示

实现代码如下:

"部门
SELECT-OPTIONS:s_orgeh FOR pa0001-orgeh NO INTERVALS.

INITIALIZATION.
  
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_orgeh-low.
  PERFORM frm_sh_orgeh USING 'S_ORGEH'.


*&---------------------------------------------------------------------*
*& Form FRM_SH_ORGEH
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> P_
*&---------------------------------------------------------------------*
FORM frm_sh_orgeh USING VALUE(pv_dynprofield).

  DATA:lt_hrsobid TYPE STANDARD TABLE OF hrsobid,
       lv_objid   TYPE objec-realo,
       lv_so_tab  TYPE char20,
       lv_so_wa   TYPE char20.
*       lv_field   TYPE char20.

  RANGES rn_orgeh FOR pa0001-orgeh.

  CALL FUNCTION 'RH_TYPE_STRUC_HELP'
    EXPORTING
      act_search_otype         = 'O'
*     ACT_SEARCH_WEGID         =
*     ACT_SEARCH_SVECT         = '1'
      set_mode                 = 'X'
*     ACT_ROOT_OT              =
*     ACT_ROOT_ID              =
*     ACT_PLVAR                =
*     ACT_SEARCH_BEGDA         = SY-DATUM
*     ACT_SEARCH_ENDDA         = SY-DATUM
*     NO_SEARK                 = 'X'
*     ACT_LIST_TYPE            =
*     ACT_INT_WEGID            =
*     SELECTED_OBJ_APPEND      =
*     CHANGE_SEARCH_TYPE       =
*     RESTRICT_CALLBACK        =
    IMPORTING
*     SELECTED_PLVAR           =
*     SELECTED_OTYPE           =
      selected_objid           = lv_objid
*     CHANGED_FLAG             =
*     LAST_OK_CODE             =
    TABLES
      selected_objects         = lt_hrsobid
    EXCEPTIONS
      no_active_plvar          = 1
      no_object_selected       = 2
      no_struc_search_possible = 3
      OTHERS                   = 4.
  CHECK lt_hrsobid IS NOT INITIAL.

  SORT lt_hrsobid BY sobid.

  LOOP AT lt_hrsobid INTO DATA(ls_hrsobid).
    rn_orgeh = 'IEQ'.
    rn_orgeh-low = ls_hrsobid-sobid.
    rn_orgeh-high = 0.
    APPEND rn_orgeh.
  ENDLOOP.

  READ TABLE lt_hrsobid INTO ls_hrsobid INDEX 1.
  IF sy-subrc = 0.
    rn_orgeh = 'IEQ'.
    rn_orgeh-low = ls_hrsobid-sobid.
    rn_orgeh-high = 0.
  ENDIF.

*  SPLIT pv_dynprofield AT '-' INTO lv_so_wa lv_field.
  lv_so_wa = pv_dynprofield.
  lv_so_tab = lv_so_wa && '[]'.
  ASSIGN:(lv_so_wa) TO FIELD-SYMBOL(<fs_orgeh>),
         (lv_so_tab) TO FIELD-SYMBOL(<fs_orgeh_tab>).
  CHECK <fs_orgeh> IS ASSIGNED AND <fs_orgeh_tab> IS ASSIGNED.

  <fs_orgeh> = rn_orgeh.
  <fs_orgeh_tab> = rn_orgeh[].

  UNASSIGN:<fs_orgeh>,
           <fs_orgeh_tab>.

*  ASSIGN (pv_dynprofield) TO FIELD-SYMBOL(<fd_f4>).
*  CHECK <fd_f4> IS ASSIGNED.
*  <fd_f4> = lv_objid.

ENDFORM.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小磊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值