首页 > SAP > ABAP > 【经典系列】-OO ALV中的OK_CODE触发oo ALV外的命令
2019
08-29

【经典系列】-OO ALV中的OK_CODE触发oo ALV外的命令

如下图所示,上面是一个dialog界面,下面一个OO ALV显示结果。
如何实现,双击ALV的项目行,更新项目行信息到dialog界面上去呢?
                             
这样就对应到一个事件方法.如下代码,主要是一个方法set_new_ok_code.
*创建双击事件,显示历史记录

  create object: g_event_receiver.

  set handler g_event_receiver->handle_dbclick for all instances.

*读历史记录,更新显示

class lcl_event_receiver implementation.

  method handle_dbclick.

    p_num = es_row_norow_id.

    read table it_ztsdr001 into wa_ztsdr001 index p_num.

    if sysubrc = 0.

      move-corresponding wa_ztsdr001 to ztsdr001.

    endif.

    call method cl_gui_cfw=>set_new_ok_code

      exporting

        new_code = ‘ZREFRESH’.

  endmethod.                    “handle_dbclick

ALV部分生成了新的ok_code.
Dialog部分,执行新的user_command就可以实现了。
module user_command_0100 input.

  case ok_code.

    when ‘ZREFRESH’.

      ztsdr001 = wa_ztsdr001.

    when ‘NEW’.

      clear ztsdr001.

    when ‘SAVE’.

      clear ok_code.

*—-生成凭证(无报错,才能执行,凭证生成!)

      if l_error = 0 and ztsdr001vbeln = .

*创建前加锁

*        perform frm_enqueue.

        perform generate_doc.

*        perform frm_dequeue.

      endif.

*    when ‘MESSAGE’.

*      perform frm_message.

    when ‘BACK’.

      clear ok_code.

      clear ztsdr001.

      clear wa_ztsdr001.

      leave to screen 0.

    when ‘EXIT’.

      clear ok_code.

      clear ztsdr001.

      clear wa_ztsdr001.

      leave to screen 0.

    when ‘LEAVE’.

      clear ok_code.

      clear ztsdr001.

      clear wa_ztsdr001.

      leave program.

*    when others.

*      call method cl_gui_cfw=>get_current_event_object

*              receiving

*                 event_object = return.

*      call method cl_gui_cfw=>dispatch.

  endcase.

  clear ok_code.

endmodule.                 ” USER_COMMAND_0100  INPUT

最后编辑:
作者:yangsen
有需要可在文章留言或者邮件yan252@163.com给我。

留下一个回复

你的email不会被公开。

3 − 1 =