cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

loop at itab

Former Member
0 Likes
1,267

Hi experts,

Iam trying to display report like this.


fld1                   fld2                     fld3
---------------------------------------------------------
WQIYDGIWEUDOIUWQL      Site Management          shorttext
                       Material Management      shorttext
                       Quality Management       shorttext
---------------------------------------------------------

The above details are in one row.

fld2 details are in one ITAB1(since many rows are there).

fld3 details are in one itab2(since many rows are there).

While iam looping the above tables, iam getting like this.


fld1                   fld2                     fld3
---------------------------------------------------------
WQIYDGIWEUDOIUWQL      Site Management          
                       Material Management      
                       Quality Management       shorttext
                                                shorttext
                                                shorttext
---------------------------------------------------------

Iam getting some space at FLD3.How can i move up that FLD3 values? Here is my code.

itab1(fld2 see above)


LOOP AT T_DET.
    LOOP AT T_LONG WHERE QMNUM = T_DET-QMNUM.
          FCOUNT = FCOUNT + 1.
          IF FCOUNT = 1.           " IF IT IS FIRST ROW
            <b>WRITE: 42(25) T_LONG-LTEXT.</b>
          ELSE.
            <b>WRITE:/42(25) T_LONG-LTEXT.</b>
          ENDIF.        
        ENDLOOP.

itab2(fild 3)


        SCOUNT = 0.
        LOOP AT ITAB WHERE QMNUM = T_DET-QMNUM.
          SCOUNT = SCOUNT + 1.
          IF SCOUNT EQ 1.
            <b>WRITE:110(80) ITAB-DESC.</b>
          ELSE.
           <b> WRITE:/110(80) ITAB-DESC.</b>
          ENDIF.          
        ENDLOOP.
 ENDLOOP.

Can any one tell me where to make changes?

reward guaranteed

kaki

View Entire Topic
Former Member
0 Likes

Can you post your full src code with tables declaration so that we could help you on that.

Former Member
0 Likes

HI Wenceslaus G

This is my code.Just enter the dates in the selection screen.



REPORT  YQM_NOTIFICATION
            MESSAGE-ID  ZM
            NO STANDARD PAGE HEADING
            LINE-SIZE 187
            LINE-COUNT 65(1).

*&---------------------------------------------------------------------*
* Tables
*&---------------------------------------------------------------------*

TABLES: QPCT,
        QPGT,
        QMEL,
        QMMA,
        COBRB,
        CSKT,
        AUFK,
        IHPA,
        HRP1000.

*&---------------------------------------------------------------------*
* Data Declarations
*&---------------------------------------------------------------------*

DATA:F_TDOBJECT LIKE THEAD-TDOBJECT,
     F_TDNAME   LIKE THEAD-TDNAME,
     F_TDID     LIKE THEAD-TDID,
     ITAB_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE.

DATA:BEGIN OF ITAB OCCURS 10,
      QMNUM LIKE QMEL-QMNUM,
      DESC(140),
     END OF ITAB.

DATA: T_ITAB LIKE ITAB OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF T_HDR OCCURS 0,
        GROUP LIKE QPGT-CODEGRUPPE,
        CODE LIKE QPCT-CODE,
        TEXT LIKE QPCT-KURZTEXT,
        NAME(32), " LIKE QPGT-KURZTEXT,
      END OF T_HDR.


DATA: BEGIN OF T_DET OCCURS 10,
       SNO TYPE I,
       QMNUM LIKE QMEL-QMNUM,
       QMART LIKE QMEL-QMART,
       MCTXT LIKE CSKT-MCTXT,
       REFNUM LIKE QMEL-REFNUM,
       PARNR LIKE IHPA-PARNR,
       QMTXT LIKE QMEL-QMTXT,
       QMGRP LIKE QMEL-QMGRP,
       QMCOD LIKE QMEL-QMCOD,
       OBJNR LIKE QMEL-OBJNR,
       AUFNR LIKE AUFK-AUFNR,
       KOSTL LIKE AUFK-KOSTL,
       DESC(140),
       MANUM LIKE QMMA-MANUM,
       MNCOD LIKE QMMA-MNCOD,
       TDNAME(16),
      END OF T_DET.

DATA: BEGIN OF T_COBRB OCCURS 0,
       OBJNR LIKE COBRB-OBJNR,
       KOSTL LIKE COBRB-KOSTL,
       LTEXT LIKE CSKT-LTEXT,
      END OF T_COBRB.

DATA: BEGIN OF T_LONG OCCURS 0,
        QMNUM LIKE QMEL-QMNUM,
        LTEXT LIKE CSKT-LTEXT,
      END OF T_LONG.

DATA: T_FINAL LIKE T_DET OCCURS 0 WITH HEADER LINE.


DATA: SNO(3).
DATA: CHKET(2).
DATA: G_CHK3(4).
DATA: FLAG.
DATA: ETNUM LIKE AUFK-AUFNR.

*&---------------------------------------------------------------------*
* Selection Screen
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:S_QMNUM FOR QMEL-QMNUM,
                  S_QMART FOR QMEL-QMART,
                  S_QMDAT FOR QMEL-QMDAT.

SELECTION-SCREEN END OF BLOCK A1.


*&---------------------------------------------------------------------*
* Data Selection
*&---------------------------------------------------------------------*
TOP-OF-PAGE.
  PERFORM SET_PAGE_HEADER.

END-OF-PAGE.

START-OF-SELECTION.
  PERFORM GET_DATA.
  PERFORM DISPLAY_DATA.

END-OF-SELECTION.

*&--------------------------------------------------------------------*
*&      FORM  GET_DATA
*&--------------------------------------------------------------------*

FORM GET_DATA.

*--TO GET HEADER
  SELECT CODEGRUPPE CODE KURZTEXT FROM QPCT INTO TABLE T_HDR
                                  WHERE KATALOGART = 'D' AND
                               CODEGRUPPE BETWEEN 'ET001' AND
                                                  'ET006'.

  LOOP AT T_HDR.
    SELECT SINGLE * FROM QPGT WHERE CODEGRUPPE = T_HDR-GROUP AND
                                    KATALOGART = 'D' AND
                                    SPRACHE = 'EN'.
    IF SY-SUBRC = 0.
      T_HDR-NAME = QPGT-KURZTEXT.
      MODIFY T_HDR.
      CLEAR T_HDR.
    ENDIF.
  ENDLOOP.

*--TO GET DETAILS

  SELECT QMNUM REFNUM QMDAT QMTXT OBJNR QMGRP QMCOD QMART
    FROM QMEL
    INTO CORRESPONDING FIELDS OF TABLE T_DET
                              WHERE QMNUM IN S_QMNUM AND
                                    QMART IN S_QMART AND
                                    QMDAT IN S_QMDAT.


  IF SY-SUBRC NE 0.
    MESSAGE S000(ZM) WITH 'No data found on this selection !'.
    LEAVE LIST-PROCESSING.
  ENDIF.

  LOOP AT T_DET.
    G_CHK3 = T_DET-QMNUM+0(4).
    IF G_CHK3 EQ '0003'.
      DELETE T_DET INDEX SY-TABIX.
    ENDIF.
  ENDLOOP.


  LOOP AT T_DET.
    SELECT SINGLE * FROM QMMA WHERE QMNUM = T_DET-QMNUM AND
                                  MNCOD = '100'.
    IF SY-SUBRC = 0.
      T_DET-MANUM = QMMA-MANUM.
      T_DET-MNCOD = '100'.
      MODIFY T_DET.
    ENDIF.
    CONCATENATE T_DET-QMNUM T_DET-MANUM INTO T_DET-TDNAME.

    IF T_DET-MNCOD = '100'.


*-- to get long text
      F_TDID     = 'LTQM'.
*    F_TDNAME   = T_DET-QMNUM.
      F_TDNAME = T_DET-TDNAME.
      F_TDOBJECT = 'QMMA'.

      CALL FUNCTION 'READ_TEXT'
        EXPORTING
          CLIENT                  = SY-MANDT
          ID                      = F_TDID
          LANGUAGE                = SY-LANGU
          NAME                    = F_TDNAME
          OBJECT                  = F_TDOBJECT
        TABLES
          LINES                   = ITAB_LINES
        EXCEPTIONS
          ID                      = 1
          LANGUAGE                = 2
          NAME                    = 3
          NOT_FOUND               = 4
          OBJECT                  = 5
          REFERENCE_CHECK         = 6
          WRONG_ACCESS_TO_ARCHIVE = 7
          OTHERS                  = 8.
      DESCRIBE TABLE ITAB_LINES LINES SY-TFILL.
      IF SY-TFILL > 0.
        LOOP AT ITAB_LINES.
          ITAB-QMNUM = T_DET-QMNUM.
          ITAB-DESC = ITAB_LINES-TDLINE.
          APPEND ITAB.
          CLEAR ITAB.
        ENDLOOP.
      ENDIF.


*-- TO GET OBJNR FROM AUFK ( FOR PRODUCTION ORDER COST DISPLAY )

*      IF T_DET-QMNUM+0(2) NE 'ET'.
*        CONCATENATE 'ET0' T_DET-QMNUM+3(9) INTO ETNUM.
*      ELSE.
*        ETNUM = T_DET-QMNUM.
*      ENDIF.

      IF T_DET-QMNUM+0(1) NE 'E'.
        CONCATENATE 'E' T_DET-QMART T_DET-QMNUM+3(9) INTO ETNUM.
      ELSE.
        ETNUM = T_DET-QMNUM.
      ENDIF.


      SELECT SINGLE * FROM AUFK WHERE AUFNR = ETNUM AND
                                      KOKRS = '1000'.
      IF SY-SUBRC = 0.
        T_DET-AUFNR = AUFK-AUFNR.
        T_DET-KOSTL = AUFK-KOSTL.
        T_DET-OBJNR = AUFK-OBJNR.
        MODIFY T_DET.
      ENDIF.

    ENDIF. " MNCOD
  ENDLOOP.


  SELECT OBJNR KOSTL
            INTO CORRESPONDING FIELDS OF TABLE T_COBRB
                  FROM COBRB FOR ALL ENTRIES IN T_DET
                         WHERE OBJNR = T_DET-OBJNR.

  LOOP AT T_COBRB.
    SELECT SINGLE * FROM CSKT WHERE SPRAS = 'EN' AND
                                    KOKRS = '1000' AND
                                    KOSTL = T_COBRB-KOSTL.
    IF SY-SUBRC = 0.
      T_COBRB-LTEXT = CSKT-LTEXT.
      MODIFY T_COBRB.
    ENDIF.
  ENDLOOP.

*  LOOP AT T_COBRB.
*    LOOP AT T_DET WHERE OBJNR NE T_COBRB-OBJNR.
*      DELETE T_DET INDEX SY-TABIX.
*    ENDLOOP.
*  ENDLOOP.

  LOOP AT T_COBRB.
    LOOP AT T_DET WHERE OBJNR = T_COBRB-OBJNR.
      T_LONG-QMNUM = T_DET-QMNUM.
      T_LONG-LTEXT = T_COBRB-LTEXT.
      APPEND T_LONG.
    ENDLOOP.
  ENDLOOP.


  DELETE T_LONG WHERE LTEXT = ''.

  SORT T_DET.
  DELETE ADJACENT DUPLICATES FROM T_DET.

ENDFORM.                    "GET_DATA

*&--------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM DISPLAY_DATA.
  DATA: NUM(2).
  DATA: G_NAMES(100).
  DATA: G_LEN(2) TYPE N.
  DATA: FCOUNT TYPE I.
  DATA: MCOUNT TYPE I.
  DATA: SCOUNT TYPE I.


  LOOP AT T_HDR.
    LOOP AT T_DET WHERE QMGRP = T_HDR-GROUP AND
                        QMCOD = T_HDR-CODE.

      IF T_DET-MNCOD EQ '100'.
        FLAG = 'X'.

        ULINE.
        CONCATENATE T_HDR-NAME '-' T_HDR-TEXT INTO G_NAMES.
        CONDENSE G_NAMES.
*      write:/ t_hdr-name, '-', t_hdr-text.
        WRITE: G_NAMES.
        G_LEN = STRLEN( G_NAMES ).
        WRITE:/ SPACE.
        WRITE AT 1(G_LEN) SY-ULINE.
        ULINE.
        NUM = 0.

        SNO = SNO + 1.
        NUM = NUM + 1.
        IF NUM GT 1.
          ULINE.
        ENDIF.


        WRITE:/ SPACE, SNO,
              7(15) T_DET-QMNUM,
             19(20) T_DET-REFNUM,
             69(40) T_DET-QMTXT.


        PERFORM VLINES.

<b>        FCOUNT = 0.
        LOOP AT T_LONG WHERE QMNUM = T_DET-QMNUM.
          FCOUNT = FCOUNT + 1.
          IF FCOUNT = 1.
            WRITE: 42(25) T_LONG-LTEXT.
          ELSE.
            WRITE:/42(25) T_LONG-LTEXT.
          ENDIF.
          PERFORM VLINES.
        ENDLOOP.</b>

<b>        FCOUNT = 0.
        LOOP AT ITAB WHERE QMNUM = T_DET-QMNUM.
          FCOUNT = FCOUNT + 1.
          IF FCOUNT EQ 1.
            WRITE:110(80) ITAB-DESC.
          ELSE.
            WRITE:/110(80) ITAB-DESC.
          ENDIF.
          PERFORM VLINES.
        ENDLOOP.</b>

      ENDIF.
    ENDLOOP.
  ENDLOOP.
  ULINE.
ENDFORM.                    "GET_DATA


*&--------------------------------------------------------------------*
*&      Form  set_page_header
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM SET_PAGE_HEADER .

  DATA:IT_T247 TYPE STANDARD TABLE OF T247 WITH HEADER LINE.
  DATA: G_HEAD(72).
  DATA: V_MONTH(9), V_YEAR(4).
  V_MONTH = S_QMDAT-HIGH+4(2).
  V_YEAR = S_QMDAT-HIGH+0(4).

*  CALL FUNCTION 'MONTH_NAMES_GET'
*    EXPORTING
*      LANGUAGE              = SY-LANGU
*    TABLES
*      month_names           = it_t247
*    EXCEPTIONS
*      MONTH_NAMES_NOT_FOUND = 1
*      OTHERS                = 2.
*  read table it_t247 with key mnr = v_month.
*  v_month = it_t247-ktx.

  IF FLAG = 'X'.

    IF V_MONTH = '01'.
      V_MONTH = 'January'.
    ELSEIF V_MONTH = '02'.
      V_MONTH = 'February'.
    ELSEIF V_MONTH = '03'.
      V_MONTH = 'March'.
    ELSEIF V_MONTH = '04'.
      V_MONTH = 'April'.
    ELSEIF V_MONTH = '05'.
      V_MONTH = 'May'.
    ELSEIF V_MONTH = '06'.
      V_MONTH = 'June'.
    ELSEIF V_MONTH = '07'.
      V_MONTH = 'July'.
    ELSEIF V_MONTH = '08'.
      V_MONTH = 'August'.
    ELSEIF V_MONTH = '09'.
      V_MONTH = 'September'.
    ELSEIF V_MONTH = '10'.
      V_MONTH = 'October'.
    ELSEIF V_MONTH = '11'.
      V_MONTH = 'November'.
    ELSEIF V_MONTH = 12.
      V_MONTH = 'December'.
    ENDIF.


    IF S_QMDAT-LOW NE '00000000' AND S_QMDAT-HIGH NE '00000000'.
      CONCATENATE 'ET Raised in' V_MONTH V_YEAR INTO
                               G_HEAD SEPARATED BY SPACE.
      WRITE:/50(35) G_HEAD.
      WRITE:/50(27) SY-ULINE.
    ELSE.
      WRITE:/50(25)'ET details'.
      WRITE:/50(10) SY-ULINE.
    ENDIF.

    SKIP.
    ULINE.

    WRITE :1(6)  ' S.N0'    COLOR COL_HEADING,
           7(15) 'REF NO'               COLOR COL_HEADING,
           21(21) 'CONTRACT NO'              COLOR COL_HEADING,
           42(27) 'A-DIV'       COLOR COL_HEADING,
           69(44) 'DESCRIPTION'       COLOR COL_HEADING,
           110(75) 'DEFECT'      COLOR COL_HEADING.

    PERFORM VLINES.
  ELSE.
    MESSAGE S000(ZM) WITH 'No data found on this selection !'.
    LEAVE LIST-PROCESSING.
  ENDIF.
ENDFORM.                    " set_page_header

*&--------------------------------------------------------------------*
*&      Form  VLINES
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM VLINES.
  WRITE : 1 SY-VLINE,  6 SY-VLINE, 18 SY-VLINE, 40 SY-VLINE,
   68 SY-VLINE, 109 SY-VLINE , 187 SY-VLINE.
ENDFORM.                    "VLINES