Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Reg : Internal table

Former Member
0 Likes
601

Hai ABAP gurus,

Actually iam doing report for engine receipts..inwhich iam getting MATNR,MENGE from MSEG table joined with MKPF table and outputting in ITAB1 internal table.Now i need to get SERIAL NO from EQUI table inwhich there are lot of serial numbers for a material.While moving that from ITAB4 to ITAB1 then only one value is moved. I need to move all the serial numbers.Pls check the code and correct me

REPORT ZFIENGINE

NO STANDARD PAGE HEADING MESSAGE-ID ZE LINE-SIZE 250.

----


  • Program Name : ZFIENGINE.

  • TCode : ZFEN.

  • Title : Receipt Report for Engine

  • Create Date : 02.07.2008

  • Release : 4.6C

  • Author : ARTHI.E

----


  • Description : This report is used to find engine receipted.

----


  • Change History

----


  • Date | User ID | Description | Change Label

----


  • | | |

  • | | |

  • | | |

  • | | |

  • | | |

----


----


*THIS PROGRAM USES FOLLOWING SUBROUTINES AND THEIR SER#

----


*

----


*eject

----


*TABLES USED IN THIS REPORT *

----


TYPE-POOLS: SLIS.

TABLES : MSEG,

MKPF,

SER03,

OBJK,

EQUI.

*eject

*----


*DATA DECLARATION

*----


DATA : BEGIN OF ITAB1 OCCURS 100,

MATNR TYPE MATNR,

MBLNR LIKE MSEG-MBLNR,

  • MATNR LIKE MSEG-MATNR,

WERKS LIKE MSEG-WERKS,

MENGE LIKE MSEG-MENGE,

BWART LIKE MSEG-BWART,

MJAHR LIKE MSEG-MJAHR,

EBELN LIKE MSEG-EBELN,

MENGE_STOCK LIKE MSEG-MENGE,

C_STOCK(18) TYPE C,

OBKNR LIKE SER03-OBKNR,

SERNR LIKE OBJK-SERNR,

EQUNR LIKE OBJK-EQUNR,

END OF ITAB1.

DATA : BEGIN OF ITAB4 OCCURS 100,

MATNR TYPE MATNR,

SERNR LIKE EQUI-SERNR,

EQUNR LIKE EQUI-EQUNR,

END OF ITAB4.

DATA: I_EVENTS TYPE SLIS_T_EVENT,

I_LIST_COMMENTS TYPE SLIS_T_LISTHEADER,

I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

I_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA : WA_EVENTS LIKE LINE OF I_EVENTS,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

WA_LIST_COMMENTS LIKE LINE OF I_LIST_COMMENTS.

DATA : V_REPID LIKE SY-REPID,

V_ERRORFLG TYPE C.

DATA : GS_SORT TYPE SLIS_SORTINFO_ALV,

GT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.

*eject

----


*SELECTION-SCREEN *

----


SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME TITLE T1.

SELECT-OPTIONS : S_WERKS FOR MSEG-WERKS OBLIGATORY NO-EXTENSION

NO INTERVALS DEFAULT '1311',

S_BUDAT FOR MKPF-BUDAT OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B.

----


*INITIALIZATION *

----


INITIALIZATION.

T1 = 'Selection Details'.

*eject

----


*AT SELECTION-SCREEN *

----


*START-OF-SELECTION *

----


START-OF-SELECTION.

PERFORM DISPLAYMAT.

PERFORM FILL_HEADER_DETAILS_PRC .

PERFORM DISPLAY_DATA_DT.

PERFORM EVENT_BUILD_PRC.

*

*eject

*----


*END-OF-SELECTION

*----


END-OF-SELECTION.

*eject

*----


  • AT SELECTION SCREEN

*----


*eject

----


  • 01. DISPLAY "DISPLAY LIST *

----


FORM DISPLAYMAT.

*DATA : BEGIN OF ITAB1 OCCURS 100,

  • MATNR TYPE MATNR,

  • MBLNR LIKE MSEG-MBLNR,

  • WERKS LIKE MSEG-WERKS,

  • MENGE LIKE MSEG-MENGE,

  • BWART LIKE MSEG-BWART,

  • MJAHR LIKE MSEG-MJAHR,

  • EBELN LIKE MSEG-EBELN,

  • MENGE_STOCK LIKE MSEG-MENGE,

  • C_STOCK(18) TYPE C,

  • OBKNR LIKE SER03-OBKNR,

  • SERNR LIKE OBJK-SERNR,

  • EQUNR LIKE OBJK-EQUNR,

  • END OF ITAB1.

DATA : BEGIN OF ITAB2 OCCURS 100,

OBKNR LIKE SER03-OBKNR,

MBLNR LIKE SER03-MBLNR,

BWART LIKE SER03-BWART,

MJAHR LIKE SER03-MJAHR,

WERK LIKE SER03-WERK,

SERNR LIKE OBJK-SERNR,

EQUNR LIKE OBJK-EQUNR,

END OF ITAB2.

DATA : BEGIN OF ITAB3 OCCURS 100,

OBKNR LIKE OBJK-OBKNR,

SERNR LIKE OBJK-SERNR,

EQUNR LIKE OBJK-EQUNR,

END OF ITAB3.

DATA : BEGIN OF ITAB4 OCCURS 100,

MATNR TYPE MATNR,

SERNR LIKE EQUI-SERNR,

EQUNR LIKE EQUI-EQUNR,

END OF ITAB4.

DATA: V_105 LIKE MSEG-MENGE,

V_541 LIKE MSEG-MENGE,

V_542 LIKE MSEG-MENGE.

  • SELECT EQUIMATNR EQUISERNR EQUIEQUNR MSEGMBLNR

  • MSEGBWART MSEGMENGE MSEGMEINS MSEGWERKS

  • INTO CORRESPONDING FIELDS OF TABLE ITAB1

  • FROM ( EQUI JOIN MSEG ON MSEGMATNR = EQUIMATNR

  • JOIN MKPF ON MKPFMBLNR = MSEGMBLNR )

  • WHERE MSEG~WERKS IN S_WERKS

  • AND ( MSEGBWART EQ '105' OR MSEGBWART EQ '542' OR

  • MSEG~BWART EQ '541' )

    • AND MSEG~MATNR EQ 'ENG1'

  • AND MKPF~BUDAT BETWEEN S_BUDAT-LOW AND S_BUDAT-HIGH.

SELECT MSEGMATNR MSEGWERKS MSEG~MBLNR

MSEGMENGE MSEGBWART MSEGMJAHR MSEGEBELN

INTO CORRESPONDING FIELDS OF TABLE ITAB1

FROM MKPF INNER JOIN MSEG ON

MKPFMBLNR = MSEGMBLNR AND

MKPFMJAHR = MSEGMJAHR

WHERE MSEG~WERKS IN S_WERKS

AND ( MSEGBWART EQ '105' OR MSEGBWART EQ '542' OR

MSEG~BWART EQ '541' )

  • AND MSEG~MATNR EQ 'ENG1'

AND MKPF~BUDAT BETWEEN S_BUDAT-LOW AND S_BUDAT-HIGH.

V_105 = 0.

V_541 = 0.

V_542 = 0.

SORT ITAB1 BY MATNR.

LOOP AT ITAB1.

IF ITAB1-BWART = '105'.

V_105 = V_105 + ITAB1-MENGE.

ENDIF.

IF ITAB1-BWART = '541'.

V_541 = V_541 + ITAB1-MENGE.

ENDIF.

IF ITAB1-BWART = '542'.

V_542 = V_542 + ITAB1-MENGE.

ENDIF.

AT END OF MATNR.

ITAB1-MENGE_STOCK = ( V_105 + V_542 ) - V_541.

MODIFY ITAB1 TRANSPORTING MENGE_STOCK.

  • WRITE : V_541,V_542,V_105.

CLEAR: ITAB1-MENGE_STOCK, V_541, V_542, V_105.

ENDAT.

ENDLOOP.

DELETE ITAB1 WHERE MENGE_STOCK = 0.

SORT ITAB1 BY MATNR.

LOOP AT ITAB1.

MOVE ITAB1-MENGE_STOCK TO ITAB1-C_STOCK.

MODIFY ITAB1.

ENDLOOP.

****Get Object List from SER03.

*

*IF ITAB1[] IS INITIAL.

*ELSE.

  • SELECT SER03~OBKNR

  • SER03~MBLNR

  • SER03~BWART

  • SER03~MJAHR

  • INTO CORRESPONDING FIELDS OF TABLE ITAB2

  • FROM SER03

  • FOR ALL ENTRIES IN ITAB1

  • WHERE MBLNR = ITAB1-MBLNR

  • AND WERK = ITAB1-WERKS.

*

  • LOOP AT ITAB1.

  • READ TABLE ITAB2 WITH KEY MBLNR = ITAB1-MBLNR.

*

  • IF SY-SUBRC = 0.

  • MOVE ITAB2-OBKNR TO ITAB1-OBKNR.

  • MOVE ITAB2-MBLNR TO ITAB1-MBLNR.

  • MODIFY ITAB1.

  • ENDIF.

  • ENDLOOP.

  • ENDIF.

SORT ITAB1 BY MATNR.

***Get Serial no and Equi no from OBJK.

IF ITAB1[] IS INITIAL.

ELSE.

LOOP AT ITAB1.

SELECT EQUI~MATNR

EQUI~SERNR

EQUI~EQUNR

INTO CORRESPONDING FIELDS OF TABLE ITAB4

FROM EQUI

FOR ALL ENTRIES IN ITAB1

WHERE MATNR = ITAB1-MATNR.

ENDLOOP.

LOOP AT ITAB1.

READ TABLE ITAB4 WITH KEY MATNR = ITAB1-MATNR BINARY SEARCH.

  • IF SY-SUBRC = 0.

MOVE ITAB4-MATNR TO ITAB1-MATNR.

MOVE ITAB4-SERNR TO ITAB1-SERNR.

MOVE ITAB4-EQUNR TO ITAB1-EQUNR.

MODIFY ITAB1.

  • APPEND ITAB1.

  • ENDIF.

ENDLOOP.

ENDIF.

LOOP AT ITAB1.

WRITE : / ITAB1-MATNR,

ITAB1-MBLNR,

ITAB1-BWART,

ITAB1-EBELN,

ITAB1-MENGE_STOCK.

  • ITAB1-OBKNR.

.

ENDLOOP.

LOOP AT ITAB1.

WRITE: / ITAB1-MATNR,

ITAB1-SERNR,

ITAB1-EQUNR.

ENDLOOP.

DELETE ITAB1 WHERE SERNR EQ SPACE.

SORT ITAB1 BY MATNR.

ENDFORM.

                      • ALV

FORM FILL_HEADER_DETAILS_PRC .

CLEAR WA_FIELDCAT.

i_layout-colwidth_optimize = 'X'.

WA_FIELDCAT-COL_POS = 1.

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-TABNAME = 'ITAB1'.

WA_FIELDCAT-SELTEXT_L = 'MATERIAL'.

WA_FIELDCAT-OUTPUTLEN = '40'.

WA_FIELDCAT-DO_SUM = 'X'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

WA_FIELDCAT-COL_POS = 2.

WA_FIELDCAT-FIELDNAME = 'C_STOCK'.

WA_FIELDCAT-TABNAME = 'ITAB1'.

WA_FIELDCAT-SELTEXT_L = 'QTY'.

WA_FIELDCAT-OUTPUTLEN = '13'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

WA_FIELDCAT-COL_POS = 3.

WA_FIELDCAT-FIELDNAME = 'SERNR'.

WA_FIELDCAT-TABNAME = 'ITAB1'.

WA_FIELDCAT-SELTEXT_L = 'SERIAL NO'.

WA_FIELDCAT-OUTPUTLEN = '13'.

  • WA_FIELDCAT-NO_OUT = 'X'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR GS_SORT.

GS_SORT-FIELDNAME = 'MATNR'.

GS_SORT-TABNAME = 'ITAB1'.

GS_SORT-SPOS = 1.

GS_SORT-UP = 'X'.

GS_SORT-SUBTOT = 'X'.

APPEND GS_SORT TO GT_SORT.

  • CLEAR GS_SORT.

  • GS_SORT-FIELDNAME = 'C_STOCK'.

  • GS_SORT-TABNAME = 'ITAB1'.

  • GS_SORT-SPOS = 1.

  • GS_SORT-UP = 'X'.

  • GS_SORT-SUBTOT = 'X'.

  • APPEND GS_SORT TO GT_SORT.

ENDFORM.

**----


**

    • TOP-OF-PAGE

**

**----


**

*TOP-OF-PAGE.

*

    • DESIGING REPORT FORMAT TO DISPLAY THE LIST

  • WRITE : /25 'Engine Receipts', SY-DATUM,

  • 79 'PAGE:',

  • 90 SY-PAGNO .

*

  • WRITE : /1(75) SY-ULINE.

*

  • WRITE : /1(18) 'MATERIAL',

  • 20(15) 'EQUIPMENT',

  • 36(18) 'QTY',

  • 55(15) 'SERIAL NO'.

*

  • WRITE : /1(75) SY-ULINE.

**eject

**----


**

    • END-OF-PAGE

**

**----


*

*END-OF-PAGE.

*&----


*

*& Form display_data_prc

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*****ALV for DETAILED

FORM DISPLAY_DATA_DT .

I_LAYOUT-ZEBRA = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = V_REPID

IS_LAYOUT = I_LAYOUT

IT_FIELDCAT = I_FIELDCAT

IT_SORT = GT_SORT[]

I_DEFAULT = 'X'

I_SAVE = 'A'

IT_EVENTS = I_EVENTS

TABLES

T_OUTTAB = ITAB1

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.

*&----


*

*& Form event_build_prc

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM EVENT_BUILD_PRC .

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = I_EVENTS.

READ TABLE I_EVENTS

WITH KEY NAME = SLIS_EV_TOP_OF_PAGE

INTO WA_EVENTS.

IF SY-SUBRC = 0.

MOVE 'ALV_TOP_OF_PAGE' TO WA_EVENTS-FORM.

MODIFY I_EVENTS FROM WA_EVENTS INDEX SY-TABIX.

ENDIF.

ENDFORM. " event_build_prc

----


  • FORM ALV_TOP_OF_PAGE *

----


FORM ALV_TOP_OF_PAGE. "#EC CALLED

DATA : V_TXT(30) TYPE C.

CLEAR: I_LIST_COMMENTS[].

CLEAR V_TXT.

WA_LIST_COMMENTS-TYP = 'S'. " H = Header, S = Selection, A = Action

WA_LIST_COMMENTS-KEY = ''.

CONCATENATE 'Plant : '

S_WERKS INTO V_TXT.

WA_LIST_COMMENTS-INFO = V_TXT.

APPEND WA_LIST_COMMENTS TO I_LIST_COMMENTS.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

  • i_logo = 'ENJOYSAP_LOGO'

IT_LIST_COMMENTARY = I_LIST_COMMENTS.

ENDFORM. "alv_top_of_page

3 REPLIES 3
Read only

Former Member
0 Likes
551

hi,

* LOOP AT ITAB1.    --> when u r using for all entries in itab1, no need to use loop at itab1.
*IF NOT ITAB1[] IS INITIAL.*
SELECT EQUI~MATNR
EQUI~SERNR
EQUI~EQUNR
INTO CORRESPONDING FIELDS OF TABLE ITAB4
FROM EQUI
FOR ALL ENTRIES IN ITAB1
WHERE MATNR = ITAB1-MATNR.
IF SY-SUBRC = 0.
* ENDLOOP.
LOOP AT ITAB1.
 *READ TABLE ITAB4 WITH KEY MATNR = ITAB1-MATNR BINARY SEARCH. -> for 1 material u need may serial nos use  Loop
LOOP AT ITAB4 WHERE MATNR = ITAB1-MATNR

MOVE ITAB4-MATNR TO ITAB1-MATNR.
MOVE ITAB4-SERNR TO ITAB1-SERNR.
MOVE ITAB4-EQUNR TO ITAB1-EQUNR.
MODIFY ITAB1.

APPEND ITAB1. 
CLEAR ITAB1.
ENDLOOP.
ENDIF.
ENDIF.

Read only

0 Likes
551

hi,

thanks for ur immediate reponse.

ur code

LOOP AT ITAB4 WHERE MATNR = ITAB1-MATNR.

MOVE ITAB4-MATNR TO ITAB1-MATNR.

MOVE ITAB4-SERNR TO ITAB1-SERNR.

MOVE ITAB4-EQUNR TO ITAB1-EQUNR.

MODIFY ITAB1.

APPEND ITAB1.

CLEAR ITAB1.

ENDLOOP.

not working paaa..

pls suggest some idea

able to get my point

Read only

0 Likes
551

did u loop at itab1 first??

LOOP AT ITAB1.
LOOP AT ITAB4 WHERE MATNR = ITAB1-MATNR.

MOVE ITAB4-MATNR TO ITAB1-MATNR.
MOVE ITAB4-SERNR TO ITAB1-SERNR.
MOVE ITAB4-EQUNR TO ITAB1-EQUNR.
MODIFY ITAB1.

APPEND ITAB1.
CLEAR ITAB1.
ENDLOOP.
ENDLOOP.