无法在拆分器上执行双击

2020-08-20 03:58发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,我完全被困在这里了。 有两个...

         点击此处--->   EasySAP.com群内免费提供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)