热点无法显示屏幕

2020-08-20 17:58发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,我正在为即将进行的项目做准备工作时,Ive成功显示了一个简单的Alv报告,但我无法单击调用事务的matnr。 抱歉,我在这里还很新,您的输入将不胜感激

 *&---------------------------------------------  ------------------------ *
 *&报告ZAS_PROGRAM_OOALV
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 报告ZAS_PROGRAM_OOALV_V1。

 类型:开始于TY_MAT,
          MATNR TYPE MARA-MATNR,
          MTART类型MARA-MTART,
          MATNR_1 TYPE MARC-MATNR,
          WERKS TYPE MARC-WERKS,
          WERKS_1 TYPE T001W-WERKS,
          NAME1 TYPE T001W-NAME1,
        TY_MAT结束。


 数据:IT_MAT TYPE TABLE OF TY_MAT,
       WA_MAT喜欢LINE OF IT_MAT。

 数据:lvc_s_fcat的it_fcat类型标准表,
       wa_fcat TYPE lvc_s_fcat。

 数据:lvc_s_sort的it_sort类型标准表,
       wa_sort TYPE lvc_s_sort。

 数据:container_r类型参考cl_gui_custom_container,
       grid_r类型参考CL_GUI_alv_grid。

 **********
 CLASS lcl_events_d0100定义已延迟。
   数据gr_events_d0100类型参考lcl_events_d0100。
 *********



 初始化。

 带有标题标题文本001的块TEST1的选择屏幕开始。
 WA_MAT-MAT​​NR的SELECT-OPTIONS S_MATNR强制性无扩展名。  ""必须-仅填充上限将提示错误,如果仅填充下限将不会提示
 *参数:s_matnr类似于lv_matnr。
 块测试的选择屏幕结束1。



 CLASS lcl_mat定义。
   公共部分。
   方法:get_mat,
            fld_cat。
   ENDCLASS。


 ******************
 类别lcl_events_d0100定义。

   公共部分。
       方法:cl_gui_alv_grid的事件hotspot_click的handle_hotspot_click
           输入
              e_row_id
              e_column_id
              es_row_no
              发件人。


   ENDCLASS。
 *******************
 *
 ******************
 类别lcl_events_d0100实施。


 方法handle_hotspot_click。
   数据ls_col_id类型lvc_s_col。
   读取表it_​​mat INTO wa_mat INDEX e_row_id-index。

  设置参数ID'MATNR'字段wa_mat-matnr。

   如果sy-subrc = 0。
 *检查(wa_mat-matnr不是initial)。

 案例e_column_id-fieldname。
   当" MATNR"时。
     呼叫交易'mm03'。
     当别人。
 **基本上什么也没做。
         尾箱。



   调用方法grid_r-> set_current_cell_via_id
   出口
     is_row_id = e_row_id
     is_column_id = ls_col_id。

   万一。

   终结法。


 ENDCLASS。
 *******************

       选择开始。

       参考lcl_mat的数据垫类型。
       创建对象垫。  ""实例
       调用方法:mat-> get_mat。

  类lcl_mat IMPLEMENTATION。

   方法:get_mat。
 * -------------------------------------------------  --------------------------------- *

   选择一个〜MATNR
          A〜MTART
          B〜WERKS
          C〜NAME1
     A〜MATNR = B〜MATNR中来自MARA作为内联接MARC AS的表IT_MAT的对应字段
     内连接T001W AS C ON B〜WERKS = C〜WERKS
     在S_MATNR中的A〜MATNR。

     调用METHOD:fld_cat。

      呼叫屏幕900。

     方法。


     方法:fld_cat。

       清除wa_fcat。
       刷新it_fcat。
       数据:NO TYPE i值为0。

     否=否+ 1。
     wa_fcat-col_pos = NO。
     wa_fcat-fieldname ='matnr'。
     wa_fcat-tabname ='it_mat'。
     wa_fcat-reptext ='物料号'。
     wa_fcat-col_opt ='X'。  ""列优化
     wa_fcat-no_zero ='X'。
     wa_fcat-hotspot ='X'。
     将wa_fcat附加到it_fcat。
     清除wa_fcat。

     否=否+ 1。
     wa_fcat-col_pos = NO。
     wa_fcat-fieldname ='mtart'。
     wa_fcat-tabname ='it_mat'。
     wa_fcat-reptext ='材料类型'。
     wa_fcat-col_opt ='X'。  ""列优化
     将wa_fcat附加到it_fcat。
     清除wa_fcat。

     否=否+ 1。
     wa_fcat-col_pos = NO。
     wa_fcat-fieldname ='werks'。
     wa_fcat-tabname ='it_mat'。
     wa_fcat-reptext ='植物'。
     wa_fcat-col_opt ='X'。  ""列优化
     将wa_fcat附加到it_fcat。
     清除wa_fcat。

         否=否+ 1。
     wa_fcat-col_pos = NO。
     wa_fcat-fieldname ='name1'。
     wa_fcat-tabname ='it_mat'。
     wa_fcat-reptext ='植物描述'。
     wa_fcat-col_opt ='X'。  ""列优化
     将wa_fcat附加到it_fcat。
     清除wa_fcat。

     否=否+ 1。
     wa_sort-SPOS =否。
     wa_sort-fieldname ='matnr'。
     wa_sort-down ='X'。
     附加wa_sort到it_sort。
     清除wa_sort。

         否=否+ 1。
     wa_sort-SPOS =否。
     wa_sort-fieldname ='mtart'。
     wa_sort-down ='X'。
     附加wa_sort到it_sort。
     清除wa_sort。


       终结法。


 ENDCLASS。

 *&------------------------------------------------  --------------------- *
 *&模块STATUS_0900输出
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 模块状态_0900输出。
  设置PF状态" SCREEN_900"。
  设置标题栏" SCREEN_900"。


  创建对象容器_R
    出口
 *父母=
      CONTAINER_NAME ='CONTAINER'
 *样式=
 * LIFETIME =生命周期默认值
 * REPID =
 * DYNNR =
 * NO_AUTODEF_PROGID_DYNNR =
 *例外情况
 * CNTL_ERROR = 1
 * CNTL_SYSTEM_ERROR = 2
 * CREATE_ERROR = 3
 * LIFETIME_ERROR = 4
 * LIFETIME_DYNPRO_DYNPRO_LINK = 5
 *其他= 6
      。
 *如果SY-SUBRC <> 0。
 **消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO
 **使用SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。
 * 万一。

  创建对象GRID_R
    出口
 * I_SHELLSTYLE = 0
 * I_LIFETIME =
      I_PARENT = container_r""容器对象名称
 * I_APPL_EVENTS =空格
 * I_PARENTDBG =
 * I_APPLOGPARENT =
 * I_GRAPHICSPARENT =
 * I_NAME =
 * I_FCAT_COMPLETE =空格
 * O_PREVIOUS_SRAL_HANDLER =
 *例外情况
 * ERROR_CNTL_CREATE = 1
 * ERROR_CNTL_INIT = 2
 * ERROR_CNTL_LINK = 3
 * ERROR_DP_CREATE = 4
 *其他= 5
      。
 *如果SY-SUBRC <> 0。
 **消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO
 **使用SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。
 * 万一。

  呼叫方法GRID_R-> SET_TABLE_FOR_FIRST_DISPLAY
    出口
 * I_BUFFER_ACTIVE =
 * I_BYPASSING_BUFFER =
 * I_CONSISTENCY_CHECK =
      I_STRUCTURE_NAME ='it_mat'
 * IS_VARIANT =
 * I_SAVE =
 * I_DEFAULT ='X'
 * IS_LAYOUT =
 * IS_PRINT =
 * IT_SPECIAL_GROUPS =
 * IT_TOOLBAR_​​EXCLUDING =
 * IT_HYPERLINK =
 * IT_ALV_GRAPHICS =
 * IT_EXCEPT_QINFO =
 * IR_SALV_ADAPTER =
    改变
      IT_OUTTAB = it_mat
      IT_FIELDCATALOG = it_fcat
      IT_SORT = it_sort
 * IT_FILTER =
 *例外情况
 * INVALID_PARAMETER_COMBINATION = 1
 * PROGRAM_ERROR = 2
 * TOO_MANY_LINES = 3
 *其他= 4
          。
 *如果SY-SUBRC <> 0。
 **在此处实施适当的错误处理
 * 万一。


 数据:ty_toolbar TYPE stb_button。
 数据:e_object类型参考cl_alv_event_toolbar_set,
        io_alv_toolbar类型参考cl_alv_event_toolbar_set。
 " Alv工具栏
 数据:event_handler类型参考为lcl_events_d0100。

   创建对象event_handler。
   设置处理程序event_handler-> handle_hotspot_click FOR grid_r。



 ENDMODULE。




 *&------------------------------------------------  --------------------- *
 *&模块USER_COMMAND_0900输入
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模组USER_COMMAND_0900输入。

 如果sy-ucomm ='EXIT'。
   设置屏幕0。
   消息"您没有保存就离开屏幕" TYPE" S"。

  ELSEIF sy-ucomm ='返回'。
   设置屏幕0。
   消息"您没有保存就离开屏幕" TYPE" S"。

    ELSEIF sy-ucomm ='保存'。
   设置屏幕0。
   消息"已保存更改" TYPE" S"。

    ELSEIF sy-ucomm ='执行'。
   通话画面900。

 万一。


 ENDMODULE。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,我正在为即将进行的项目做准备工作时,Ive成功显示了一个简单的Alv报告,但我无法单击调用事务的matnr。 抱歉,我在这里还很新,您的输入将不胜感激

 *&---------------------------------------------  ------------------------ *
 *&报告ZAS_PROGRAM_OOALV
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 报告ZAS_PROGRAM_OOALV_V1。

 类型:开始于TY_MAT,
          MATNR TYPE MARA-MATNR,
          MTART类型MARA-MTART,
          MATNR_1 TYPE MARC-MATNR,
          WERKS TYPE MARC-WERKS,
          WERKS_1 TYPE T001W-WERKS,
          NAME1 TYPE T001W-NAME1,
        TY_MAT结束。


 数据:IT_MAT TYPE TABLE OF TY_MAT,
       WA_MAT喜欢LINE OF IT_MAT。

 数据:lvc_s_fcat的it_fcat类型标准表,
       wa_fcat TYPE lvc_s_fcat。

 数据:lvc_s_sort的it_sort类型标准表,
       wa_sort TYPE lvc_s_sort。

 数据:container_r类型参考cl_gui_custom_container,
       grid_r类型参考CL_GUI_alv_grid。

 **********
 CLASS lcl_events_d0100定义已延迟。
   数据gr_events_d0100类型参考lcl_events_d0100。
 *********



 初始化。

 带有标题标题文本001的块TEST1的选择屏幕开始。
 WA_MAT-MAT​​NR的SELECT-OPTIONS S_MATNR强制性无扩展名。  ""必须-仅填充上限将提示错误,如果仅填充下限将不会提示
 *参数:s_matnr类似于lv_matnr。
 块测试的选择屏幕结束1。



 CLASS lcl_mat定义。
   公共部分。
   方法:get_mat,
            fld_cat。
   ENDCLASS。


 ******************
 类别lcl_events_d0100定义。

   公共部分。
       方法:cl_gui_alv_grid的事件hotspot_click的handle_hotspot_click
           输入
              e_row_id
              e_column_id
              es_row_no
              发件人。


   ENDCLASS。
 *******************
 *
 ******************
 类别lcl_events_d0100实施。


 方法handle_hotspot_click。
   数据ls_col_id类型lvc_s_col。
   读取表it_​​mat INTO wa_mat INDEX e_row_id-index。

  设置参数ID'MATNR'字段wa_mat-matnr。

   如果sy-subrc = 0。
 *检查(wa_mat-matnr不是initial)。

 案例e_column_id-fieldname。
   当" MATNR"时。
     呼叫交易'mm03'。
     当别人。
 **基本上什么也没做。
         尾箱。



   调用方法grid_r-> set_current_cell_via_id
   出口
     is_row_id = e_row_id
     is_column_id = ls_col_id。

   万一。

   终结法。


 ENDCLASS。
 *******************

       选择开始。

       参考lcl_mat的数据垫类型。
       创建对象垫。  ""实例
       调用方法:mat-> get_mat。

  类lcl_mat IMPLEMENTATION。

   方法:get_mat。
 * -------------------------------------------------  --------------------------------- *

   选择一个〜MATNR
          A〜MTART
          B〜WERKS
          C〜NAME1
     A〜MATNR = B〜MATNR中来自MARA作为内联接MARC AS的表IT_MAT的对应字段
     内连接T001W AS C ON B〜WERKS = C〜WERKS
     在S_MATNR中的A〜MATNR。

     调用METHOD:fld_cat。

      呼叫屏幕900。

     方法。


     方法:fld_cat。

       清除wa_fcat。
       刷新it_fcat。
       数据:NO TYPE i值为0。

     否=否+ 1。
     wa_fcat-col_pos = NO。
     wa_fcat-fieldname ='matnr'。
     wa_fcat-tabname ='it_mat'。
     wa_fcat-reptext ='物料号'。
     wa_fcat-col_opt ='X'。  ""列优化
     wa_fcat-no_zero ='X'。
     wa_fcat-hotspot ='X'。
     将wa_fcat附加到it_fcat。
     清除wa_fcat。

     否=否+ 1。
     wa_fcat-col_pos = NO。
     wa_fcat-fieldname ='mtart'。
     wa_fcat-tabname ='it_mat'。
     wa_fcat-reptext ='材料类型'。
     wa_fcat-col_opt ='X'。  ""列优化
     将wa_fcat附加到it_fcat。
     清除wa_fcat。

     否=否+ 1。
     wa_fcat-col_pos = NO。
     wa_fcat-fieldname ='werks'。
     wa_fcat-tabname ='it_mat'。
     wa_fcat-reptext ='植物'。
     wa_fcat-col_opt ='X'。  ""列优化
     将wa_fcat附加到it_fcat。
     清除wa_fcat。

         否=否+ 1。
     wa_fcat-col_pos = NO。
     wa_fcat-fieldname ='name1'。
     wa_fcat-tabname ='it_mat'。
     wa_fcat-reptext ='植物描述'。
     wa_fcat-col_opt ='X'。  ""列优化
     将wa_fcat附加到it_fcat。
     清除wa_fcat。

     否=否+ 1。
     wa_sort-SPOS =否。
     wa_sort-fieldname ='matnr'。
     wa_sort-down ='X'。
     附加wa_sort到it_sort。
     清除wa_sort。

         否=否+ 1。
     wa_sort-SPOS =否。
     wa_sort-fieldname ='mtart'。
     wa_sort-down ='X'。
     附加wa_sort到it_sort。
     清除wa_sort。


       终结法。


 ENDCLASS。

 *&------------------------------------------------  --------------------- *
 *&模块STATUS_0900输出
 *&------------------------------------------------  --------------------- *
 *&
 *&------------------------------------------------  --------------------- *
 模块状态_0900输出。
  设置PF状态" SCREEN_900"。
  设置标题栏" SCREEN_900"。


  创建对象容器_R
    出口
 *父母=
      CONTAINER_NAME ='CONTAINER'
 *样式=
 * LIFETIME =生命周期默认值
 * REPID =
 * DYNNR =
 * NO_AUTODEF_PROGID_DYNNR =
 *例外情况
 * CNTL_ERROR = 1
 * CNTL_SYSTEM_ERROR = 2
 * CREATE_ERROR = 3
 * LIFETIME_ERROR = 4
 * LIFETIME_DYNPRO_DYNPRO_LINK = 5
 *其他= 6
      。
 *如果SY-SUBRC <> 0。
 **消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO
 **使用SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。
 * 万一。

  创建对象GRID_R
    出口
 * I_SHELLSTYLE = 0
 * I_LIFETIME =
      I_PARENT = container_r""容器对象名称
 * I_APPL_EVENTS =空格
 * I_PARENTDBG =
 * I_APPLOGPARENT =
 * I_GRAPHICSPARENT =
 * I_NAME =
 * I_FCAT_COMPLETE =空格
 * O_PREVIOUS_SRAL_HANDLER =
 *例外情况
 * ERROR_CNTL_CREATE = 1
 * ERROR_CNTL_INIT = 2
 * ERROR_CNTL_LINK = 3
 * ERROR_DP_CREATE = 4
 *其他= 5
      。
 *如果SY-SUBRC <> 0。
 **消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO
 **使用SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。
 * 万一。

  呼叫方法GRID_R-> SET_TABLE_FOR_FIRST_DISPLAY
    出口
 * I_BUFFER_ACTIVE =
 * I_BYPASSING_BUFFER =
 * I_CONSISTENCY_CHECK =
      I_STRUCTURE_NAME ='it_mat'
 * IS_VARIANT =
 * I_SAVE =
 * I_DEFAULT ='X'
 * IS_LAYOUT =
 * IS_PRINT =
 * IT_SPECIAL_GROUPS =
 * IT_TOOLBAR_​​EXCLUDING =
 * IT_HYPERLINK =
 * IT_ALV_GRAPHICS =
 * IT_EXCEPT_QINFO =
 * IR_SALV_ADAPTER =
    改变
      IT_OUTTAB = it_mat
      IT_FIELDCATALOG = it_fcat
      IT_SORT = it_sort
 * IT_FILTER =
 *例外情况
 * INVALID_PARAMETER_COMBINATION = 1
 * PROGRAM_ERROR = 2
 * TOO_MANY_LINES = 3
 *其他= 4
          。
 *如果SY-SUBRC <> 0。
 **在此处实施适当的错误处理
 * 万一。


 数据:ty_toolbar TYPE stb_button。
 数据:e_object类型参考cl_alv_event_toolbar_set,
        io_alv_toolbar类型参考cl_alv_event_toolbar_set。
 " Alv工具栏
 数据:event_handler类型参考为lcl_events_d0100。

   创建对象event_handler。
   设置处理程序event_handler-> handle_hotspot_click FOR grid_r。



 ENDMODULE。




 *&------------------------------------------------  --------------------- *
 *&模块USER_COMMAND_0900输入
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 模组USER_COMMAND_0900输入。

 如果sy-ucomm ='EXIT'。
   设置屏幕0。
   消息"您没有保存就离开屏幕" TYPE" S"。

  ELSEIF sy-ucomm ='返回'。
   设置屏幕0。
   消息"您没有保存就离开屏幕" TYPE" S"。

    ELSEIF sy-ucomm ='保存'。
   设置屏幕0。
   消息"已保存更改" TYPE" S"。

    ELSEIF sy-ucomm ='执行'。
   通话画面900。

 万一。


 ENDMODULE。
付费偷看设置
发送
5条回答
95年老男孩
1楼 · 2020-08-20 18:03.采纳回答

您好,无法识别您正在使用

 CL_GUI_alv_grid
 

要回答您的问题,您是否调试了问题? 我调查了一下,因为在第二个视图中没有看到错误。

但是..如果将matnr与MATNR进行比较,它将永远不会出现问题。 使用常量:-)

,您也不会对系统找不到mm03感到不满意...请记住区分大小写的内容...

N-Moskvin
2楼-- · 2020-08-20 18:07

谢谢 您的回答,我可以单击它,但在交易mm03中未显示相关材料。

我仍在学习调试,并插入了跳过第一屏的CALL TRANSACTION'MM03'和SKIP FIRST SCREEN。 在右边,应该跳过mm03选择屏幕并显示相关材料,仍在查看

"文字不好。请使用常量:-)"

您介意对此陈述进行详细说明吗?

宇峰Kouji
3楼-- · 2020-08-20 18:16

NEw不是问题。 我们是一个社区,彼此帮助。

以下是带有相同问题的链接:

https://answers.sap。 com/questions/7832265/alv-hotspot-and-on-click-event.html

也许您使自己熟悉搜索。

在这里看看,光学元件已经改变了一点,但是结果保持不变:

https://blogs.sap.com/2015/11/30/how-to-use-the-new-search-on-scn /

95年老男孩
4楼-- · 2020-08-20 18:14

嗨,弗洛里安,感谢您的回复, 这里是使用salv,但是对于我来说,我使用的是较旧的oo alv,这是否意味着我必须重做?

我的代码在结构上是否存在任何问题,以便我可以对其进行研究?

Cikesha
5楼-- · 2020-08-20 18:14

嗨,

为了找出问题,请在以下位置添加断点:

 CASE e_column_id-fieldname。
   当" MATNR"时。
     呼叫交易'mm03'。
     当别人。
 断点。
 

模块USER_COMMAND_0900输入。
   断点

一旦到达那里,找出您的控件将要到达哪里? 其次sy-ucomm值和e_column_id

是什么,并告诉我您的发现是什么。

问候

p>嗨

哦,这是拼写错误。 应该是MM03。

我知道什么是sy-comm。我的意思是,我希望您检查调试时这些变量中包含的值。

一周热门 更多>