zoukankan      html  css  js  c++  java
  • ALV打印模板(存代码)

    *&---------------------------------------------------------------------*
    *& Report  ZMMF013
    *&
    *&---------------------------------------------------------------------*
    *&
    *&
    *&---------------------------------------------------------------------*
    REPORT zmmf013.
    
    TABLES:ikpf,iseg,mara,makt.
    
    TYPES:BEGIN OF ty_show,
            sel(1),
            iblnr  TYPE iseg-iblnr,
            gjahr  TYPE iseg-gjahr,
            zeili  TYPE iseg-zeili,
            matnr  TYPE iseg-matnr,
            maktx  TYPE makt-maktx,
            wrkst  TYPE mara-wrkst,
            werks  TYPE iseg-werks,
            lgort  TYPE iseg-lgort,
            lgobe  TYPE t001l-lgobe,
            charg  TYPE iseg-charg,
            bldat  TYPE ikpf-bldat,
            budat  TYPE iseg-budat,
            xloek  TYPE iseg-xloek,
            menge  TYPE iseg-menge,
            buchm  TYPE iseg-buchm,
            zcysl  TYPE iseg-menge,
            meins  TYPE iseg-meins,
            usnam  TYPE ikpf-usnam,
          END OF ty_show.
    
    
    
    DATA:gt_show TYPE TABLE OF ty_show,
         gw_show LIKE LINE OF gt_show.
    DATA:gt_fieldcat TYPE lvc_t_fcat.
    DATA gs_fieldcat LIKE LINE OF gt_fieldcat.
    DATA ls_layout TYPE lvc_s_layo.
    
    DATA:GT_T001w TYPE STANDARD TABLE OF T001w,
         GS_T001w TYPE T001w.
    "define
    DEFINE append_fieldcat .
      CLEAR GS_FIELDCAT.
      GS_FIELDCAT-FIELDNAME = &1.
      GS_FIELDCAT-SCRTEXT_L = &2.
      GS_FIELDCAT-OUTPUTLEN = &3.
      GS_FIELDCAT-NO_ZERO = &4.
      IF &1 = 'MEINS'.
        gs_fieldcat-CONVEXIT = 'ZCONV'.
      ENDIF.
      APPEND GS_FIELDCAT TO gt_fieldcat.
    END-OF-DEFINITION.
    
    "宏定义
    DEFINE rt_tab.
      CLEAR:&1.
      &1-LOW = &2.
      &1-HIGH = &3.
      &1-OPTION = &4.
      &1-SIGN = &5.
      APPEND &1.
    END-OF-DEFINITION.
    
    SELECTION-SCREEN:BEGIN OF BLOCK blk01 WITH FRAME TITLE text-001.
    SELECT-OPTIONS:s_iblnr FOR ikpf-iblnr.
    PARAMETERS:p_gjahr TYPE ikpf-gjahr DEFAULT sy-datum+0(4).
    SELECT-OPTIONS:s_werks FOR ikpf-werks DEFAULT '1010'.
    SELECT-OPTIONS:s_lgort FOR ikpf-lgort.
    SELECT-OPTIONS:s_bldat FOR ikpf-bldat.
    SELECT-OPTIONS:s_budat FOR ikpf-budat.
    SELECT-OPTIONS:s_usnam FOR ikpf-usnam.
    SELECTION-SCREEN END OF BLOCK blk01.
    
    *************屏幕控制***********
    AT SELECTION-SCREEN.     "屏幕执行声明
    IF  sy-ucomm =  'ONLI'.
      SELECT  *
      INTO CORRESPONDING FIELDS OF  TABLE  GT_T001w
      FROM  T001w  WHERE  werks IN S_WERKS   AND SPRAS =  1.
      LOOP AT  GT_T001w INTO GS_T001w.
        AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
    *    ID 'ACTVT' FIELD '*'
        ID 'WERKS' FIELD GS_T001w-WERKS.
        IF SY-SUBRC <> 0.
          MESSAGE '您没有分配工厂代码' && GS_T001w-WERKS  && '权限,请检查' TYPE  'E'.
        ENDIF.
      ENDLOOP.
    ENDIF.
    
    
    START-OF-SELECTION.
      PERFORM prm_get_data.
    
      PERFORM prm_proce_data.
    
      PERFORM prm_set_field.
    
      PERFORM prm_show.
    
    
    
    
    
    
    *&---------------------------------------------------------------------*
    *&      Form  PRM_GET_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM prm_get_data .
    
      SELECT  ikpf~iblnr" TYPE iseg-iblnr,
              ikpf~gjahr" TYPE iseg-gjahr,
              iseg~zeili" TYPE iseg-zeili,
              iseg~matnr" TYPE iseg-matnr,
              makt~maktx" TYPE makt-maktx,
              mara~wrkst" TYPE mara-wrkst,
              ikpf~werks" TYPE iseg-werks,
              ikpf~lgort" TYPE iseg-lgort,
              t001l~lgobe" TYPE t001l-lgobe,
              iseg~charg" TYPE iseg-charg,
              ikpf~budat" TYPE iseg-budat,
              ikpf~bldat" TYPE iseg-budat,
              iseg~xloek" TYPE iseg-xloek,
              iseg~menge" TYPE iseg-menge,
              iseg~buchm" TYPE iseg-buchm,
              "zcysl TYPE iseg-menge,
              iseg~meins" TYPE iseg-meins,
              ikpf~usnam" TYPE iseg-meins,
        INTO CORRESPONDING FIELDS OF TABLE gt_show
        FROM ikpf
        INNER JOIN iseg
        ON ikpf~iblnr = iseg~iblnr
        AND ikpf~gjahr = iseg~gjahr
        INNER JOIN t001l
        ON t001l~werks = iseg~werks
        AND t001l~lgort = iseg~lgort
        INNER JOIN mara
        ON iseg~matnr = mara~matnr
        INNER JOIN makt
        ON iseg~matnr = makt~matnr
        AND makt~spras = '1'
        WHERE ikpf~iblnr IN s_iblnr
        AND   ikpf~gjahr = p_gjahr
        AND   ikpf~werks IN s_werks
        AND   ikpf~lgort IN s_lgort
        AND   ikpf~bldat IN s_bldat
        AND   ikpf~budat IN s_budat
        AND   ikpf~lstat = ''
        AND   ikpf~usnam IN s_usnam
        AND   iseg~xloek = ''.
    
      IF gt_show[] IS INITIAL.
        MESSAGE '无选择条件的结果!' TYPE 'S' DISPLAY LIKE 'E'.
        LEAVE LIST-PROCESSING.
      ENDIF.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  PRM_PROCE_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM prm_proce_data .
    
      LOOP AT gt_show INTO gw_show.
        gw_show-zcysl = gw_show-menge - gw_show-buchm.
        MODIFY gt_show FROM gw_show.
      ENDLOOP.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  PRM_SET_FIELD
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM prm_set_field .
      ls_layout-cwidth_opt    = 'X'. "优化列宽选项是否设置
      ls_layout-zebra                = 'X'.
      ls_layout-box_fname                = 'SEL'.
    
      append_fieldcat:    'IBLNR'              '盘点凭证'                 10   'X',
                          'GJAHR'              '会计年度'                 4    '',
                          'ZEILI'              '行号'                     3   '',
                          'MATNR'              '物料号'                   18   '',
                          'MAKTX'              '物料描述'                 40   '',
                          'WRKST'              '补充描述'                 48   '',
                          'WERKS'              '工厂'                     4   '',
                          'LGORT'              '库位'                     4   '',
                          'LGOBE'              '仓储地点的描述'           16   '',
                          'CHARG'              '批号'                     10   '',
                          'BUDAT'              '过帐日期'                 10   '',
                          'BLDAT'              '凭证日期'                 10   '',
                          'MENGE'              '实盘数量'                 16   '',
                          'BUCHM'              '帐面数量'                 16   '',
                          'ZCYSL'              '盘亏/盘盈数量'            16   '',
                          'MEINS'              '单位'                     3   ''.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *&      Form  PRM_SHOW
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM prm_show .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
        EXPORTING
          i_callback_program       = sy-repid
          i_callback_pf_status_set = 'PRM_SET_STATUS'
          i_callback_user_command  = 'PRM_USER_COMMAND'
          is_layout_lvc            = ls_layout
          it_fieldcat_lvc          = gt_fieldcat[]
          i_default                = 'X'
          i_save                   = 'A'
        TABLES
          t_outtab                 = gt_show[]
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
      IF sy-subrc <> 0.
      ENDIF.
    ENDFORM.
    FORM prm_set_status USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZSTAT'." EXCLUDING lt_code.
    ENDFORM.
    FORM prm_user_command USING p_ucomm    LIKE sy-ucomm
                            p_selfield TYPE slis_selfield.
      DATA:lt_select TYPE TABLE OF ty_show.
      DATA:gt_head TYPE TABLE OF zmmf013h,
           gw_head TYPE zmmf013h,
           gt_item TYPE TABLE OF zmmf013i,
           gw_item TYPE zmmf013i.
      DATA:lv_flag TYPE c.
      DATA:ls_control   TYPE ssfctrlop.
      DATA:lv_con TYPE ssfcrescl.
      DATA:lv_sfname TYPE tdsfname VALUE 'ZMMF013'.
      DATA:lv_fname TYPE rs38l_fnam.
    
      CHECK p_ucomm = 'PRNT'.
    
      APPEND LINES OF gt_show TO lt_select.
    
      DELETE lt_select[] WHERE sel = ''.
    
    
      "打印控制参数
      ls_control-no_open = 'X'.
      ls_control-no_close = 'X'.
    
      "获取打印函数
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname           = lv_sfname
        IMPORTING
          fm_name            = lv_fname
        EXCEPTIONS
          no_form            = 1
          no_function_module = 2
          OTHERS             = 3.
      IF sy-subrc <> 0.
      ENDIF.
    
      CALL FUNCTION 'SSF_OPEN'.
    
      SORT lt_select[] BY gjahr iblnr zeili ASCENDING.
    
      LOOP AT lt_select INTO gw_show.
        AT NEW iblnr.
          lv_flag = 'X'.
        ENDAT.
    
        IF lv_flag = 'X'.
          gw_head-iblnr = gw_show-iblnr.
          gw_head-gjahr = gw_show-gjahr.
          gw_head-werks = gw_show-werks.
          gw_head-lgort = gw_show-lgort.
          gw_head-lgobe = gw_show-lgobe.
          gw_head-usnam = gw_show-usnam.
          gw_head-bldat = gw_show-bldat.
          gw_head-budat = gw_show-budat.
          SELECT SINGLE name_text INTO gw_head-usnam
            FROM adrp
            INNER JOIN usr21
            ON adrp~persnumber = usr21~persnumber
            WHERE usr21~bname = gw_show-usnam.
    *      APPEND gw_head TO gt_head.
    *      CLEAR:gw_head,lv_flag.
        ENDIF.
    
        gw_item-iblnr = gw_show-iblnr.
        gw_item-gjahr = gw_show-gjahr.
        gw_item-zeili = gw_show-zeili.
        gw_item-matnr = gw_show-matnr.
        gw_item-maktx = gw_show-maktx && gw_show-wrkst.
        gw_item-menge = gw_show-menge.
        gw_item-buchm = gw_show-buchm.
        gw_item-zcysl = gw_show-zcysl.
        gw_item-meins = gw_show-meins.
    
        SELECT SINGLE msehl INTO gw_item-msehl FROM t006a WHERE spras = '1' AND msehi = gw_show-meins.
    
        APPEND gw_item TO gt_item.
        CLEAR:gw_item.
    
        AT END OF iblnr.
          lv_flag = 'E'.
        ENDAT.
    
        IF lv_flag = 'E'.
          CALL FUNCTION lv_fname
            EXPORTING
              control_parameters = ls_control
              gw_head            = gw_head
            TABLES
              gt_item            = gt_item[]
            EXCEPTIONS
              formatting_error   = 1
              internal_error     = 2
              send_error         = 3
              user_canceled      = 4.
    
          CLEAR:gt_item[],gw_head.
    
        ENDIF.
      ENDLOOP.
    
      CALL FUNCTION 'SSF_CLOSE'.
    
    
    
    ENDFORM.
  • 相关阅读:
    WebService
    JavaMail
    ssh框架整合
    CSS3初步
    SpringMVC 文件上传及下载
    Java多线程
    SpringMVC 数据校验
    初始化参数绑定——日期格式
    SpringMVC入门
    Quartz
  • 原文地址:https://www.cnblogs.com/sapSB/p/7735719.html
Copyright © 2011-2022 走看看