点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,我完全被困在这里了。 有两个表ZEKKO和ZEKPO,给我的任务是双击标题表时显示项目表,现在项目表丢失了(项目内部表中有值),我无法使此工作
真的需要帮助。
我认为当我在此处进行更改时,就会出错。 我不确定我还能怎么做,然后卡在这里。
MODULE STATUS_0100输出。 将PF状态设置为" MAIN"。 设置标题栏" ZPROJ03_ALV"。 如果g_grid_left是INITIAL。 执行read_data_header。 进行DISPLAY_GRID。 ************ *** Alv工具栏 数据:对LCL_EVENTHANDLER的EVENT_HANDLER类型参考。 创建对象EVENT_HANDLER。 设置HANDLER EVENT_HANDLER-> HANDLE_DOUBLE_CLICK FOR G_GRID_RIGHT。 ************ elseif g_grid_right是INITIAL。 执行READ_DATA_items。 进行DISPLAY_GRID。 万一。 ENDMODULE。
完整代码如下:
CLASS LCL_EVENTHANDLER定义已延迟。 数据:ZEKKO03的GT_ZHEADER类型表,"" ZEKKO03的全局变量 ZEKPO03的GT_ZITEMS类型表。 "" ZEKPO03的全局变量 数据:GT_ZHEADER之类的GS_ZHEADER行, GS_ZITEMS,例如GT_ZITEMS。 数据:CL_GUI_ALV_GRID的G_GRID_LEFT类型参考,左侧网格的""实例 G_GRID_RIGHT TYPE REF CL_GUI_ALV_GRID,右侧网格的""实例 GS_LAYOUT TYPE LVC_S_LAYO,""布局全局变量 GT_FIELDCAT类型LVC_T_FCAT。 ""野猫的全局变量 数据:V_ROW TYPE LVC_S_ROW, V_COLUMN类型LVC_S_COL, V_ROW_NUM类型LVC_S_ROID。 常量:IV_MAX_ROWS TYPE I VALUE 100。 * ------------------------------------------------- -------------------- * * CLASS lcl_eventhandler的定义 * ------------------------------------------------- -------------------- * * * ------------------------------------------------- -------------------- * CLASS LCL_EVENTHANDLER DEFINITION。"类定义 公共部分。 类方法: 发生CL_GUI_ALV_GRID的事件DOUBLE_CLICK的HANDLE_DOUBLE_CLICK 输入 E_ROW E_COLUMN ES_ROW_NO SENDER。 ENDCLASS。 " LCL_EVENT_RECEIVER定义 ********** 选择开始。 通话画面100。 *&------------------------------------------------ --------------------- * *&表格read_data *&------------------------------------------------ --------------------- * *文字 * ------------------------------------------------- --------------------- * 表格READ_DATA_header。 呼叫方法ZCL_03_DATA_MODEL => SELECT_PURCHASE_ORDERS 出口 * IV_KEY = IV_MAX_ROWS = IV_MAX_ROWS 输入 IT_ZHEADER = GT_ZHEADER。 * IT_ZITEMS = * ES_BAPIRET2 = 。 ENDFORM。 格式READ_DATA_items。 呼叫方法ZCL_03_DATA_MODEL => SELECT_PURCHASE_ORDERS 出口 * IV_KEY = IV_MAX_ROWS = IV_MAX_ROWS 输入 * IT_ZHEADER = IT_ZITEMS = GT_ZITEMS * ES_BAPIRET2 = 。 ENDFORM。 " read_data *&------------------------------------------------ --------------------- * *&表格display_grid *&------------------------------------------------ --------------------- * *文字 * ------------------------------------------------- --------------------- * 表格DISPLAY_GRID。 资料:CL_GUI_SPLITTER_CONTAINER的分割类型参考, GRAPHIC_PARENT1 TYPE REF CL_GUI_CONTAINER, GRAPHIC_PARENT2 TYPE CL_GUI_CONTAINER的参考。 创建对象分割器 出口 父母= CL_GUI_CONTAINER => DEFAULT_SCREEN 行= 1 栏= 2 对齐= 15。 呼叫方法分割-> GET_CONTAINER 出口 行= 1 栏= 1 接收 容器= GRAPHIC_PARENT1。 呼叫方法分割-> GET_CONTAINER 出口 行= 1 栏= 2 接收 容器= GRAPHIC_PARENT2。 创建对象G_GRID_LEFT 出口 I_PARENT = GRAPHIC_PARENT1。 创建对象G_GRID_RIGHT 出口 I_PARENT = GRAPHIC_PARENT2。 呼叫方法G_GRID_LEFT-> SET_TABLE_FOR_FIRST_DISPLAY 出口 I_STRUCTURE_NAME ='ZEKKO03' IS_LAYOUT = GS_LAYOUT 改变 IT_OUTTAB = GT_ZHEADER IT_FIELDCATALOG = GT_FIELDCAT 例外情况 INVALID_PARAMETER_COMBINATION = 1 PROGRAM_ERROR = 2 TOO_MANY_LINES = 3 其他= 4。 如果SY-SUBRC <> 0。 消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO 与SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。 万一。 呼叫方法G_GRID_RIGHT-> SET_TABLE_FOR_FIRST_DISPLAY 出口 I_STRUCTURE_NAME ='ZEKPO03' IS_LAYOUT = GS_LAYOUT 改变 IT_OUTTAB = GT_ZITEMS IT_FIELDCATALOG = GT_FIELDCAT 例外情况 INVALID_PARAMETER_COMBINATION = 1 PROGRAM_ERROR = 2 TOO_MANY_LINES = 3 其他= 4。 如果SY-SUBRC <> 0。 消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO 与SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。 万一。 ENDFORM。 " display_grid *&------------------------------------------------ --------------------- * *&模块STATUS_0100输出 *&------------------------------------------------ --------------------- * *文字 * ------------------------------------------------- --------------------- * 模块状态_0100输出。 将PF状态设置为" MAIN"。 设置标题栏" ZPROJ03_ALV"。 *如果g_grid_left是INITIAL。 执行read_data_header。 进行DISPLAY_GRID。 * ************** *" Alv工具栏 *数据:对LCL_EVENTHANDLER的EVENT_HANDLER类型参考。 * CREATE OBJECT EVENT_HANDLER。 * SET HANDLER EVENT_HANDLER-> HANDLE_DOUBLE_CLICK FOR G_GRID_RIGHT。 * ************** * elseif g_grid_right是INITIAL。 执行READ_DATA_items。 进行DISPLAY_GRID。 * * 万一。 ENDMODULE。 " STATUS_0100输出 *&------------------------------------------------ --------------------- * *&模块DISPLAY_GRID OUTPUT *&------------------------------------------------ --------------------- * *文字 * ------------------------------------------------- --------------------- * * MODULE DISPLAY_GRID输出。 *执行READ_DATA_header。 * PERFORM READ_DATA_items。 * PERFORM DISPLAY_GRID。 * ENDMODULE。 " DISPLAY_GRID输出 *&------------------------------------------------ --------------------- * *&模块USER_COMMAND_0100输入 *&------------------------------------------------ --------------------- * *文字 * ------------------------------------------------- --------------------- * 模组USER_COMMAND_0100输入。 *对oi_custom_events做出反应: 调用方法CL_GUI_CFW => DISPATCH。 案例SY-UCOMM。 当"返回"时。 设置屏幕0。离开屏幕。 当"退出"时。 设置屏幕0。离开屏幕。 当"取消"时。 离开程序。 离开屏幕。 当别人。 * 没做什么 结束。 ENDMODULE。 " USER_COMMAND_0100输入 * ================================================= ============== *本地课程:实施 * ================================================= ============== CLASS LCL_EVENTHANDLER IMPLEMENTATION。"实现 方法:HANDLE_DOUBLE_CLICK。 *定义本地数据 数据: ZEKKO03的LT_ZHEADER类型表, ZEKPO03的LT_ZITEMS类型表, LS_ZHEADER TYPE ZEKKO03, LS_ZITEMS类型ZEKPO03。 *检查(SENDER = G_GRID_LEFT)。 将LT_ZHEADER表读入LS_ZHEADER索引E_ROW-INDEX。 *检查(LS_ZHEADER-EBELN不初始化)。 将LT_ZHEADER环入LS_ZHEADER。 呼叫方法ZCL_03_DATA_MODEL => SELECT_PURCHASE_ORDERS 出口 * IV_KEY = ls_zitems-ebeln IV_MAX_ROWS = IV_MAX_ROWS 输入 * IT_ZHEADER = GT_ZHEADER IT_ZITEMS = LT_ZITEMS * ES_BAPIRET2 = 。 结局。 执行display_grid。 **呼叫方法G_GRID_LEFT-> SET_CURRENT_CELL_VIA_ID **出口 *** IS_ROW_ID = *** IS_COLUMN_ID = ** IS_ROW_NO = ES_ROW_NO。 ** ***以指定的OK代码触发dynpro的PAI **呼叫方法CL_GUI_CFW => SET_NEW_OK_CODE('DETAILS')。 ENDMETHOD。
(34.7 kB)
好。 我可以在系统中进行复制,并且可以识别错误。 通过调试HANDLE_DOUBLE_CLICK方法很容易找到问题。
第二件事(尽管在SCN中没有人这样做),最好发布人们可以编译和执行的代码。 人们本可以在几分钟之内(而不是几天)为您提供帮助。 这是经过改编的代码,任何人都可以运行它:
屏幕100仅包含以下流逻辑:
现在运行您的代码,调试HANDLE_DOUBLE_CLICK,然后猜测问题出在哪里……
"无法正常工作"不是可识别的错误情况。
首先, Sandra Rossi 的命题是正确的,该事件发生在左侧网格中 ,而不是在右边。
第二,对象的声明应位于程序顶部。 将其保留在模块中
和第三个事件发生,但是,但是您调用了构建dynpro的相同方法。 您只需要将新数据发送到RIGHT网格并要求刷新即可。 (REFRESH_TABLE_DISPLAY)。
这是一个事件,您不需要重建所有屏幕,只需修改正确的数据并要求网格来管理新数据
" 不起作用"不是可识别的错误情况。
"不起作用"不是可识别的错误情况。
嗨,桑德拉,对不起错字,我实际上在程序中使用了LT_ZITEMS。 上面显示的屏幕快照是it_zitems是Z类中的变量,gt_zitems是我在程序中定义的全局变量。 抱歉造成混乱
我已经调试了它,没有值反映在gt_zitems中
一周热门 更多>