ZPPR31

来源:互联网 发布:手机变砖刷机软件 编辑:程序博客网 时间:2024/06/08 09:42
*&---------------------------------------------------------------------*
*& Report  ZPPR31
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZPPR31.
TYPE-POOLS:SLIS.
TABLES:ZMARD,LIKP,KNA1.
DATALAYOUT TYPE SLIS_LAYOUT_ALV,
      IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
      WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
      W_REPID LIKE SY-REPID.
DATA:BEGIN OF ZOUTPUTTAB OCCURS 0,
     MATNR LIKE ZMARD-MATNR,
     MAKTX LIKE MAKT-MAKTX,
     KUNNR LIKE KNA1-KUNNR,
     NAME1 LIKE KNA1-NAME1,
     VGBEL LIKE LIPS-VGBEL,
     VBELN LIKE ZMARD-VBELN,
     BARCODE LIKE ZMARD-BARCODE,
     WADAT LIKE ZMARD-BLDAT,
    END OF ZOUTPUTTAB.
DATA:BEGIN OF ZOUTPUTTAB1 OCCURS 0,
     MATNR LIKE ZMARD-MATNR,
     MAKTX LIKE MAKT-MAKTX,
     KUNNR LIKE KNA1-KUNNR,
     NAME1 LIKE KNA1-NAME1,
     VGBEL LIKE LIPS-VGBEL,
     VBELN LIKE ZMARD-VBELN,
     BARCODE LIKE ZMARD-BARCODE,
     WADAT LIKE ZMARD-BLDAT,
    END OF ZOUTPUTTAB1.
DATA:BEGIN OF ZOUTPUTTAB2 OCCURS 0,
     MATNR LIKE ZMARD-MATNR,
     MAKTX LIKE MAKT-MAKTX,
     KUNNR LIKE KNA1-KUNNR,
     NAME1 LIKE KNA1-NAME1,
     VGBEL LIKE LIPS-VGBEL,
     VBELN LIKE ZMARD-VBELN,
     BARCODE LIKE ZMARD-BARCODE,
     WADAT LIKE ZMARD-BLDAT,
    END OF ZOUTPUTTAB2.


SELECTION-SCREEN:BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS:WERKS LIKE BKPF-BUKRS OBLIGATORY,
            KUNNR LIKE KNA1-KUNNR .
SELECT-OPTIONS:VBELN FOR ZMARD-VBELN,
                WADAT FOR ZMARD-WADAT_IST OBLIGATORY,
                BARCODE FOR ZMARD-BARCODE.
SELECTION-SCREEN:END OF BLOCK B1 .

INITIALIZATION.

START-OF-SELECTION.
  PERFORM GETDATA.
  PERFORM CATALOG.
  PERFORM ALVSHOW.

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

  IF KUNNR IS INITIAL.

   SELECT
    ZMARD~MATNR AS MATNR
     MAKT~MAKTX AS MAKTX
*    ZMARD~AUFNR AS AUFNR
    ZMARD~VBELN AS VBELN
    ZMARD~BARCODE AS BARCODE
    ZMARD~WADAT_IST AS WADAT
    INTO CORRESPONDING FIELDS OF TABLE ZOUTPUTTAB1
  FROM ZMARD
  INNER JOIN MAKT ON ZMARD~MATNR MAKT~MATNR
  WHERE ZMARD~WERKS WERKS AND ZMARD~VBELN IN VBELN AND ZMARD~WADAT_IST IN WADAT AND MAKT~SPRAS AND ZMARD~BARCODE IN BARCODE.

    LOOP AT ZOUTPUTTAB1.
    SELECT SINGLE
      LIKP~KUNNR AS KUNNR
      LIPS~VGBEL AS VGBEL
      INTO (ZOUTPUTTAB1-KUNNR,ZOUTPUTTAB1-VGBEL)
    FROM LIKP
    INNER JOIN LIPS ON LIKP~VBELN LIPS~VBELN
    WHERE LIPS~WERKS WERKS AND LIKP~VBELN ZOUTPUTTAB1-VBELN .
    SELECT SINGLE
      KNA1~NAME1 AS NAME1
      INTO ZOUTPUTTAB1-NAME1
      FROM KNA1
      WHERE LAND1 'CN' AND KUNNR ZOUTPUTTAB1-KUNNR.
*      MODIFY ZOUTPUTTAB TRANSPORTING KUNNR NAME1 WHERE VBELN = ZOUTPUTTAB-VBELN.
      MOVE-CORRESPONDING ZOUTPUTTAB1 TO ZOUTPUTTAB.
      APPEND ZOUTPUTTAB.
    ENDLOOP.

  ELSE.
   SELECT
    ZMARD~MATNR AS MATNR
     MAKT~MAKTX AS MAKTX
*    ZMARD~AUFNR AS AUFNR
    ZMARD~VBELN AS VBELN
    ZMARD~BARCODE AS BARCODE
    ZMARD~WADAT_IST AS WADAT
    INTO CORRESPONDING FIELDS OF TABLE ZOUTPUTTAB1
  FROM ZMARD
  INNER JOIN MAKT ON ZMARD~MATNR MAKT~MATNR
  WHERE ZMARD~WERKS WERKS AND ZMARD~VBELN IN VBELN AND ZMARD~WADAT_IST IN WADAT AND MAKT~SPRAS AND ZMARD~BARCODE IN BARCODE.

    LOOP AT ZOUTPUTTAB1.
    SELECT SINGLE
      LIKP~KUNNR AS KUNNR
      LIPS~VGBEL AS VGBEL
      INTO (ZOUTPUTTAB1-KUNNR,ZOUTPUTTAB1-VGBEL)
    FROM LIKP
    INNER JOIN LIPS ON LIKP~VBELN LIPS~VBELN
    WHERE LIPS~WERKS WERKS AND LIKP~VBELN ZOUTPUTTAB1-VBELN .
    SELECT SINGLE
      KNA1~NAME1 AS NAME1
      INTO ZOUTPUTTAB1-NAME1
      FROM KNA1
      WHERE LAND1 'CN' AND KUNNR ZOUTPUTTAB1-KUNNR.
*      MODIFY ZOUTPUTTAB TRANSPORTING KUNNR NAME1 WHERE VBELN = ZOUTPUTTAB-VBELN.
      IF ZOUTPUTTAB1-KUNNR KUNNR.
      MOVE-CORRESPONDING ZOUTPUTTAB1 TO ZOUTPUTTAB.
      APPEND ZOUTPUTTAB.
      ENDIF.
    ENDLOOP.

  ENDIF.


ENDFORM.                    " GETDATA
*&---------------------------------------------------------------------*
*&      Form  CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM CATALOG .
  W_REPID SY-REPID.
  CLEAR IT_FIELDCAT.
  DEFINE FIELDCATSET.
    WA_FIELDCAT-FIELDNAME &1.
    WA_FIELDCAT-SELTEXT_L &2.
    WA_FIELDCAT-NO_ZERO   &3.
    WA_FIELDCAT-FIX_COLUMN &4.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
  END-OF-DEFINITION.

  FIELDCATSET 'KUNNR' '客户编号' 'X' '' .
  FIELDCATSET 'NAME1' '客户名称' 'X' '' .
  FIELDCATSET 'MATNR' '物料编号' 'X' '' .
  FIELDCATSET 'MAKTX' '物料描述' 'X' '' .
  FIELDCATSET 'VGBEL' '销售订单号' 'X' '' .
  FIELDCATSET 'VBELN' '交货单号' 'X' ''.
  FIELDCATSET 'BARCODE' '条码' 'X' ''.
  FIELDCATSET 'WADAT' '过账日期' 'X' ''.
ENDFORM.                    " CATALOG
*&---------------------------------------------------------------------*
*&      Form  ALVSHOW
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ALVSHOW .
  PERFORM LAYOUT_INIT USING LAYOUT.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM      W_REPID
      IS_LAYOUT               LAYOUT
      IT_FIELDCAT             IT_FIELDCAT[]
      I_CALLBACK_USER_COMMAND 'USER_COMMAND'
    TABLES
      T_OUTTAB                ZOUTPUTTAB
    EXCEPTIONS
      PROGRAM_ERROR           1
      OTHERS                  2.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV4 SY-MSGV4.
  ENDIF.
ENDFORM.                    " ALVSHOW
*&---------------------------------------------------------------------*
*&      Form  LAYOUT_INIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_P_LAYOUT  text
*----------------------------------------------------------------------*
FORM LAYOUT_INIT  USING    P_LAYOUT TYPE SLIS_LAYOUT_ALV.
  P_LAYOUT-COLWIDTH_OPTIMIZE 'X'.
ENDFORM.                    " LAYOUT_INIT

*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD.
  CASE R_UCOMM.
    WHEN '&IC1'."双击事件
      DATA:IT_TEMP LIKE LINE OF ZOUTPUTTAB.
      READ TABLE ZOUTPUTTAB INTO IT_TEMP INDEX RS_SELFIELD-TABINDEX.
      IF SY-SUBRC 0.
        CASE RS_SELFIELD-FIELDNAME.
          WHEN 'VBELN'.
        SET PARAMETER ID 'VL' FIELD IT_TEMP-VBELN.
        CALL TRANSACTION 'VL03' AND SKIP FIRST SCREEN.
        WHEN 'VGBEL'.
          SET PARAMETER ID 'AUN' FIELD IT_TEMP-VGBEL.
          CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
        ENDCASE.
      ENDIF.

  ENDCASE.
ENDFORM.                    "USER_COMMAND
原创粉丝点击