设为首页收藏本站

八达网

 找回密码
 注册
查看: 228|回复: 4
打印 上一主题 下一主题

八达有没有搞SAP ABAP的?求讲解一段REPORT。

[复制链接]

3

主题

0

好友

2万

积分

大和

Mr.Prince

跳转到指定楼层
1
发表于 2010-7-6 17:06 |只看该作者 |倒序浏览
2000
本帖最后由 Home.ZaSu 于 2010-7-6 17:07 编辑

最近在学ABAP,鉴于我没有丁点编程数据库基础,学起来相当吃力。
最近教授让把这段译出来做发表。
特求达人讲解每段的意义。
有必要的话我把代码中的韩文译成中文。



***********************************************************************
* Report            : Z02MMR009                                       *
* Module/Sub-Module : MM                                              *
* Type              : Report                                          *
* T_CODE            :                                                 *
* Previous Vesion   :                                                 *
* Description       : 입고현황 조회                                   *
***********************************************************************
*                    MODIFICATION LOG                                 *
*                                                                     *
* DATE       AUTHORS            DESCRIPTION                           *
* ---------- ------------------ ------------------------------------- *

***********************************************************************

REPORT Z05MMR009 NO STANDARD PAGE HEADING
                 LINE-SIZE  250
                 MESSAGE-ID z02mmm.

*----------------------------------------------------------------------*
* TABLES DEFINE
*----------------------------------------------------------------------*
TABLES: EKKO,               "Purchasing Document Header
        EKPO,               "Purchasing Document Item
        EKET,               "Scheduling Agreement Schedule Lines
        EKBE,               "History per Purchasing Document
        Z05MMS006,    "입고현황 조회
        DD03L.

*----------------------------------------------------------------------*
* TYPES
*----------------------------------------------------------------------*
TYPE-POOLS: SLIS.

*----------------------------------------------------------------------*
* INTERNAL TABLE DEFINE
*----------------------------------------------------------------------*
DATA: G_REPID             LIKE SY-REPID,
      GS_PRINT            TYPE SLIS_PRINT_ALV,
      GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
      GT_EVENTS           TYPE SLIS_T_EVENT,
      GT_SORT             TYPE SLIS_T_SORTINFO_ALV,
      GS_LAYOUT           TYPE SLIS_LAYOUT_ALV,
      GT_FIELDCAT         TYPE SLIS_T_FIELDCAT_ALV,
      FIELDCAT_IN         TYPE SLIS_FIELDCAT_ALV,
      COL_POS             TYPE I,
      G_VARIANT           TYPE DISVARIANT,
      G_SAVE              VALUE 'A',    "조회변형 저장
      G_LIGHTS_FIELDNAME  TYPE SLIS_FIELDNAME VALUE 'LIGHTS',
                                        "상태버튼은 필드명으로 설정
      G_USER_COMMAND      TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.
                                            "USER-COMMAND를 FORM명
*----------------------------------------------------------------------*

DATA: BEGIN OF ITAB01 OCCURS 0,
          LIFNR  LIKE EKKO-LIFNR,                         "공급업체 계정번호
          EBELN  LIKE EKPO-EBELN,                     "구매문서번호
          EBELP  LIKE EKPO-EBELP,                     "구매문서품목번호
          MATNR  LIKE EKPO-MATNR,                     "자재번호
          TXZ01  LIKE EKPO-TXZ01,                       "내역
          KNTTP  LIKE EKPO-KNTTP,                       "계정지정범주
          MENGE0 LIKE EKPO-MENGE,                    "목표수량
          MENGE1 LIKE EKBE-MENGE,                     "수량
          MEINS  LIKE EKPO-MEINS,                        "구매오더단위
          WAERS  LIKE EKBE-WAERS,                     "통화키
          WRBTR  LIKE EKBE-WRBTR,                     "전표통화금액
          BUDAT  LIKE EKBE-BUDAT,                       "전표전기일
          EKGRP  LIKE EKKO-EKGRP,                       "구매그룹
          WKURS  LIKE EKKO-WKURS,                     "환율
          WERKS  LIKE EKPO-WERKS,                     "플랜트
          SHKZG  LIKE EKBE-SHKZG,                       "차/대변 지시자
          VGABE  LIKE EKBE-VGABE,                       "프랜잭션/이벤트 유형, 구매오더 이력
          BEWTP  LIKE EKBE-BEWTP.                     "PO이력종류

DATA: END   OF ITAB01.

DATA: BEGIN OF ITAB02 OCCURS 0.
          INCLUDE STRUCTURE Z05MMS006.

DATA: END   OF ITAB02.

DATA: BEGIN OF IDD03L OCCURS 0,
        FIELDNAME TYPE DD03L-FIELDNAME,
        POSITION  TYPE DD03L-POSITION,
        REFFIELD  TYPE DD03L-REFFIELD,
        DATATYPE  TYPE DD03L-DATATYPE.

DATA: END   OF IDD03L.

*----------------------------------------------------------------------*
* DATA DEFINE
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* SELECT OPTIONS
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BLOCK0 WITH FRAME TITLE TEXT-001.
  SELECT-OPTIONS: S_LIFNR FOR  EKKO-LIFNR    "Vendor's account number
                          OBLIGATORY
                          NO-EXTENSION,
                  S_MATNR FOR  EKPO-MATNR    "Material number
                          NO-EXTENSION
                          MATCHCODE OBJECT MAT1,
                  S_WERKS FOR  EKPO-WERKS    "Plant
                          NO-EXTENSION,
                  S_BUKRS FOR  EKKO-BUKRS    "Company Code
                          OBLIGATORY
                          NO-EXTENSION
                          DEFAULT '1000',
                  S_BUDAT FOR  EKBE-BUDAT    "Posting date in the doc
                          NO-EXTENSION
                          OBLIGATORY
                          DEFAULT SY-DATUM,
                  S_WAERS FOR  EKBE-WAERS    "Currency Key
                          NO-EXTENSION
                          OBLIGATORY
                          DEFAULT 'KRW',
                  S_EKGRP FOR  EKKO-EKGRP    "Purchasing group
                          NO-EXTENSION,
                  S_BEDAT FOR  EKKO-BEDAT    "Purchasing document date
                          NO-EXTENSION.
SELECTION-SCREEN END   OF BLOCK BLOCK0.

*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
  G_REPID = SY-REPID.

*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM P1000_SELECT.
END-OF-SELECTION.

  PERFORM ALV01_HEAD     USING    GT_FIELDCAT[].
  PERFORM ALV02_SORT.
  PERFORM ALV03_VARIANT.
  PERFORM ALV04_COMMENT  USING    GT_LIST_TOP_OF_PAGE[].
  PERFORM ALV05_EVENT    CHANGING GT_EVENTS.
  PERFORM ALV06_LAYPUT   USING    GS_LAYOUT.
  PERFORM ALV07_CALLALV.

*=========================================
*  PERFORM alv01_variant.
*  PERFORM alv02_comment  USING    gt_list_top_of_page[].
*  PERFORM alv03_head     USING    gt_fieldcat[].
*  PERFORM alv04_sort.
*  PERFORM alv05_event    CHANGING gt_events.
*  PERFORM alv06_layput   USING    gs_layout.
*  PERFORM alv07_callalv.
*
*----------------------------------------------------------------------*
* AT LINE-SELEC\ION
*----------------------------------------------------------------------*

************************************************************************
*      SUBBROUTINES                                                    *
************************************************************************
*----------------------------------------------------------------------*
* FORM  P1000_SELECT
*----------------------------------------------------------------------*
FORM P1000_SELECT.
  DATA : L_ROW TYPE I VALUE 0.

  DATA : VMENGE0 TYPE MENGE_D,        "수량
             VMENGE1 TYPE MENGE_D,        "수량
             VWRBTR0 TYPE WRBTR,            "전표통화금액
             VWRBTR  TYPE WRBTR,             "전표통화금액
             VDMBTR  TYPE DMBTR,              "금액(현지 통화)
             VMENGE2 TYPE MENGE_D,         "수량
             VWRBTR1 TYPE WRBTR  .           "전표통화금액

"Purchase Order Header 정보를 Query 한다.
  SELECT  A~LIFNR                                   "공급업체 계정 번호
               B~EBELN                                 "구매 문서 번호
               B~EBELP                                 "구매 문서 품목 번호
               B~MATNR                                 "자재 번호
               B~TXZ01                                  "내역
               B~KNTTP                                  "계정 지정 범주
               B~MENGE AS MENGE0               "목표 수량
               C~MENGE AS MENGE1               "수량
               B~MEINS                                  "구매 오더 단위
               C~WAERS                                 "통화 키
               C~WRBTR                                 "전표통화금액
               C~BUDAT                                  "전표의 전기일
               A~EKGRP                                  "구매 그룹
               A~WKURS                                 "환율
               B~WERKS                                 "플랜트
               C~SHKZG                                  "차변/대변 지시자
               C~VGABE                                  "트랜잭션/이벤트 유형,구매오더이력
               C~BEWTP                                  "PO 이력종류
    INTO CORRESPONDING FIELDS OF TABLE ITAB01
    FROM      EKKO AS A
    INNER JOIN EKPO AS B ON A~EBELN = B~EBELN         "구매문서번호
    INNER JOIN EKBE AS C ON B~EBELN = C~EBELN
                       AND B~EBELP = C~EBELP
    WHERE A~LIFNR IN S_LIFNR         "Vendor's account number
      AND A~EKGRP IN S_EKGRP         "Purchasing group
      AND A~BEDAT IN S_BEDAT         "Purchasing document date
      AND A~BUKRS IN S_BUKRS         "Company Code
      AND A~BSART NE 'UB'            "Order type
      AND B~WERKS IN S_WERKS         "Plant
      AND B~MATNR IN S_MATNR
      AND B~LOEKZ =  SPACE
      AND C~BUDAT IN S_BUDAT         "Posting date in the doc
      AND C~WAERS IN S_WAERS.        "Currency Key

  IF SY-SUBRC <> 0.
    MESSAGE I001 WITH 'Data가 존재하지 않습니다.'.
    LEAVE LIST-PROCESSING.
  ENDIF.

  SORT ITAB01 BY LIFNR EBELN EBELP MATNR.

  CLEAR :  VMENGE0,
                VMENGE1,
                VWRBTR0,
                VWRBTR ,
                VDMBTR ,
                VMENGE2,
                VWRBTR1,
                L_ROW  .

  CLEAR ITAB02. REFRESH ITAB02.
  LOOP AT ITAB01.

    IF ITAB01-BEWTP = 'E' OR
       ITAB01-BEWTP = 'Q'.

      L_ROW = L_ROW + 1.

      IF L_ROW = 1.
            MOVE-CORRESPONDING ITAB01 TO ITAB02.

            SELECT SINGLE NAME1 INTO ITAB02-NAME1
              FROM LFA1           "공급업체 마스터
             WHERE LIFNR = ITAB01-LIFNR.

            SELECT SINGLE EKNAM INTO ITAB02-EKNAM
              FROM T024           "구매그룹내역
             WHERE EKGRP = ITAB01-EKGRP.

          ENDIF.

          IF ITAB01-SHKZG = 'H'.
            ITAB01-MENGE1 = ITAB01-MENGE1 * -1.    "입고수량
            ITAB01-WRBTR  = ITAB01-WRBTR  * -1.     "입고금액
          ELSE.
            ITAB01-MENGE1 = ITAB01-MENGE1.
            ITAB01-WRBTR  = ITAB01-WRBTR.
          ENDIF.

          "GR          프랜잭션/이벤트 유형, AND  구매오더 이력,   PO이력종류
          IF     ITAB01-VGABE = '1' AND ITAB01-BEWTP = 'E'.
            ITAB02-MENGE1 = ITAB01-MENGE1. "입고수량
            ITAB02-WRBTR  = ITAB01-WRBTR.  "입고금액

            ITAB02-MENGE2 = 0.             "IR 수량
            ITAB02-WRBTR1 = 0.             "IR 금액

          "IR           프랜잭션/이벤트 유형, AND  구매오더 이력,   PO이력종류
          ELSEIF ITAB01-VGABE = '2' AND ITAB01-BEWTP = 'Q'.
            ITAB02-MENGE2 = ITAB01-MENGE1. "IR 수량
            ITAB02-WRBTR1 = ITAB01-WRBTR.  "IR 금액

            ITAB02-MENGE1 = 0.             "입고수량
            ITAB02-WRBTR  = 0.             "입고금액
          ENDIF.

          VMENGE1 = VMENGE1 + ITAB02-MENGE1.         " 입고수량  =  입고수량 + IR 수량
          VWRBTR  = VWRBTR  + ITAB02-WRBTR .         "  입고단가  = 입고단가  + 금액(LC)
          VMENGE2 = VMENGE2 + ITAB02-MENGE2.         "   IR수량  =
          VWRBTR1 = VWRBTR1 + ITAB02-WRBTR1.
    ELSEIF ITAB01-BEWTP = 'K'.
          VWRBTR1 = 0.
    ENDIF.

    AT END OF EBELP.    "구매문서품목번호

      ITAB02-MENGE1 = VMENGE1.          "입고수량
      ITAB02-WRBTR  = VWRBTR .           "금액(LC)
      ITAB02-MENGE2 = VMENGE2.          "IR수량
      ITAB02-WRBTR1 = VWRBTR1.         "IR금액

      IF VMENGE1 = 0.
          ITAB02-WRBTR0 = 0.                    "입고단가
      ELSE.
          ITAB02-WRBTR0 = VWRBTR / VMENGE1.       "입고단가 = 금액(LC) / 입고수량

          IF VWRBTR < 0 AND VMENGE1 < 0.               "금액(LC) < 0 AND 입고수량 < 0
            ITAB02-WRBTR0 = VWRBTR0 * -1.             "입그단가 = 입고단가 * -1
          ENDIF.
      ENDIF.

      APPEND ITAB02.
      CLEAR : VMENGE0,
              VMENGE1,
              VWRBTR0,
              VWRBTR ,
              VDMBTR ,
              VMENGE2,
              VWRBTR1,
              L_ROW  .
    ENDAT.

  ENDLOOP.

  FREE: ITAB01.
ENDFORM.                    " P1000_SELECT

*----------------------------------------------------------------------*
* FORM  ALV01_HEAD
*----------------------------------------------------------------------*
FORM ALV01_HEAD USING GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
  "*********************************************************************
  " DATA FIELD CATALOG, EXPLAIN FIELD DESCRIPTION TO ALV
  "*********************************************************************
  REFRESH: IDD03L, GT_FIELDCAT.

  SELECT FIELDNAME POSITION REFFIELD DATATYPE
    INTO CORRESPONDING FIELDS OF TABLE IDD03L
    FROM DD03L
   WHERE TABNAME = 'Z05MMS006'
   ORDER BY POSITION.

  IF SY-SUBRC <> 0.
    MESSAGE I001 WITH 'Structure Z05MMS006가 없습니다.'.
    STOP.
  ENDIF.

  CLEAR: FIELDCAT_IN.
  FIELDCAT_IN-KEY     = 'X'.
  FIELDCAT_IN-KEY_SEL = 'X'.

  LOOP AT IDD03L.
    CLEAR: FIELDCAT_IN-CFIELDNAME,
           FIELDCAT_IN-QFIELDNAME,
           FIELDCAT_IN-JUST,
           FIELDCAT_IN-DO_SUM,
           FIELDCAT_IN-SELTEXT_M.

    IF IDD03L-REFFIELD <> ' '.
      CASE IDD03L-DATATYPE.
        WHEN 'QUAN'.
          FIELDCAT_IN-QFIELDNAME = IDD03L-REFFIELD.
        WHEN 'CURR'.
          FIELDCAT_IN-CFIELDNAME = IDD03L-REFFIELD.
      ENDCASE.

      FIELDCAT_IN-JUST   = 'R'.
    ENDIF.

    FIELDCAT_IN-FIELDNAME    = IDD03L-FIELDNAME.
    FIELDCAT_IN-DDICTXT      = 'M'.
    FIELDCAT_IN-REF_TABNAME  = 'Z05MMS006'.

    IF     IDD03L-FIELDNAME  = 'NAME1'.
      FIELDCAT_IN-SELTEXT_M  = 'Vendor명'.
    ELSEIF IDD03L-FIELDNAME  = 'MENGE0'.
      FIELDCAT_IN-SELTEXT_M  = '발주수량'.
    ELSEIF IDD03L-FIELDNAME  = 'MENGE1'.
      FIELDCAT_IN-SELTEXT_M  = '입고수량'.
      FIELDCAT_IN-DO_SUM     = 'X'.
    ELSEIF IDD03L-FIELDNAME  = 'MENGE2'.
      FIELDCAT_IN-SELTEXT_M  = 'IR 수량'.
      FIELDCAT_IN-DO_SUM     = 'X'.
    ELSEIF IDD03L-FIELDNAME  = 'WRBTR0'.
      FIELDCAT_IN-SELTEXT_M  = '입고단가'.
    ELSEIF IDD03L-FIELDNAME  = 'WRBTR'.
      FIELDCAT_IN-SELTEXT_M  = '입고금액'.
      FIELDCAT_IN-DO_SUM     = 'X'.
    ELSEIF IDD03L-FIELDNAME  = 'WRBTR1'.
      FIELDCAT_IN-SELTEXT_M  = 'IR 금액'.
      FIELDCAT_IN-DO_SUM     = 'X'.
    ELSEIF IDD03L-FIELDNAME  = 'EKNAM'.
      FIELDCAT_IN-SELTEXT_M  = '발주담당자'.
    ELSEIF IDD03L-FIELDNAME  = 'BUDAT'.
      FIELDCAT_IN-SELTEXT_M  = '입고일자'.
    ENDIF.

    APPEND FIELDCAT_IN TO GT_FIELDCAT.

    IF IDD03L-FIELDNAME = 'NAME1'.
      CLEAR: FIELDCAT_IN-KEY,
             FIELDCAT_IN-KEY_SEL.
    ENDIF.
  ENDLOOP.
ENDFORM.

*----------------------------------------------------------------------*
* FORM  ALV02_SORT
*----------------------------------------------------------------------*
FORM ALV02_SORT.
************************************************************************
* DATA SORTING AND SUBTOTAL
************************************************************************
DATA: GS_SORT TYPE SLIS_SORTINFO_ALV.

  REFRESH: GT_SORT.
  CLEAR:   GS_SORT.

  GS_SORT-FIELDNAME = 'NAME1'.
  GS_SORT-SPOS      = 1.
  GS_SORT-UP        = 'X'.
*  GS_SORT-DOWN      = ' '.
*  GS_SORT-SUBTOT    = ' '.
  APPEND GS_SORT TO GT_SORT.

  CLEAR GS_SORT.
  GS_SORT-FIELDNAME = 'EBELN'.
  GS_SORT-SPOS      = 2.
  GS_SORT-UP        = 'X'.
*  GS_SORT-DOWN      = ' '.
*  GS_SORT-SUBTOT    = ' '.
  APPEND GS_SORT TO GT_SORT.
ENDFORM.

*----------------------------------------------------------------------*
* FORM  ALV03_VARIANT
*----------------------------------------------------------------------*
FORM ALV03_VARIANT.
  CLEAR: G_VARIANT.

  G_VARIANT-REPORT = G_REPID.

  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
       EXPORTING
         I_SAVE     = G_SAVE
       CHANGING
         CS_VARIANT = G_VARIANT
       EXCEPTIONS
         NOT_FOUND  = 2.

  IF SY-SUBRC = 0.
*    P_VARI = GX_VARIANT-VARIANT.
  ENDIF.
ENDFORM.                    " ALV03_VARIANT

*----------------------------------------------------------------------*
* FORM  ALV04_COMMENT
*----------------------------------------------------------------------*
FORM ALV04_COMMENT USING LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
  DATA: LS_LINE TYPE SLIS_LISTHEADER.

  REFRESH LT_TOP_OF_PAGE.

  "LIST HEADING LINE: TYPE H
  CLEAR LS_LINE.
  LS_LINE-TYP  = 'H'.
  LS_LINE-INFO = '입고현황 조회'.
  APPEND LS_LINE TO LT_TOP_OF_PAGE.

  "STATUS LINE: TYPE S
  CLEAR LS_LINE.
  LS_LINE-TYP  = 'S'.
  LS_LINE-KEY  = '입고일자'.
  IF S_BUDAT-HIGH IS INITIAL.
    LS_LINE-INFO = S_BUDAT-LOW.
  ELSE.
    CONCATENATE S_BUDAT-LOW '~' S_BUDAT-HIGH
           INTO LS_LINE-INFO.
  ENDIF.
  APPEND LS_LINE TO LT_TOP_OF_PAGE.

  CLEAR LS_LINE.
  LS_LINE-TYP  = 'S'.
  LS_LINE-KEY  = 'PLANT'.
  IF S_WERKS-HIGH IS INITIAL.
    LS_LINE-INFO = S_WERKS-LOW.
  ELSE.
    CONCATENATE S_WERKS-LOW '~' S_WERKS-HIGH
           INTO LS_LINE-INFO.
  ENDIF.
  APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDFORM.                    " ALV04_COMMENT



*----------------------------------------------------------------------*
* FORM  ALV05_EVENT
*----------------------------------------------------------------------*
FORM ALV05_EVENT CHANGING LT_EVENTS TYPE SLIS_T_EVENT.
  CONSTANTS: GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME
                                   VALUE 'TOP_OF_PAGE',
                               GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME
                                   VALUE 'END_OF_PAGE'.

  DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
         EXPORTING
           I_LIST_TYPE = 0
         IMPORTING
           ET_EVENTS   = LT_EVENTS.

*  ***********************************************************************
*   EVENT : TOP_OF_PAGE
*  ***********************************************************************
    READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                         INTO LS_EVENT.
    IF SY-SUBRC = 0.
      MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
      APPEND LS_EVENT TO LT_EVENTS.
    ENDIF.

*  ***********************************************************************
*   EVENT : END_OF_PAGE
*  ***********************************************************************
    READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_END_OF_PAGE
                         INTO LS_EVENT.
    IF SY-SUBRC = 0.
      MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.
      APPEND LS_EVENT TO LT_EVENTS.
    ENDIF.
ENDFORM.

*----------------------------------------------------------------------*
* FORM  ALV06_LAYPUT
*----------------------------------------------------------------------*
FORM ALV06_LAYPUT USING  LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
  LS_LAYOUT-ZEBRA             = 'X'.
  LS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  LS_LAYOUT-BOX_FIELDNAME     = SPACE.
  LS_LAYOUT-NO_INPUT          = 'X'.
  LS_LAYOUT-NO_VLINE          = ' '.
  LS_LAYOUT-NO_COLHEAD        = ' '.
  LS_LAYOUT-LIGHTS_CONDENSE   = 'X'.
  LS_LAYOUT-GROUP_BUTTONS     = SPACE.

ENDFORM.                    " ALV06_LAYPUT

*----------------------------------------------------------------------*
* FORM  TOP_OF_PAGE
*----------------------------------------------------------------------*
FORM TOP_OF_PAGE.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
         IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
  WRITE: SY-DATUM, 'PAGE NO', SY-PAGNO LEFT-JUSTIFIED.
ENDFORM.

*----------------------------------------------------------------------*
* FORM  TOP_OF_PAGE
*----------------------------------------------------------------------*
FORM END_OF_PAGE.
  WRITE AT (SY-LINSZ) SY-PAGNO CENTERED.
ENDFORM.


*----------------------------------------------------------------------*
* FORM  ALV05_CALLALV
*----------------------------------------------------------------------*
FORM ALV07_CALLALV.
* ABAP LIST VIEWER
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         I_CALLBACK_PROGRAM              = G_REPID
         IS_LAYOUT                       = GS_LAYOUT
         IT_FIELDCAT                     = GT_FIELDCAT[]
         IT_SORT                         = GT_SORT
         I_SAVE                          = G_SAVE
         IS_VARIANT                      = G_VARIANT
         IT_EVENTS                       = GT_EVENTS[]
      TABLES
         T_OUTTAB                        = ITAB02
       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-MSGV3 SY-MSGV4.
  ENDIF.

ENDFORM.
******************* END OF PROGRAM ************************************

3

主题

0

好友

2万

积分

大和

Mr.Prince

2
发表于 2010-7-6 18:49 |只看该作者
熊大在哪里?
回复

使用道具 举报

7

主题

0

好友

1万

积分

航母

3
发表于 2010-7-6 18:52 |只看该作者
我不该进来的
回复

使用道具 举报

23

主题

0

好友

2万

积分

大和

4
发表于 2010-7-6 18:54 |只看该作者
飞往地球的飞船就要起飞了 我得走了lz帮不了你
回复

使用道具 举报

0

主题

0

好友

3万

积分

大和

5
发表于 2010-7-6 19:06 |只看该作者
***********************************************************************
* Report            : Z02MMR009                                       *
* Module/Sub-Module : MM                                              *
* Type              : Report                                          *
* T_CODE            :                                                 *
* Previous Vesion   :                                                 *
* Description       : 입고현황 조회                                   *
***********************************************************************
*                    MODIFICATION LOG                                 *
*                                                                     *
* DATE       AUTHORS            DESCRIPTION                           *
* ---------- ------------------ ------------------------------------- *

***********************************************************************

REPORT Z05MMR009 NO STANDARD PAGE HEADING
                 LINE-SIZE  250
                 MESSAGE-ID z02mmm.

*----------------------------------------------------------------------*
* TABLES DEFINE
*----------------------------------------------------------------------*
TABLES: EKKO,               "Purchasing Document Header
        EKPO,               "Purchasing Document Item
        EKET,               "Scheduling Agreement Schedule Lines
        EKBE,               "History per Purchasing Document
        Z05MMS006,    "입고현황 조회
        DD03L.

*----------------------------------------------------------------------*
* TYPES
*----------------------------------------------------------------------*
TYPE-POOLS: SLIS.

*----------------------------------------------------------------------*
* INTERNAL TABLE DEFINE
*----------------------------------------------------------------------*
DATA: G_REPID             LIKE SY-REPID,
      GS_PRINT            TYPE SLIS_PRINT_ALV,
      GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
      GT_EVENTS           TYPE SLIS_T_EVENT,
      GT_SORT             TYPE SLIS_T_SORTINFO_ALV,
      GS_LAYOUT           TYPE SLIS_LAYOUT_ALV,
      GT_FIELDCAT         TYPE SLIS_T_FIELDCAT_ALV,
      FIELDCAT_IN         TYPE SLIS_FIELDCAT_ALV,
      COL_POS             TYPE I,
      G_VARIANT           TYPE DISVARIANT,
      G_SAVE              VALUE 'A',    "조회변형 저장
      G_LIGHTS_FIELDNAME  TYPE SLIS_FIELDNAME VALUE 'LIGHTS',
                                        "상태버튼은 필드명으로 설정
      G_USER_COMMAND      TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.
                                            "USER-COMMAND를 FORM명
*----------------------------------------------------------------------*

DATA: BEGIN OF ITAB01 OCCURS 0,
          LIFNR  LIKE EKKO-LIFNR,                         "공급업체 계정번호
          EBELN  LIKE EKPO-EBELN,                     "구매문서번호
          EBELP  LIKE EKPO-EBELP,                     "구매문서품목번호
          MATNR  LIKE EKPO-MATNR,                     "자재번호
          TXZ01  LIKE EKPO-TXZ01,                       "내역
          KNTTP  LIKE EKPO-KNTTP,                       "계정지정범주
          MENGE0 LIKE EKPO-MENGE,                    "목표수량
          MENGE1 LIKE EKBE-MENGE,                     "수량
          MEINS  LIKE EKPO-MEINS,                        "구매오더단위
          WAERS  LIKE EKBE-WAERS,                     "통화키
          WRBTR  LIKE EKBE-WRBTR,                     "전표통화금액
          BUDAT  LIKE EKBE-BUDAT,                       "전표전기일
          EKGRP  LIKE EKKO-EKGRP,                       "구매그룹
          WKURS  LIKE EKKO-WKURS,                     "환율
          WERKS  LIKE EKPO-WERKS,                     "플랜트
          SHKZG  LIKE EKBE-SHKZG,                       "차/대변 지시자
          VGABE  LIKE EKBE-VGABE,                       "프랜잭션/이벤트 유형, 구매오더 이력
          BEWTP  LIKE EKBE-BEWTP.                     "PO이력종류

DATA: END   OF ITAB01.

DATA: BEGIN OF ITAB02 OCCURS 0.
          INCLUDE STRUCTURE Z05MMS006.

DATA: END   OF ITAB02.

DATA: BEGIN OF IDD03L OCCURS 0,
        FIELDNAME TYPE DD03L-FIELDNAME,
        POSITION  TYPE DD03L-POSITION,
        REFFIELD  TYPE DD03L-REFFIELD,
        DATATYPE  TYPE DD03L-DATATYPE.

DATA: END   OF IDD03L.

*----------------------------------------------------------------------*
* DATA DEFINE
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* SELECT OPTIONS
*定义SCREEN
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BLOCK0 WITH FRAME TITLE TEXT-001.
  SELECT-OPTIONS: S_LIFNR FOR  EKKO-LIFNR    "Vendor's account number
                          OBLIGATORY
                          NO-EXTENSION,
                  S_MATNR FOR  EKPO-MATNR    "Material number
                          NO-EXTENSION
                          MATCHCODE OBJECT MAT1,
                  S_WERKS FOR  EKPO-WERKS    "Plant
                          NO-EXTENSION,
                  S_BUKRS FOR  EKKO-BUKRS    "Company Code
                          OBLIGATORY
                          NO-EXTENSION
                          DEFAULT '1000',
                  S_BUDAT FOR  EKBE-BUDAT    "Posting date in the doc
                          NO-EXTENSION
                          OBLIGATORY
                          DEFAULT SY-DATUM,
                  S_WAERS FOR  EKBE-WAERS    "Currency Key
                          NO-EXTENSION
                          OBLIGATORY
                          DEFAULT 'KRW',
                  S_EKGRP FOR  EKKO-EKGRP    "Purchasing group
                          NO-EXTENSION,
                  S_BEDAT FOR  EKKO-BEDAT    "Purchasing document date
                          NO-EXTENSION.
SELECTION-SCREEN END   OF BLOCK BLOCK0.

*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
  G_REPID = SY-REPID.

*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM P1000_SELECT.               *程序的主要片段,搜索数据
END-OF-SELECTION.


*用ALV格式输出report
  PERFORM ALV01_HEAD     USING    GT_FIELDCAT[].
  PERFORM ALV02_SORT.
  PERFORM ALV03_VARIANT.
  PERFORM ALV04_COMMENT  USING    GT_LIST_TOP_OF_PAGE[].
  PERFORM ALV05_EVENT    CHANGING GT_EVENTS.
  PERFORM ALV06_LAYPUT   USING    GS_LAYOUT.
  PERFORM ALV07_CALLALV.

*=========================================
*  PERFORM alv01_variant.
*  PERFORM alv02_comment  USING    gt_list_top_of_page[].
*  PERFORM alv03_head     USING    gt_fieldcat[].
*  PERFORM alv04_sort.
*  PERFORM alv05_event    CHANGING gt_events.
*  PERFORM alv06_layput   USING    gs_layout.
*  PERFORM alv07_callalv.
*
*----------------------------------------------------------------------*
* AT LINE-SELEC\ION
*----------------------------------------------------------------------*

************************************************************************
*      SUBBROUTINES                                                    *
************************************************************************
*----------------------------------------------------------------------*
* FORM  P1000_SELECT
*----------------------------------------------------------------------*
FORM P1000_SELECT.
  DATA : L_ROW TYPE I VALUE 0.
*内部变量
  DATA : VMENGE0 TYPE MENGE_D,        "수량
             VMENGE1 TYPE MENGE_D,        "수량
             VWRBTR0 TYPE WRBTR,            "전표통화금액
             VWRBTR  TYPE WRBTR,             "전표통화금액
             VDMBTR  TYPE DMBTR,              "금액(현지 통화)
             VMENGE2 TYPE MENGE_D,         "수량
             VWRBTR1 TYPE WRBTR  .           "전표통화금액

*搜索数据
"Purchase Order Header 정보를 Query 한다.
  SELECT  A~LIFNR                                   "공급업체 계정 번호
               B~EBELN                                 "구매 문서 번호
               B~EBELP                                 "구매 문서 품목 번호
               B~MATNR                                 "자재 번호
               B~TXZ01                                  "내역
               B~KNTTP                                  "계정 지정 범주
               B~MENGE AS MENGE0               "목표 수량
               C~MENGE AS MENGE1               "수량
               B~MEINS                                  "구매 오더 단위
               C~WAERS                                 "통화 키
               C~WRBTR                                 "전표통화금액
               C~BUDAT                                  "전표의 전기일
               A~EKGRP                                  "구매 그룹
               A~WKURS                                 "환율
               B~WERKS                                 "플랜트
               C~SHKZG                                  "차변/대변 지시자
               C~VGABE                                  "트랜잭션/이벤트 유형,구매오더이력
               C~BEWTP                                  "PO 이력종류
    INTO CORRESPONDING FIELDS OF TABLE ITAB01          *放入内表
    FROM      EKKO AS A
    INNER JOIN EKPO AS B ON A~EBELN = B~EBELN         "구매문서번호
    INNER JOIN EKBE AS C ON B~EBELN = C~EBELN
                       AND B~EBELP = C~EBELP
    WHERE A~LIFNR IN S_LIFNR         "Vendor's account number
      AND A~EKGRP IN S_EKGRP         "Purchasing group
      AND A~BEDAT IN S_BEDAT         "Purchasing document date
      AND A~BUKRS IN S_BUKRS         "Company Code
      AND A~BSART NE 'UB'            "Order type
      AND B~WERKS IN S_WERKS         "Plant
      AND B~MATNR IN S_MATNR
      AND B~LOEKZ =  SPACE
      AND C~BUDAT IN S_BUDAT         "Posting date in the doc
      AND C~WAERS IN S_WAERS.        "Currency Key

*没有搜索到数据
  IF SY-SUBRC <> 0.
    MESSAGE I001 WITH 'Data가 존재하지 않습니다.'.
    LEAVE LIST-PROCESSING.
  ENDIF.

*排序
  SORT ITAB01 BY LIFNR EBELN EBELP MATNR.

*初始化变量
  CLEAR :  VMENGE0,
                VMENGE1,
                VWRBTR0,
                VWRBTR ,
                VDMBTR ,
                VMENGE2,
                VWRBTR1,
                L_ROW  .

  CLEAR ITAB02. REFRESH ITAB02.
  LOOP AT ITAB01.

    IF ITAB01-BEWTP = 'E' OR
       ITAB01-BEWTP = 'Q'.

      L_ROW = L_ROW + 1.

      IF L_ROW = 1.
            MOVE-CORRESPONDING ITAB01 TO ITAB02.

            SELECT SINGLE NAME1 INTO ITAB02-NAME1
              FROM LFA1           "공급업체 마스터
             WHERE LIFNR = ITAB01-LIFNR.

            SELECT SINGLE EKNAM INTO ITAB02-EKNAM
              FROM T024           "구매그룹내역
             WHERE EKGRP = ITAB01-EKGRP.

          ENDIF.

          IF ITAB01-SHKZG = 'H'.
            ITAB01-MENGE1 = ITAB01-MENGE1 * -1.    "입고수량
            ITAB01-WRBTR  = ITAB01-WRBTR  * -1.     "입고금액
          ELSE.
            ITAB01-MENGE1 = ITAB01-MENGE1.
            ITAB01-WRBTR  = ITAB01-WRBTR.
          ENDIF.

          "GR          프랜잭션/이벤트 유형, AND  구매오더 이력,   PO이력종류
          IF     ITAB01-VGABE = '1' AND ITAB01-BEWTP = 'E'.
            ITAB02-MENGE1 = ITAB01-MENGE1. "입고수량
            ITAB02-WRBTR  = ITAB01-WRBTR.  "입고금액

            ITAB02-MENGE2 = 0.             "IR 수량
            ITAB02-WRBTR1 = 0.             "IR 금액

          "IR           프랜잭션/이벤트 유형, AND  구매오더 이력,   PO이력종류
          ELSEIF ITAB01-VGABE = '2' AND ITAB01-BEWTP = 'Q'.
            ITAB02-MENGE2 = ITAB01-MENGE1. "IR 수량
            ITAB02-WRBTR1 = ITAB01-WRBTR.  "IR 금액

            ITAB02-MENGE1 = 0.             "입고수량
            ITAB02-WRBTR  = 0.             "입고금액
          ENDIF.

          VMENGE1 = VMENGE1 + ITAB02-MENGE1.         " 입고수량  =  입고수량 + IR 수량
          VWRBTR  = VWRBTR  + ITAB02-WRBTR .         "  입고단가  = 입고단가  + 금액(LC)
          VMENGE2 = VMENGE2 + ITAB02-MENGE2.         "   IR수량  =
          VWRBTR1 = VWRBTR1 + ITAB02-WRBTR1.
    ELSEIF ITAB01-BEWTP = 'K'.
          VWRBTR1 = 0.
    ENDIF.

    AT END OF EBELP.    "구매문서품목번호

      ITAB02-MENGE1 = VMENGE1.          "입고수량
      ITAB02-WRBTR  = VWRBTR .           "금액(LC)
      ITAB02-MENGE2 = VMENGE2.          "IR수량
      ITAB02-WRBTR1 = VWRBTR1.         "IR금액

      IF VMENGE1 = 0.
          ITAB02-WRBTR0 = 0.                    "입고단가
      ELSE.
          ITAB02-WRBTR0 = VWRBTR / VMENGE1.       "입고단가 = 금액(LC) / 입고수량

          IF VWRBTR < 0 AND VMENGE1 < 0.               "금액(LC) < 0 AND 입고수량 < 0
            ITAB02-WRBTR0 = VWRBTR0 * -1.             "입그단가 = 입고단가 * -1
          ENDIF.
      ENDIF.

      APPEND ITAB02.
      CLEAR : VMENGE0,
              VMENGE1,
              VWRBTR0,
              VWRBTR ,
              VDMBTR ,
              VMENGE2,
              VWRBTR1,
              L_ROW  .
    ENDAT.

  ENDLOOP.

  FREE: ITAB01.
ENDFORM.                    " P1000_SELECT

*----------------------------------------------------------------------*
* FORM  ALV01_HEAD
*----------------------------------------------------------------------*
FORM ALV01_HEAD USING GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
  "*********************************************************************
  " DATA FIELD CATALOG, EXPLAIN FIELD DESCRIPTION TO ALV
  "*********************************************************************
  REFRESH: IDD03L, GT_FIELDCAT.

  SELECT FIELDNAME POSITION REFFIELD DATATYPE
    INTO CORRESPONDING FIELDS OF TABLE IDD03L
    FROM DD03L
   WHERE TABNAME = 'Z05MMS006'
   ORDER BY POSITION.

  IF SY-SUBRC <> 0.
    MESSAGE I001 WITH 'Structure Z05MMS006가 없습니다.'.
    STOP.
  ENDIF.

  CLEAR: FIELDCAT_IN.
  FIELDCAT_IN-KEY     = 'X'.
  FIELDCAT_IN-KEY_SEL = 'X'.

  LOOP AT IDD03L.
    CLEAR: FIELDCAT_IN-CFIELDNAME,
           FIELDCAT_IN-QFIELDNAME,
           FIELDCAT_IN-JUST,
           FIELDCAT_IN-DO_SUM,
           FIELDCAT_IN-SELTEXT_M.

    IF IDD03L-REFFIELD <> ' '.
      CASE IDD03L-DATATYPE.
        WHEN 'QUAN'.
          FIELDCAT_IN-QFIELDNAME = IDD03L-REFFIELD.
        WHEN 'CURR'.
          FIELDCAT_IN-CFIELDNAME = IDD03L-REFFIELD.
      ENDCASE.

      FIELDCAT_IN-JUST   = 'R'.
    ENDIF.

    FIELDCAT_IN-FIELDNAME    = IDD03L-FIELDNAME.
    FIELDCAT_IN-DDICTXT      = 'M'.
    FIELDCAT_IN-REF_TABNAME  = 'Z05MMS006'.

    IF     IDD03L-FIELDNAME  = 'NAME1'.
      FIELDCAT_IN-SELTEXT_M  = 'Vendor명'.
    ELSEIF IDD03L-FIELDNAME  = 'MENGE0'.
      FIELDCAT_IN-SELTEXT_M  = '발주수량'.
    ELSEIF IDD03L-FIELDNAME  = 'MENGE1'.
      FIELDCAT_IN-SELTEXT_M  = '입고수량'.
      FIELDCAT_IN-DO_SUM     = 'X'.
    ELSEIF IDD03L-FIELDNAME  = 'MENGE2'.
      FIELDCAT_IN-SELTEXT_M  = 'IR 수량'.
      FIELDCAT_IN-DO_SUM     = 'X'.
    ELSEIF IDD03L-FIELDNAME  = 'WRBTR0'.
      FIELDCAT_IN-SELTEXT_M  = '입고단가'.
    ELSEIF IDD03L-FIELDNAME  = 'WRBTR'.
      FIELDCAT_IN-SELTEXT_M  = '입고금액'.
      FIELDCAT_IN-DO_SUM     = 'X'.
    ELSEIF IDD03L-FIELDNAME  = 'WRBTR1'.
      FIELDCAT_IN-SELTEXT_M  = 'IR 금액'.
      FIELDCAT_IN-DO_SUM     = 'X'.
    ELSEIF IDD03L-FIELDNAME  = 'EKNAM'.
      FIELDCAT_IN-SELTEXT_M  = '발주담당자'.
    ELSEIF IDD03L-FIELDNAME  = 'BUDAT'.
      FIELDCAT_IN-SELTEXT_M  = '입고일자'.
    ENDIF.

    APPEND FIELDCAT_IN TO GT_FIELDCAT.

    IF IDD03L-FIELDNAME = 'NAME1'.
      CLEAR: FIELDCAT_IN-KEY,
             FIELDCAT_IN-KEY_SEL.
    ENDIF.
  ENDLOOP.
ENDFORM.

*----------------------------------------------------------------------*
* FORM  ALV02_SORT
*----------------------------------------------------------------------*
FORM ALV02_SORT.
************************************************************************
* DATA SORTING AND SUBTOTAL
************************************************************************
DATA: GS_SORT TYPE SLIS_SORTINFO_ALV.

  REFRESH: GT_SORT.
  CLEAR:   GS_SORT.

  GS_SORT-FIELDNAME = 'NAME1'.
  GS_SORT-SPOS      = 1.
  GS_SORT-UP        = 'X'.
*  GS_SORT-DOWN      = ' '.
*  GS_SORT-SUBTOT    = ' '.
  APPEND GS_SORT TO GT_SORT.

  CLEAR GS_SORT.
  GS_SORT-FIELDNAME = 'EBELN'.
  GS_SORT-SPOS      = 2.
  GS_SORT-UP        = 'X'.
*  GS_SORT-DOWN      = ' '.
*  GS_SORT-SUBTOT    = ' '.
  APPEND GS_SORT TO GT_SORT.
ENDFORM.

*----------------------------------------------------------------------*
* FORM  ALV03_VARIANT
*----------------------------------------------------------------------*
FORM ALV03_VARIANT.
  CLEAR: G_VARIANT.

  G_VARIANT-REPORT = G_REPID.

  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
       EXPORTING
         I_SAVE     = G_SAVE
       CHANGING
         CS_VARIANT = G_VARIANT
       EXCEPTIONS
         NOT_FOUND  = 2.

  IF SY-SUBRC = 0.
*    P_VARI = GX_VARIANT-VARIANT.
  ENDIF.
ENDFORM.                    " ALV03_VARIANT

*----------------------------------------------------------------------*
* FORM  ALV04_COMMENT
*----------------------------------------------------------------------*
FORM ALV04_COMMENT USING LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
  DATA: LS_LINE TYPE SLIS_LISTHEADER.

  REFRESH LT_TOP_OF_PAGE.

  "LIST HEADING LINE: TYPE H
  CLEAR LS_LINE.
  LS_LINE-TYP  = 'H'.
  LS_LINE-INFO = '입고현황 조회'.
  APPEND LS_LINE TO LT_TOP_OF_PAGE.

  "STATUS LINE: TYPE S
  CLEAR LS_LINE.
  LS_LINE-TYP  = 'S'.
  LS_LINE-KEY  = '입고일자'.
  IF S_BUDAT-HIGH IS INITIAL.
    LS_LINE-INFO = S_BUDAT-LOW.
  ELSE.
    CONCATENATE S_BUDAT-LOW '~' S_BUDAT-HIGH
           INTO LS_LINE-INFO.
  ENDIF.
  APPEND LS_LINE TO LT_TOP_OF_PAGE.

  CLEAR LS_LINE.
  LS_LINE-TYP  = 'S'.
  LS_LINE-KEY  = 'PLANT'.
  IF S_WERKS-HIGH IS INITIAL.
    LS_LINE-INFO = S_WERKS-LOW.
  ELSE.
    CONCATENATE S_WERKS-LOW '~' S_WERKS-HIGH
           INTO LS_LINE-INFO.
  ENDIF.
  APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDFORM.                    " ALV04_COMMENT



*----------------------------------------------------------------------*
* FORM  ALV05_EVENT
*----------------------------------------------------------------------*
FORM ALV05_EVENT CHANGING LT_EVENTS TYPE SLIS_T_EVENT.
  CONSTANTS: GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME
                                   VALUE 'TOP_OF_PAGE',
                               GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME
                                   VALUE 'END_OF_PAGE'.

  DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
         EXPORTING
           I_LIST_TYPE = 0
         IMPORTING
           ET_EVENTS   = LT_EVENTS.

*  ***********************************************************************
*   EVENT : TOP_OF_PAGE
*  ***********************************************************************
    READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                         INTO LS_EVENT.
    IF SY-SUBRC = 0.
      MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
      APPEND LS_EVENT TO LT_EVENTS.
    ENDIF.

*  ***********************************************************************
*   EVENT : END_OF_PAGE
*  ***********************************************************************
    READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_END_OF_PAGE
                         INTO LS_EVENT.
    IF SY-SUBRC = 0.
      MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.
      APPEND LS_EVENT TO LT_EVENTS.
    ENDIF.
ENDFORM.

*----------------------------------------------------------------------*
* FORM  ALV06_LAYPUT
*----------------------------------------------------------------------*
FORM ALV06_LAYPUT USING  LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
  LS_LAYOUT-ZEBRA             = 'X'.
  LS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  LS_LAYOUT-BOX_FIELDNAME     = SPACE.
  LS_LAYOUT-NO_INPUT          = 'X'.
  LS_LAYOUT-NO_VLINE          = ' '.
  LS_LAYOUT-NO_COLHEAD        = ' '.
  LS_LAYOUT-LIGHTS_CONDENSE   = 'X'.
  LS_LAYOUT-GROUP_BUTTONS     = SPACE.

ENDFORM.                    " ALV06_LAYPUT

*----------------------------------------------------------------------*
* FORM  TOP_OF_PAGE
*----------------------------------------------------------------------*
FORM TOP_OF_PAGE.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
         IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
  WRITE: SY-DATUM, 'PAGE NO', SY-PAGNO LEFT-JUSTIFIED.
ENDFORM.

*----------------------------------------------------------------------*
* FORM  TOP_OF_PAGE
*----------------------------------------------------------------------*
FORM END_OF_PAGE.
  WRITE AT (SY-LINSZ) SY-PAGNO CENTERED.
ENDFORM.


*----------------------------------------------------------------------*
* FORM  ALV05_CALLALV
*----------------------------------------------------------------------*
FORM ALV07_CALLALV.
* ABAP LIST VIEWER
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         I_CALLBACK_PROGRAM              = G_REPID
         IS_LAYOUT                       = GS_LAYOUT
         IT_FIELDCAT                     = GT_FIELDCAT[]
         IT_SORT                         = GT_SORT
         I_SAVE                          = G_SAVE
         IS_VARIANT                      = G_VARIANT
         IT_EVENTS                       = GT_EVENTS[]
      TABLES
         T_OUTTAB                        = ITAB02
       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-MSGV3 SY-MSGV4.
  ENDIF.

ENDFORM.
******************* END OF PROGRAM ************************************


//里面很多都类似SQL啊
222222
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|八达网    

GMT+8, 2026-2-15 02:43

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部