SAP公司间采购订单关联交货单报表源代码(自己收藏)

发布时间:2016-12-6 8:13:22编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"SAP公司间采购订单关联交货单报表源代码(自己收藏) ",主要涉及到SAP公司间采购订单关联交货单报表源代码(自己收藏) 方面的内容,对于SAP公司间采购订单关联交货单报表源代码(自己收藏) 感兴趣的同学可以参考一下。

*&---------------------------------------------------------------------*
*& Report  ZTESTXIAO001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZTESTXIAO001.

tables:VBKD,lips,vbak,vbrp,VBRK,EKPO,VBAP.

*定义ALV变量
TYPE-POOLS: SLIS.
DATA: FIELDCATALOG   TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
      GD_TAB_GROUP   TYPE SLIS_T_SP_GROUP_ALV,
      GD_LAYOUT      TYPE SLIS_LAYOUT_ALV,
      GD_REPID       LIKE SY-REPID,
      GT_EVENTS      TYPE SLIS_T_EVENT,
      GD_PRNTPARAMS  TYPE SLIS_PRINT_ALV,
      GT_SORT        TYPE SLIS_T_SORTINFO_ALV,
      GS_SORT        TYPE SLIS_SORTINFO_ALV,
      G_TITLE        TYPE LVC_TITLE.

data:begin of gt_out occurs 0,
  BSTKD_E like VBKD-BSTKD_E,"采购订单号
  WERKS   LIKE EKPO-WERKS,"工厂
  MATNR   LIKE EKPO-MATNR,"物料号
  TXZ01   LIKE EKPO-TXZ01,"物料描述
  VBELNXS  like VBKD-VBELN,"销售订单号
  posnrXS LIKE VBKD-POSNR,"销售订单行项目号
  VKORG   LIKE VBAK-VKORG,"销售组织
  MATWA   LIKE VBAP-MATWA,"物料号
  ARKTX   like VBAP-ARKTX,"物料描述
  VBELNjh  like VBKD-VBELN,"交互单号
  posnrjh LIKE VBKD-POSNR,"交货单行项目号
  VBELNfp  like VBKD-VBELN,"发票号
  posnrFP LIKE VBKD-POSNR,"发票行项目号
  FKDAT   LIKE VBRK-FKDAT,"发票创建日期
  END OF GT_OUT.


data:begin of gt_VBKD occurs 0,
  BSTKD_E like VBKD-BSTKD_E,"采购订单号
  VBELNXS  like VBKd-VBELN,"销售订单号
  posnrXS LIKE VBKD-POSNR,"销售订单行项目号
  VBELN    like VBKD-VBELN,"销售订单号
  posnr   LIKE VBKD-POSNR,"销售订单行项目号
  VBELNjh  like VBKD-VBELN,"交互单号
  posnrjh LIKE VBKD-POSNR,"交货单行项目号
  END OF GT_VBKD.

DATA:BEGIN OF GT_EKPO OCCURS 0,
  BSTKD_E like VBKD-BSTKD_E,"采购订单号
  WERKS   LIKE EKPO-WERKS,"采购工厂
  MATNR   LIKE EKPO-MATNR,"采购物料号
  TXZ01   LIKE EKPO-TXZ01,"采购物料描述
  END OF GT_EKPO.

data:begin of gt_vbrk occurs 0,
  VBELNXS LIKE VBAK-VBELN,"销售订单号
  VKORG   LIKE VBAK-VKORG,"销售组织
  MATWA   LIKE VBAP-MATWA,"销售物料号
  ARKTX   like VBAP-ARKTX,"销售物料描述
  end of gt_vbrk.

data:begin of gt_VBaK occurs 0,
  BSTKD_E like VBKD-BSTKD_E,"交货单号
  POSEX_E like VBKD-POSEX_E,"交货单行项目号
  VBELNjh like VBKD-VBELN,"交互单号
  VBELN   like VBKD-VBELN,"销售订单号
  posnr   LIKE VBKD-POSNR,"销售订单行项目号
  END OF GT_VBaK.

data:begin of gt_FP occurs 0,
  AUBEL  like VBRP-AUBEL,"销售订单号
  AUPOS LIKE VBRP-AUPOS,"销售订单行项目号
  VBELN  like VBRP-VBELN,"发票号
  posnr LIKE VBRP-POSNR,"发票行项目号
  END OF GT_FP.

data:begin of gt_FPDATA OCCURS 0,
  VBELN  like VBRP-VBELN,"发票号
  FKDAT LIKE VBRK-FKDAT,"发票日期
  END OF GT_FPDATA.

"定义选择屏幕(输入条件)
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:   S_BSTKD for VBKD-BSTKD_E.  "采购订单号
SELECTION-SCREEN END OF BLOCK BLOCK1.

START-OF-SELECTION.
  "取数
  PERFORM GET_DATA.
  "处理数据
  PERFORM DEAL_DATA.
  "alv显示
  PERFORM ALV_DIS.

END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA .

select
  A~BSTKD_E
  A~VBELN as VBELNXS
  A~POSNR AS posnrXS
  B~VBELN AS VBELNjh
  B~POSNR AS posnrjh
  into corresponding fields of table gt_VBKD
  from vbkd as a
  inner join lips as b on b~VGBEL = a~VBELN and b~vgpos = a~POSNR
  where  a~BSTKD_E in S_BSTKD.
if gt_VBKD[] is not initial"判断查出的数据是否为空,如果为空不再执行以下的程序(initial=空)

select            "从表VBKD查出销售订单类型为ZWK1,售达方为公司间的全部数据放到临时表GT_VBAK里
  a~vbeln as vbeln
  a~posnr
  a~BSTKD_E
  a~POSEX_E
  into corresponding fields of table gt_VBaK
  from vbkd as a
  inner join vbak as b on  a~vbeln = b~vbeln
  where B~auart 'ZKE1'
  AND ( B~KUNNR '0000002300' OR B~KUNNR '0000002100'
  OR B~KUNNR '0000002200' OR B~KUNNR '0000003100'
  OR B~KUNNR '0000001000'  )
  AND A~POSEX_E <> ''.

LOOP AT GT_VBAK"更改自字符串长度格式
  gt_VBaK-VBELNjh = gt_VBaK-BSTKD_E+0(10).
  MODIFY GT_VBAK.
  CLEAR GT_VBAK.
ENDLOOP.
"删除gt_vbkd中交货单号及航项目在gt_vbak中找不到的行
LOOP AT GT_VBKD.
  READ TABLE gt_VBaK WITH KEY VBELNjh = GT_VBKD-VBELNjh
                              POSEX_E = GT_VBKD-posnrjh.
  IF SY-SUBRC <> 0.
    delete gt_vbkd.
  ENDIF.
ENDLOOP.
*对gt_vbkd中交货单号机航项目在gt_vbak中找到的行,
*修改销售订单号及航项目=gt_vbak中的销售订单号及航项目
LOOP AT GT_VBKD.
  READ TABLE gt_VBaK WITH KEY VBELNjh = GT_VBKD-VBELNjh
                              POSEX_E = GT_VBKD-posnrjh.
  IF SY-SUBRC 0.
    GT_VBKD-VBELN = gt_VBaK-vbeln.
    GT_VBKD-posnr = gt_VBaK-posnr.
  ENDIF.
  modify GT_VBKD.
  clear GT_VBKD.
ENDLOOP.
"查出销售订单号,销售订单行项目,发票号,发票行项目,发票日期放到临时表 get_FP里
SELECT
  AUBEL
  AUPOS
  VBELN
  posnr
  into corresponding fields of table gt_FP
  FROM VBRP
  FOR ALL ENTRIES IN GT_VBKD
  WHERE AUBEL = GT_VBKD-VBELN AND AUPOS = GT_VBKD-POSNR.
"查出发票的下达日期放到GT_FPDATA这个临时表里
SELECT
  VBELN
  FKDAT
  INTO CORRESPONDING FIELDS OF TABLE GT_FPDATA
  FROM VBRK
  FOR ALL ENTRIES IN GT_FP
  WHERE VBELN = GT_FP-VBELN.

"查出采购订单的工厂、物料号、和物料描述放在临时表GT_EKPO里。
SELECT
  EBELN as BSTKD_E
  WERKS
  MATNR
  TXZ01
  INTO CORRESPONDING FIELDS OF TABLE GT_EKPO
  FROM EKPO
  WHERE EBELN in S_BSTKD.
"查出销售订单的销售组织、物料号和物料描述在临时表GT_VBRK
SELECT
  A~vbeln as VBELNXS
  A~VKORG
  B~MATWA
  B~ARKTX
  INTO CORRESPONDING FIELDS OF TABLE GT_VBRK
  FROM VBAK AS A
  inner join VBAP as b on B~vbeln = A~vbeln
  FOR ALL ENTRIES IN gt_VBKD
  WHERE A~VBELN = gt_VBKD-VBELNXS.

  endif.


ENDFORM.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Form  DEAL_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DEAL_DATA .  "给需要输出的字段赋值
  LOOP AT gt_VBKD.
    GT_OUT-BSTKD_E = GT_VBKD-BSTKD_E.
    GT_OUT-VBELNXS = GT_VBKD-VBELNXS.
    GT_OUT-posnrXS = GT_VBKD-posnrXS.
    GT_OUT-VBELNjh = GT_VBKD-VBELNjh.
    GT_OUT-posnrjh = GT_VBKD-posnrjh.
    READ TABLE gt_FP WITH KEY AUBEL = GT_VBKD-VBELN
                              AUPOS = GT_VBKD-posnr.
    IF SY-SUBRC 0.
    GT_OUT-VBELNfp = gt_FP-VBELN.
    GT_OUT-posnrFP = gt_FP-posnr.

    ENDIF.

    READ TABLE GT_FPDATA WITH KEY VBELN = GT_OUT-VBELNfp.
    IF SY-SUBRC 0.
    GT_OUT-FKDAT   = gt_FPDATA-FKDAT.
    ENDIF.

    READ TABLE GT_EKPO WITH KEY BSTKD_E = gt_VBKD-BSTKD_E.
    IF SY-SUBRC 0.
     GT_OUT-WERKS = gt_EKPO-WERKS."工厂
     GT_OUT-MATNR = gt_EKPO-MATNR."物料号
     GT_OUT-TXZ01 = gt_EKPO-TXZ01."物料描述

    ENDIF.

    READ TABLE GT_VBRK WITH KEY VBELNXS = gt_VBKD-VBELNXS.
    IF SY-SUBRC 0.
     GT_OUT-VKORG = GT_VBRK-VKORG."销售组织
     GT_OUT-MATWA = GT_VBRK-MATWA."物料号
     GT_OUT-ARKTX = GT_VBRK-ARKTX."物料描述

    ENDIF.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
      INPUT  = GT_OUT-MATNR
    IMPORTING
      OUTPUT = GT_OUT-MATNR.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
      INPUT  = GT_OUT-MATWA
    IMPORTING
      OUTPUT = GT_OUT-MATWA.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
      INPUT  = GT_OUT-VBELNXS
    IMPORTING
      OUTPUT = GT_OUT-VBELNXS.

    APPEND GT_OUT.
    CLEAR  GT_OUT.

    ENDLOOP.




ENDFORM.                    " DEAL_DATA
*&---------------------------------------------------------------------*
*&      Form  ALV_DIS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ALV_DIS .

*创建字段宏定义和输出字段赋值
  PERFORM FRM_BUILD_FIELDCATALOG.

*定义输出模式
  GD_LAYOUT-NO_INPUT           'X'.
  GD_LAYOUT-COLWIDTH_OPTIMIZE  'X'.
  GD_LAYOUT-F2CODE             '&IC1'.  "Sets fcode for when double click(press f2)
  "gd_layout-box_fieldname      = 'BOX'.
  GD_LAYOUT-CELL_MERGE         'X'.
  GD_LAYOUT-ZEBRA              'X'.

*使用ALV输出函数
  GD_REPID = SY-REPID.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM       = GD_REPID
**用户操作的参数
*            I_CALLBACK_USER_COMMAND  = 'USER_COMMAND_4000' "自定义指向代码
*ALV输出状态的参数
            I_CALLBACK_PF_STATUS_SET 'SET_PF_STATUS_3200' "菜单
*输出模式参数
            IS_LAYOUT                = GD_LAYOUT
            IT_FIELDCAT              = FIELDCATALOG[]
            IS_PRINT                 = GD_PRNTPARAMS
            I_GRID_TITLE             = G_TITLE
            I_SAVE                   'X'
            "it_sort                  = gt_sort[]
       TABLES
*用于输出ALV的内表
            T_OUTTAB                 = GT_OUT
       EXCEPTIONS
*定义输出异常时的信息,配合MESSAGE语句使用
            PROGRAM_ERROR            1
            OTHERS                   2.

ENDFORM.                    " ALV_DIS
*&---------------------------------------------------------------------*
*&      Form  FRM_BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_BUILD_FIELDCATALOG .

  "创建字段宏定义
  DEFINE ADD_FIELD.
    FIELDCATALOG-FIELDNAME =  &1.   "内表字段名称
    FIELDCATALOG-SELTEXT_M =  &2.    "字段输出名称
    FIELDCATALOG-NO_ZERO   =  &3.    "是否显示零
    FIELDCATALOG-JUST      =  &4.    "对齐方式
    FIELDCATALOG-EMPHASIZE =  &5.    "是否高亮
    FIELDCATALOG-CHECKBOX    = &6.  "是否带单选框
    FIELDCATALOG-EDIT      =  &7.    "可编辑
    APPEND FIELDCATALOG.
    CLEAR FIELDCATALOG.
  END-OF-DEFINITION.
*输出字段赋值
  ADD_FIELD 'BSTKD_E'                  '采购订单号'         '' 'L' '' '' ''.
  ADD_FIELD 'WERKS'                    '工厂'         '' 'L' '' '' ''.
  ADD_FIELD 'MATNR'                    '物料号'         '' 'L' '' '' ''.
  ADD_FIELD 'TXZ01'                    '物料描述'         '' 'L' '' '' ''.
  ADD_FIELD 'VBELNXS'                  '销售订单号'         '' 'L' '' '' ''.
  ADD_FIELD 'POSNRXS'                  '销售订单行项目号'         '' 'L' '' '' ''.
  ADD_FIELD 'VKORG'                    '销售组织'         '' 'L' '' '' ''.
  ADD_FIELD 'MATWA'                    '物料号'         '' 'L' '' '' ''.
  ADD_FIELD 'ARKTX'                    '物料描述'         '' 'L' '' '' ''.
  ADD_FIELD 'VBELNJH'                  '交货单号'         '' 'L' '' '' ''.
  ADD_FIELD 'POSNRJH'                  '交货单行项目号'         '' 'L' '' '' ''.
  ADD_FIELD 'VBELNFP'                  '发票号'         '' 'L' '' '' ''.
  ADD_FIELD 'POSNRFP'                  '发票行项目号'         '' 'L' '' '' ''.
  ADD_FIELD 'FKDAT'                    '发票下达日期'         '' 'L' '' '' ''.





ENDFORM.                    " FRM_BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*&      Form  set_pf_status_3200
*&---------------------------------------------------------------------*
*       GUI定义
*----------------------------------------------------------------------*
*      -->EXTAB      text
*----------------------------------------------------------------------*
FORM SET_PF_STATUS_3200 USING  EXTAB TYPE SLIS_T_EXTAB.
  DATA: R_UCOMM LIKE SY-UCOMM.
  SET PF-STATUS 'MYSTATUS'.
ENDFORM.






































































































































上一篇:大数据下的数据分析平台架构
下一篇:[摘录]第5章 谈判原则

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

最近更新

好贷网好贷款