• 开发:报表公共单元(一)常用函数


    *&---------------------------------------------------------------------*
    *&  Include           ZRPT_FUN
    *   共用函数
    *
    *
    *&---------------------------------------------------------------------*

    SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.
    PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT MODIF ID PVR.
    SELECTION-SCREEN END OF BLOCK B3.




    *按描述隐藏选择屏幕上组件
    FORM P_NO_VAR .

      LOOP AT SCREEN.
        IF SCREEN-NAME 'P_VARI'
           OR SCREEN-NAME '%_P_VARI_%_APP_%-TEXT'.                     "前面描述 lab签

          SCREEN-ACTIVE '1'.
          SCREEN-INVISIBLE '1'.
          SCREEN-INPUT 0.
          MODIFY SCREEN.

        ENDIF.

      ENDLOOP.

    *AT SELECTION-SCREEN OUTPUT .
    *
    *  PERFORM P_NO_VAR.
    ENDFORM.





    *单位转换
    FORM F_GET_UNIT USING MUNT.

      CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
        EXPORTING
          INPUT    = MUNT
          LANGUAGE = SY-LANGU
        IMPORTING
          OUTPUT   = MUNT.

      IF SY-SUBRC > 0.

        CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
          EXPORTING
            INPUT    = MUNT
            LANGUAGE '1'
          IMPORTING
            OUTPUT   = MUNT.

      ENDIF.


    ENDFORM.

    *&---------------------------------------------------------------------*
    *&  补零功能
    *&---------------------------------------------------------------------*
    FORM F_ADD_ZERO  USING VI_INPUT.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          INPUT  = VI_INPUT
        IMPORTING
          OUTPUT = VI_INPUT.

    ENDFORM.                    " f_add_zero

    *&---------------------------------------------------------------------*
    *&      Form  F_CUT_ZERO
    *&---------------------------------------------------------------------*
    *       去零功能
    *----------------------------------------------------------------------*
    *      -->VI_OUTPUT  text
    *----------------------------------------------------------------------*
    FORM F_CUT_ZERO  USING VI_OUTPUT .

      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
        EXPORTING
          INPUT  = VI_OUTPUT
        IMPORTING
          OUTPUT = VI_OUTPUT.

    ENDFORM.                    "f_cut_zero

    *&---------------------------------------------------------------------*
    *&      Form  SHOWPB
    *&---------------------------------------------------------------------*
    *       任务栏显示信息
    *----------------------------------------------------------------------*
    *      -->MTEXT      text
    *----------------------------------------------------------------------*
    FORM SHOWPB USING MTEXT.
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING
          TEXT = MTEXT.
    ENDFORM.                    "ShowPB

    *IF not ( SY-UNAME = 'FANXZ' OR SY-UNAME = 'LIUYL' OR SY-UNAME = 'BI01').
    *  CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
    *    EXPORTING
    *      TITEL     = '警告'
    *      TEXTLINE1 = '系统资源不足,请稍候再试!'.
    *  RETURN.
    *ENDIF.
    **产生GUID
    FORM GET_GUID USING AGUID.
      DATA: GD TYPE GUID_32.
      CALL FUNCTION 'GUID_CREATE'
        IMPORTING
          EV_GUID_32 = GD.
      MOVE GD TO AGUID.
    ENDFORM.                    "ShowPB

    **显示ALV数据
    FORM SHOW_ALV TABLES ITAB USING TITLE STR .

      CALL FUNCTION 'ZLXS_ALV'
        EXPORTING
          I_TITLE    TITLE
          FIELD_LIST = STR
          IS_VARI    = P_VARI
        TABLES
          I_ITAB     = ITAB.

    ENDFORM.

    **显示ALV数据
    FORM GET_ALV_STR USING STRUC_NAME  STR.

      DATA BEGIN OF TABLE_STRUCTURE OCCURS 10.
              INCLUDE STRUCTURE DFIES.
      DATA END OF TABLE_STRUCTURE.
      DATA TABLE_TYPE TYPE DD02V-TABCLASS.

      DATA: QUERY_TABLE LIKE  DD02L-TABNAME.

      MOVE STRUC_NAME TO QUERY_TABLE.

    *  DATA: QUERY_FIELD LIKE  DD02L-TABNAME.
      CALL FUNCTION 'DDIF_FIELDINFO_GET'
        EXPORTING
          TABNAME        = QUERY_TABLE
    *     FIELDNAME      = ' '
          LANGU          = sy-langu
    *     LFIELDNAME     = ' '
    *     ALL_TYPES      = ' '
    *     GROUP_NAMES    = ' '
        IMPORTING
    *     X030L_WA       =
          DDOBJTYPE      = TABLE_TYPE
    *     DFIES_WA       =
    *     LINES_DESCR    =
        TABLES
          DFIES_TAB      = TABLE_STRUCTURE
    *     FIXED_VALUES   =
        EXCEPTIONS
          NOT_FOUND      1
          INTERNAL_ERROR 2
          OTHERS         3.

      CLEAR STR.
      LOOP AT TABLE_STRUCTURE.
        CONCATENATE STR  TABLE_STRUCTURE-FIELDNAME ',' TABLE_STRUCTURE-FIELDTEXT '|' INTO STR.
      ENDLOOP.

    *    CHECK TABLE_STRUCTURE[] IS NOT INITIAL.


    ENDFORM.

    *&---------------------------------------------------------------------*
    *&      Form  GETCNT
    *&---------------------------------------------------------------------*
    *       报表使用次数统计
    *----------------------------------------------------------------------*
    FORM GETCNT.
      DATA: LS_TAB LIKE ZRPT_CNT.
      SELECT SINGLE * INTO LS_TAB
      FROM ZRPT_CNT
      WHERE  RPTNAME = SY-REPID
        AND SPMON = SY-DATUM+0(6)
        AND USR = SY-UNAME .
      IF SY-SUBRC 0.
        LS_TAB-RPTCNT = LS_TAB-RPTCNT + 1.
      ELSE.
        LS_TAB-RPTCNT 1.
      ENDIF.
      LS_TAB-RPTNAME = SY-REPID.
      LS_TAB-USR = SY-UNAME.
      LS_TAB-UDAT = SY-DATUM.
      LS_TAB-UTIM =  SY-UZEIT.
      LS_TAB-SPMON = SY-DATUM+0(6).
      IF LS_TAB-SDAT IS INITIAL.
        LS_TAB-SDAT = SY-DATUM.
      ENDIF.

      MODIFY ZRPT_CNT FROM LS_TAB.
      COMMIT WORK AND WAIT.
    ENDFORM.                    "GETCNT




    INITIALIZATION.
      PERFORM GETCNT.


    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
      CALL FUNCTION 'ZLXS_ALV_VARIANT'
        IMPORTING
          P_VARI = P_VARI.





    *&----------------------------------------------------*
    *&      FORM  my_EXCEL_GET
    *&----------------------------------------------------*
    *       TCODE: SMW0 WEBRFC 的二进制数据
    *-----------------------------------------------------*
    *      -->P_OBJID TYPE WWWDATA-OBJID 文件下载
    *----------------------------------------------------*
    FORM MY_EXCEL_GET USING P_OBJID TYPE WWWDATA-OBJID.
      DATA:L_OBJDATA     LIKE WWWDATATAB,
           L_DESTINATION LIKE RLGRAP-FILENAME,
           L_RC          LIKE SY-SUBRC,
           L_ERRTXT      TYPE STRING.

      DATA:   L_FULLPATH  TYPE STRING,
              L_EXTENSION TYPE STRING,
              L_FNAME     LIKE RLGRAP-FILENAME,
              "     L_RC        LIKE SY-SUBRC,
              L_FORMKEY   LIKE  WWWDATATAB.

      L_EXTENSION = P_OBJID.

      PERFORM MY_GET_FILE_NAME USING '.xls'
                                  'Excel|*.xls,*.xlsx'
                            CHANGING L_FULLPATH.
      IF L_FULLPATH = SPACE.
        MESSAGE '请选择下载文件名' TYPE 'E'.
      ELSE.
        L_FNAME = L_FULLPATH.
        SELECT SINGLE RELID OBJID
          FROM WWWDATA
          INTO CORRESPONDING FIELDS OF L_OBJDATA
          WHERE RELID 'MI'
            AND OBJID = P_OBJID .

        IF SY-SUBRC NE OR L_OBJDATA-OBJID = SPACE.
          MESSAGE E001(00WITH '文件不存在!'.
        ELSE.
          CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
            EXPORTING
              KEY         = L_OBJDATA
              DESTINATION = L_FNAME
            IMPORTING
              RC          = L_RC
            CHANGING
              TEMP        = L_FNAME.
          IF L_RC NE 0.
            MESSAGE E001(00WITH '文件下载失败!'.
          ENDIF.
        ENDIF.
      ENDIF.

    ENDFORM"my_EXCEL_GET
    FORM MY_GET_FILE_NAME USING P_EXTENSION                             P_FILE_FILTER                      

    CHANGING P_FULLPATH.   
    DATA: L_FILENAME TYPE STRING,         L_PATH     
    TYPE STRING,         L_FULLPATH 
    TYPE STRING,         L_TITILE   
    TYPE STRING,         L_INIT_DIR 
    TYPE STRING.   

    CLEAR P_FULLPATH.

    *  L_TITILE    = TEXT-T04.
    *  L_INIT_DIR  = TEXT-T03.   
    CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG     
    EXPORTING       WINDOW_TITLE         
    = L_TITILE       DEFAULT_EXTENSION    
    '.xlsx'       INITIAL_DIRECTORY    
    = L_INIT_DIR       PROMPT_ON_OVERWRITE  
    'X'       FILE_FILTER          
    = P_FILE_FILTER     
    CHANGING       FILENAME             
    = L_FILENAME       PATH                 
    = L_PATH       FULLPATH             
    = L_FULLPATH     
    EXCEPTIONS       CNTL_ERROR           
    1       ERROR_NO_GUI         
    2       NOT_SUPPORTED_BY_GUI 
    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.   P_FULLPATH 

    = L_FULLPATH.
    ENDFORM" my_GET_FILE_NAME
    FORM GET_DOC_DOWN.   
    PERFORM MY_EXCEL_GET USING SY-CPROG.
    ENDFORM.

  • 相关阅读:
    c++ primer 读书笔记
    如何利用c++编写不能被继承、但可以在类外定义对象的类
    为什么对多线程编程这么怕?pthread,sem,mutex,process
    死锁的理解
    动态规划--找零钱 coin change
    C++ STL中Map的按Key排序和按Value排序
    c++ STL sort struct comp
    《剑指offer》第二十五题(合并两个排序的链表)
    《剑指offer》第二十四题(反转链表)
    《剑指offer》第二十三题(链表中环的入口结点)
  • 原文地址:https://www.cnblogs.com/twttafku/p/14262857.html
Copyright © 2020-2023  润新知