zoukankan      html  css  js  c++  java
  • SAP打印出库单 新需求

    *&---------------------------------------------------------------------*
    *& Report  Z_SD_CKD
    *&
    *&---------------------------------------------------------------------*
    *&产品出库单
    *&
    *&---------------------------------------------------------------------*

    REPORT ZSDF002.
    INCLUDE ZSDF002_INC.
    *INCLUDE Z_SD_CKD_INC.
    TYPE-POOLS: slis.
    TABLES:LIKP, KNA1, LIPS ,MKPF ,MSEG.


    TYPESBEGIN OF TY_ALL,

            VBELV        LIKE  VBFA-VBELV ,  "销售订单号
            VBELN_IM     LIKE  MSEG-VBELN_IM ,"交货单号
            NAME1        LIKE  KNA1-NAME1 ,"客户
            KUNNR        LIKE  MSEG-KUNNR ,"送达方
            STRAS        LIKE  KNA1-STRAS ,"客户地址
            BUDAT_MKPF   LIKE  MSEG-BUDAT_MKPF ,"出库时间
            TELFX        LIKE  KNA1-TELFX ,"电话
            USNAM_MKPF   LIKE  MSEG-USNAM_MKPF ,"经办人
            MATNR        LIKE  MSEG-MATNR ,"物料编码
            ARKTX        LIKE  LIPS-ARKTX ,"物料描述
            LGORT        LIKE  MSEG-LGORT ,"库存地点
            MENGE        LIKE  MSEG-MENGE ,"数量
            VRKME        LIKE  LIPS-VRKME ,"单位
            CHARG        LIKE  MSEG-CHARG ,"批次
            VBELP_IM     LIKE  MSEG-VBELP_IM ,"项目
            BOLNR        LIKE  LIKP-BOLNR ,"物流单号
            BRGEW        LIKE  LIPS-BRGEW,"单项目毛重
            BEIZHU(20)   TYPE ,"备注
      END OF TY_ALL.

      TYPES:BEGIN OF TY_HEADER,
            VBELV        LIKE  VBFA-VBELV ,  "销售订单号
            VBELN_IM     LIKE  MSEG-VBELN_IM ,"交货单号
            NAME1        LIKE  KNA1-NAME1 ,"客户
            KUNNR        LIKE  MSEG-KUNNR ,"送达方
            STRAS        LIKE  KNA1-STRAS ,"客户地址
            BUDAT_MKPF   LIKE  MSEG-BUDAT_MKPF ,"出库时间
            TELFX        LIKE  KNA1-TELFX ,"电话
            USNAM_MKPF   LIKE  MSEG-USNAM_MKPF ,"经办人
           TOTAL_BRGEW   LIKE LIPS-BRGEW,"项目总毛重
           BOLNR         LIKE LIKP-BOLNR,"物流单号
        END OF TY_HEADER.

      TYPES:BEGIN OF TY_ITEMS,
            VBELN_IM     LIKE  MSEG-VBELN_IM ,"交货单号
           MATNR        LIKE  MSEG-MATNR ,"物料编码
            ARKTX        LIKE  LIPS-ARKTX ,"物料描述
            LGORT        LIKE  MSEG-LGORT ,"库存地点
            MENGE        LIKE  MSEG-MENGE ,"数量
            VRKME        LIKE  LIPS-VRKME ,"单位
            CHARG        LIKE  MSEG-CHARG ,"批次
            VBELP_IM     LIKE  MSEG-VBELP_IM ,"项目
            BRGEW        LIKE  LIPS-BRGEW,"单项目毛重
            BOLNR        LIKE  LIKP-BOLNR ,"物流单号
            BEIZHU(20)   TYPE ,"备注
        END OF TY_ITEMS.

     DATA:WA_ALL TYPE TY_ALL,
          GT_ALL TYPE TY_ALL OCCURS 0.

     DATA:WA_HEADER TYPE TY_HEADER,
          GT_HEADER TYPE TY_HEADER OCCURS 0  .

     DATA:WA_ITEMS TYPE TY_ITEMS,
          GT_ITEMS TYPE TY_ITEMS OCCURS 0.


    *定义传入到smartforms的变量开始
    DATA:fm_name TYPE rs38l_fnam.
    DATA:itemsname(32TYPE c.
    DATA:headername(32TYPE c.
    *定义传入到smartforms的变量结束


    *定义存储ALV向smartforms传入数据的内表开始
    DATA:GT_HEADER_TEMP TYPE TY_HEADER OCCURS 0.
    DATA:GT_ITEMS_TEMP TYPE TY_ITEMS OCCURS 0.
    DATA:GT_ALL_TEMP TYPE TY_ALL OCCURS 0.
    *定义存储ALV向smartforms传入数据的内表结束

    "控制smartforms参数声明开始
    DATA :control_parameters TYPE ssfctrlop.
    "控制smartforms参数声明结束


    DATA: gs_fcat TYPE lvc_s_fcat,
          gt_fcat TYPE lvc_t_fcat,
          gs_layo TYPE lvc_s_layo,
          gs_grid TYPE lvc_s_glay.
    DATA: gt_event TYPE slis_t_event WITH HEADER LINE,
          gt_event_exit TYPE slis_t_event_exit WITH HEADER LINE.

    DATA:  ref_grid TYPE REF TO cl_gui_alv_grid .

    START-OF-SELECTION.
    SELECT-OPTIONS: P_VBELN    FOR MSEG-VBELN_IM"交货单号
                    P_WERKS    FOR MSEG-WERKS "工厂 ,
                    P_LGORT    FOR MSEG-LGORT  ,"库存地点
                    P_BUDAT    FOR MKPF-BUDAT,"过账日期
                    P_USNAM    FOR MKPF-USNAM."创建者
                    "P_TPLST   FOR VTTK-TPLST ,
                    "P_ERNAM   FOR VTTK-ERNAM ,
                    "P_ROUTE   FOR VTTK-ROUTE .
    PERFORM FRM_GET_DATA.
    PERFORM display_data .

    END-OF-SELECTION.

    "当屏幕失去焦点时,自动刷新声明类开始
    CLASS lcl_event_receiver DEFINITION.
      PUBLIC SECTION.
        METHODS handle_modify
        FOR EVENT data_changed_finished OF cl_gui_alv_grid
        IMPORTING e_modified et_good_cells.
    ENDCLASS.

    CLASS lcl_event_receiver IMPLEMENTATION.
      METHOD handle_modify.
    *    PERFORM refresh.

        DATA stbl TYPE lvc_s_stbl.

        stbl-row 'X'." 基于行的稳定刷新
        stbl-col 'X'." 基于列稳定刷新
        CALL METHOD ref_grid->refresh_table_display
          EXPORTING
            is_stable = stbl.
      ENDMETHOD.                    "HANDLE_MODIFY
    ENDCLASS.                    "LCL_EVENT_RECEIVER IMPLEMENTATION
    DATA gt_event_receiver TYPE REF TO lcl_event_receiver .
    "当屏幕失去焦点时,自动刷新声明类结束

    FORM FRM_GET_DATA .
          SELECT VA~VBELV  M~VBELN_IM K~NAME1 M~KUNNR K~STRAS M~BUDAT_MKPF
                 K~TELFX  M~USNAM_MKPF M~MATNR   LS~ARKTX M~LGORT  M~MENGE
                 LS~VRKME  M~CHARG  M~VBELP_IM  LP~BOLNR LS~BRGEW
             INTO CORRESPONDING FIELDS OF TABLE GT_ALL
          FROM   MSEG AS M

          INNER JOIN MKPF AS MF
          ON M~MBLNR = MF~MBLNR AND MF~MJAHR M~MJAHR
          INNER JOIN  LIPS AS LS
          ON M~VBELN_IM = LS~VBELN AND M~VBELP_IM = LS~POSNR
          INNER JOIN LIKP AS LP
          ON LP~VBELN  = LS~VBELN
          INNER JOIN KNA1 AS K
          ON K~KUNNR = LP~KUNNR
          INNER JOIN VBFA AS VA
          ON VA~VBELN = LS~VBELN AND VA~POSNN = LS~POSNR

          WHERE M~VBELN_IM IN  P_VBELN   AND
                M~WERKS    IN  P_WERKS     AND
                M~LGORT    IN   P_LGORT AND
                MF~BUDAT   IN  P_BUDAT    AND
                MF~USNAM   IN  P_USNAM  .

    "DELETE ADJACENT DUPLICATES FROM GT_ALL.

     ENDFORM.


    FORM display_data .
      PERFORM set_fcat.
      PERFORM set_layout.

      PERFORM show_alv  TABLES gt_fcat  GT_ALL[]
                         USING  gs_layo.
    ENDFORM.                    " DISPLAY_DATA

    *&---------------------------------------------------------------------*
    FORM set_fcat .   
    PERFORM csalv_set_fcat USING:

    " 'Field' 'Text' 'Edit' 'Zero' 'Type' 'Qfieldname' 'Key' 'Hostspot' 'Emphasize' 'Checkbox'             
    'VBELV'  '销售订单号' '' ''  ''  ''  ''   ''  ''  '' '' '',             
    'VBELN_IM' '交货单号'   ''  ''  ''  ''  ''  ''  ''  '' ''  '',             
    'NAME1' '客户'       ''  ''  ''  ''  ''  ''  ''  '' ''  '',             
    'KUNNR' '送达方'     ''  ''  ''  ''  ''  ''  ''  '' ''  '',             
    'VBELP_IM' '项目'    '' ''  ''  ''  ''  ''  ''  '' ''   '',             
    'MATNR'  '物料编码'  ''  ''  ''  ''  ''  ''  ''  '' ''  '',             
    'ARKTX'  '物料描述'  ''  ''  ''  ''  ''  ''  ''  '' ''  '',             
    'VRKME'  '单位'      ''  ''  ''  ''  ''  ''  ''  '' ''  '',             
    'MENGE'   '数量'     ''  ''  ''  ''  ''  ''  ''  '' ''  '0',             
    'BRGEW'     '毛重'     ''  ''  ''  ''  ''  ''  ''  '' ''  '0',             
    'LGORT'   '库存地点' ''  ''  ''  ''  ''  ''  ''  '' ''  '',             
    'USNAM_MKPF'  '经办人'    ''  ''  ''  ''  ''  ''  ''  '' ''  '',             
    'BEIZHU'  '备注'     'X'  ''  ''  ''  ''  ''  ''  '' '' ''.            


    " 'zsel'   '是否打印 ' 'X' ''  ''  ''  ''  ''  ''  'X' ''.

    ENDFORM.                    " SET_FCAT
    *&---------------------------------------------------------------------*
    FORM set_layout .   gs_layo
    -zebra             'X'.
    *  gs_layout-stylefname     = 'FIELD_STYLE'.
    *  gs_layo-CWIDTH_OPT        =  'X'.
    ENDFORM.                    " SET_LAYOUT
    *&---------------------------------------------------------------------*
    FORM csalv_set_fcat USING       p_name       p_text       p_edit       p_zero       p_type       p_qfieldname       p_key       p_hotspot       p_emphasize       p_checkbox       P_DO_SUM       P_decimals_out











    .   gs_fcat
    -fieldname   =  p_name.
    *  gs_fcat-reptext_l   =
    *  gs_fcat-selddictxt   =   gs_fcat
    -reptext     =  p_text.   gs_fcat
    -edit        =  p_edit.   gs_fcat
    -no_zero     =  p_zero.   gs_fcat
    -datatype    =  p_type.   gs_fcat
    -qfieldname  =  p_qfieldname.   gs_fcat
    -key         =  p_key.   gs_fcat
    -hotspot     =  p_hotspot.   gs_fcat
    -emphasize   =  p_emphasize.   gs_fcat
    -checkbox    =   p_checkbox.   gs_fcat
    -DO_SUM      =  P_DO_SUM.   gs_fcat
    -decimals_o  =  P_decimals_out.   
    APPEND gs_fcat TO  gt_fcat.
    ENDFORM.                    "csalv_set_fcat

    *&---------------------------------------------------------------------*

    FORM show_alv TABLES  pt_fcat                       pt_tab               

    USING   ps_layout.   gs_grid


    -edt_cll_cb 'X'."当屏幕失去焦点时,自动刷新   gt_event

    -name 'CALLER_EXIT'.   "slis_ev_caller_exit_at_start事件   gt_event
    -FORM 'FM_BUTTON'.   
    APPEND gt_event .   

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'   
    EXPORTING     i_callback_program                  
    = sy-repid     i_callback_user_command            
    'USER_COMMAND'     i_grid_settings                    
    = gs_grid     i_callback_pf_status_set            
    'SET_PF_STATUS'     is_layout_lvc                       
    = gs_layo     it_fieldcat_lvc                     
    = pt_fcat[]      it_events                          
    = gt_event[]
    *     it_event_exit                     = gt_event_exit[]   
    TABLES     t_outtab                            
    = pt_tab    
    EXCEPTIONS      PROGRAM_ERROR                     
    1      
    OTHERS                            2     
    .
    ENDFORM.                    "csalv_set_fcat




    FORM PRINT.

    DATA:PTR_COUNT(10TYPE C.
    DATAlines TYPE I."获取往smartforms传入的要打印的行数目
    DATA: insertRows TYPE i."需要再插入多少空行
    DATAROWS TYPE VALUE 16."一页要打印的行数

    CLEAR GT_ALL_TEMP.
    CLEAR GT_HEADER_TEMP.
    CLEAR GT_ITEMS_TEMP.   

    DATA COUNT LIKE LIPS-BRGEW VALUE 0.   
    DATA:ls_row      TYPE lvc_s_row,        lt_rows     
    type lvc_t_row.        
    "CLEAR GT_HEADER.       
    "CLEAR GT_ITEMS.       
    CALL METHOD ref_grid->get_selected_rows     
    IMPORTING       et_index_rows 
    = lt_rows
    *      et_row_no     =       
    .       



    LOOP AT lt_rows INTO ls_row.         
    READ TABLE GT_ALL INTO WA_ALL INDEX ls_row-index.         
    APPEND WA_ALL TO GT_ALL_TEMP.
    *        APPEND WA_ITEMS TO GT_ITEMS_TEMP.
    *         COUNT = WA_ITEMS-BRGEW + COUNT.        
    ENDLOOP.       
    MOVE-CORRESPONDING GT_ALL_TEMP TO GT_HEADER.       
    MOVE-CORRESPONDING GT_ALL_TEMP TO GT_ITEMS.       
    DELETE ADJACENT DUPLICATES FROM GT_HEADER.
    *      LOOP AT GT_ITEMS INTO WA_ITEMS.       
    CLEAR: CONTROL_PARAMETERS.       CONTROL_PARAMETERS
    -PREVIEW   'X'.       CONTROL_PARAMETERS
    -NO_OPEN   'X'.       CONTROL_PARAMETERS
    -NO_CLOSE  'X'.


    CALL FUNCTION 'SSF_OPEN'     
    EXPORTING       CONTROL_PARAMETERS 
    = CONTROL_PARAMETERS     
    EXCEPTIONS       FORMATTING_ERROR   
    1       INTERNAL_ERROR     
    2       SEND_ERROR         
    3       USER_CANCELED      
    4       
    OTHERS             5.   
    IF SY-SUBRC <> 0.     
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO     
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.     
    EXIT.   
    ENDIF.     


    LOOP AT GT_HEADER INTO WA_HEADER.           

    APPEND WA_HEADER TO GT_HEADER_TEMP.           
    LOOP AT GT_ITEMS INTO WA_ITEMS.                 
    IF ( WA_ITEMS-VBELN_IM EQ WA_HEADER-VBELN_IM .                       
    APPEND WA_ITEMS TO GT_ITEMS_TEMP.                       
    COUNT = WA_ITEMS-BRGEW + COUNT.                 
    ENDIF.           
    ENDLOOP.           WA_HEADER
    -TOTAL_BRGEW COUNT.     
    MODIFY TABLE GT_HEADER_TEMP FROM WA_HEADER.       
    CLEAR WA_ITEMS.       
    CLEAR WA_HEADER.       
    CLEAR COUNT.            
    IF GT_ITEMS_TEMP IS INITIAL.                 
    MESSAGE i000(0kWITH  '请选中要打印的内容!'.                 
    EXIT .             
    ENDIF.             

    call function 'SSF_FUNCTION_MODULE_NAME'             
    EXPORTING               formname 
    'ZSDSF002'               
    IMPORTING                 fm_name 
    = fm_name                 
    EXCEPTIONS                   no_form 
    1                   no_function_module 
    2                   
    OTHERS 3.            
    "SET HANDLER   gt_event_receiver->handle_modify FOR ref_grid.            
    DESCRIBE TABLE GT_ITEMS_TEMP LINES lines.            insertRows 
    =   lines mod ROWS .            insertRows 
    ROWS - insertRows.            
    DO insertRows TIMES.               
    APPEND WA_ITEMS TO GT_ITEMS_TEMP.           
    ENDDO.            
    PERFORM FRM_PRINT_DATA.     
    ENDLOOP.     

    CALL FUNCTION 'SSF_CLOSE'     
    EXCEPTIONS       FORMATTING_ERROR 
    1       INTERNAL_ERROR   
    2       SEND_ERROR       
    3       
    OTHERS           4.   

    IF SY-SUBRC <> 0.     
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO     
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.   
    ENDIF.



    ENDFORM.
    FORM FRM_PRINT_DATA.



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

    .  savebuffer GT_HEADER_TEMP headername
    .
    *  PTR_COUNT =  GV_COUNT .
    *调用 smartForms  
    call function fm_name  
    EXPORTING    control_parameters 
    = CONTROL_PARAMETERS    PTR_ITEMS 
    = itemsname    PTR_HEADER 
    = headername
    *   PTR_TOTAL = GV_COUNT  
    EXCEPTIONS    formatting_error 
    1    internal_error 
    2    send_error 
    3    user_canceled 
    4.  clearbuffer itemsname
    .  clearbuffer headername
    .
    CLEAR GT_HEADER_TEMP.
    CLEAR GT_ITEMS_TEMP.
    ENDFORM.



    *&---------------------------------------------------------------------*
    *&      Form  user_command
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_UCOMM      text
    *      -->PS_SELFIELD  text
    *----------------------------------------------------------------------*

    FORM user_command USING r_ucomm LIKE sy-ucomm       rs_selfield 
    TYPE slis_selfield.   


    CASE r_ucomm.     
    WHEN '&DATA_SAVE'.     
    WHEN '&PRINT'.           
    PERFORM PRINT.     
    WHEN OTHERS.           

    LEAVE TO SCREEN 0.   
    ENDCASE.

    ENDFORM.                    "user_command
    *&---------------------------------------------------------------------*
    *&      Form  SET_PF_STATUS
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->RT_EXTAB   text
    *----------------------------------------------------------------------*
    FORM set_pf_status USING rt_extab TYPE slis_t_extab..   
    SET PF-STATUS 'STANDARD'.
    ENDFORM.                    "SET_PF_STATUS
    *&---------------------------------------------------------------------*
    *&      Form  fm_button
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->E_GRID     text
    *----------------------------------------------------------------------*
    FORM fm_button USING e_grid TYPE slis_data_caller_exit.   

    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    *   EXPORTING
    *     IR_SALV_FULLSCREEN_ADAPTER       =   
    IMPORTING
    *     ET_EXCLUDING                     =
    *     E_REPID                          =
    *     E_CALLBACK_PROGRAM               =
    *     E_CALLBACK_ROUTINE               =     e_grid                           
    = ref_grid
    *     ET_FIELDCAT_LVC                  =
    *     ER_TRACE                         =
    *     E_FLG_NO_HTML                    =
    *     ES_LAYOUT_KKBLO                  =
    *     ES_SEL_HIDE                      =
    *     ET_EVENT_EXIT                    =
    *     ER_FORM_TOL                      =
    *     ER_FORM_EOL                      =     
    .

    *   CALL METHOD ref_grid->check_changed_data.
    * 设置enter事件   
    CALL METHOD ref_grid->register_edit_event     
    EXPORTING       i_event_id 
    = cl_gui_alv_grid=>mc_evt_enter     
    EXCEPTIONS       error      
    1       
    OTHERS     2.   


    CREATE OBJECT gt_event_receiver.   
    SET HANDLER   gt_event_receiver->handle_modify FOR ref_grid.
    ENDFORM.                    "FM_BUTTON

  • 相关阅读:
    app卡顿问题检测--KMCGeigerCounter
    报错---[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294**
    键盘工具栏的快速集成--IQKeyboardManager
    iOS 对网络视频采集视频截图
    iOS-label出现未知边框线的bug
    iOS开发中图片方向的获取与更改
    通过代码设置button中文字的对齐方式
    util.date
    统计字符串每个字母的个数
    异常处理之多重catch
  • 原文地址:https://www.cnblogs.com/eagle-dtq/p/5178130.html
Copyright © 2011-2022 走看看