Thursday, 8 November 2012

INTERACTIVE REPORT KNA1 TO VBAK


*&---------------------------------------------------------------------*
*& Report  ZSS_TEST_002
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zss_test_002.
TABLES: kna1,vbak.
TYPES: BEGIN OF ty_kna1,
          kunnr TYPE kunnr,          "Customer Number 1
          land1 TYPE land1_gp,       "Country key
          name1 TYPE name1_gp,       "Name 1
       END OF ty_kna1,

       BEGIN OF ty_vbak,
          vbeln TYPE vbeln_va,       "Sales document
          erdat TYPE erdat,          "Date on Which Record Was Created
          erzet TYPE erzet,          "Entry time
          kunnr TYPE kunag,          "Sold-to party

       END OF ty_vbak.

DATA: it_kna1 TYPE STANDARD TABLE OF ty_kna1 INITIAL SIZE 0,
      wa_kna1 TYPE ty_kna1,
      it_vbak TYPE STANDARD TABLE OF ty_vbak INITIAL SIZE 0,
      wa_vbak TYPE ty_vbak,
      lv_kunnr TYPE kna1-kunnr.




SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:s_kunnr FOR kna1-kunnr.
SELECTION-SCREEN:END OF BLOCK a1.

INITIALIZATION.
  CLEAR: wa_kna1,
         wa_vbak.
  REFRESH: it_kna1,
           it_vbak.

AT SELECTION-SCREEN.
  IF s_kunnr IS NOT INITIAL.
    SELECT SINGLE kunnr
    FROM kna1
    INTO lv_kunnr
    WHERE kunnr IN s_kunnr.
    IF sy-subrc NE 0.
      MESSAGE:'Customer Number does not exist' TYPE'E'.
    ENDIF.
  ENDIF.


START-OF-SELECTION.
  SELECT kunnr
         land1
         name1
   FROM kna1
   INTO TABLE it_kna1
   WHERE kunnr IN s_kunnr.

  IF sy-subrc EQ 0.
    SORT it_kna1 BY kunnr.
  ENDIF.

END-OF-SELECTION.
  IF it_kna1 IS NOT INITIAL.

    LOOP AT it_kna1 INTO wa_kna1.

      WRITE: / wa_kna1-kunnr,
               wa_kna1-land1,
               wa_kna1-name1.


      HIDE wa_kna1-kunnr.
    ENDLOOP.
  ENDIF.


AT LINE-SELECTION.
  SELECT  vbeln            "Sales document
          erdat                    "Date on Which Record Was Created
          erzet                    "Entry time
          kunnr                  "Sold-to party

   FROM vbak
   INTO TABLE it_vbak
   WHERE kunnr = wa_kna1-kunnr.
  IF sy-subrc EQ 0.
    SORT it_vbak BY vbeln.
  ENDIF.

  IF it_vbak IS NOT INITIAL.
    LOOP AT it_vbak INTO wa_vbak.

      WRITE: / wa_vbak-vbeln,
               wa_vbak-erdat,
               wa_vbak-erzet,
               wa_vbak-kunnr.



    ENDLOOP.
  ENDIF.

No comments: