ABAP 전체 메뉴얼
2011. 2. 11. 15:57보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
*&-------------------------------------------------------------------*
*& 모듈풀 SAPMZEDUM_99_003
*&
*&---------------------------------------------------------------------*
*& ALV 기본 프로그램 Create by jhkim On 2010/10/31
*&-------------------------------------------------------------------*
INCLUDE mzedum_99_003top. " global Data
INCLUDE mzedum_99_003scr.. " Screen-selection
INCLUDE mzedum_99_003alv. " ALVi
INCLUDE mzedum_99_003ent. " EVENT
INCLUDE mzedum_99_003o01. " Pbo
INCLUDE mzedum_99_003i01. " Pai
INCLUDE mzedum_99_003f01. . " FORM-Routines
*&---------------------------------------------------------------------*
*&
*& Include MZEDUM_99_003TOP
*& 수입의뢰 헤더 정보를 조회/입력/수정 할 수 있는 ALV Program
*&---------------------------------------------------------------------*
PROGRAM sapmzedum_99_003.
TYPE-POOLS: slis .
INCLUDE <icon>.
INCLUDE <color>.
TABLES : ztim0020.
DATA : BEGIN OF gs_0010 ,
brand LIKE ztim0020-brand,
filno LIKE ztim0020-filno,
END OF gs_0010 .
DATA : gt_0010 LIKE gs_0010 OCCURS 0 WITH HEADER LINE.
*&---------------------------------------------------------------------*
*& Include MZEDUM_99_003SCR (스크린)
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-001.
PARAMETERS : pa_brand LIKE mara-brand_id OBLIGATORY . "브랜드
SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS :
so_filno FOR ztim0020-filno .
SELECTION-SCREEN END OF BLOCK b01.
SELECTION-SCREEN COMMENT: /01(70) text-002,
/01(70) text-003.
*&---------------------------------------------------------------------*
*& Include MZEDUM_99_003ALV
*& ALV 구현 시 반드시 있어야 하는 로직이므로 그대로 복사 한다.
*&---------------------------------------------------------------------*
CLASS: lcl_alv_grid_0100 DEFINITION DEFERRED.
*& 상수를 선언한다.
DATA: gc_container_0100 TYPE scrfname VALUE 'CONTAINER_0100'.
*& 변수를 선언한다.
DATA: gv_container TYPE scrfname VALUE space.
*& Alv관련 구조체/IT를 선언한다.
DATA: gs_scroll TYPE lvc_s_stbl,
gs_fieldcat TYPE lvc_s_fcat.
*& 100화면
DATA: gs_grid_0100 TYPE REF TO lcl_alv_grid_0100,
gt_sort_0100 TYPE lvc_t_sort,
gs_layout_0100 TYPE lvc_s_layo,
gs_variant_0100 TYPE disvariant,
gt_exclude_0100 TYPE ui_functions,
gt_fieldcat_0100 TYPE lvc_t_fcat,
gs_container_0100 TYPE REF TO cl_gui_custom_container.
*----------------------------------------------------------------------*
* CLASS lcl_alv_grid_0100 DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_alv_grid_0100 DEFINITION INHERITING FROM cl_gui_alv_grid.
PUBLIC SECTION.
METHODS: set_optimize_all_cols_0100,
* set_cursor_0100 IMPORTING row TYPE i
* col TYPE i,
set_fixed_column_0100,
set_row_resize_0100.
ENDCLASS. " lcl_alv_grid_0100 DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_alv_grid_0100 IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_alv_grid_0100 IMPLEMENTATION.
METHOD set_optimize_all_cols_0100.
CALL METHOD me->optimize_all_cols
EXPORTING
include_header = 1.
ENDMETHOD. " set_optimize_all_cols_0100
METHOD set_fixed_column_0100.
CALL METHOD me->set_fixed_cols
EXPORTING
cols = 4.
ENDMETHOD. " set_fixed_column_0100
*
METHOD set_row_resize_0100.
CALL METHOD me->set_resize_rows
EXPORTING
enable = 1.
ENDMETHOD. " set_row_resize_0100
ENDCLASS. " lcl_alv_grid_0100 IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Include MZEDUM_99_003ENT
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
*&---------------------------------------------------------------------*
*& AT SELECTION-SCREEN
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM read_data_from_ztim0020.
*&---------------------------------------------------------------------*
*& END-OF-SELECTION
*&---------------------------------------------------------------------*
END-OF-SELECTION.
CALL SCREEN '0100'.
*----------------------------------------------------------------------*
***INCLUDE MZEDUM_99_003O01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module STATUS_0100 output.
SET PF-STATUS '0100'.
SET TITLEBAR '0100'.
endmodule. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module INIT_CONTAINER_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module INIT_CONTAINER_0100 output.
CHECK gs_container_0100 IS INITIAL.
PERFORM create_init_0100.
endmodule. " INIT_CONTAINER_0100 OUTPUT
*----------------------------------------------------------------------*
***INCLUDE MZEDUM_99_003I01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module EXIT_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit_0100 INPUT.
CASE sy-ucomm.
WHEN 'EXIT' OR 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'CANC'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " EXIT_0100 INPUT
*&---------------------------------------------------------------------*
*& Include MZEDUM_99_003F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form READ_DATA_FROM_ZTIM0020
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM read_data_from_ztim0020 .
CLEAR : gt_0010[], gs_0010.
SELECT brand filno
INTO TABLE gt_0010
FROM ztim0020
WHERE brand = pa_brand AND
filno IN so_filno.
ENDFORM. " READ_DATA_FROM_ZTIM0020
*&---------------------------------------------------------------------*
*& Form CREATE_INIT_0100
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_init_0100 .
CLEAR: gs_layout_0100, gt_fieldcat_0100[], gt_exclude_0100[],
gt_sort_0100[].
CREATE OBJECT gs_container_0100
EXPORTING
container_name = gc_container_0100.
CREATE OBJECT gs_grid_0100
EXPORTING
i_parent = gs_container_0100.
gs_layout_0100-cwidth_opt = 'X'.
gs_layout_0100-zebra = 'X'.
gs_layout_0100-sel_mode = 'D'.
gs_variant_0100-report = sy-repid.
PERFORM build_fieldcat_0100.
PERFORM exclude_tb_functions CHANGING gt_exclude_0100.
CALL METHOD gs_grid_0100->set_table_for_first_display
EXPORTING
is_layout = gs_layout_0100
it_toolbar_excluding = gt_exclude_0100
is_variant = gs_variant_0100
i_save = 'A'
CHANGING
it_fieldcatalog = gt_fieldcat_0100
it_sort = gt_sort_0100
it_outtab = gt_0010[].
CALL METHOD gs_grid_0100->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD gs_grid_0100->set_toolbar_interactive.
ENDFORM. " CREATE_INIT_0100
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT_0100
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fieldcat_0100 .
DATA: ls_fcat TYPE slis_fieldcat_alv,
lt_fcat TYPE slis_t_fieldcat_alv.
CLEAR: lt_fcat[], gt_fieldcat_0100[].
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'GS_0010'
i_inclname = sy-repid
CHANGING
ct_fieldcat = lt_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
LOOP AT lt_fcat INTO ls_fcat.
CLEAR: gs_fieldcat.
MOVE-CORRESPONDING ls_fcat TO gs_fieldcat.
CASE gs_fieldcat-fieldname.
WHEN 'BRAND'.
gs_fieldcat-outputlen = '2'.
ls_fcat-seltext_l = '브랜드'.
WHEN 'FILNO'.
gs_fieldcat-outputlen = '10'.
ls_fcat-seltext_l = '파일번호'.
WHEN OTHERS.
DELETE lt_fcat INDEX sy-tabix.
CONTINUE.
ENDCASE.
gs_fieldcat-scrtext_l = ls_fcat-seltext_l.
gs_fieldcat-colddictxt = 'L'.
APPEND gs_fieldcat TO gt_fieldcat_0100.
ENDLOOP.
ENDFORM. " BUILD_FIELDCAT_0100
*&---------------------------------------------------------------------*
*& Form EXCLUDE_TB_FUNCTIONS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_EXCLUDE_0100 text
*----------------------------------------------------------------------*
FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.
DATA: ls_exclude TYPE ui_func.
ls_exclude = cl_gui_alv_grid=>mc_fc_detail.
APPEND ls_exclude TO pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_find.
* APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_check.
APPEND ls_exclude TO pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
* APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
APPEND ls_exclude TO pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
* APPEND ls_exclude TO pt_exclude.
*
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
* APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
APPEND ls_exclude TO pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_refresh.
* APPEND ls_exclude TO pt_exclude.
*
* ls_exclude = cl_gui_alv_grid=>mc_fc_sort_asc.
* APPEND ls_exclude TO pt_exclude.
*
* ls_exclude = cl_gui_alv_grid=>mc_fc_sort_dsc.
* APPEND ls_exclude TO pt_exclude.
*
ls_exclude = cl_gui_alv_grid=>mc_fc_print.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_graph.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_views.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_subtot.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_mb_sum.
APPEND ls_exclude TO pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_mb_export.
* APPEND ls_exclude TO pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_mb_filter.
* APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_info.
APPEND ls_exclude TO pt_exclude.
ENDFORM. " EXCLUDE_TB_FUNCTIONS
댓글을 달아 주세요
* 소스에서 사용은 아래와같이 사용 합니다.
CREATE OBJECT gs_grid_0101
EXPORTING
i_parent = gs_contain_right
i_appl_events = gc_xfeld_x.
gs_layout_0101-zebra = gc_xfeld_x.
gs_layout_0101-no_rowmark = gc_xfeld_x.
gs_layout_0101-cwidth_opt = gc_xfeld_x.
gs_layout_0101-sel_mode = gc_postp_d.
gs_layout_0101-ctab_fname = 'COLTAB'.
gs_layout_0101-stylefname = 'CELLTAB'.
gs_layout_0101-grid_title = '타이틀'.
gs_layout_0101-smalltitLe = 'X'.
gs_variant_0101-report = gv_repid.
댓글을 달아 주세요
댓글을 달아 주세요
SELECTION-SCREEN 의 조건값을 통해 스크린을 호출하여 값을 조회하는 프로그램 이다.
일반 모듈풀 프로그램과 유사하지만 프로그램 생성 시 실행가능 프로그램으로 생성 한다
1. 조건 : 모듈풀 프로그램의 조건과 유사하나 스크린에 디자인된 조건이 아닌
SELECTION-SCREEN 의 조건으로 코딩된 조건임
2. 결과값은 모듈풀 기본프로그램의 조건과 동일하다.
3. 프로그램 소스
INCLUDE MZEDUM_99_002TOP.
INCLUDE MZEDUM_99_002SCR.
INCLUDE MZEDUM_99_002ENT.
INCLUDE MZEDUM_99_002O01.
INCLUDE MZEDUM_99_002I01.
INCLUDE MZEDUM_99_002F01.
1) MZEDUM_99_002TOP
PROGRAM sapmzedum_99_001 MESSAGE-ID zedur001.
TABLES : mara, makt.
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_0200 LIKE gs_0200 OCCURS 0 WITH HEADER LINE.
FIELD-SYMBOLS: <gt_0200> LIKE gs_0200.
2) MZEDUM_99_002SCR
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
so_matnr FOR mara-matnr,
so_item FOR mara-zzitem_cd.
SELECTION-SCREEN END OF BLOCK b1.
3) MZEDUM_99_002ENT
*-------------------------------------------------------------*
* INITIALIZATION *
*--------------------------------------------------------------*
INITIALIZATION.
START-OF-SELECTION.
PERFORM read_data_for_mara.
END-OF-SELECTION.
CALL SCREEN '0200'. <--- 여기서 스크린 200을 호출한다
4) MZEDUM_99_002O01
*&---------------------------------------------------------------*
*& Include MZEDUM_99_001O01
*&---------------------------------------------------------------*
*&---------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&--------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS '0100'.
SET TITLEBAR '0100'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------*
*& Module STATUS_0200 OUTPUT
*&--------------------------------------------------------------*
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
*&-----------------------------------------------------*
*& Module PROGRAM_EXIT_0200 INPUT
*&----------------------------------------------------*
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
*-----------------------------------------------------------*
FORM read_data_for_mara .
CLEAR: gs_0200, gt_0200[].
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
WHERE a~matnr in so_matnr
AND a~zzitem_cd in so_item.
ENDFORM. " READ_DATA_FOR_MARA
댓글을 달아 주세요
스크린은 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
댓글을 달아 주세요
댓글을 달아 주세요
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.
댓글을 달아 주세요
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 필드를 제일 마지막에 추가해주어야 한다.
댓글을 달아 주세요