您的位置:首页 > 其它

ABAP 外销财务凭证与客户采购合同对应关系报表

2013-01-08 14:02 330 查看
目的:将运输部开具的“出口商品发票”匹配到确认销售收入的凭证后面。
说明:外销每月的销售收入凭证都要将对应的“出口商品发票”匹配到后面作为附件装订成册。
此类凭证每个月近600张,都要找到对应的“商品发票”,工作量单纯且耗费大量时间。
目前采用的方法是:将商品发票按客户分类排序,再分客户到SAP查询每个客户的收入确认凭证,根据金额找到对应的凭证号,放到对应的凭证后面。
此类简单耗时的工作希望可以借助系统更快的完成。


处理逻辑:通过会计凭证(表:BKPF)找到相应的发票号(表:VBRK)、再找到对应的销售订单(表:VBRP)取出客户采购订单编号(表:VBAK)

REPORT  YWFIR040.

TABLES:BKPF,"会计核算凭证抬头
VBRK,"出具发票:抬头数据
VBAK.

DATA:BEGIN OF ITAB OCCURS 0,
BUKRS LIKE BKPF-BUKRS,   " 公司代码
BELNR LIKE BKPF-BELNR,   "会计凭证号码
GJAHR LIKE BKPF-GJAHR,   "会计年度
BUDAT LIKE BKPF-BUDAT,   "记账日期
BLDAT LIKE BKPF-BLDAT,   "凭证日期
XBLNR LIKE BKPF-XBLNR,    "参照  BKPF-XBLNR ==VBRK-VBELN
VBELN LIKE VBRK-VBELN,   "发票号码
KUNRG LIKE VBRK-KUNRG,   "客户代码
VKORG LIKE VBRK-VKORG,   "销售组织
VTWEG LIKE VBRK-VTWEG,   "分销渠道
NAME1 TYPE KNA1-NAME1,        "为合作伙伴显示文本 (姓名, 城市, 国家, 街道)
AUBEL LIKE VBRP-AUBEL,
*     BSTKD LIKE VBKD-BSTKD,
BSTNK LIKE VBAK-BSTNK,    "合同号码
NETWR LIKE VBRK-NETWR,   "净价值
WAERK LIKE VBRK-WAERK,    "货币
SELFI,
END OF ITAB.

*&--------------------画屏区域-----------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK FRAME1 WITH FRAME TITLE TEXT-000 .
SELECT-OPTIONS: R_BUKRS FOR BKPF-BUKRS OBLIGATORY DEFAULT '1010',   "公司代码
R_VKORG FOR VBRK-VKORG,
R_VTWEG FOR VBRK-VTWEG,
R_BUDAT FOR BKPF-BUDAT.
SELECTION-SCREEN END OF BLOCK FRAME1.

*&-------------------------程序主区域-------------------------------------*
AT SELECTION-SCREEN OUTPUT.  "用户操作后屏幕输出事件
AT SELECTION-SCREEN.  "用户回车或单击后发生事件,不考滤屏幕输出
START-OF-SELECTION.  "正式程序运行到输出结果事件
PERFORM GET_DATA.   "取数据
PERFORM REPORT_DATA.  "显示数据

FORM GET_DATA.
SELECT A~BUKRS A~BELNR A~GJAHR A~BUDAT A~BLDAT
A~XBLNR B~VBELN B~VKORG B~VTWEG B~KUNRG B~NETWR B~WAERK
INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM BKPF AS A JOIN VBRK AS B ON A~XBLNR = B~VBELN
WHERE  A~BUKRS IN R_BUKRS
AND  B~VKORG IN R_VKORG
AND  B~VTWEG IN R_VTWEG
AND  A~BUDAT IN R_BUDAT.

LOOP AT ITAB.
SELECT SINGLE AUBEL INTO ITAB-AUBEL FROM VBRP WHERE VBELN = ITAB-VBELN.  "取销售订单号
SELECT SINGLE BSTNK INTO ITAB-BSTNK FROM VBAK WHERE VBELN = ITAB-AUBEL.  "通过销售订单号取PO号
SELECT SINGLE NAME1 INTO ITAB-NAME1 FROM KNA1 WHERE KUNNR = ITAB-KUNRG.
MODIFY ITAB.
ENDLOOP.
ENDFORM.

*&---------------------ALV变量声明区域---------------------------------*
TYPE-POOLS:SLIS.
DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DATA: LAYOUT TYPE SLIS_LAYOUT_ALV .
DATA: S_VARIANT LIKE DISVARIANT.

*&-------------------------ALV数据展示区域----------------------------------*
FORM REPORT_DATA .
*  设置要显示的字段列表
PERFORM SET_FIELDCAT.

* 给表格布局参数赋值
LAYOUT-GET_SELINFOS    = 'X'.
LAYOUT-COLWIDTH_OPTIMIZE = 'X'.  "列宽度自动根据内容优化
LAYOUT-DETAIL_POPUP    = 'X'.
LAYOUT-NO_KEYFIX       = 'X'.
LAYOUT-BOX_FIELDNAME     = 'SELFI'.

S_VARIANT-REPORT = SY-REPID.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'  "REUSE_ALV_LIST_DISPLAY
EXPORTING
I_CALLBACK_PROGRAM       = SY-REPID       "当前的程序名
IS_LAYOUT                = LAYOUT       "表格样式 布局
IT_FIELDCAT              = FIELDCAT[]  "要显示的列名,必填
I_SAVE                   = 'A'
IS_VARIANT               = S_VARIANT
TABLES
T_OUTTAB                 = ITAB "ALV数据输出使用的内表 必填
EXCEPTIONS
PROGRAM_ERROR            = 1
OTHERS                   = 2.
ENDFORM.                    " ALV_REPORT_DATA
*&---------------------------------------------------------------------*

FORM SET_FIELDCAT .
REFRESH FIELDCAT.
PERFORM INPUT_FIELDCAT  USING 'BLDAT'  '记账日期'  ''  '' '' '' ''.
PERFORM INPUT_FIELDCAT  USING 'BELNR'  '凭证号码'  ''  '' '' '' ''.
PERFORM INPUT_FIELDCAT  USING 'VBELN'  '发票号码'  ''  '' '' '' ''.
PERFORM INPUT_FIELDCAT  USING 'AUBEL'  '销售订单号码'  ''  '' '' '' ''.
PERFORM INPUT_FIELDCAT  USING 'KUNRG'  '客户代码'  ''  '' '' '' ''.
PERFORM INPUT_FIELDCAT  USING 'NAME1'  '客户全称' ''  '' '' '' ''.
PERFORM INPUT_FIELDCAT  USING 'BSTNK'  '合同号码'  ''  '' '' '' ''.
PERFORM INPUT_FIELDCAT  USING 'NETWR'  '凭证外币金额'  ''  '' '' '' ''.
PERFORM INPUT_FIELDCAT  USING 'WAERK'  '货币'  ''  '' '' '' ''.
ENDFORM.                    " SET_FIELDCAT

*------------------------------------------------------------------------*
FORM INPUT_FIELDCAT USING ZID WENB KEYS GD COLOR REFTAB REFFILE.

ADD 1 TO FIELDCAT-COL_POS.
FIELDCAT-FIELDNAME =  ZID. " 对应的内表中的字段名称
FIELDCAT-SELTEXT_M =  WENB. "ALV中显示的字段名称
FIELDCAT-KEY = KEYS.
FIELDCAT-FIX_COLUMN = GD .
FIELDCAT-EMPHASIZE = COLOR.  "列颜色
FIELDCAT-REF_TABNAME = REFTAB.
FIELDCAT-REF_FIELDNAME = REFFILE.
APPEND FIELDCAT.
CLEAR FIELDCAT.

ENDFORM.                    "INPUT_FIELDCAT
*&---------------------------------------------------------------------*
*&      FORM  SET_PF_STATUS
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*      -->T_EXTAB    TEXT
*----------------------------------------------------------------------*
FORM SET_PF_STATUS USING T_EXTAB TYPE SLIS_T_EXTAB.
DATA: S_EXTAB TYPE SLIS_EXTAB. "要被排除的按钮的列表
SET PF-STATUS 'STANDARD_FULLSCREEN' EXCLUDING T_EXTAB.
ENDFORM.                    " SET_PF_STATUS
*--------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: