MODULE - 2 | LIST GENERATION TECHNIQUES ( REPORT.PDF )

REPORT NAME: REPORT Z20382363_REPORTS.

QUESTION - 01


* QUESTION - 01
SELECT BUKRS, AUGBL, KOART, MWSKZ FROM BSEG
  INTO TABLE @DATA(LT_BSEG).
LOOP AT LT_BSEG INTO DATA(LS_LSEG).
  AT FIRST.
    WRITE: 'COMPANY CODE',30 'DOCUMENT NUMBER',60 'ACCOUNT TYPE',90 'TAX CODE'.
    SKIP.
  ENDAT.
  WRITE: / LS_LSEG-BUKRS, 30 LS_LSEG-AUGBL, 60 LS_LSEG-KOART, 90 LS_LSEG-MWSKZ.
ENDLOOP.


QUESTION - 02


*QUESTION - 02
TYPES: BEGIN OF TYPE,
       VBELN TYPE VBAP-VBELN,
       MATNR TYPE VBAP-MATNR,
       ERDAT TYPE VBAK-ERDAT,
       ERNAM TYPE VBAK-ERNAM,
       AUART TYPE VBAK-AUART,
       KONDA TYPE VBKD-KONDA,
       KDGRP TYPE VBKD-KDGRP,
       END OF TYPE.
DATA LS_MAT TYPE TYPE.
DATA LT_MAT TYPE TABLE OF TYPE.
SELECT A~VBELN, A~MATNR, B~ERDAT, B~ERNAM, B~AUART, C~KONDA, C~KDGRP FROM VBAP AS A
  INNER JOIN VBAK AS B ON A~VBELN = B~VBELN
  INNER JOIN VBKD AS C
  ON A~VBELN = C~VBELN
  INTO TABLE @LT_MAT.
SORT LT_MAT STABLE BY MATNR ASCENDING.
IF SY-SUBRC = 0.
  LOOP AT LT_MAT INTO LS_MAT.
    AT FIRST.
      WRITE: / 'SALES DOCUMENT', 25 'MATERIAL NUBER', 50 'DATE', 75 'USER NAME', 100 'SALES DOCUMENT TYPE', 125 'PRICE GROUP', 150 'CUSTOMER GROUP'.
    ENDAT.
    WRITE: / LS_MAT-VBELN, 25 LS_MAT-MATNR, 50 LS_MAT-ERDAT, 75 LS_MAT-ERNAM, 100 LS_MAT-AUART, 125 LS_MAT-KONDA, 150 LS_MAT-KDGRP.
  ENDLOOP.
  ELSE.
    MESSAGE 'RECORD NOT FOUND' TYPE 'E'.
ENDIF.


QUESTION - 03

*QUESTION - 03
TYPES: BEGIN OF BSIS_TYPE,
  MANDT TYPE BSIS-MANDT,
  BUKRS TYPE BSIS-BUKRS,
  AUGDT TYPE BSIS-AUGDT,
  AUGBL TYPE BSIS-AUGBL,
  BELNR TYPE BSIS-BELNR,
  BUDAT TYPE BSIS-BUDAT,
  END OF BSIS_TYPE.
DATA T_BSIS TYPE TABLE OF BSIS_TYPE.
DATA F_BSIS TYPE BSIS_TYPE.
SELECT MANDT, BUKRS, AUGDT, AUGBL, BELNR, BUDAT FROM BSIS
  INTO TABLE @T_BSIS.
IF SY-SUBRC = 0.
SORT T_BSIS STABLE BY BUKRS.
LOOP AT T_BSIS INTO F_BSIS.
  AT FIRST.
    WRITE: / 'CLIENT', 20 'COMPANY CODE', 40 'CLEARING DATE', 60 'DOCUMENT NUMBER', 80 'ACCOUNTING DOCUMENT NUMBER', 120 'POSTING DATE'.
  ENDAT.
  WRITE: / F_BSIS-MANDT, 20 F_BSIS-BUKRS, 40 F_BSIS-AUGDT, 60 F_BSIS-AUGBL, 80 F_BSIS-BELNR, 120 F_BSIS-BUDAT.
ENDLOOP.
ENDIF.


QUESTION - 04


*QUESTION - 04
PARAMETERS MAT TYPE MTART.
SELECT * FROM MARA
  INTO TABLE @DATA(LT_MARA)
  WHERE MTART = @MAT.
IF SY-SUBRC <> 0.
  MESSAGE 'RECORD NOT FOUND' TYPE 'E'.
ENDIF.
SORT LT_MARA STABLE BY BRGEW ASCENDING.
LOOP AT LT_MARA INTO DATA(LS_MARA).
  AT FIRST.
    WRITE: / 'MATERIAL TYPE', 20 'MATERIAL NUMBER', 45 'UNIT OF MEASURE', 65 'GROSS WEIGHT'.
  ENDAT.
  WRITE: / LS_MARA-MTART,20 LS_MARA-MATNR,45 LS_MARA-MEINS, 65 LS_MARA-BRGEW.
ENDLOOP.


QUESTION - 05


*QUESTION - 05
DATA LV_SEATS TYPE SFLIGHT-SEATSMAX.
SELECT CARRID, SEATSMAX, SEATSOCC FROM SFLIGHT
  INTO TABLE @DATA(LT_SFLIGHT).
  IF SY-SUBRC <> 0.
    MESSAGE 'RECORD NOT FOUND' TYPE 'E'.
  ENDIF.
  LOOP AT LT_SFLIGHT INTO DATA(LS_SFLIGHT).
    AT NEW CARRID.
      ULINE.
      WRITE: / 'RECORDS FOR', LS_SFLIGHT-CARRID.
      ULINE.
      WRITE: / 'AIRLINE CODE',20 'MAXIMUM CAPACITY', 40 'OCCUPIED SEATS', 60 'AVAILABLE SEATS'.
      SKIP.
    ENDAT.
    LV_SEATS = LS_SFLIGHT-SEATSMAX - LS_SFLIGHT-SEATSOCC.
    WRITE: / LS_SFLIGHT-CARRID,20 LS_SFLIGHT-SEATSMAX,40 LS_SFLIGHT-SEATSOCC, 60 LV_SEATS.
    CLEAR LV_SEATS.
    AT END OF CARRID.
      ULINE.
      WRITE: 'END OF', LS_SFLIGHT-CARRID.
      ULINE.
    ENDAT.
   ENDLOOP.

QUESTION - 06


**QUESTION - 06
SELECT CARRID, FLDATE, PRICE, CONNID FROM SFLIGHT
  INTO TABLE @DATA(LT_SFLIGHT).
  IF SY-SUBRC <> 0.
    MESSAGE 'RECORD NOT FOUND' TYPE 'E'.
  ENDIF.
  LOOP AT LT_SFLIGHT INTO DATA(LS_SFLIGHT).
    AT FIRST.
      ULINE.
      WRITE: / 'BEFORE DELETING ENTRIES'.
      ULINE.
      WRITE: / 'AIRLINE CODE', 20 'FLIGHT DATE', 40 'AIRFARE'.
      SKIP.
    ENDAT.
    WRITE: / LS_SFLIGHT-CARRID, 20 LS_SFLIGHT-FLDATE, 40 LS_SFLIGHT-PRICE.
  ENDLOOP.
  DELETE LT_SFLIGHT WHERE CARRID NE 'LH'.
  FREE LS_SFLIGHT.
  DATA LV_PRICE TYPE SFLIGHT-PRICE.
  LOOP AT LT_SFLIGHT INTO LS_SFLIGHT.
    IF LS_SFLIGHT-CARRID = 'LH' AND LS_SFLIGHT-CONNID = 0400.
      LV_PRICE = LS_SFLIGHT-PRICE.
      LS_SFLIGHT-PRICE = 3 * LS_SFLIGHT-PRICE.
      MODIFY LT_SFLIGHT FROM LS_SFLIGHT.
      AT FIRST.
        ULINE.
        WRITE: / 'AFTER DELETING ENTRIES'.
        ULINE.
        WRITE: / 'AIRLINE CODE', 20 'FLIGHT DATE', 60 'AIRFARE BEFORE INCREMENT', 90 'AIRFARE AFTER INCREMENT'.
        SKIP.
      ENDAT.
      WRITE: / LS_SFLIGHT-CARRID, 20 LS_SFLIGHT-FLDATE, 60 LV_PRICE, 90 LS_SFLIGHT-PRICE.
      CLEAR LV_PRICE.
      ENDIF.
    ENDLOOP.


QUESTION - 07


*QUESTION - 07
SELECT * FROM VBAK
  INTO TABLE @DATA(LT_VBAK).
IF SY-SUBRC <> 0.
  MESSAGE 'RECORD NOT FOUND' TYPE 'E'.
ENDIF.
SORT LT_VBAK STABLE BY VBELN.
LOOP AT LT_VBAK INTO DATA(LS_VBAK).
  AT FIRST.
    ULINE.
    WRITE: / 'RECORDS BEFORE MODIFY' COLOR 6 INVERSE.
    ULINE.
    WRITE: / 'SALES DOCUMENT', 20 'SALES ORGANIZATION', 40 'NET VALUE', 80 'CURRENCY'.
    SKIP.
  ENDAT.
  WRITE: / LS_VBAK-VBELN, 20 LS_VBAK-VKORG, 40 LS_VBAK-NETWR, 80 LS_VBAK-WAERK.
  ENDLOOP.

   DESCRIBE TABLE LT_VBAK.
  SKIP 2.
  WRITE: / 'TOTAL RECORDS: ', SY-TFILL.
  SKIP 2.

  " DELETING LINES WITH SALES ORDER LOWER THAN 50,000.

  DELETE LT_VBAK WHERE NETWR LT 50000.
  FREE LS_VBAK.
  LOOP AT LT_VBAK INTO LS_VBAK.
  AT FIRST.
    ULINE.
  WRITE: / 'RECORDS AFTER DELETING SALES ORDER LOWER THAN 50000'.
  ULINE.
  WRITE: / 'SALES DOCUMENT', 20 'SALES ORGANIZATION', 40 'NET VALUE', 80 'CURRENCY'.
    SKIP.
  ENDAT.
  WRITE: / LS_VBAK-VBELN, 20 LS_VBAK-VKORG, 40 LS_VBAK-NETWR, 80 LS_VBAK-WAERK.
  ENDLOOP.

 DESCRIBE TABLE LT_VBAK.
  SKIP 2.
  WRITE: / 'TOTAL RECORDS: ', SY-TFILL.

  " REMOVING ALL CONTENTS

  CLEAR LT_VBAK.
  REFRESH LT_VBAK.


QUESTION - 08


*QUESTION - 08
SELECT A~LIFNR, A~NAME1, B~BUKRS, C~EKORG
  FROM LFA1 AS A
  INNER JOIN LFB1 AS B
  ON A~LIFNR = A~LIFNR
  INNER JOIN LFM1 AS C
  ON A~LIFNR = C~LIFNR
  INTO TABLE @DATA(LT_LF).
IF SY-SUBRC <> 0.
  MESSAGE 'RECORD NOT FOUND' TYPE 'E'.
ENDIF.
SORT LT_LF STABLE BY LIFNR.
LOOP AT LT_LF INTO DATA(LS_LF).
  AT FIRST.
    ULINE.
    WRITE: 'ALL RECORDS SORTED BY LIFNR' COLOR 3.
    ULINE.
    WRITE: / 'ACCOUNT NUMBER', 20 'COMPANY CODE', 40 'PURCHASING ORGANIZATION', 60 'NAME'.
  ENDAT.
  WRITE: / LS_LF-LIFNR,20 LS_LF-BUKRS,40 LS_LF-EKORG, 60 LS_LF-NAME1.
ENDLOOP.
CLEAR LS_LF.
LOOP AT LT_LF INTO LS_LF.
  IF LS_LF-LIFNR = '0000001005'.
    LS_LF-NAME1 = 'TRAINEE'.
    MODIFY LT_LF FROM LS_LF TRANSPORTING NAME1.
    AT FIRST.
    ULINE.
    WRITE: 'ALL RECORDS AFTER MODIFYING NAME FOR LIFNR = 000001005' COLOR 3.
    ULINE.
    WRITE: / 'ACCOUNT NUMBER', 20 'COMPANY CODE', 40 'PURCHASING ORGANIZATION', 60 'NAME'.
  ENDAT.
  WRITE: / LS_LF-LIFNR,20 LS_LF-BUKRS,40 LS_LF-EKORG, 60 LS_LF-NAME1.
  ENDIF.
ENDLOOP.



QUESTION - 09


*QUESTION - 09
DATA LV_MAT TYPE MATNR.
SELECT-OPTIONS SO_MAT FOR LV_MAT.

START-OF-SELECTION.
SELECT A~WERKS, A~LGORT, A~MATNR, B~MAKTX, A~LABST
  FROM MARD AS A
  INNER JOIN MAKT AS B
  ON A~MATNR = B~MATNR
  INTO TABLE @DATA(LT_MAT)
  WHERE A~MATNR IN @SO_MAT.

AT SELECTION-SCREEN.
  IF SY-SUBRC = 0.
    MESSAGE 'RECORD FETCHED SUCCESSFULLY' TYPE 'S'.
  ELSE.
    MESSAGE 'RECORD NOT EXIST' TYPE 'E'.
  ENDIF.

END-OF-SELECTION.
LOOP AT LT_MAT INTO DATA(LS_MAT).
  AT NEW MATNR.
    ULINE.
    WRITE: / 'START OF' COLOR 4, LS_MAT-MATNR COLOR 4.
    WRITE: / 'PLANT', 20 'STORAGE LOCATION', 40 'MATERIAL NUMBERS', 60 'DESCRIPTION', 80 'STOCK'.
    ULINE.
  ENDAT.
  WRITE: / LS_MAT-WERKS, 20 LS_MAT-LGORT, 40 LS_MAT-MATNR, 60 LS_MAT-MAKTX, 80 LS_MAT-LABST.
  AT END OF MATNR.
    SUM.
    ULINE.
    WRITE: / 'GRAND TOTAL: ' COLOR 4, LS_MAT-LABST COLOR 6.
    WRITE: / 'END OF' COLOR 4, LS_MAT-MATNR COLOR 4.
    ULINE.
    SKIP 2.
  ENDAT.
  ENDLOOP.

Comments