zoukankan      html  css  js  c++  java
  • SAP ALV OO 选择行打印

    &---------------------------------------------------------------------*
    *& Report  ZSDF001
    *&
    *&---------------------------------------------------------------------*
    *&
    *&
    *&---------------------------------------------------------------------*

    REPORT ZSDF001.
    INCLUDE ZSDF001_INC_001.
    TABLES:VTTP,LIPS,LIKP,KNA1.
    TYPES:BEGIN OF TY_HEADER,
          NAME1 LIKE KNA1-NAME1,"客户名称
          ORT01 LIKE KNA1-ORT01,"城市
          REGIO LIKE KNA1-REGIO,"地区
          STRAS LIKE KNA1-STRAS,"街道
          TELF1 LIKE KUWEV-TELF1,"电话
          VBELN LIKE LIKP-VBELN,"交货单号
          VGBEL LIKE LIPS-VGBEL,"订单号
          BLDAT LIKE LIKP-BLDAT,"日期
          LNUMT LIKE T300T-LNUMT,"仓库
        END OF TY_HEADER.
    *单据抬头结束
    *单据明细开始
    TYPES:BEGIN OF TY_ITEMS,
         GV_NAME  LIKE KNA1-NAME1,"客户名称
         GV_KUNAG LIKE LIKP-KUNAG,"客户编号(售达方)
         GV_MATNR LIKE LIPS-MATNR,"物料编码
         GV_ARKTX LIKE LIPS-ARKTX,"物料描述
         GV_LFIMG LIKE LIPS-LFIMG,"交货数量
        END OF TY_ITEMS.
    *单据明细结束
    DATA:fm_name TYPE rs38l_fnam.
    DATA:itemsname(32TYPE c.
    DATA:headername(32TYPE c.
    DATA:GT_ITEMS TYPE TY_ITEMS OCCURS 0.
    DATA:WA_ITEMS TYPE TY_ITEMS.
    DATA:lt_prt_temp TYPE TY_ITEMS OCCURS 0.
    *DATA:gs_tab type TY_ITEMS,
    *     gt_tab type TABLE OF GT_ITEMS.

    DATA: alv  TYPE REF TO cl_salv_table.
    DATA columns TYPE REF TO cl_salv_columns_table.
    DATA column TYPE REF TO cl_salv_column_table.
    data lr_selections TYPE REF TO cl_salv_selections.


    START-OF-SELECTION.

    SELECT-OPTIONS: P_TKNUM FOR VTTP-TKNUM OBLIGATORY.
    PERFORM FRM_GET_DATA.
    PERFORM INITIALIZE_ALV.
    alv->display).
    *PERFORM Z_ALV_PRINT.
    *PERFORM FRM_PRINT_DATA.
    END-OF-SELECTION.

    FORM FRM_GET_DATA.
        SELECT k~NAME1 L1~KUNAG L2~MATNR L2~ARKTX L2~LFIMG
          FROM VTTP AS V
           INNER  JOIN LIKP AS L1
          ON V~VBELN = L1~VBELN
          INNER  JOIN KNA1 AS K
          ON L1~KUNAG = K~KUNNR
          INNER  JOIN LIPS AS L2
          ON L2~VBELN = L1~VBELN
        INTO (WA_ITEMS-GV_NAME,WA_ITEMS-GV_KUNAG,WA_ITEMS-GV_MATNR,WA_ITEMS-GV_ARKTX,
                WA_ITEMS-GV_LFIMG)
          WHERE V~TKNUM IN P_TKNUM .
          APPEND WA_ITEMS TO GT_ITEMS.
        SORT GT_ITEMS BY GV_KUNAG.
        CLEAR WA_ITEMS.
        ENDSELECT.

    ENDFORM.




    CLASS lcl_handle_events DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS: on_user_command FOR EVENT added_function OF cl_salv_events_table
                        IMPORTING e_salv_function,
                       on_before_salv_function FOR EVENT before_salv_function OF cl_salv_events_table
                        IMPORTING e_salv_function,
                       on_after_salv_function FOR EVENT after_salv_function OF cl_salv_events_table
                        IMPORTING e_salv_function.
      PRIVATE SECTION.
        CLASS-DATA: g_string TYPE string.
    ENDCLASS.                    "lcl_handle_events DEFINITION

    *----------------------------------------------------------------------*
    *       CLASS lcl_handle_events IMPLEMENTATION
    *----------------------------------------------------------------------*
    *       事件操作类(实现)
    *----------------------------------------------------------------------*
    CLASS lcl_handle_events IMPLEMENTATION.

    *单击新增功能按钮事件处理方法
      METHOD on_user_command.

        DATA:lines TYPE .
        DATA:MODCOUNT TYPE VALUE 3."一页显示几行
        DATA:COUNT TYPE i.

         CASE e_salv_function.
        WHEN '&PRINT'.
          PERFORM SEL_CHECK.
          DESCRIBE TABLE lt_prt_temp LINES lines.
          COUNT =   lines mod MODCOUNT .
          COUNT = MODCOUNT COUNT.
          DO COUNT TIMES.
              APPEND WA_ITEMS TO lt_prt_temp.
          ENDDO.

          PERFORM FRM_PRINT_DATA.
          CLEAR lt_prt_temp.
          WHEN '&BACK'.
            LEAVE TO SCREEN 0.
      ENDCASE.
      ENDMETHOD.                    "on_user_command


    *触发事件之前
      METHOD on_before_salv_function.
        CONCATENATE 'Before Function '
                    e_salv_function
               INTO g_string SEPARATED BY space.
        MESSAGE i000(0kWITH g_string.
      ENDMETHOD.                    "on_before_salv_function

    *触发事件之后
      METHOD on_after_salv_function.
        CONCATENATE 'After Function '
                    e_salv_function
               INTO g_string SEPARATED BY space.
        MESSAGE i000(0kWITH g_string.
      ENDMETHOD.                    "on_after_salv_function
    ENDCLASS.                    "lcl_handle_events IMPLEMENTATION

    FORM INITIALIZE_ALV .
    DATA message TYPE REF TO cx_salv_msg.
    data lr_events     TYPE REF TO cl_salv_events_table.

      TRY.
        cl_salv_table=>factory(
          IMPORTING
          r_salv_table = alv
          CHANGING
            t_table = GT_ITEMS ).


    "设置GUI Status
        alv->set_screen_status(
          report = sy-repid
          pfstatus 'STANDARD'
          set_functions = alv->c_functions_all
        ).

        "注册事件
        lr_events = alv->get_event).
        SET HANDLER lcl_handle_events=>on_user_command FOR lr_events.
        SET HANDLER lcl_handle_events=>on_before_salv_function FOR lr_events.
        SET HANDLER lcl_handle_events=>on_after_salv_function FOR lr_events.

    *    alv->set_screen_status( pfstatus = 'ALV_STANDARD'
    *                            report  = lv_repid
    *                            set_functions = alv->c_functions_all ).
    *
    *    PERFORM enalbe_layout_settings. "设置样式
    *    PERFORM optimize_column_width."设置行宽度
    *    PERFORM hide_client_column.
    *    PERFORM set_departure_country_column. "设置列的一些属性
         PERFORM set_toolbar.  "设置工具栏
        PERFORM display_settings"设置显示
    *    PERFORM set_aggregations. "设置合计
        PERFORM set_select_mode"设置选择模式

        CATCH cx_salv_msg INTO message.
       ENDTRY.


    ENDFORM.                    " INITIALIZE_ALV



    FORM SET_TOOLBAR .
    DATA functions TYPE REF TO cl_salv_functions_list.
    functions = alv->get_functions).
    functions->set_all('X').
    ENDFORM.

    FORM DISPLAY_SETTINGS .   
    data lr_display type ref to cl_salv_display_settings.   lr_display 
    = alv->get_display_settings).   lr_display
    ->set_list_header('领料单列表').

    ENDFORM.                    " DISPLAY_SETTINGS

    FORM SET_SELECT_MODE .     lr_selections 

    = alv->get_selections).     
    "设置选择模式     lr_selections
    ->set_selection_mode( if_salv_c_selection_mode=>row_column ).


    ENDFORM.                    " SET_SELECT_MODE

    FORM SEL_CHECK .   

    Data: gi_select_rows type salv_t_row.   
    data lw_row  LIKE LINE OF gi_select_rows.   
    data l_lines type i.   

    data:wa_prt_temp type TY_ITEMS.
    *  lt_prt_temp type table of TY_ITEMS.   lr_selections 

    = alv->get_selections).   gi_select_rows 
    = lr_selections->get_selected_rows).

    *  call method alv->get_selected_rows
    *   importing
    *      et_index_rows = gi_index_rows.   
    DESCRIBE TABLE gi_select_rows lines l_lines.   
    IF l_lines 0.     
    CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'          
    EXPORTING               textline1 
    'You must choose a valid line'.     
    EXIT.   
    ENDIF.   

    LOOP AT gi_select_rows into lw_row.      
    READ TABLE GT_ITEMS INDEX lw_row INTO wa_prt_temp.      
    append wa_prt_temp to lt_prt_temp.   
    ENDLOOP.   

    clear wa_prt_temp.
    ENDFORM.                    " SEL_CHECK


    FORM FRM_PRINT_DATA.  

    call function 'SSF_FUNCTION_MODULE_NAME'  
    EXPORTING    formname 
    'ZSDSF001'  
    IMPORTING    fm_name 
    = fm_name  
    EXCEPTIONS    no_form 
    1    no_function_module 
    2    
    OTHERS 3.

    CONCATENATE 'ZDDITEMMM' SY-UZEIT INTO itemsname.
    *CONCATENATE 'ZDDHEADER' SY-UZEIT INTO headername.  savebuffer lt_prt_temp itemsname

    .
    * savebuffer GT_HEADER headername.
    *调用 smartForms  
    call function fm_name  
    EXPORTING    PTR_ITEMS 
    = itemsname
    *   PTR_HEADER = headername  
    EXCEPTIONS    formatting_error 
    1    internal_error 
    2    send_error 
    3    user_canceled 
    4.  clearbuffer itemsname
    .  clearbuffer headername
    .
    ENDFORM.

  • 相关阅读:
    爬虫_requests
    第十四周总结
    《三个和尚》观看感悟
    第十三周总结
    ThinkPHP
    ThinkPHP配置安装
    ThinkPHP_1
    构建之法阅读笔记六
    网络工程师必备学习内容!深度理解OSPF——OSPF是什么?为什么要用OSPF?
    网络工程师学习笔记——RIP路由汇总实验配置
  • 原文地址:https://www.cnblogs.com/eagle-dtq/p/5147461.html
Copyright © 2011-2022 走看看