📄 zfir0020.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>ZFIR0020</title>
</head>
<body bgcolor="#FFFFE0">
<font size="3" face = "Arial" color="#000000"><b>Code listing for: ZFIR0020</b></font>
<br>
<font size="3" face = "Arial" color="#000000"><b>Description: 金税发票下载</b></font>
<hr>
<pre width="100">
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
<font color ="#0000FF">*& Report ZFIR0020</font>
<font color ="#0000FF">*&</font>
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
<font color ="#0000FF">*&</font>
<font color ="#0000FF">*&</font>
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
REPORT ZFIR0020.
include <a href ="zfir0020_top.html">ZFIR0020_TOP</a>.
include <a href ="zfir0020_forms.html">ZFIR0020_FORMS</a>.
include <a href ="zfir0020_alv_class.html">ZFIR0020_ALV_CLASS</a>.
SELECTION-SCREEN:BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_VKORG TYPE VBRK-VKORG DEFAULT '1000' OBLIGATORY,
P_WERKS TYPE VBRP-WERKS DEFAULT '1000' OBLIGATORY,
P_ZFKART LIKE ZFI01-ZFKART DEFAULT 'A1' OBLIGATORY.
SELECT-OPTIONS:S_VTWEG FOR VBRK-VTWEG NO INTERVALS,
S_SPART FOR VBRK-SPART NO INTERVALS,
S_FKART FOR VBRK-FKART NO INTERVALS,
S_VBELN FOR VBRK-VBELN,
S_KUNRG FOR VBRK-KUNRG,
S_ERDAT FOR VBRK-ERDAT,
S_FKDAT FOR VBRK-FKDAT.
SELECTION-SCREEN:END OF BLOCK BLK1.
SELECTION-SCREEN: BEGIN OF BLOCK BLK4 WITH FRAME TITLE TEXT-004.
PARAMETERS:P_PICK AS CHECKBOX,
P_RICK AS CHECKBOX.
SELECTION-SCREEN: END OF BLOCK BLK4.
SELECTION-SCREEN: BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
PARAMETERS:P_REDL AS CHECKBOX,
P_FLAG AS CHECKBOX.
SELECT-OPTIONS:S_ZVBELN FOR ZFI02-ZVBELN.
SELECTION-SCREEN: END OF BLOCK BLK2.
SELECTION-SCREEN: BEGIN OF BLOCK BLK3 WITH FRAME TITLE TEXT-003.
PARAMETERS:VAT_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:\SAPDATA\INVOICE_EXPORT.TXT' OBLIGATORY,
CAN_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:\SAPDATA\CANCELLATION.TXT' OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK BLK3.
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR VAT_FILE.
PERFORM GET_FILENAME CHANGING VAT_FILE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR CAN_FILE.
PERFORM GET_FILENAME CHANGING CAN_FILE.
AT SELECTION-SCREEN ON VAT_FILE.
IF VAT_FILE IS INITIAL.
MESSAGE '请选择一个下载路径,下载发票数据!' TYPE 'E'.
ENDIF.
AT SELECTION-SCREEN.
IF P_REDL = 'X' AND P_FLAG = 'X'.
IF S_ZVBELN IS INITIAL.
MESSAGE '重新下载时,查找已回传发票的数据时,必须输入金税发票号!' TYPE 'E'.
ENDIF.
ENDIF.
PERFORM GET_FKART USING P_ZFKART.
PERFORM GET_DATA.
START-OF-SELECTION.
IF P_REDL = 'X'.
PERFORM OUTPUT_DATA.
ELSE.
CALL SCREEN 100.
ENDIF.
END-OF-SELECTION.
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
<font color ="#0000FF">*& Form GET_DATA.</font>
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
FORM GET_DATA.
DATA:L_MRNKZ TYPE VBRK-MRNKZ,
L_FKDAT TYPE VBRK-FKDAT,
L_FKMON(6) TYPE C,
L_FKMON2(6) TYPE C.
IF P_ZFKART = 'A2'.
L_MRNKZ = 'X'.
ELSE.
L_MRNKZ = ''.
ENDIF.
IF P_REDL = 'X'. "重新下载
SELECT A~ZSERNR A~ZSTATU A~ZVBELN B~ZPOSNR B~VBELN B~POSNR D~MATNR B~FKLMG
B~NETWR C~VKORG D~WERKS C~KUNRG C~ERDAT C~SPART C~FKDAT C~VKORG C~VTWEG
C~FKART E~NAME1 F~MAKTX
INTO CORRESPONDING FIELDS OF TABLE IT_DOWN
FROM ZFI02 AS A
INNER JOIN ZFI03 AS B ON A~ZSERNR = B~ZSERNR
INNER JOIN VBRK AS C ON B~VBELN = C~VBELN
INNER JOIN VBRP AS D ON B~VBELN = D~VBELN AND B~POSNR = D~POSNR
INNER JOIN KNA1 AS E ON E~KUNNR = C~KUNRG
INNER JOIN MAKT AS F ON F~MATNR = D~MATNR AND F~SPRAS = '1'
WHERE C~FKART IN S_FKART AND C~VKORG = P_VKORG AND C~VTWEG IN S_VTWEG
AND C~ERDAT IN S_ERDAT AND C~SPART IN S_SPART AND C~FKDAT IN S_FKDAT
AND C~VBELN IN S_VBELN AND C~KUNRG IN S_KUNRG AND D~WERKS = P_WERKS
AND A~ZSTATU <> '2' AND A~ZVBELN IN S_ZVBELN AND C~MRNKZ = L_MRNKZ
ORDER BY A~ZVBELN.
ELSE. "第一次下载
SELECT DISTINCT vbrk~kunrg vbrk~vbeln vbrk~fkart vbrk~vkorg vbrk~vtweg
vbrp~werks vbrk~erdat vbrk~erzet vbrk~fkdat KNA1~NAME1 VBRK~SFAKN
INTO CORRESPONDING FIELDS OF TABLE IT_DATA
FROM vbrk INNER JOIN vbrp ON vbrk~vbeln = vbrp~vbeln AND
vbrp~werks = P_WERKS
INNER JOIN KNA1 ON KNA1~KUNNR = vbrk~kunrg
WHERE vbrk~vbeln IN S_vbeln
AND vbrk~fkart IN S_fkart
AND vbrk~spart IN S_spart
AND vbrk~kunrg IN S_kunrg
AND vbrk~vkorg = P_vkorg
AND vbrk~vtweg IN S_vtweg
AND vbrk~erdat IN S_erdat
AND vbrk~fkdat IN S_fkdat
AND vbrk~fksto <> 'X'
AND vbrk~waerk = 'RMB'
AND vbrk~rfbsk = 'C'
AND VBRK~MRNKZ = L_MRNKZ
AND ( vbrk~fkart IN R_FKART OR vbrk~fkart IN R_FKARTC )
AND vbrk~vbeln NOT IN ( SELECT VBELN FROM ZFI03 )
ORDER BY vbrk~kunrg vbrk~vbeln.
LOOP AT IT_DATA.
SELECT SUM( FKIMG ) SUM( NETWR ) SUM( MWSBP )
INTO (IT_DATA-FKIMG,IT_DATA-NETWR,IT_DATA-MWSBP)
FROM VBRP WHERE VBELN = IT_DATA-VBELN.
IF IT_DATA-FKART IN R_FKARTH.
IT_DATA-FKIMG = IT_DATA-FKIMG * -1.
IT_DATA-NETWR = IT_DATA-NETWR * -1.
IT_DATA-MWSBP = IT_DATA-MWSBP * -1.
ENDIF.
IF IT_DATA-FKART IN R_FKARTC.
SELECT SINGLE VBELN INTO IT_DATA-SFAKN FROM ZFI03 WHERE VBELN = IT_DATA-SFAKN.
IF SY-SUBRC = 0.
IT_DATA-FLAG = '1'.
ELSE.
SELECT SINGLE FKDAT INTO L_FKDAT FROM VBRK WHERE VBELN = IT_DATA-SFAKN.
IF SY-SUBRC = 0.
L_FKMON = IT_DATA-FKDAT(6).
L_FKMON2 = L_FKDAT(6).
IF L_FKMON EQ L_FKMON2.
IT_DATA-FLAG = '1'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
SELECT SINGLE AUBEL INTO IT_DATA-AUBEL FROM VBRP WHERE VBELN = IT_DATA-VBELN.
SELECT SINGLE BSTNK INTO IT_DATA-BSTNK FROM VBAK WHERE VBELN = IT_DATA-AUBEL.
MODIFY IT_DATA.
ENDLOOP.
DELETE IT_DATA WHERE FLAG = '1'.
ENDIF.
ENDFORM. " GET_DATA
<font color ="#0000FF">*&-------------------------------------------------------------</font>
<font color ="#0000FF">*& Form OUTPUT_DATA</font>
<font color ="#0000FF">*&-------------------------------------------------------------</font>
FORM OUTPUT_DATA.
type-pools slis.
data: allfields type slis_t_fieldcat_alv.
data: wa_allfields type line of slis_t_fieldcat_alv.
<font color ="#0000FF">* myrepid = sy-repid.</font>
clear wa_allfields.
wa_allfields-fieldname = 'ZSERNR'."必须是大写
wa_allfields-seltext_l = '税票关联号'.
wa_allfields-outputlen = 10.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'ZVBELN'.
wa_allfields-seltext_l = '金税发票号'.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'ZPOSNR'.
wa_allfields-seltext_l = '行号'.
wa_allfields-outputlen = 6.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'KUNRG'.
wa_allfields-seltext_l = '付款方'.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'NAME1'.
wa_allfields-seltext_l = '付款方名称'.
wa_allfields-outputlen = 20.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'WERKS'.
wa_allfields-seltext_l = '工厂'.
wa_allfields-outputlen = 4.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'VKORG'.
wa_allfields-seltext_l = '销售组织'.
wa_allfields-outputlen = 7.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'VTWEG'.
wa_allfields-seltext_l = '分销渠道'.
wa_allfields-outputlen = 7.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'SPART'.
wa_allfields-seltext_l = '产品组'.
wa_allfields-outputlen = 5.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'FKART'.
wa_allfields-seltext_l = '开票类型'.
wa_allfields-outputlen = 7.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'VBELN'.
wa_allfields-seltext_l = '发票号'.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'ERDAT'.
wa_allfields-seltext_l = '发票创建日期'.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'FKDAT'.
wa_allfields-seltext_l = '出具发票日期'.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'POSNR'.
wa_allfields-seltext_l = '发票行号'.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'MATNR'.
wa_allfields-seltext_l = '物料号'.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'MAKTX'.
wa_allfields-seltext_l = '物料描述'.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'FKLMG'.
wa_allfields-seltext_l = '开票数量'.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'NETWR'.
wa_allfields-seltext_l = '开票金额'.
append wa_allfields to allfields.
clear wa_allfields.
wa_allfields-fieldname = 'MWSBP'.
wa_allfields-seltext_l = '税额'.
append wa_allfields to allfields.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
i_callback_pf_status_set = 'SET_PF'
i_callback_user_command = 'USER_COM'
I_GRID_TITLE = '金税下载数据ALV显示'
IT_FIELDCAT = allfields
I_SAVE = 'X'
TABLES
T_OUTTAB = IT_DOWN
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
<font color ="#0000FF">* IF SY-SUBRC <> 0.</font>
<font color ="#0000FF">* * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO</font>
<font color ="#0000FF">* * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.</font>
<font color ="#0000FF">* ENDIF.</font>
ENDFORM. "output_data
<font color ="#0000FF">*&--------------------------------------------------------------------*</font>
<font color ="#0000FF">*& Form set_pf_client</font>
<font color ="#0000FF">*&--------------------------------------------------------------------*</font>
<font color ="#0000FF">* text</font>
<font color ="#0000FF">*---------------------------------------------------------------------*</font>
<font color ="#0000FF">* -->EXTAB text</font>
<font color ="#0000FF">*---------------------------------------------------------------------*</font>
FORM set_pf USING extab TYPE slis_t_extab.
<font color ="#0000FF">*通过SE41,拷贝程序SAPLSLVC_FULLSCREEN的状态STANDARD_FULLSCREEN过来</font>
SET PF-STATUS 'ZFIR0020'.
ENDFORM. "SET_PF
<font color ="#0000FF">*&--------------------------------------------------------------------*</font>
<font color ="#0000FF">*& Form user_com</font>
<font color ="#0000FF">*&--------------------------------------------------------------------*</font>
<font color ="#0000FF">* text</font>
<font color ="#0000FF">*---------------------------------------------------------------------*</font>
<font color ="#0000FF">* -->R_UCOMM text</font>
<font color ="#0000FF">* -->RS_SELFIELDtext</font>
<font color ="#0000FF">*---------------------------------------------------------------------*</font>
FORM user_com USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield .
CASE r_ucomm.
WHEN: 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE TO SCREEN 0.
WHEN: '&DATA_SAVE'. "
IF P_REDL = 'X' AND P_FLAG = 'X'.
."只显示
ELSEIF P_REDL = 'X' AND P_FLAG <> 'X'.
."保存
ELSE.
."下载并保存
ENDIF.
LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM. " CALL_ALV
<font color ="#0000FF">*GUI Texts</font>
<font color ="#0000FF">*----------------------------------------------------------</font>
<font color ="#0000FF">* 100 --> 金税下载ALV</font>
<font color ="#0000FF">* MAIN --> 金税下载</font>
<font color ="#0000FF">*Text elements</font>
<font color ="#0000FF">*----------------------------------------------------------</font>
<font color ="#0000FF">* 001 发票条件</font>
<font color ="#0000FF">* 002 重新下载</font>
<font color ="#0000FF">* 003 下载路径</font>
<font color ="#0000FF">* 004 第一次下载</font>
<font color ="#0000FF">*Selection texts</font>
<font color ="#0000FF">*----------------------------------------------------------</font>
<font color ="#0000FF">* CAN_FILE 作废发票下载文件路径</font>
<font color ="#0000FF">* P_FLAG 金税发票票已回传</font>
<font color ="#0000FF">* P_PICK 拆分标识</font>
<font color ="#0000FF">* P_REDL 重新下载</font>
<font color ="#0000FF">* P_RICK 合并标识</font>
<font color ="#0000FF">* P_VKORG 销售组织</font>
<font color ="#0000FF">* P_WERKS 工厂</font>
<font color ="#0000FF">* P_ZFKART 发票类型</font>
<font color ="#0000FF">* S_ERDAT 发票创建日期</font>
<font color ="#0000FF">* S_FKART 开票类型</font>
<font color ="#0000FF">* S_FKDAT 出具发票日期</font>
<font color ="#0000FF">* S_KUNRG 付款方</font>
<font color ="#0000FF">* S_SPART 产品组</font>
<font color ="#0000FF">* S_VBELN 开票凭证</font>
<font color ="#0000FF">* S_VTWEG 分销渠道</font>
<font color ="#0000FF">* S_ZVBELN 金税发票号</font>
<font color ="#0000FF">* VAT_FILE 正常发票下载文件路径</font>
<font color ="#0000FF">*Messages</font>
<font color ="#0000FF">*----------------------------------------------------------</font>
<font color ="#0000FF">*</font>
<font color ="#0000FF">* Message class: Hard coded</font>
<font color ="#0000FF">* 文件路径不存在!</font>
</pre>
<hr>
<font size="2" face = "Sans Serif">Extracted by Direct Download Enterprise version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 700
</font>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -