?? fi0000.txt
字號:
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 + -