点击此处---> 群内免费提供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-MATNR的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。
您好,无法识别您正在使用
要回答您的问题,您是否调试了问题? 我调查了一下,因为在第二个视图中没有看到错误。
但是..如果将matnr与MATNR进行比较,它将永远不会出现问题。 使用常量:-)
,您也不会对系统找不到mm03感到不满意...请记住区分大小写的内容...
谢谢 您的回答,我可以单击它,但在交易mm03中未显示相关材料。
我仍在学习调试,并插入了跳过第一屏的CALL TRANSACTION'MM03'和SKIP FIRST SCREEN。 在右边,应该跳过mm03选择屏幕并显示相关材料,仍在查看
"文字不好。请使用常量:-)"
您介意对此陈述进行详细说明吗?
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 /
嗨,弗洛里安,感谢您的回复, 这里是使用salv,但是对于我来说,我使用的是较旧的oo alv,这是否意味着我必须重做?
我的代码在结构上是否存在任何问题,以便我可以对其进行研究?
嗨,
为了找出问题,请在以下位置添加断点:
和
一旦到达那里,找出您的控件将要到达哪里? 其次sy-ucomm值和e_column_id
是什么,并告诉我您的发现是什么。
问候
p>嗨哦,这是拼写错误。 应该是MM03。
我知道什么是sy-comm。我的意思是,我希望您检查调试时这些变量中包含的值。
一周热门 更多>