活动在ALV中无法完全正常运行吗?

2020-09-09 21:40发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好 在我的ALV报告中,似...

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

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


大家好

在我的ALV报告中,似乎活动仅部分起作用。

未获得自定义GUI状态或标准GUI状态,自定义GUI按钮也未显示。

只有空白的"页面顶部"区域可见。

**当不使用"事件"内部表并将例程传递给I_callback参数时出现相同的问题。

 *&------------------------------------------------  --------------------- *
 *&表格DISPLAY_ALV
 *&------------------------------------------------  --------------------- *
 FORM display_alv。

  通话功能'REUSE_ALV_GRID_DISPLAY'
    出口
 * i_callback_program = sy-cprog
 * i_callback_pf_status_set ='f_pf_status'
 * i_callback_user_command ='f_user_cmd'
 * i_callback_top_of_page ='f_top_of_page'
 * i_grid_title ='GRID DISPLAY'
      is_layout = wa_layout
      it_fieldcat = it_fldcat
      IT_EVENTS = it_event
     桌子
       t_outtab = it_final
    例外情况
      PROGRAM_ERROR = 1
      其他= 2
             。
   如果sy-subrc <> 0。
 *在这里实施适当的错误处理
   万一。

 ENDFORM。  " DISPLAY_ALV

 *&------------------------------------------------  --------------------- *
 *&表格ALV_EVENTS
 *&------------------------------------------------  --------------------- *
 格式alv_events。

   wa_event-name ='TOP_OF_PAGE'。
   wa_event-form ='f_top_of_page'。
   将wa_event附加到it_event。
   清除wa_event。

   wa_event-name ='USER_COMMAND'。
   wa_event-form ='f_user_cmd'。
   将wa_event附加到it_event。
   清除wa_event。

   wa_event-name ='PF_STATUS_SET'。
   wa_event-form ='f_pf_status'。
   将wa_event附加到it_event。

 ENDFORM。  " ALV_EVENTS

 *&------------------------------------------------  --------------------- *
 *&表格F_TOP_OF_PAGE
 *&------------------------------------------------  --------------------- *
 表格f_top_of_page。

   数据:it_top TYPE slis_t_listheader,
         wa_top类似于it_top的行。

   wa_top-typ ='H'。
   wa_top-info ='材料和植物'。
   附加wa_top到it_top。

   通话功能" REUSE_ALV_COMMENTARY_WRITE"
     出口
       it_list_commentary = it_top。
   ENDFORM。  " F_TOP_OF_PAGE

 *&------------------------------------------------  --------------------- *
 *&表格F_PF_STATUS
 *&------------------------------------------------  -------------------- *
 表格f_pf_status。
  
     设置PF-STATUS'NEWGUI'。

 ENDFORM。  " F_PF_STSTUS

 *&------------------------------------------------  --------------------- *
 *&表格F_USER_CMD
 *&------------------------------------------------  --------------------- *
 表格f_user_cmd。

  数据:r_ucomm就像sy-ucomm,
        rs自私的TYPE slis_selfield。

   案例r_ucomm。
     当" PDF"。
       执行get_pdf。
     当"邮件"。
       执行send_mail。
   结束。
 ENDFORM。

 

请帮助。

 谢谢。
alv-problem.jpg (264.4 kB)
8条回答
悠然的二货
2020-09-09 22:09 .采纳回答

好的。 我认为您的意思是希望ALV按钮出现在标题和网格之间。 使用下面的解决方案2可以做到这一点,但这意味着这些按钮将不会成为GUI状态的一部分,因为GUI状态按钮仅出现在屏幕顶部。 但这是一个复杂的解决方案,因此我建议将所有按钮都放在解决方案1的标题上方(在"应用程序工具栏"中)。

解决方案1:将按钮显示在应用程序工具栏中的最上方 一种简单的解决方案->创建一个GUI状态,例如ALV全屏GUI状态(复制程序SAPLKKBL的GUI状态STANDARD_FULLSCREEN)并添加自定义按钮。

解决方案2:在标题和网格之间显示按钮, 您必须在所谓的"容器"中显示网格->使用类CL_SALV_TABLE或CL_GUI_ALV_GRID代替功能模块REUSE_ALV_GRID_DISPLAY。

处理上方容器中的标题。 您可以使用CL_ABAP_BROWSER类显示文本。

通过CL_GUI_SPLITTER_CONTAINER类将两个容器排列成一个容器。

在dynpro屏幕内定义自定义容器元素。

例如(当然在PBO中):

 DATA(go_custom_container)= NEW cl_gui_custom_container(
           container_name ='NAME_OF_YOUR_CUSTOM_CONTAINER')。

   DATA(go_splitter)=新的cl_gui_easy_splitter_container(
           父母= go_custom_container
           方向= cl_gui_easy_splitter_container => ORIENTATION_VERTICAL)。

   " TODO:调整顶部容器的高度(默认为屏幕高度的一半)

   cl_abap_browser => show_html(html_string =`
Hello world
` check_html = abap_false container = go_splitter-> TOP_LEFT_CONTAINER)。 cl_salv_table =>工厂( 出口 r_container = go_splitter-> BOTTOM_RIGHT_CONTAINER 输入 r_salv_table = go_salv 改变 t_table = it_final [])。 " TODO:处理按钮的SALV事件,定义布局等。

一周热门 更多>