• No results found

ALV Grid Interactive Report

In document Sap Abap Programming (Page 129-151)

Here is an interactive report program which displays the basic output (First Screen) for Purchase Order header information. Then by double clicking the PO number we can go to secondary output which is the item display of that PO. On the Item screen if we double click on PO then ME23N Transaction will open with that particular PO.

In this reports User Command comes to fetch the double click operation. The output is in ALV Grid format.

*&--- ---*

*& Report ZSR_TEST1 *& *&--- ---* *& *& *&--- ---* REPORT zsr_test1. TABLES: ekko, ekpo. TYPE-POOLS: slis.

TYPES: BEGIN OF ty_ekko,

ebeln TYPE ekko-ebeln, bukrs TYPE ekko-bukrs, lifnr TYPE ekko-lifnr, END OF ty_ekko,

BEGIN OF ty_out_ekko, sel,

ebeln TYPE ekko-ebeln, bukrs TYPE ekko-bukrs, lifnr TYPE ekko-lifnr, END OF ty_out_ekko, BEGIN OF ty_ekpo,

ebeln TYPE ekpo-ebeln, ebelp TYPE ekpo-ebelp, matnr TYPE ekpo-matnr, werks TYPE ekpo-werks, lgort TYPE ekpo-lgort, menge TYPE ekpo-menge, meins TYPE ekpo-meins, END OF ty_ekpo,

BEGIN OF ty_out_ekpo, sel,

ebeln TYPE ekko-ebeln, ebelp TYPE ekpo-ebelp, matnr TYPE ekpo-matnr, werks TYPE ekpo-werks, lgort TYPE ekpo-lgort, menge TYPE ekpo-menge, meins TYPE ekpo-meins, END OF ty_out_ekpo.

DATA: wa_ekko TYPE ty_ekko, wa_ekpo TYPE ty_ekpo,

it_ekko TYPE STANDARD TABLE OF ty_ekko, it_ekpo TYPE STANDARD TABLE OF ty_ekpo, wa_out_ekko TYPE ty_out_ekko,

wa_out_ekpo TYPE ty_out_ekpo,

it_out_ekko TYPE STANDARD TABLE OF ty_out_ekko, it_out_ekpo TYPE STANDARD TABLE OF ty_out_ekpo, wa_fcat_ekko TYPE slis_fieldcat_alv,

wa_fcat_ekpo TYPE slis_fieldcat_alv, it_fcat_ekko TYPE slis_t_fieldcat_alv, it_fcat_ekpo TYPE slis_t_fieldcat_alv, wa_layout TYPE slis_layout_alv,

wa_top_ekko TYPE slis_listheader, wa_top_ekpo TYPE slis_listheader, it_top_ekko TYPE slis_t_listheader, it_top_ekpo TYPE slis_t_listheader, wa_event TYPE slis_alv_event,

wa_event_ekpo TYPE slis_alv_event, it_event TYPE slis_t_event,

it_event_ekpo TYPE slis_t_event, r_ucomm TYPE sy-ucomm,

rs_selfield TYPE slis_selfield,

v_selfield TYPE slis_selfield-value, v_ebeln TYPE ekko-ebeln,

v_prog TYPE sy-repid, v_name TYPE sy-uname. INITIALIZATION.

v_prog = sy-repid. v_name = sy-uname.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text- 001.

SELECT-OPTIONS s_ebeln FOR ekko-ebeln OBLIGATORY. SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION. PERFORM get_ekko. PERFORM fieldcat_ekko. PERFORM layout. PERFORM event_ekko. PERFORM grid_ekko.

PERFORM ucomm_ekko USING r_ucomm

CHANGING rs_selfield. TOP-OF-PAGE.

PERFORM top_ekko.

TOP-OF-PAGE DURING LINE-SELECTION. PERFORM top_ekpo.

*&--- ---*

*& Form ucomm_ekko

*&--- ---* * text *--- ---* * -->R_UCOMM text * -->RS_ESLFIELD text *--- ---*

FORM ucomm_ekko USING r_ucomm_ekko TYPE sy-ucomm

CHANGING rs_selfield_ekko TYPE slis_selfield. CASE r_ucomm_ekko. WHEN '&IC1'. IF rs_selfield_ekko-fieldname = 'EBELN'. CLEAR v_selfield. v_selfield = rs_selfield_ekko-value. PERFORM conversion_po. PERFORM get_ekpo. PERFORM fieldcat_ekpo. PERFORM layout. PERFORM event_ekpo. PERFORM grid_ekpo.

PERFORM ucomm_ekpo USING r_ucomm

CHANGING rs_selfield. ELSE.

ENDIF. ENDCASE.

ENDFORM. "ucomm_ekko

*&--- ---*

*& Form GET_EKKO

*&--- ---* * text *--- ---* * --> p1 text * <-- p2 text *--- ---* FORM get_ekko . REFRESH it_ekko.

SELECT ebeln bukrs lifnr

FROM ekko INTO TABLE it_ekko WHERE ebeln IN s_ebeln.

IF sy-subrc = 0.

SORT it_ekko BY ebeln. REFRESH it_out_ekko.

LOOP AT it_ekko INTO wa_ekko.

wa_out_ekko-ebeln = wa_ekko-ebeln. wa_out_ekko-bukrs = wa_ekko-bukrs. wa_out_ekko-lifnr = wa_ekko-lifnr. APPEND wa_out_ekko TO it_out_ekko. CLEAR: wa_out_ekko, wa_ekko.

ENDLOOP. ELSE.

MESSAGE 'Purchase Order doesn''t exist' TYPE 'I'. ENDIF.

ENDFORM. " GET_EKKO

*&--- ---*

*& Form FIELDCAT_EKKO

*&--- ---* * text *--- ---* * --> p1 text * <-- p2 text *---

---*

FORM fieldcat_ekko . CLEAR wa_fcat_ekko. REFRESH it_fcat_ekko.

IF it_out_ekko IS NOT INITIAL. DATA lv_col TYPE i VALUE 0.

lv_col = 1 + lv_col. wa_fcat_ekko-col_pos = lv_col. wa_fcat_ekko-fieldname = 'EBELN'.

wa_fcat_ekko-tabname = 'IT_OUT_EKKO'. wa_fcat_ekko-seltext_l = 'Purchase Order'. APPEND wa_fcat_ekko TO it_fcat_ekko.

CLEAR wa_fcat_ekko.

lv_col = 1 + lv_col. wa_fcat_ekko-col_pos = lv_col. wa_fcat_ekko-fieldname = 'BUKRS'.

wa_fcat_ekko-tabname = 'IT_OUT_EKKO'. wa_fcat_ekko-seltext_l = 'Company Code'. APPEND wa_fcat_ekko TO it_fcat_ekko. CLEAR wa_fcat_ekko. lv_col = 1 + lv_col. wa_fcat_ekko-col_pos = lv_col. wa_fcat_ekko-fieldname = 'LIFNR'. wa_fcat_ekko-tabname = 'IT_OUT_EKKO'. wa_fcat_ekko-seltext_l = 'Vendor'.

APPEND wa_fcat_ekko TO it_fcat_ekko. CLEAR wa_fcat_ekko.

ENDIF.

ENDFORM. " FIELDCAT_EKKO

*&--- ---*

*& Form LAYOUT

*&--- ---* * text *--- ---* * --> p1 text * <-- p2 text *--- ---* FORM layout . wa_layout-zebra = 'X'.

wa_layout-colwidth_optimize = 'X'. wa_layout-box_fieldname = 'SEL'. ENDFORM. " LAYOUT

*&--- ---*

*& Form EVENT_EKKO

*&--- ---* * text *--- ---* * --> p1 text * <-- p2 text *--- ---* FORM event_ekko . REFRESH it_event.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET' * EXPORTING * I_LIST_TYPE = 0 IMPORTING et_events = it_event EXCEPTIONS list_type_wrong = 1 OTHERS = 2. IF it_event IS NOT INITIAL. CLEAR wa_event.

READ TABLE it_event INTO wa_event WITH KEY name = 'USER_COMMAND'. IF sy-subrc = 0.

wa_event-form = 'UCOMM_EKKO'. MODIFY it_event FROM wa_event INDEX sy-tabix TRANSPORTING form. ENDIF.

ENDIF.

ENDFORM. " EVENT_EKKO

*&--- ---*

*& Form GRID_EKKO

*&--- ---*

* text

*--- ---*

* --> p1 text * <-- p2 text

*--- ---*

FORM grid_ekko .

IF it_out_ekko IS NOT INITIAL AND it_fcat_ekko IS NOT INITIAL.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = ' ' * I_BUFFER_ACTIVE = ' ' i_callback_program = v_prog * i_callback_pf_status_set = ' ' i_callback_user_command = 'UCOMM_EKKO' i_callback_top_of_page = 'TOP_EKKO' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' * I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' * I_GRID_TITLE = * I_GRID_SETTINGS = is_layout = wa_layout it_fieldcat = it_fcat_ekko * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' * I_SAVE = ' ' * IS_VARIANT = it_events = it_event * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * I_HTML_HEIGHT_TOP = 0 * I_HTML_HEIGHT_END = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * IR_SALV_FULLSCREEN_ADAPTER = * IMPORTING

* E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = it_out_ekko EXCEPTIONS program_error = 1 OTHERS = 2. ENDIF. ENDFORM. " GRID_EKKO *&--- ---*

*& Form top_ekko

*&--- ---* * text *--- ---* FORM top_ekko. CLEAR wa_top_ekko. REFRESH it_top_ekko. DATA date TYPE char12.

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL' EXPORTING date_internal = sy-datum IMPORTING date_external = date EXCEPTIONS date_internal_is_invalid = 1 OTHERS = 2. wa_top_ekko-typ = 'H'.

wa_top_ekko-info = 'Purchase Order Header'. APPEND wa_top_ekko TO it_top_ekko.

CLEAR wa_top_ekko. wa_top_ekko-typ = 'S'.

wa_top_ekko-info = 'Report: '.

CONCATENATE wa_top_ekko-info v_prog INTO wa_top_ekko-info.

APPEND wa_top_ekko TO it_top_ekko. CLEAR wa_top_ekko.

wa_top_ekko-typ = 'S'.

wa_top_ekko-info = 'User Name: '. CONCATENATE wa_top_ekko-info v_name INTO wa_top_ekko-info.

APPEND wa_top_ekko TO it_top_ekko. CLEAR wa_top_ekko.

wa_top_ekko-typ = 'S'.

wa_top_ekko-info = 'Date: '.

CONCATENATE wa_top_ekko-info date INTO wa_top_ekko-info.

APPEND wa_top_ekko TO it_top_ekko. CLEAR wa_top_ekko.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = it_top_ekko * I_LOGO = * I_END_OF_LIST_GRID = * I_ALV_FORM = . ENDFORM. "top_ekko *&--- ---*

*& Form CONVERSION_PO

*&--- ---* * text *--- ---* * --> p1 text * <-- p2 text *--- ---* FORM conversion_po . CLEAR v_ebeln.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = v_selfield IMPORTING output = v_ebeln. ENDFORM. " CONVERSION_PO *&--- ---*

*& Form GET_EKPO

*&--- ---*

* text

*--- ---*

* --> p1 text * <-- p2 text

*--- ---*

FORM get_ekpo .

IF v_ebeln IS NOT INITIAL. REFRESH it_ekpo.

SELECT ebeln ebelp matnr werks lgort menge meins FROM ekpo INTO TABLE it_ekpo

WHERE ebeln = v_ebeln. IF sy-subrc = 0.

SORT it_ekpo BY ebelp. REFRESH it_out_ekpo.

LOOP AT it_ekpo INTO wa_ekpo. AT NEW ebeln. wa_out_ekpo-ebeln = wa_ekpo-ebeln. ENDAT. wa_out_ekpo-ebelp = wa_ekpo-ebelp. wa_out_ekpo-matnr = wa_ekpo-matnr. wa_out_ekpo-werks = wa_ekpo-werks. wa_out_ekpo-lgort = wa_ekpo-lgort. wa_out_ekpo-menge = wa_ekpo-menge. wa_out_ekpo-meins = wa_ekpo-meins. APPEND wa_out_ekpo TO it_out_ekpo. CLEAR: wa_out_ekpo, wa_ekpo.

ENDLOOP. ENDIF. ENDIF. ENDFORM. " GET_EKPO *&--- ---*

*& Form FIELDCAT_EKPO

*&--- ---* * text *--- ---* * --> p1 text * <-- p2 text *--- ---* FORM fieldcat_ekpo . CLEAR wa_fcat_ekpo. REFRESH it_fcat_ekpo.

IF it_out_ekpo IS NOT INITIAL. DATA lv_col TYPE i VALUE 0.

lv_col = 1 + lv_col. wa_fcat_ekpo-col_pos = lv_col. wa_fcat_ekpo-fieldname = 'EBELN'.

wa_fcat_ekpo-tabname = 'IT_OUT_EKPO'. wa_fcat_ekpo-seltext_l = 'Purchase Order'. APPEND wa_fcat_ekpo TO it_fcat_ekpo.

CLEAR wa_fcat_ekpo.

lv_col = 1 + lv_col. wa_fcat_ekpo-col_pos = lv_col. wa_fcat_ekpo-fieldname = 'EBELP'.

wa_fcat_ekpo-tabname = 'IT_OUT_EKPO'. wa_fcat_ekpo-seltext_l = 'PO Item'. APPEND wa_fcat_ekpo TO it_fcat_ekpo. CLEAR wa_fcat_ekpo. lv_col = 1 + lv_col. wa_fcat_ekpo-col_pos = lv_col. wa_fcat_ekpo-fieldname = 'MATNR'. wa_fcat_ekpo-tabname = 'IT_OUT_EKPO'. wa_fcat_ekpo-seltext_l = 'Material'. APPEND wa_fcat_ekpo TO it_fcat_ekpo. CLEAR wa_fcat_ekpo. lv_col = 1 + lv_col. wa_fcat_ekpo-col_pos = lv_col. wa_fcat_ekpo-fieldname = 'WERKS'. wa_fcat_ekpo-tabname = 'IT_OUT_EKPO'. wa_fcat_ekpo-seltext_l = 'Plant'.

APPEND wa_fcat_ekpo TO it_fcat_ekpo. CLEAR wa_fcat_ekpo.

lv_col = 1 + lv_col. wa_fcat_ekpo-col_pos = lv_col. wa_fcat_ekpo-fieldname = 'LGORT'.

wa_fcat_ekpo-tabname = 'IT_OUT_EKPO'.

wa_fcat_ekpo-seltext_l = 'Storage Location'. APPEND wa_fcat_ekpo TO it_fcat_ekpo.

CLEAR wa_fcat_ekpo.

lv_col = 1 + lv_col. wa_fcat_ekpo-col_pos = lv_col. wa_fcat_ekpo-fieldname = 'MENGE'.

wa_fcat_ekpo-tabname = 'IT_OUT_EKPO'. wa_fcat_ekpo-seltext_l = 'PO Quantity'. APPEND wa_fcat_ekpo TO it_fcat_ekpo. CLEAR wa_fcat_ekpo.

lv_col = 1 + lv_col. wa_fcat_ekpo-col_pos = lv_col. wa_fcat_ekpo-fieldname = 'MEINS'.

wa_fcat_ekpo-tabname = 'IT_OUT_EKPO'. wa_fcat_ekpo-seltext_l = 'Unit of Measure'. APPEND wa_fcat_ekpo TO it_fcat_ekpo.

CLEAR wa_fcat_ekpo. ENDIF.

ENDFORM. " FIELDCAT_EKPO

*&--- ---*

*& Form EVENT_EKPO

*&--- ---* * text *--- ---* * --> p1 text * <-- p2 text *--- ---* FORM event_ekpo . REFRESH it_event_ekpo.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET' * EXPORTING * I_LIST_TYPE = 0 IMPORTING et_events = it_event_ekpo EXCEPTIONS list_type_wrong = 1 OTHERS = 2. IF it_event_ekpo IS NOT INITIAL. CLEAR wa_event_ekpo.

READ TABLE it_event_ekpo INTO wa_event_ekpo WITH KEY name = 'USER_COMMAND'.

IF sy-subrc = 0.

wa_event_ekpo-form = 'UCOMM_EKPO'.

MODIFY it_event_ekpo FROM wa_event_ekpo INDEX sy-tabix TRANSPORTING form.

ENDIF. ENDIF.

ENDFORM. " EVENT_EKPO

---*

*& Form GRID_EKPO

*&--- ---* * text *--- ---* * --> p1 text * <-- p2 text *--- ---* FORM grid_ekpo .

IF it_out_ekpo IS NOT INITIAL AND it_fcat_ekpo IS NOT INITIAL.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = ' ' * I_BUFFER_ACTIVE = ' ' i_callback_program = v_prog * i_callback_pf_status_set = ' ' i_callback_user_command = 'UCOMM_EKPO' i_callback_top_of_page = 'TOP_EKPO' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' * I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' * I_GRID_TITLE = * I_GRID_SETTINGS = is_layout = wa_layout it_fieldcat = it_fcat_ekpo * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' * I_SAVE = ' ' * IS_VARIANT = it_events = it_event_ekpo * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * I_HTML_HEIGHT_TOP = 0

* I_HTML_HEIGHT_END = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * IR_SALV_FULLSCREEN_ADAPTER = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = it_out_ekpo EXCEPTIONS program_error = 1 OTHERS = 2. ENDIF. ENDFORM. " GRID_EKPO *&--- ---*

*& Form top_ekpo

*&--- ---* * text *--- ---* FORM top_ekpo. CLEAR wa_top_ekpo. REFRESH it_top_ekpo. wa_top_ekpo-typ = 'H'.

wa_top_ekpo-info = 'Purchase Order Item wise Display'. APPEND wa_top_ekpo TO it_top_ekpo.

CLEAR wa_top_ekpo.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = it_top_ekpo * I_LOGO = * I_END_OF_LIST_GRID = * I_ALV_FORM = . ENDFORM. "top_ekpo *&--- ---*

*& Form UCOMM_EKPO

*&--- ---*

* text *--- ---* * -->P_R_UCOM text * <--P_RS_SELFIELD text *--- ---*

FORM ucomm_ekpo USING r_ucomm_ekpo TYPE sy-ucomm CHANGING rs_selfield_ekpo TYPE

slis_selfield.

CASE r_ucomm_ekpo. WHEN '&IC1'.

IF rs_selfield_ekpo-fieldname = 'EBELN'. SET PARAMETER ID 'BES'

FIELD rs_selfield_ekpo-value. CALL TRANSACTION 'ME23N'. ELSE.

MESSAGE 'Invalid Field' TYPE 'S'. ENDIF.

ENDCASE.

ENDFORM. " UCOMM_EKPO

The output is follows: Selection Screen:

Second List (by Double clicking on PO 3):

Classical Report of Multiple Tables

After creating a classic report for single table it's time to create a report which will contain multiple tables. Here we shall fetch various records from various tables and then collate them to reach required output. We have created a report which contains multiple tables like MARA, MARC and MARD. The materials contain different Plant and Storage Location in MARC and MARD tables respectively. All those different plant and storage location will be displayed with material number in output here. Here the plant is a big item and the storage location is small item. One single plant contains different storage locations. Materials are stored inside one of these storage locations. Now different materials can be stored in the same storage location.

In the program we have prepared internal table it_mara from MARA table based on the Select Option material number range. If material number is entered then only the program will give an output.

After preparing valid information of it_mara the program selects data from MARC (plant) table into it_marc for all entries in it_mara. Here we have to check the it_mara table if it is not initial. If we don't give this checking then all records will be selected from MARC table and that would be wrong. Hence we can say that this table checking is one of a prerequisites of For All Entries.

Similarly after preparing the it_marc table we shall prepare the it_mard table from MARD (storage location) for all entries in it_marc. Similarly the

table checking of it_marc must be there.

Now we have material (it_mara), plant (it_marc) & storage location (it_mard) information. We have to collate all these information to display the required output. To do this we have prepared an internal table it_out with an work area wa_out. This internal table & work area contains the structure ty_out as per the report output requirement.

Now we are looping it_mara to fetch material & type into the output work area. Here MARA is a master table hence we have to loop this table. Now one material can be maintained for different storage locations under one plant or different plant. Hence to populate output table we have to loop into it_marc and it_mard table. Here we are looping it_marc and it_mard with WHERE clause because we are going to fetch all records of plant and storage location at one time. So where clause will help us to point out the particular material and also will increase the performance.

Finally at the output population we have used control break statement like AT FIRST, AT END OF, AT LAST. With the help of that we have synchronized the output in different lines.

Following is the coding of the classical report. REPORT zabap_gui.

*---Declaring the line type of database tables---* TABLES: mara, marc, mard.

*---Declaring the types of work areas & internal tables---* TYPES: BEGIN OF ty_mara,

matnr TYPE mara-matnr, mtart TYPE mara-mtart, END OF ty_mara,

BEGIN OF ty_marc,

matnr TYPE marc-matnr, werks TYPE marc-werks, xchar TYPE marc-xchar, END OF ty_marc,

BEGIN OF ty_mard,

matnr TYPE mard-matnr, werks TYPE mard-werks, lgort TYPE mard-lgort, pstat TYPE mard-pstat, END OF ty_mard,

BEGIN OF ty_out,

matnr TYPE marc-matnr, "Material werks TYPE marc-werks, "Plant

lgort TYPE mard-lgort, "Storage Location mtart TYPE mara-mtart, "Material Type xchar TYPE marc-xchar, "Batch number

pstat TYPE mard-pstat, "Maintenance Status END OF ty_out.

*---Declaring work areas & internal tables---* DATA: wa_mara TYPE ty_mara,

wa_marc TYPE ty_marc, wa_mard TYPE ty_mard, wa_out TYPE ty_out,

it_mara TYPE STANDARD TABLE OF ty_mara, it_marc TYPE STANDARD TABLE OF ty_marc, it_mard TYPE STANDARD TABLE OF ty_mard, it_out TYPE STANDARD TABLE OF ty_out, v_prog TYPE sy-repid, "Program name v_date TYPE sy-datum, "Current date v_time TYPE sy-uzeit. "Current time

*---Declaring constants to avoid the hard codes---* CONSTANTS: c_material TYPE char12 VALUE 'MATERIAL NO',

c_plant TYPE char5 VALUE 'PLANT', c_storage TYPE char8 VALUE 'STORAGE', c_type TYPE char6 VALUE 'M TYPE', c_batch TYPE char6 VALUE 'BATCH',

c_maint TYPE char18 VALUE 'MAINTENANCE STATUS', c_end TYPE char40 VALUE 'End of Material Details'.

*---Event initialization---* INITIALIZATION.

v_prog = sy-repid. v_date = sy-datum. v_time = sy-uzeit.

*---Declaring selection screen with select option for input----* SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_matnr FOR mara-matnr. SELECTION-SCREEN END OF BLOCK b1.

*---Event start of selection---* START-OF-SELECTION.

PERFORM get_mara. PERFORM get_marc. PERFORM get_mard.

*---Event end of selection---* END-OF-SELECTION.

PERFORM display.

*---Event top of page---* TOP-OF-PAGE.

PERFORM top_of_page.

*&---* *& Form GET_MARA

*&---* * Select data from MARA table

*---* FORM get_mara .

IF s_matnr IS NOT INITIAL. SELECT matnr mtart

FROM mara INTO TABLE it_mara WHERE matnr IN s_matnr. IF sy-subrc = 0.

SORT it_mara BY matnr. ELSE.

MESSAGE 'Material doesn''t exist' TYPE 'I'. ENDIF.

ENDIF.

ENDFORM. " GET_MARA

*&---* *& Form GET_MARC

*&---* * Select data from MARC table

*---* FORM get_marc .

IF it_mara IS NOT INITIAL. "Prerequisite of FOR ALL ENTRIES IN

In document Sap Abap Programming (Page 129-151)

Related documents