모듈풀 기본 프로그램 입니다.
스크린은 100 번 (조회조건) 과 200번 (조회결과) 로 되어 있으며
단순하게 조회결과 입력 후 실행하면 결과가 200번 스크린에 조회되도록 한 간단 모듈풀 프로그램 입니다.

1. 조회조건

사용자 삽입 이미지


2. 조회결과

사용자 삽입 이미지



3. 프로그램 소스

 1) Main
 
INCLUDE MZEDUM_99_001TOP.                     " global Data
INCLUDE MZEDUM_99_001ENT.                     " EVENT
INCLUDE MZEDUM_99_001O01.                     " PBO-Modules
INCLUDE MZEDUM_99_001I01.                      " PAI-Modules
INCLUDE MZEDUM_99_001F01.                     " FORM-Routines


2) MZEDUM_99_001TOP.

 
PROGRAM  sapmzedum_99_001 MESSAGE-ID zedur001.

TABLES : mara, makt.

DATA : BEGIN OF gs_0100,
    matnr_low LIKE mara-matnr ,
    matnr_high LIKE mara-matnr ,
    item LIKE mara-zzitem_cd ,

  END OF gs_0100.


  DATA : BEGIN OF gs_0200,

    matnr LIKE mara-matnr ,
    item LIKE mara-zzitem_cd ,
    maktx like makt-maktx,
    CHECK TYPE CHAR1,
  END OF gs_0200.

* 아래 구문은 모듈풀 프로그램에서 반드시 기술 해준다. (값이 출력되는 스크린쪽에)
CONTROLS: tc_0200 TYPE TABLEVIEW USING SCREEN 0200.

DATA : gt_0100 LIKE gs_0100 OCCURS 0 WITH HEADER LINE.
DATA : gt_0200 LIKE gs_0200 OCCURS 0 WITH HEADER LINE.


3)  MZEDUM_99_001ENT.

END-OF-SELECTION.
  CALL SCREEN '0100'.



4) MZEDUM_99_002O01.

  *&---------------------------------------------------------------------*
*&  Include           MZEDUM_99_001O01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS '0100'.
  SET TITLEBAR '0100'.

ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0200  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0200 OUTPUT.
  SET PF-STATUS '0200'.
  SET TITLEBAR '0200'.

ENDMODULE.                 " STATUS_0200  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  TC_DATA_CHANGE_TC_ATTR  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE tc_data_change_tc_attr OUTPUT.
  LOOP AT SCREEN.
     IF screen-group1 = 'INP'.
        screen-input = '1'.
        MODIFY SCREEN.
     ENDIF.
  ENDLOOP.


ENDMODULE.                 " TC_DATA_CHANGE_TC_ATTR  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  CHANGE_SCREEN_0200  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module CHANGE_SCREEN_0200 output.

endmodule.                 " CHANGE_SCREEN_0200  OUTPUT




5) MZEDUM_99_002I01.

  *&---------------------------------------------------------------------*
*&  Include           MZEDUM_99_001I01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  EXIT_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit_0100 INPUT.

  CASE sy-ucomm.
    WHEN  'BACK' OR 'CANC'.
      LEAVE TO SCREEN 0.

    WHEN 'EXIT'.
      LEAVE  PROGRAM.
  ENDCASE.

ENDMODULE.                 " EXIT_0100  INPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.


  CASE sy-ucomm.
    WHEN 'BTN01' OR 'CONFIRM'.

      IF gs_0100-matnr_low  IS INITIAL. "스타일코드는 필수 입니다.
        MESSAGE i001.
        EXIT.
      ENDIF.

      PERFORM read_data_for_mara.

      CALL SCREEN '0200'.


  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Module  PROGRAM_EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE program_exit INPUT.

  CASE sy-ucomm.
    WHEN 'EXIT' OR 'BACK'.
      LEAVE TO SCREEN 0.

    WHEN 'CANC'.
      LEAVE PROGRAM.

  ENDCASE.
ENDMODULE.                 " PROGRAM_EXIT  INPUT
*&---------------------------------------------------------------------*
*&      Module  PROGRAM_EXIT_0200  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE program_exit_0200 INPUT.
  CASE sy-ucomm.
    WHEN 'EXIT' OR 'BACK'.
      LEAVE TO SCREEN 0.

    WHEN 'CANC'.
      LEAVE PROGRAM.

  ENDCASE.
ENDMODULE.                 " PROGRAM_EXIT_0200  INPUT




6) MZEDUM_99_002F01.

  *&---------------------------------------------------------------------*
*&  Include           MZEDUM_99_001F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  READ_DATA_FOR_MARA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM read_data_for_mara .

  SELECT a~matnr a~zzitem_cd  b~maktx
  INTO TABLE gt_0200
   FROM mara AS a INNER JOIN makt AS b
                  ON a~matnr = b~matnr.

ENDFORM.                    " READ_DATA_FOR_MARA

Posted by SAP HANA Brian.

댓글을 달아 주세요

아밥 기본 전체 메뉴얼 입니다. [초급용]
Posted by SAP HANA Brian.

댓글을 달아 주세요

 
REPORT   zedur_99_002 MESSAGE-ID zedu001.

TABLES : mara, makt.


DATA : gv_tabix TYPE syst-tabix.

* Structure 선언.
DATA: BEGIN OF gs_mara ,
        matnr   LIKE mara-matnr,  "상품번호
        mtart    LIKE mara-mtart,  "상품유형
        ersda   LIKE mara-ersda,  "생성일
        maktx   LIKE makt-maktx,  "상품명

       END OF gs_mara.


DATA: BEGIN OF gs_makt  ,
        matnr   LIKE mara-matnr,  "상품번호
        maktx   LIKE makt-maktx,  "상품명
       END OF gs_makt.

* Internal Talbel 선언
DATA : gt_mara    LIKE gs_mara OCCURS 0 WITH HEADER LINE,
           gt_makt     LIKE gs_makt  OCCURS 0 WITH HEADER LINE.


FIELD-SYMBOLS: <mara> LIKE gs_mara.
FIELD-SYMBOLS: <makt> LIKE gs_makt.

START-OF-SELECTION.


  CLEAR : gs_mara, gt_mara[],
               gs_makt , gt_makt[].


  SELECT matnr mtart ersda
    INTO TABLE gt_mara
    FROM mara
    WHERE mtart = 'HAWA'.

  SELECT matnr maktx
    INTO TABLE gt_makt
    FROM makt
    WHERE spras = sy-langu.


  LOOP AT gt_mara ASSIGNING <mara>.
    gv_tabix = sy-tabix.

    READ TABLE gt_makt ASSIGNING <makt>
    with key matnr = <mara>-matnr
      binary search.


    IF sy-subrc = 0.
      <mara>-maktx = <MAKT>-maktx.

    ENDIF.


    WRITE :/ <mara>-matnr,
                   <mara>-maktx,
                   <mara>-mtart.


  ENDLOOP.
Posted by SAP HANA Brian.

댓글을 달아 주세요

값을 SELECT 해올때
SELECT matnr
       mtart
       ersda

  INTO  CORRESPONDING FIELDS OF TABLE gt_mara
  FROM mara
  WHERE  mtart = 'HAWA'.

위 구문을 사용할 경우는 INTERNAL TABLE 과 필드가 같지 않아도 된다.
즉 인터널테이블의 필드와 순서가 SELECT 절의 필드와 순서가 같지 않아도
자동으로 필드를 맞춰준다.


값을 SELECT 해올때
SELECT matnr
       mtart
       ersda

  INTO  TABLE GT_MARA
  FROM mara
  WHERE  mtart = 'HAWA'.

위 구문을 사용할 경우는 반드시 인터널테이블의 필드와 순서가 SELECT 절의
필드와 순서가 동일해야 한다.
만약 인터널테이블에 MATNR 코드로 명칭 (MAKTX) 필드를 가져오고자 할때
SELECT 구문에서 MARA 테이블에는 MAKTX 필드가 없기 때문에
인터널테이블에서 MAKTX 필드를 제일 마지막에 추가해주어야 한다.

Posted by SAP HANA Brian.

댓글을 달아 주세요

  REPORT   zedur_99_001 MESSAGE-ID zpp001.

TABLES : mara, makt.


DATA : gv_tabix TYPE syst-tabix.

* Structure 선언.
data: BEGIN OF gs_mara ,
        matnr   like mara-matnr,  "상품번호
        maktx   like makt-maktx,  "상품명
        mtart    like mara-mtart,  "상품유형
        ersda   like mara-ersda,  "생성일

       END OF gs_mara.


data: BEGIN OF gs_makt  ,
        matnr   like mara-matnr,  "상품번호
        maktx   like makt-maktx,  "상품명
       END OF gs_makt.

* Internal Talbel 선언
DATA : gt_mara    like gs_mara OCCURS 0 WITH HEADER LINE,
           gt_makt     like gs_makt OCCURS 0 WITH HEADER LINE.


FIELD-SYMBOLS: <mara> LIKE gs_mara.
 



* event 구문에 performs 문 호출 후 아래 구문 기술

*----------------------------------------------------------------------*
***INCLUDE ZEDUR_99_001F01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  READ_DATA_FROM_MARA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form READ_DATA_FROM_MARA .

CLEAR : GS_MARA, GT_MARA[],
             GS_MAKT, GT_MAKT[].


  SELECT matnr
               mtart
               ersda
  INTO  CORRESPONDING FIELDS OF TABLE gt_mara
*  INTO  TABLE gt_mara
  FROM mara
  WHERE  mtart = 'HAWA'.

* MAKT의 데이타를 조회
  SELECT matnr
               maktx
  INTO CORRESPONDING FIELDS OF TABLE gt_makt
  FROM makt.


* 인터널테이블 Modify
  LOOP AT gt_mara assigning <mara>.
    gv_tabix = sy-tabix.

    READ TABLE gt_makt INTO gs_makt
                WITH KEY matnr = <mara>-matnr
                BINARY SEARCH.

    IF sy-subrc = 0.
        <mara>-maktx = gs_makt-maktx.


    ENDIF.


  ENDLOOP.

endform.                    " READ_DATA_FROM_MARA
*&---------------------------------------------------------------------*
*&      Form  RESULT_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form RESULT_DATA .

loop  at gt_mara into gs_mara.

    WRITE :/01 gs_mara-matnr ,
                      gs_mara-mtart ,
                      gs_mara-maktx.

endloop.
endform.                    " RESULT_DATA



Posted by SAP HANA Brian.

댓글을 달아 주세요

  *&---------------------------------------------------------------------*

REPORT   zedur_99_001 MESSAGE-ID zpp001.

TABLES : mara, makt.

* Structure 선언.
TYPES: BEGIN OF ty_mara ,
        matnr   TYPE mara-matnr,  "상품번호
        maktx   TYPE makt-maktx,  "상품명
        mtart    TYPE mara-mtart,  "상품유형
        ersda   TYPE mara-ersda,  "생성일

       END OF ty_mara.


TYPES: BEGIN OF ty_makt  ,
        matnr   TYPE mara-matnr,  "상품번호
        maktx   TYPE makt-maktx,  "상품명
       END OF ty_makt.

* Internal Talbel 선언
DATA : gs_mara   TYPE  ty_mara,
           gt_mara     TYPE ty_mara OCCURS 0,
           gs_makt    TYPE ty_makt,
           gt_makt     TYPE ty_makt OCCURS 0.
 



  CLEAR : gs_mara, gt_mara[],
           gs_makt, gt_makt[].


START-OF-SELECTION.
* MARA의 데이타를 조회
  SELECT matnr
               mtart
               ersda
  INTO  CORRESPONDING FIELDS OF TABLE gt_mara
*  INTO  TABLE gt_mara
  FROM mara
  WHERE  mtart = 'HAWA'.

* MAKT의 데이타를 조회
  SELECT matnr
               maktx
  INTO CORRESPONDING FIELDS OF TABLE gt_makt
  FROM makt.


* 인터널테이블 Modify
  LOOP AT gt_mara INTO gs_mara.
    READ TABLE gt_makt INTO gs_makt
                WITH KEY matnr = gs_mara-matnr
                BINARY SEARCH.

    IF sy-subrc = 0.
      gs_mara-maktx = gs_makt-maktx.
      MODIFY gt_mara  FROM gs_mara  TRANSPORTING maktx.

    ENDIF.

    WRITE :/01 gs_mara-matnr ,
                      gs_mara-maktx.

  ENDLOOP.


Posted by SAP HANA Brian.

댓글을 달아 주세요

[쿼리실행속도 측정] 아밥쿼리의  실행속도의 차이를 비교할 수 있는 방법
사용자 삽입 이미지
Posted by SAP HANA Brian.

댓글을 달아 주세요


REPORT   zedur_99_001 MESSAGE-ID zpp001.

TABLES : mara, makt.

* Structure 선언.
TYPES: BEGIN OF ty_mara ,
        matnr   TYPE mara-matnr,  "상품번호
        mtart   TYPE mara-mtart,  "상품유형
        ersda   TYPE mara-ersda,  "생성일
       END OF ty_mara.


TYPES: BEGIN OF ty_makt  ,
        matnr   TYPE mara-matnr,  "상품번호
        maktx   TYPE makt-maktx,  "상품명
       END OF ty_makt.

* Internal Talbel 선언
DATA : gs_mara   TYPE ty_mara,
       gt_mara   TYPE ty_mara OCCURS 0,
       gs_makt   TYPE ty_makt,
       gt_makt   TYPE ty_makt OCCURS 0.

Posted by SAP HANA Brian.

댓글을 달아 주세요

아밥 Report 개발에 대한 기초 메뉴얼 입니다.
Posted by SAP HANA Brian.

댓글을 달아 주세요

ABAP Dictionary 사용자 메뉴얼 입니다.
초급 수준의 테이블 핸들링에 대한 모든 내용이 포함되어있습니다
Posted by SAP HANA Brian.

댓글을 달아 주세요