精华内容
下载资源
问答
  • SAP选择屏幕自定义幕搜索帮助
    千次阅读
    2019-06-03 16:29:18

    1、需求:选择屏幕中的“库存类型”字段的搜索帮助按照自定义的要求显示,如下效果:

    关键代码:

    SELECT-OPTIONS: s_insmk FOR mseg-insmk NO INTERVALS.
    AT SELECTION-SCREEN ON  VALUE-REQUEST FOR s_insmk-low.
      PERFORM frm_request_f4_insmk USING 'S_INSMK-LOW'.
    *&---------------------------------------------------------------------*
    *&      Form  FRM_REQUEST_F4_INSMK
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM frm_request_f4_insmk USING pv_field TYPE help_info-dynprofld.
      DEFINE lm_modify_insmk.
        LS_VALUE_TAB-INSMK  = &1.
        LS_VALUE_TAB-INSMKT = &2.
        APPEND LS_VALUE_TAB TO Lt_VALUE_TAB.
        CLEAR LS_VALUE_TAB.
      END-OF-DEFINITION.
    
      DATA: BEGIN OF ls_value_tab,
              insmk  TYPE mseg-insmk,
              insmkt TYPE dd07t-ddtext,
            END OF ls_value_tab.
      DATA: lt_value_tab LIKE TABLE OF ls_value_tab.
    
      lm_modify_insmk 'U'  text-r03. " Unrestricted
      lm_modify_insmk 'B'  text-r04. " Blocked
      lm_modify_insmk 'Q'  text-r05. " Quality inspection
      lm_modify_insmk 'T'  text-r06. " Transfer stock between storage location
      lm_modify_insmk 'P'  text-r07. " Transfer stock between plant
    
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield        = 'INSMK'
          dynpprog        = sy-repid
          dynpnr          = sy-dynnr
          dynprofield     = pv_field
          value_org       = 'S'
        TABLES
          value_tab       = lt_value_tab
        EXCEPTIONS
          parameter_error = 1
          no_values_found = 2
          OTHERS          = 3.
      IF sy-subrc <> 0.
    *   Implement suitable error handling here
      ENDIF.
    
    ENDFORM.

    2、需求:搜索帮助显示列表ALV的列名显示成用户指定的名称。

    关键代码:

    *&---------------------------------------------------------------------*
    *&      Form  FRM_REQUEST_F4_INSMK
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM frm_request_f4_insmk USING pv_field TYPE help_info-dynprofld.
      DEFINE lm_modify_insmk.
        LS_VALUE_TAB-INSMK  = &1.
        LS_VALUE_TAB-INSMKT = &2.
        APPEND LS_VALUE_TAB TO Lt_VALUE_TAB.
        CLEAR LS_VALUE_TAB.
      END-OF-DEFINITION.
    
      DATA: BEGIN OF ls_value_tab,
              insmk  TYPE mseg-insmk,
              insmkt TYPE dd07t-ddtext,
            END OF ls_value_tab.
      DATA: ls_field_tab TYPE dfies.
      DATA: lt_value_tab LIKE TABLE OF ls_value_tab,
            lt_field_tab LIKE TABLE OF ls_field_tab.
    
      DATA: lv_retfield TYPE dfies-fieldname,
            lv_tabix    TYPE sy-tabix.
    
      lv_retfield = 'INSMK'.
      lm_modify_insmk 'U'  text-r03. " Unrestricted
      lm_modify_insmk 'B'  text-r04. " Blocked
      lm_modify_insmk 'Q'  text-r05. " Quality inspection
      lm_modify_insmk 'T'  text-r06. " Transfer stock between storage location
      lm_modify_insmk 'P'  text-r07. " Transfer stock between plant
    
      PERFORM get_fields_of_value_tab(saplsdhi) TABLES   lt_value_tab
                                                         lt_field_tab
                                                CHANGING lv_retfield.
    
      LOOP AT lt_field_tab INTO ls_field_tab.
        lv_tabix = sy-tabix.
        CASE ls_field_tab-fieldname.
          WHEN 'F0001'.
            ls_field_tab-reptext = text-r01. " Stock type
          WHEN 'F0002'.
            ls_field_tab-reptext = text-r02. " Stock type description
        ENDCASE.
    
        MODIFY lt_field_tab FROM ls_field_tab INDEX lv_tabix TRANSPORTING reptext.
        CLEAR ls_field_tab.
      ENDLOOP.
    
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield        = lv_retfield
          dynpprog        = sy-repid
          dynpnr          = sy-dynnr
          dynprofield     = pv_field
          value_org       = 'S'
        TABLES
          value_tab       = lt_value_tab
          field_tab       = lt_field_tab
        EXCEPTIONS
          parameter_error = 1
          no_values_found = 2
          OTHERS          = 3.
      IF sy-subrc <> 0.
    *   Implement suitable error handling here
      ENDIF.
    
    ENDFORM.

     

    注:如有疏漏之处,还请不吝赐教!

     

    更多相关内容
  • 给ALV字段添加搜索帮助

    千次阅读 2020-08-19 22:04:16
    1.引用标准的搜索帮助 在 宏中定义,F4标示,参考表参考字段 GS_FIELDCAT-F4AVAILABL = &5. GS_FIELDCAT-REF_TABLE = &6. GS_FIELDCAT-REF_FIELD = &7. FIELDCAT中引用 为了搜索帮助的值能带入ALV...

    1.引用标准的搜索帮助

    在 宏中定义,F4标示,参考表参考字段
    GS_FIELDCAT-F4AVAILABL = &5.
    GS_FIELDCAT-REF_TABLE = &6.
    GS_FIELDCAT-REF_FIELD = &7.

    FIELDCAT中引用

    为了搜索帮助的值能带入ALV字段中请设置GS_FIELDCAT-EDIT = ‘X’.

    效果

    2.自建搜索帮助

    当所搜帮助需要做筛选的时候,标准的不能满足,手动建F4帮助,给ALV写event事件
    首先定义

     

    DATA:GT_EVENT TYPE SLIS_T_EVENT WITH HEADER LINE.
    DATA STBL TYPE LVC_S_STBL.
    DATA: REF_GRID TYPE REF TO CL_GUI_ALV_GRID.
    

    在选择屏幕之前

     

    CLASS LCL_EVENT_RECEIVER DEFINITION.
      PUBLIC SECTION.
        "F4
        METHODS:
          HANDLE_F4
                        FOR EVENT ONF4 OF CL_GUI_ALV_GRID
            IMPORTING E_FIELDNAME
                        ES_ROW_NO
                        ER_EVENT_DATA
                        ET_BAD_CELLS.
    ENDCLASS.
    
    DATA GT_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER .
    CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
      METHOD  HANDLE_F4.
    
    *     窗口时间参数的自定义f4检索帮助
        CASE E_FIELDNAME.
          WHEN 'ZEQUNR'.   "内表字段名称
            PERFORM F4_HELP_ZSJCS USING E_FIELDNAME
                                        ES_ROW_NO.
        ENDCASE.
    *     设置后,alv稳定刷新
    
        STBL-ROW = 'X'." 基于行的稳定刷新
        STBL-COL = 'X'." 基于列稳定刷新
        CALL METHOD REF_GRID->REFRESH_TABLE_DISPLAY
          EXPORTING
            IS_STABLE = STBL.
    
      ENDMETHOD.                    "HANDLE_F4
    
    ENDCLASS.                    "LCL_EVENT_RECEIVER IMPLEMENTATION
    

    在展示ALV之前加入如下代码

     

    DATA: I_GRID_SETTINGS TYPE LVC_S_GLAY.
      GT_EVENT-NAME = 'CALLER_EXIT'.
      GT_EVENT-FORM = 'FM_BUTTON'.
      APPEND GT_EVENT.
      DATA:  RS_SELFIELD TYPE SLIS_SELFIELD.
    

     

    FORM FM_BUTTON USING E_GRID TYPE SLIS_DATA_CALLER_EXIT.
    
      DATA: LV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER,
            LT_F4             TYPE LVC_T_F4,
            LS_F4             TYPE LVC_S_F4.
    
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
          E_GRID = REF_GRID.
    * 设置enter事件
      CALL METHOD REF_GRID->REGISTER_EDIT_EVENT
        EXPORTING
          I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER
        EXCEPTIONS
          ERROR      = 1
          OTHERS     = 2.
    
    
      CREATE OBJECT GT_EVENT_RECEIVER.
      SET HANDLER   GT_EVENT_RECEIVER->HANDLE_MODIFY FOR REF_GRID.
    
      " CHECK gv_flg IS INITIAL.
    
      "gv_flg = 'X'.
    
      LS_F4-FIELDNAME  = 'ZEQUNR'.   "窗口时间参数(需要定义F4帮助按钮的字段)
      LS_F4-REGISTER   = 'X'.
      LS_F4-GETBEFORE  = 'X'.
      LS_F4-CHNGEAFTER = 'X'.
      INSERT LS_F4 INTO TABLE LT_F4.
    
      CREATE OBJECT LV_EVENT_RECEIVER.
      SET HANDLER LV_EVENT_RECEIVER->HANDLE_F4 FOR REF_GRID.
    
      CALL METHOD REF_GRID->REGISTER_F4_FOR_FIELDS
        EXPORTING
          IT_F4 = LT_F4[].
    
    ENDFORM.
    

    手动建搜索帮助

     

    *&---------------------------------------------------------------------*
    *&      Form  F4_HELP_ZSJCS
    *&---------------------------------------------------------------------*
    *       窗口时间参数的自定义f4检索帮助
    *----------------------------------------------------------------------*
    FORM F4_HELP_ZSJCS USING P_FIELDNAME  TYPE LVC_FNAME
                             P_ROW_NO     TYPE LVC_S_ROID.
      DATA: LT_RETURN TYPE STANDARD TABLE OF DDSHRETVAL,
            LS_RETURN TYPE DDSHRETVAL.
      DATA :LV_EQART TYPE EQART.
    
      CLEAR GS_TAB.
      READ TABLE GT_TAB INTO GS_TAB INDEX P_ROW_NO-ROW_ID.
    
      IF P_FIELDNAME = 'ZEQUNR'.  "展示内表字段
    
        SELECT SINGLE EQART
          INTO LV_EQART
          FROM EQUI
        WHERE EQUNR = GS_TAB-EQUNR. "筛选条件
    
        SELECT EQUNR
        INTO CORRESPONDING FIELDS OF TABLE GT_EQUI
        FROM EQUI
       WHERE EQART = LV_EQART
        AND EQTYP = 'T'.  "筛选条件
    
        SORT GT_EQUI BY EQUNR.
      ENDIF.
    
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD        = 'EQUNR'            "筛选内表里面的字段
          DYNPPROG        = SY-REPID
          DYNPNR          = SY-DYNNR
          DYNPROFIELD     = 'GS_TAB-ZEQUNR'            "ALV内表字段
          VALUE_ORG       = 'S'
    "     CALLBACK_PROGRAM = SY-REPID
        TABLES
          VALUE_TAB       = GT_EQUI        "需要显示帮助的值内表
          RETURN_TAB      = LT_RETURN          "返回值
        EXCEPTIONS
          PARAMETER_ERROR = 1
          NO_VALUES_FOUND = 2
          OTHERS          = 3.
      IF SY-SUBRC = 0.
    ****将选的值填入ALV字段中
            READ TABLE gt_tab INTO gs_tab INDEX p_row_no-row_id.
            IF sy-subrc = 0.
              READ TABLE lt_return INTO ls_return INDEX 1.
              IF ls_return-fieldval IS NOT INITIAL.
                GS_TAB-ZEQUNR = ls_return-fieldval.
              ENDIF.
              MODIFY gt_tab FROM gs_tab INDEX p_row_no-row_id
              TRANSPORTING ZEQUNR.
            ENDIF.
      ENDIF.
    ENDFORM.                    " F4_HELP_ZSJCS
    

    注意:F4搜索帮助框没有出现可能是因为FIELDCAT中未给F4标示打上X(GS_FIELDCAT-F4AVAILABL = 'X')
    F4搜索帮助的值没有回写进ALV字段中,可能时候因为没有写回写的代码


     

    展开全文
  • 另外,虽然主表主键上的搜索帮助会带到相应外键上来,但带过来后还可以修改,比如上面示例中带过来的搜索帮助中, CARRID 参数所对应的 EXP 没有钩上,所以不能使用命中清单中的 ID 列来自动填充示例中的屏幕...

    12.10.              Search help ( F4 )

    12.10.1.       VALUE CHECK 、 fixed Values 、 Value Table

    PARAMETERS p_1 TYPE zmy_dm_200 VALUE CHECK 注: SELECT-OPTIONS 没有此选项

    如果选择屏幕字段参考数据元素所对应的 Domaim 设置了 固定值 ( fixed Values )或 值表 ( Value Table )时,使用 VALUE CHECK 选项后,会验证输入值是否在固定值或值表( 若要使值表检查生效 ,则首先需要将此 Domain 引用到表字段,再对此表字段通过 image108 按钮进行外键分配,并且外键一定是来自的值表的主键,最后使用 PARAMETERS 定义屏幕参数时要参照此表字段,否则如果只是直接参照所对应的 DataElement 是不起作用, 即 Value Table 一定要经过转换为 Check Table 后再起作用 )范围之内

    注: 如果要使用 VALUE CHECK 选项,则 Domain 的类型只能是 C 或者 N 类型 , 否则运行会抛异常。另外, 如果未使用该选项,但 F4 Help 还是会出现 (有固定值或检查表的情况下),但不进行有效性检查了

    image109

    12.10.2.       检查表 Check Table --- Value Table

    也可以在 Domain 中指定一个值表( Value Table )作为字段取值范围的限制,但是与指定 固定值 的方式不同的是:为一个Domain 简单地指定一个取值表不会导致用户的输入被自动校验,也不会自动出现 F4 Help 。 只有 通过表外键 image110 按钮将该Value Table 指定为主表之后,一个值表才能真正成为 Check Table 。所以要想成为真正有效的 Check Table ,必须要做两个操作:

    一是 要为字段对应的 Domain 设置 Value Table (即主表 ,其实这一步不是必须的,在通过 image110[1] 按钮指定主表时,可以不用指定为字段所参照的元素所对应 Domain 所设置的 Value Table ,而是指定其他的主表也是可以的—— 但最好不要这样做 , Value Check 时会出其他问题) ,二是 要为表字段通过 image110[2] 为它设置外键 。

    12.10.3.       SE11 检查表与搜索帮助 关系

    当某个表字段有检查表,并且又有搜索帮助,则 数据一般来自源于检查表 ,而 F4 的 输入输出则由搜索帮助来决定 

    PARAMETERS p_carid TYPE sbook carrid VALUE CHECK 
    PARAMETERS p_cuter TYPE sbook counter VALUE CHECK .

    image111

    命中清单中的 ID 列即 CARRID 背景色不是蓝色,所以选择一条时,不会自动填充屏幕字段 P_CARID , 原因是对应的 Search Help中的 CARRID 参数对应的 EXP 没有打上钩:

    image112

    如果将这个钩打上,则会相应列背景色会为蓝色,且会自动填充, 达到联动效果 

    image113

    一般 当某个外键所参照主表的主键上如果设置了搜索帮助 (如上面 COUNTER 外键所引用的主表主键字段 SCOUNTER-COUNTNUM 已分配搜索帮助“ SCOUNTER_CARRIER_AIRPORT ”:image114 ), 则这个主表主键上的搜帮助会自动带到从表中相应外键上来 ,请看上面的 SBOOK-COUNTER 外键字段的搜索帮助也为“ SCOUNTER_CARRIER_AIRPORT ”,该搜索帮助决定了整个 F4 Help 处理及显示过程 (如哪些列将作为联动查询条件、哪些列将显示在 F4 列表中、 F4 列表中的哪些列会输出到相应屏幕字段中)。另外,虽然主表主键上的搜索帮助会带到相应外键上来,但带过来后还可以修改,比如上面示例中带过来的搜索帮助中, CARRID 参数所对应的 EXP 没有钩上,所以不能使用命中清单中的 ID 列来自动填充示例中的屏幕字段 P_CARID ,所以我们可以新建一个搜索帮助,并将 CARRID 搜索参数所对应的 EXP 钩上,则可达到自动上屏幕的效果;

    另外, 有些外键所参照的主表主键没有指定搜索帮助 ,此时参照从表的屏幕字段的 F4 Help 就只有简单的一列了 (如何让检查表 SCURX 中的 CURRDEC 字段也显示出来,请看后面的 F4 搜索帮助联动的决定因素 ),如下面 SBOOK-LOCCURKEY 字段:

    image115

    PARAMETERS p_cur TYPE sbook LOCCURKEY VALUE CHECK .

    image116

    12.10.4.       F4 搜索帮助联动的决定因素

    上节 SE11 检查表与搜索帮助关系 中,屏幕字段参考 sbook LOCCURKEY 时,搜索帮助输出列表只有简单一列,如果要让主表中的SCURX - CURRDEC 列也显示出来,则需要为 sbook LOCCURKEY 字段绑定一个搜索帮助,该搜索帮助数据来源于主表(或检查表)SCURX ,搜索参数包括 CURRKEY 、 CURRDEC 两列,并且让这两列在 F4 输出列表中显示(即在搜索参数“列表”栏位编号):

    image117

    由于 SBOOK 不能直接修改, ZSBOOK 从 SBOOK 拷贝过来,将搜索帮助 ZSCURX_JZJ 绑定到 ZSBOOK- LOCCURKEY :

    image118

    PARAMETERS p_cur TYPE zsbook LOCCURKEY VALUE CHECK .

    image119

    上面检查表中的 SCURX-CURRDEC 列(即 F4 中的小数位)已显示来了,但如何让其背景色为蓝色( 虽然上面已将搜索参数 CURRDEC 的EXP 打上了钩,但底色还是白色的 ),即选择时自动填充到屏幕上去?由于上面在将搜索帮助 ZSCURX_JZJ 绑定到从表字段 zsbook -LOCCURKEY 字段上时,搜索帮助中的搜索参数 CURRDEC (即主表中的字段 SCURX- CURRDEC )在从表 ZSBOOK 找不到相应的外键,所以上图绑定过程中,搜索参数 CURRDEC 为空。但在这里可以手动分配一个,由于在从表 ZSBOOK 中找不到此字段,所以就暂时参照自己 ( 主表 SCURX-CURRDEC) 吧:

    image120

    如果此时选择屏幕的代码还是上面那样: 
    PARAMETERS p_cur TYPE zsbook LOCCURKEY VALUE CHECK .

    则 F4 搜索输出列表中的“小数位”列底色还是白色,但如果 加上 以下屏幕参数,但会变以蓝色,并可联动( 如果搜索帮助的CURRDEC 参数的 IMP 打上钩,还可以实现联动查询 ):

    PARAMETERS p_cur2 TYPE SCURX-CURRDEC VALUE CHECK

    image121

    此时的下拉框也会只有两列:

    PARAMETERS p_cur3 TYPE zsbook LOCCURKEY as LISTBOX VISIBLE LENGTH   20 .

    image122

    所以,联动的决定性条件是要求选择屏幕上的字段要参照 SE11 为表字段所绑定搜索帮助过程中 所分配的表字段 ,如下图中的zsbook-loccurkey 、 scurx-currdec ,这两个字段分别与搜索帮助的 CURRKEY 、 CURRDEC 参数绑定了,所以屏幕上参照这两个表字段时,就会具有联动效果了:

    image123

    12.11.              搜索帮助参数说明

    image124

    2   IMP :输入参数。表示屏幕上相应字段是否作为搜索帮助的过滤条件(即 报表选择屏幕上的字段的值是否从报表选择屏幕上传递到搜索帮助中去 

    如果是 F4 字段时,屏幕字段中的值包含“ * ”时,才会将 F4 字段传递到 Search Help 中。除开 F4 屏幕字段外,而其他只要是 Link 到了相应的 Search Help 参数的屏幕字段,只要相应屏幕字段中有值,则会传入到搜索中作为过滤条件(而其他非F4 屏幕字段所对应的 Help 参数不管是否钩上 IMP 都会传递 ? 

    image125

    image126

    2   EXP :输出参数,表示 搜索帮助的此列会从搜索帮助中传递到报表选择屏幕 上(表示 F4 选中一条记录后显示到屏幕上文本框中的值——背景字段为浅蓝色的列的数据会被输出,输出的数据可能是多列。注: 只有当 EXP 钩上且相应字段出现在了屏幕上 ,才会自动填充到相应屏幕字段,如果没有钩上——没钩上的字段背景色为白色,即使相应参数字段出现在了屏幕上,选择命中清单时也不会自动填充),且 F4 字段一定要将 EXP 钩上 (否则选择后 F4 字段不能上屏) 

    2   LPOS (列表): F4 输出 命中清单中各列的显示顺序 ,如果为 0 或留空的列则不会显示

    2   SPOS :相应的字段是否在搜索帮助 选择屏幕上显示出来 ,在命中清单显示之前,如果弹出限制对话框,则可以进一步修改那些从选择屏幕上带过来的条件值。此数字就是限制搜索帮助选择条件屏幕字段摆放顺序,如果为 0 或留空的列则不会出在限制条件页中

    2   SDis :如果勾选了,则在弹出的限制对话框中对应的字段用户 不可输入 ,是只读的。

    12.12.              F4IF_SHLP_EXIT_EXAMPLE 帮助出口

    12.12.1.       修改数据源

    FUNCTION zfvbeln_find_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 
    *"---------------------------------------------------------------------- 
      此内表用于存储命中清单数据 . 注:字段的名称一定要与搜索参数名一样,但顺序可以不同, 
      DATA BEGIN OF lt_tab OCCURS 
            wbstk TYPE wbstk 
            lfdat TYPE lfdat_v 
            vbeln TYPE vbeln_vl 
        END OF lt_tab 
      用于存储从选择屏幕上传进的屏幕字段的选择条件值 
      DATA r_vbeln TYPE RANGE   OF vbeln_vl WITH HEADER LINE 
            r_lfdat TYPE RANGE   OF lfdat_v WITH HEADER LINE 
            r_wbstk TYPE RANGE   OF wbstk WITH HEADER LINE 
            wa_selopt LIKE LINE OF shlp selopt 
      "callcontrol-step 
    该字段的值是由系统设置,并且你可以在程序中进行修改它。出口函数会在处理的每一步(时间点)都会调用一次 
      IF callcontrol step 'SELECT' 如果有弹出限制对话框,则会在弹出限制对话框中点击确认按钮后 step 值才为 SELECT 
        "shlp-selopt 存储的是经过映射转换后选择屏幕上字段的值,而不是直接为 
        选择屏幕字段名,而是转映射为 Help 参数名后再存储到 selopt 内表中, 
        屏幕字段到 Help 参数映射是通过 shlp-interface 来映射的 
        LOOP AT shlp selopt INTO wa_selopt 
          CASE  wa_selopt shlpfield 
            WHEN 'VBELN' 由于屏幕字段已映射为了 Help 相应参数,所以这里不是 S_VBELN 
              MOVE-CORRESPONDING wa_selopt TO r_vbeln 
              APPEND r_vbeln 
            WHEN 'LFDAT' 
              MOVE-CORRESPONDING wa_selopt TO r_lfdat 
              APPEND r_lfdat 
            WHEN 'WBSTK' 
              MOVE-CORRESPONDING wa_selopt TO r_wbstk 
              APPEND r_wbstk 
          ENDCASE 
        ENDLOOP 
        根据屏幕上传进的条件查询数据 
        SELECT likp vbeln likp lfdat vbuk wbstk INTO CORRESPONDING   FIELDS OF TABLE lt_tab 
          FROM likp INNER JOIN vbuk ON likp vbeln vbuk vbeln 
          WHERE likp vbeln IN r_vbeln AND 
                likp lfdat IN r_lfdat AND 
                vbuk wbstk IN r_wbstk 
        该函数的作用是将内表 lt_tab 中的数据转换成 record_tab ,即将某内表中的数据显示在命中清单中 
        CALL FUNCTION 'F4UT_RESULTS_MAP' 
          TABLES 
            shlp_tab    shlp_tab 
            record_tab  record_tab 
            source_tab  lt_tab 
          CHANGING 
            shlp        shlp 
            callcontrol callcontrol 
        注:下一个时间点一定要直接设置为 DISP ,否则命中清单不会有值,也不显示出来 
        从表面上看, SELECT 时间点下一个就是 DISP 时间点,按理是不需要设置为 DISP , 
        但如果不设置为 DISP ,出口函数在执行完后,系统会转入 DISP 时间点执行(即再次调用此出口函数) 
        ,但再次进入此出口函数时, record_tab 内表已经被清空了(是否可以通过判断 callcontrol-step 的值来决定走什么新的逻辑代码来解决此问题?)。如果这里直接设置为 DISP ,就好比欺骗了系统一样,告诉系统当前执行的正是 DISP 时间点,而不是 SELECT ,系统就不会再转到 DISP 时间点了而是直接显示 
        callcontrol step     'DISP'   "DISP : 在命中清单显示之前调用 ,表示数据已经查出,下一步就该显示了。该时间用于控制搜索帮助的输出结果。例如,在输出搜索结果时对用户检查权限,删除未授权的数据 
      ENDIF 
    ENDFUNCTION .

    12.12.2.       删除重复

    FUNCTION zeh_lxsecond . 
       IF callcontrol - step = 'DISP' 
        SORT RECORD_TAB . 
           DELETE ADJACENT DUPLICATES FROM RECORD_TAB COMPARING ALL FIELDS . "zsecond. 
        EXIT . 
      ENDIF . 
    ENDFUNCTION .

    12.13.              搜索帮助优先级

    先 ROCESS ALUE-REQUEST , AT SELECTION-SCREEN ON VALUE-REQUEST

    再 PARAMETERS/ SELECT-OPTIONS MATCHCODE OBJECT

    先 检查表 Check Table ,再 表 (或 结构 ) 字段是否 绑定 了 搜索帮助

    先 data element 是否 绑定 了 帮助 ,再 domain 是否存在 fixed values

    最后才是 DATS 、 TIMS

     

    Domain 只设置 Value Table 也可以出 F4 ,同时 Data Element 绑定了搜索帮助,则 DataElement 上绑定的搜索帮助优先于Domain 上的 Value Table????????

    12.14.              搜索帮助创建函数

    在屏幕的 ON VALUE-REQUEST 事件里可以通过下面几个函数来创建搜索帮助:

    F4IF_ FIELD _VALUE_REQUEST : 函数的作用是在运行时,可以 动态 的为某个屏幕字段 指定 Search Help ,这个被引用的 Help 来自某个表(或结构)字段上绑定的 Help

    F4IF_ INT_TABLE _VALUE_REQUEST : 在程序运行时, 将某个内表动态的用作 Search help 的数据来源 ,即使用该函数可以将某个内表转换为 Search help ,可实现联动效果

    TR_F4_HELP : 简单实现 Search Help ,数据来源于内表

    展开全文
  • SAP通过搜索帮助找表

    千次阅读 2019-03-17 16:55:59
    此方法得益于项目上的ABAPer,字段的搜索帮助很快能找出所在表;以区域菜单、分类描述为例: 【找出SE43N区域菜单的透明表】 方式1:F1字段技术信息&gt;双击结构表名&gt;切换输入帮助/检查&gt;获得...

    此方法得益于项目上的ABAPer,字段的搜索帮助很快能找出所在表;以区域菜单、分类描述为例:

    【找出SE43N区域菜单的透明表】

    方式1:F1字段技术信息>双击结构表名>切换输入帮助/检查>获得搜索帮助

    其实双击组件也是可以看出来搜索帮助是哪个的

    表已经找到了,就是TTREE、TTREET这2张表了

    方式2:F1字段技术信息>双击数据元素>查看搜索帮助所用清单

    找到字段所在的搜索帮助

    【找出CL02分类描述的透明表】

    按照上述的思路接着走

     

    这个搜索帮助和上面看到的不一样,其实是有子搜索帮助的

    于是就找到了这2张表KLAH、SWOR

    或者、再通过值的搜索帮助也能找到视图结构了

    于是就找到了这2张表KLAH、SWOR

    展开全文
  • SE11搜索帮助

    千次阅读 2019-05-21 18:29:10
    WERKS 和MATNR 都是自定义的数据元素,因此目前没有搜索帮助。 表数据如下。 我们先创建搜索帮助 选基本。 输入表名和字段。 在这里简单说明一下下图中哥哥字段的作用。 搜索帮助参数:在F4中显示...
  • ABAP 中的搜索帮助

    万次阅读 2016-03-28 19:13:42
    在abap中,我们用到的搜索帮助个人遇到的情况如下,进行简要总结:选中屏幕中的搜索帮助 ;SE11创建搜索帮助;ALV中的搜索帮助
  • ABAP选择屏幕关联搜索帮助

    千次阅读 2018-05-14 23:14:46
    在选择屏幕的开发过程中,常用到自定义的搜索帮助,有些情况下需要更新不止一个字段以下代码提供一种实现方法(会计年度和期间的同时更新)FORM frm_year_help .  DATA:lv_month TYPE isellist-month.  data:...
  • 搜索帮助的建立方法很多,今天主要介绍通过数据字典建立搜索帮助这种方法。 首先要确定你要建立搜索帮助的字段。 我就选用ZSHR字段(这里我是已经建立好了搜索帮助) ,选择在搜索帮助中显示的字段必需要有自己...
  • ALV列表展示界面中,例如批次字段,自己用se11定义了一个集中检索搜索帮助并且引用他,在ALV界面上点击批次怎样把前面的物料给带到这个帮助条件中然后按这个物料去筛选
  • 通过SE11,根据表视图来创建搜索帮助; 通过代码,可以使用函数HELP_VALUES_GET_WITH_TABLE/F4IF_INT_TABLE_VALUE_REQUEST实现,选择屏幕的搜索帮助要放到事件AT SELECTION-SCREEN ON VALUE REQUEST FOR,DIALOG...
  • 如何给字段增加搜索帮助

    千次阅读 2016-04-22 17:14:58
    对于自建的组件,如果没有建搜索帮助或者其他什么原因,还有更简单粗暴的办法,直接抓数据,如下面的示例。 METHOD get_v_<字段名>. DATA lt_ddlb TYPE bsp_wd_dropdown_table. DATA ls_ddlb LIKE LINE OF ...
  • 面向对象OO ALV F4搜索帮助实现过程

    千次阅读 2018-05-15 09:57:41
    1、定义类lcl_event_handler、定义方法用于实现类CL_GUI_ALV_GRID的事件ONF4、实现类、实现方法;...3、注册ONF4搜索帮助事件 SET HANDLER GR_EVENT_HANDLER-&amp;amp;amp;gt;HANDLER_ONF4 FOR GV_ALVGRID。 ...
  • ALV通过参考可以直接获取表中搜索帮助,但是表中字段没有搜索帮助或者不合要求就需要通过F4事件完成了。 1、定义OOALV类 CLASS lcl_event_receiver DEFINITION DEFERRED. DATA:gt_fieldcat TYPE lvc_t_fcat, ...
  • 常用的屏幕逻辑流有PBO和PAI,还有不常用的POV和POH,POV就是 PROCESS ON VALUE-REQUEST.   FIELD FIELD_NAME MODULE F4_...我们要根据屏幕字段的输入值来判断加入的搜索帮助的值,所以要先获取屏幕字段 CLEAR:...
  • ABAP 选择界面搜索帮助

    千次阅读 2016-07-28 17:47:18
    原来的字段ILOA-TPLNR字段类型,但是该字段类型不支持模糊查询,*回车会出现E类型消息,需要使用搜索帮助,使用搜索帮助中的另一种字段,比如本字段对应的是IFLOS-STRNO,查看该字段目录,点击搜索帮助,如果有搜索...
  • ABAP开发过程中,经常遇到画得屏幕中出现日期字段(DATS), 为了便于操作,最好有搜索帮助。 其中可用的->搜索帮助:BU_DATE_CHAR 效果如下: ...
  • 申请单类型的搜索帮助采用的是域里的“用固定值输入帮助” 要求在选定了申请单类型后,审批人ID里的搜索帮助只显示对应申请单类型相对应的值。 选择屏幕部分程序如下: report zwf_report001....
  • SAP提供了预定义函数F4IF_SHLP_EXIT_EXAMPLE,创建搜索帮助。 1. 2. 复制SAP的预定义函数F4IF_SHLP_EXIT_EXAMPLE创建函数ZFVBELN_FIND_EXIT 参数和预定义函数一致,这里我们调用‘SELECT’这个时间点来进行...
  • SAP自定义搜索帮助(输入帮助选择)

    千次阅读 2012-08-17 11:22:35
    比如选择物料编码,会出现很多的系统自带的搜索帮助。因为业务需求定义自己的搜索条件和显示的数据。 下面我们来做一个自己的选择帮助。 假设我们在搜索物料的时候要按市场(MARA-NORMT)搜索,还要显示物料的库存...
  • ABAP 点击搜索帮助后取的值。

    千次阅读 2013-11-14 17:08:29
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' ... 读取第一行即点击搜索帮助后返回的内容。 另外。函数CONVERT_DATE_TO_INTERNAL 将格式为2013.11.14的日期(字符串)转化为日期格式20131114(DATE)
  • abap:alv (oo)自定义搜索帮助

    千次阅读 2013-01-22 09:56:58
    如果希望ALV中某字段具有搜索帮助,第一种办法当然是对表中某字段的引用,设置ref_table、ref_field,将自动触发该字段所带的搜索帮助。 可不可以直接设置Searh Help呢?应该不可以,找遍了field catalog的结构也没...
  • 今天一个同事问我:怎么给选择屏幕的选择文本自定义一个搜索帮助。我想了一下,就说:没用过,我试一下。同事奇怪:你三月份做的有个程序做了一个。我差点晕倒,竟然没有任何印象。同事把程序找出来给我看,果然曾经...
  • SAP TABLECONTROL 搜索帮助相关设置

    千次阅读 2013-05-20 16:06:31
    如果要为屏幕上的元素指定搜索帮助  设置:在元素清单中 REFERENCES下的搜索帮助中填写相应的搜索帮助名称 如果要显示搜索帮助按钮 设置:在元素清单中 MOD.GROUPS / FUNCTIONS 中的可能条目填写1或者2 ...
  • 屏幕字段: 为一区间 对前后的两个区间字段分别开发搜索帮助;因是同一数据,可共用一个搜索帮助; 第一步: 字义一内表,注:包含的若干字段为搜索帮助显示的内容; 第二步:在INITIALLIXATION 事件 初始化此内表...
  • ABAP:ALV中自定义搜索帮助

    千次阅读 2011-08-11 15:18:23
    如果希望ALV中某字段具有搜索帮助,第一种办法当然是对表中某字段的引用,设置ref_table、ref_field,将自动触发该字段所带的搜索帮助。 可不可以直接设置Searh Help呢?应该不可以,找遍了field catalog的结构也没...
  • SAP中如何建立F4搜索帮助

    千次阅读 2011-08-22 14:07:48
    在写ABAP代码的时候,我们经常会遇到这样的问题,当你自己在数据字典中建立了一个配置表时,你在屏幕上引用了表中的某个字段....这时我们就会用到-F4搜索帮助.接下来我将给大家介绍两种建立搜索帮助的方法.   方法一:在
  • ABAP search help (搜索帮助) 五种方法

    万次阅读 2012-06-05 14:41:17
    ABAP 的搜索帮助有很多种方法,掌握下面的几种基本差不多了 *&---------------------------------------------------------------------* *& Report ZTEST1 *& *&--------------------------------------------...
  • 用户选择屏幕搜索帮助的代码实现

    千次阅读 2011-11-14 13:15:31
    第一反应就是搜索帮助是与数据字典相关联,大凡系统表字段里的数据元素都会有默认的,但找遍了所有的表,此字段就是没有自带的搜索帮助,在想是否要自建一个数据库表,对数据元素内置一个搜索帮助,要建数据库表、...
  • sap 搜索帮助的建立

    千次阅读 2011-12-05 14:40:19
    这时我们就会用到-F4搜索帮助.接下来我将给大家介绍两种建立搜索帮助的方法.   方法一:在ABAP数据字段中直接建立相关字段的搜索帮助. 具体步骤: 1.事务码SE11打开数据字典,选中搜索帮助,填写名称,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 712,763
精华内容 285,105
关键字:

搜索帮助