⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fi0000.txt

📁 sap:ABAP程序:财务帐查看报表。用于财务FI
💻 TXT
📖 第 1 页 / 共 2 页
字号:
REPORT  ZFI_FIBELN.

TABLES: BKPF, AIND_ARKEY, SSCRFIELDS.
TYPE-POOLS: RSDS, SLIS.

SELECT-OPTIONS: BELNR FOR BKPF-BELNR,
                BUKRS FOR BKPF-BUKRS,
                GJAHR FOR BKPF-GJAHR,
                MONAT FOR BKPF-MONAT,
                BUDAT FOR BKPF-BUDAT,
                BLART FOR BKPF-BLART,
                XBLNR FOR BKPF-XBLNR.
SELECTION-SCREEN SKIP 1.
PARAMETERS: MAXHITS TYPE I DEFAULT 500.

SELECT-OPTIONS: ARKEY FOR AIND_ARKEY-ARCHIVEKEY NO-DISPLAY.
PARAMETERS: USEDB   TYPE C LENGTH 1 NO-DISPLAY,
            USEAR   TYPE C LENGTH 1 NO-DISPLAY,
            INFOSYS TYPE C LENGTH 1 NO-DISPLAY.

DATA: GT_BKPF TYPE TABLE OF BKPF.


INITIALIZATION.
  PERFORM INITIALIZATION
                   TABLES ARKEY[]
                 CHANGING USEDB USEAR INFOSYS.


AT SELECTION-SCREEN.
  CASE SSCRFIELDS-UCOMM.
    WHEN 'DSRC'.
      PERFORM DATASOURCE_SET TABLES ARKEY[]
                           CHANGING USEDB USEAR INFOSYS.
  ENDCASE.


START-OF-SELECTION.
  PERFORM DO_IT TABLES BELNR BUKRS GJAHR MONAT BUDAT BLART XBLNR ARKEY
                USING USEDB USEAR INFOSYS MAXHITS.

以父之名(24963363) 09:10:58
*---------------------------------------------------------------------*
*       FORM DO_IT                                                    *
*---------------------------------------------------------------------*
FORM DO_IT TABLES T_BELNRSEL      STRUCTURE BELNR
                  T_BUKRSSEL      STRUCTURE BUKRS
                  T_GJAHRSEL      STRUCTURE GJAHR
                  T_MONATSEL      STRUCTURE MONAT
                  T_BUDATSEL      STRUCTURE BUDAT
                  T_BLARTSEL      STRUCTURE BLART
                  T_XBLNRSEL      STRUCTURE XBLNR
                  T_RNG_ARCHIV    STRUCTURE RNG_ARCHIV
           USING VALUE(V_USEDB)   TYPE DTINP-XUSEDB
                 VALUE(V_USEAR)   TYPE DTINP-XUSEAR
                 VALUE(V_INFOSYS) TYPE C
                 VALUE(V_MAXHITS) TYPE I.

DATA: IT_BKPF        TYPE TABLE OF BKPF,
      L_REST_MAXHITS TYPE I,
      L_LINES        TYPE I.

  IF NOT V_USEDB IS INITIAL.
    PERFORM BKPF_GET_DB
      TABLES T_BELNRSEL T_BUKRSSEL T_GJAHRSEL T_MONATSEL
             T_BUDATSEL T_BLARTSEL T_XBLNRSEL
             IT_BKPF
       USING V_MAXHITS.
  ENDIF.
  DESCRIBE TABLE IT_BKPF LINES L_LINES. "根据定义最大数进行程序的取数
  IF L_LINES < V_MAXHITS.
    L_REST_MAXHITS = V_MAXHITS - L_LINES.
  ENDIF.
  IF NOT V_USEAR IS INITIAL AND L_REST_MAXHITS > 0.

    PERFORM BKPF_GET_ARCHIVE TABLES T_BELNRSEL T_BUKRSSEL T_GJAHRSEL
                                    T_MONATSEL T_BUDATSEL T_BLARTSEL
                                    T_XBLNRSEL T_RNG_ARCHIV
                                    IT_BKPF
                             USING V_INFOSYS L_REST_MAXHITS.
  ENDIF.

  PERFORM BKPF_DISPLAY TABLES IT_BKPF.
ENDFORM.                               "DO_IT


*---------------------------------------------------------------------*
*       FORM BKPF_GET_DB                                              *
*---------------------------------------------------------------------*
FORM BKPF_GET_DB TABLES T_BELNRSEL STRUCTURE BELNR
                        T_BUKRSSEL STRUCTURE BUKRS
                        T_GJAHRSEL STRUCTURE GJAHR
                        T_MONATSEL STRUCTURE MONAT
                        T_BUDATSEL STRUCTURE BUDAT
                        T_BLARTSEL STRUCTURE BLART
                        T_XBLNRSEL STRUCTURE XBLNR
                        T_BKPF     STRUCTURE BKPF
                 USING VALUE(V_MAXHITS) TYPE I.

  DATA: L_CRSR      TYPE CURSOR,
        L_TOTAL     TYPE I,
        L_SELECTED  TYPE I,
        L_BKPF      TYPE BKPF,
        L_SUBRC     LIKE SY-SUBRC.

  CHECK V_MAXHITS > 0.
  PERFORM PROGRESS_INDICATOR
            USING 'LESE DATENBANK'(005) 0 0 'X'.
  OPEN CURSOR WITH HOLD L_CRSR FOR
    SELECT * FROM BKPF
    WHERE BELNR IN T_BELNRSEL
      AND BUKRS IN T_BUKRSSEL
      AND GJAHR IN T_GJAHRSEL
      AND MONAT IN T_MONATSEL
      AND BUDAT IN T_BUDATSEL
      AND BLART IN T_BLARTSEL
      AND XBLNR IN T_XBLNRSEL.
  DO.
    FETCH NEXT CURSOR L_CRSR INTO L_BKPF.
    IF NOT SY-SUBRC IS INITIAL.
      EXIT.
    ENDIF.
    ADD 1 TO L_TOTAL.
    PERFORM PROGRESS_INDICATOR
            USING 'LESE DATENBANK'(005) 0 L_TOTAL SPACE.
    PERFORM BKPF_AUTHORITY USING L_BKPF  CHANGING L_SUBRC.
    IF SY-SUBRC IS INITIAL.
      APPEND L_BKPF TO T_BKPF.
      ADD 1 TO L_SELECTED.
      IF L_SELECTED >= V_MAXHITS.
        EXIT.
      ENDIF.
    ENDIF.
  ENDDO.
  CLOSE CURSOR L_CRSR.
ENDFORM.                               "BKPF_GET_DB
*---------------------------------------------------------------------*
*       FORM BKPF_GET_ARCHIVE                                         *
*---------------------------------------------------------------------*
FORM BKPF_GET_ARCHIVE
                 TABLES T_BELNRSEL      STRUCTURE BELNR
                        T_BUKRSSEL      STRUCTURE BUKRS
                        T_GJAHRSEL      STRUCTURE GJAHR
                        T_MONATSEL      STRUCTURE MONAT
                        T_BUDATSEL      STRUCTURE BUDAT
                        T_BLARTSEL      STRUCTURE BLART
                        T_XBLNRSEL      STRUCTURE XBLNR
                        T_RNG_ARCHIV    STRUCTURE RNG_ARCHIV
                        T_BKPF          STRUCTURE BKPF
                 USING VALUE(V_INFOSYS) TYPE C
                       VALUE(V_MAXHITS) TYPE I.

  DATA: IT_ARCHPTR      TYPE TABLE OF AIND_ARKEY,
        L_SELECTEDLINES TYPE I,
        L_HANDLE        TYPE SY-TABIX,
        L_PROCESSED     TYPE I,
        L_TOTAL         TYPE I,
        IT_FILES        TYPE TABLE OF ADMI_FILES.
  FIELD-SYMBOLS: <L_ARCHPTR> TYPE AIND_ARKEY.

  IF V_INFOSYS IS INITIAL.
    CALL FUNCTION 'ARCHIVE_OPEN_FOR_READ'
      EXPORTING
        OBJECT         = 'FI_DOCUMNT'
      IMPORTING
        ARCHIVE_HANDLE = L_HANDLE
      TABLES
        ARCHIVE_FILES  = T_RNG_ARCHIV[]
        SELECTED_FILES = IT_FILES[].
    PERFORM NUMBER_OF_OBJECTS_GET TABLES IT_FILES   CHANGING L_TOTAL.
    DO.
      CALL FUNCTION 'ARCHIVE_GET_NEXT_OBJECT'
        EXPORTING
          ARCHIVE_HANDLE = L_HANDLE
        EXCEPTIONS
          END_OF_FILE    = 1.
      IF NOT SY-SUBRC IS INITIAL.
        EXIT.
      ENDIF.
      PERFORM OPEN_OBJECT_PROCESS
           TABLES T_BELNRSEL T_BUKRSSEL T_GJAHRSEL T_MONATSEL
                  T_BUDATSEL T_BLARTSEL T_XBLNRSEL
                  T_BKPF
            USING L_HANDLE L_TOTAL
         CHANGING L_PROCESSED L_SELECTEDLINES.
      IF L_SELECTEDLINES >= V_MAXHITS.
        EXIT.
      ENDIF.
    ENDDO.
    CALL FUNCTION 'ARCHIVE_CLOSE_FILE'
      EXPORTING
        ARCHIVE_HANDLE = L_HANDLE.
  ELSE.
    PERFORM ARCHPTR_GET
      TABLES T_BELNRSEL T_BUKRSSEL T_GJAHRSEL T_MONATSEL
             T_BUDATSEL T_BLARTSEL T_XBLNRSEL
             IT_ARCHPTR.
    DESCRIBE TABLE IT_ARCHPTR[] LINES L_TOTAL.
    LOOP AT IT_ARCHPTR ASSIGNING <L_ARCHPTR>.
      CALL FUNCTION 'ARCHIVE_READ_OBJECT'
        EXPORTING
          OBJECT         = 'FI_DOCUMNT'
          ARCHIVKEY      = <L_ARCHPTR>-ARCHIVEKEY
          OFFSET         = <L_ARCHPTR>-ARCHIVEOFS
        IMPORTING
          ARCHIVE_HANDLE = L_HANDLE
        EXCEPTIONS
          OTHERS         = 42.
      IF NOT SY-SUBRC IS INITIAL.
        MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ADD 1 TO L_PROCESSED.
        CONTINUE.
      ENDIF.
      PERFORM OPEN_OBJECT_PROCESS
           TABLES T_BELNRSEL T_BUKRSSEL T_GJAHRSEL T_MONATSEL
                  T_BUDATSEL T_BLARTSEL T_XBLNRSEL
                  T_BKPF
            USING L_HANDLE L_TOTAL
         CHANGING L_PROCESSED L_SELECTEDLINES.
      IF L_SELECTEDLINES >= V_MAXHITS.
        EXIT.
      ENDIF.
      CALL FUNCTION 'ARCHIVE_CLOSE_FILE'
        EXPORTING
          ARCHIVE_HANDLE = L_HANDLE.
    ENDLOOP.
  ENDIF.
ENDFORM.                               "BKPF_GET_ARCHIVE

以父之名(24963363) 09:11:11
*---------------------------------------------------------------------*
*       FORM ARCHPTR_GET_FROM_AS                                      *
*---------------------------------------------------------------------*
FORM ARCHPTR_GET_FROM_AS
                 TABLES T_BELNRSEL        STRUCTURE BELNR
                        T_BUKRSSEL        STRUCTURE BUKRS
                        T_GJAHRSEL        STRUCTURE GJAHR
                        T_MONATSEL        STRUCTURE MONAT
                        T_BUDATSEL        STRUCTURE BUDAT
                        T_BLARTSEL        STRUCTURE BLART
                        T_XBLNRSEL        STRUCTURE XBLNR
                        T_ARCHPTR         STRUCTURE AIND_ARKEY
                  USING VALUE(V_FIELDCAT) LIKE AIND_STR1-ARCHINDEX.

  DATA:   IT_FRANGE    TYPE RSDS_FRANGE_T,
          L_FRANGE     TYPE RSDS_FRANGE,
          L_RSDSSELOPT LIKE RSDSSELOPT,
          L_TEXT(50)   TYPE C,
          IT_ARCHPTR   TYPE TABLE OF AIND_ARKEY.

  CONCATENATE 'LESE ARCHIVINFORMATIONSSYSTEM:'(004) V_FIELDCAT
      INTO L_TEXT SEPARATED BY SPACE.
  PERFORM PROGRESS_INDICATOR USING L_TEXT 0 0 'X'.
  L_FRANGE-FIELDNAME = 'BELNR'.

  LOOP AT T_BELNRSEL.
    MOVE-CORRESPONDING T_BELNRSEL TO L_RSDSSELOPT.
    APPEND L_RSDSSELOPT TO L_FRANGE-SELOPT_T.
  ENDLOOP.
  APPEND L_FRANGE TO IT_FRANGE.
  CLEAR L_FRANGE.
  L_FRANGE-FIELDNAME = 'BUKRS'.
  LOOP AT T_BUKRSSEL.
    MOVE-CORRESPONDING T_BUKRSSEL TO L_RSDSSELOPT.
    APPEND L_RSDSSELOPT TO L_FRANGE-SELOPT_T[].
  ENDLOOP.
  APPEND L_FRANGE TO IT_FRANGE.
  CLEAR L_FRANGE.
  L_FRANGE-FIELDNAME = 'GJAHR'.
  LOOP AT T_GJAHRSEL.
    MOVE-CORRESPONDING T_GJAHRSEL TO L_RSDSSELOPT.
    APPEND L_RSDSSELOPT TO L_FRANGE-SELOPT_T[].
  ENDLOOP.
  APPEND L_FRANGE TO IT_FRANGE.
  CLEAR L_FRANGE.
  L_FRANGE-FIELDNAME = 'MONAT'.
  LOOP AT T_MONATSEL.
    MOVE-CORRESPONDING T_MONATSEL TO L_RSDSSELOPT.
    APPEND L_RSDSSELOPT TO L_FRANGE-SELOPT_T[].
  ENDLOOP.
  APPEND L_FRANGE TO IT_FRANGE.
  CLEAR L_FRANGE.
  L_FRANGE-FIELDNAME = 'BUDAT'.
  LOOP AT T_BUDATSEL.
    MOVE-CORRESPONDING T_BUDATSEL TO L_RSDSSELOPT.
    APPEND L_RSDSSELOPT TO L_FRANGE-SELOPT_T[].
  ENDLOOP.
  APPEND L_FRANGE TO IT_FRANGE.
  CLEAR L_FRANGE.
  L_FRANGE-FIELDNAME = 'BLART'.
  LOOP AT T_BLARTSEL.
    MOVE-CORRESPONDING T_BLARTSEL TO L_RSDSSELOPT.
    APPEND L_RSDSSELOPT TO L_FRANGE-SELOPT_T[].
  ENDLOOP.
  APPEND L_FRANGE TO IT_FRANGE.
  CLEAR L_FRANGE.
  L_FRANGE-FIELDNAME = 'XBLNR'.
  LOOP AT T_XBLNRSEL.
    MOVE-CORRESPONDING T_XBLNRSEL TO L_RSDSSELOPT.
    APPEND L_RSDSSELOPT TO L_FRANGE-SELOPT_T[].
  ENDLOOP.
  APPEND L_FRANGE TO IT_FRANGE.
  CALL FUNCTION 'AS_API_READ'
    EXPORTING
      I_FIELDCAT         = V_FIELDCAT
      I_SELECTIONS       = IT_FRANGE
    IMPORTING
      E_RESULT           = IT_ARCHPTR[]
    EXCEPTIONS
      NO_INFOSTRUC_FOUND = 0.
  APPEND LINES OF IT_ARCHPTR[] TO T_ARCHPTR[].
ENDFORM.                               "ARCHPTR_GET_FROM_AS


*---------------------------------------------------------------------*
*       FORM BKPF_DISPLAY                                             *
*---------------------------------------------------------------------*
FORM BKPF_DISPLAY TABLES T_BKPF STRUCTURE BKPF.

  DATA: L_REPID LIKE SY-REPID,
        IT_X031L LIKE X031L OCCURS 10 WITH HEADER LINE,
        IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
        L_TOTAL LIKE SY-TABIX,
        L_DISVARIANT LIKE DISVARIANT,
        L_LAYOUT TYPE SLIS_LAYOUT_ALV.

  DESCRIBE TABLE T_BKPF LINES L_TOTAL.
  PERFORM PROGRESS_INDICATOR
    USING 'ANZEIGE WIRD AUFBEREITET'(003) 0 L_TOTAL 'X'.
  CALL FUNCTION 'DDIF_NAMETAB_GET'
    EXPORTING
      TABNAME   = 'BKPF'
    TABLES
      X031L_TAB = IT_X031L[].
  LOOP AT IT_X031L.
    CLEAR IT_FIELDCAT.
    IT_FIELDCAT-FIELDNAME = IT_X031L-FIELDNAME.
    IT_FIELDCAT-REF_TABNAME = 'BKPF'.
    CASE IT_FIELDCAT-FIELDNAME.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -