Thursday, 11 April 2013

MATERIAL SALES VIEW IN SAP ABAP


REPORT  ZRA_TEST_023 LINE-SIZE 140
                 LINE-COUNT 60(3)
                 MESSAGE-ID zsaki
                 NO STANDARD PAGE HEADING.
INCLUDE ZRA_TEST_023_data.           "Data Declaration
INCLUDE ZRA_TEST_023_sel.            "Selection Screen
INCLUDE ZRA_TEST_023_form.           "Subroutines

INITIALIZATION.

AT SELECTION-SCREEN OUTPUT.


  perform output.

START-OF-SELECTION.

  IF r1 = 'X'.
    PERFORM sales_data.
    PERFORM display_data.
  ENDIF.

  IF r2 = 'X'.
    PERFORM material_data.
    PERFORM display1_data.
  ENDIF.


*&---------------------------------------------------------------------*
*&  Include           ZRA_TEST_023_DATA
*&---------------------------------------------------------------------*

TYPES : BEGIN OF ty_vbak,
        vbeln TYPE vbeln_va,
        vkorg TYPE vkorg,
        erdat TYPE erdat,
        ernam TYPE ernam,
        vtweg TYPE vtweg,
        spart TYPE spart,
        END OF ty_vbak,

        BEGIN OF ty_vbap,
        vbeln TYPE vbeln_va,
        posnr TYPE posnr,
        matnr TYPE matnr,
        netwr TYPE netwr_ap,
        END OF ty_vbap,
        BEGIN OF ty_mara,
        matnr TYPE matnr,
        mbrsh TYPE mbrsh ,
        mtart TYPE mtart,
        matkl TYPE matkl,
        meins TYPE meins,
        END OF ty_mara,

        BEGIN OF ty_makt,
        matnr TYPE matnr,
        maktx TYPE maktx,
        maktg TYPE maktg,
        spras TYPE spras,
        END OF ty_makt,


        BEGIN OF ty_main,
        vbeln TYPE vbeln_va,
        vkorg TYPE vkorg,
        erdat TYPE erdat,
        ernam TYPE ernam,
        vtweg TYPE vtweg,
        spart TYPE spart,
        posnr TYPE posnr,
        matnr TYPE matnr,
        netwr TYPE netwr_ap,
        END OF ty_main,

        BEGIN OF ty_main1,
        matnr TYPE matnr,
        mbrsh TYPE mbrsh ,
        mtart TYPE mtart,
        matkl TYPE matkl,
        meins TYPE meins,
        maktx TYPE maktx,
        maktg TYPE maktg,
        spras TYPE spras,
        END OF ty_main1.

DATA :  it_vbak TYPE STANDARD TABLE OF ty_vbak INITIAL SIZE 0,
        wa_vbak TYPE ty_vbak,

        it_vbap TYPE STANDARD TABLE OF ty_vbap INITIAL SIZE 0,
        wa_vbap TYPE ty_vbap,

        it_main TYPE STANDARD TABLE OF ty_main INITIAL SIZE 0,
        wa_main TYPE ty_main,


        it_mara TYPE STANDARD TABLE OF ty_mara INITIAL SIZE 0,
        wa_mara TYPE ty_mara,
        it_makt TYPE STANDARD TABLE OF ty_makt INITIAL SIZE 0,
        wa_makt TYPE ty_makt,

        it_main1 TYPE STANDARD TABLE OF ty_main1 INITIAL SIZE 0,
        wa_main1 TYPE ty_main1,

        v_vbeln TYPE vbeln_va,
        v_matnr TYPE matnr.
*&---------------------------------------------------------------------*
*&  Include           ZRA_TEST_023_SEL

*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME TITLE text-000.
PARAMETERS : r1 RADIOBUTTON GROUP gp1 DEFAULT 'X' USER-COMMAND aaa,
             r2 RADIOBUTTON GROUP gp1.
SELECTION-SCREEN END OF BLOCK b0.


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:  s_vbeln FOR v_vbeln MODIF ID bbb.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECT-OPTIONS:  s_matnr FOR v_matnr MODIF ID  ccc.
SELECTION-SCREEN END OF BLOCK b2.
*&---------------------------------------------------------------------*
*&  Include           ZRA_TEST_023_FORM
*&  Subroutines
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form Clear
*&---------------------------------------------------------------------*
* text
*&---------------------------------------------------------------------*
* -->p1           text
* -->p2           text
*&---------------------------------------------------------------------*


FORM clear.
  CLEAR: wa_vbak,
         wa_mara,
         wa_makt,
         wa_vbap,
         wa_main,
         wa_main1.
  REFRESH: it_vbak,
           it_mara,
           it_makt,
           it_vbap,
           it_main,
           it_main1.
ENDFORM.                  "Clear

*&---------------------------------------------------------------------*
*&  Include           ZRA_TEST_023_FORM
*&---------------------------------------------------------------------*
*& Form output
*&---------------------------------------------------------------------*
* text
*&---------------------------------------------------------------------*
* -->p1           text
* -->p2           text
*&---------------------------------------------------------------------*
FORM output.


  LOOP AT SCREEN.
    IF r1 = 'X'.
      IF screen-group1 = 'CCC'.
        screen-active = 0.
      ENDIF.
      MODIFY SCREEN.

    ENDIF.

    IF r2 = 'X'.
      IF screen-group1 = 'BBB'.
        screen-active = 0.
      ENDIF.
      MODIFY SCREEN.

    ENDIF.
  ENDLOOP.
  endform.



*&---------------------------------------------------------------------*
*&      Form  sales_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sales_data .

  SELECT vbeln
         vkorg
         erdat
         ernam
         vtweg
         spart
         FROM vbak
         INTO TABLE it_vbak
         WHERE vbeln IN s_vbeln.
  IF sy-subrc = 0.
    SORT it_vbak BY vbeln.
  ELSE.
    MESSAGE e000.
  ENDIF.

  IF NOT it_vbak[] IS INITIAL.
    SELECT vbeln
           posnr
           matnr
           netwr
           FROM vbap
           INTO TABLE it_vbap
           FOR ALL ENTRIES IN it_vbak
           WHERE vbeln = it_vbak-vbeln.

    IF sy-subrc = 0.
      DELETE ADJACENT DUPLICATES FROM it_vbap COMPARING vbeln.
    ELSE.
      MESSAGE e001.
    ENDIF.
  ENDIF.

  LOOP AT it_vbap INTO wa_vbap.
    wa_main-vbeln = wa_vbap-vbeln.
    wa_main-posnr = wa_vbap-posnr.
    wa_main-matnr = wa_vbap-matnr.
    wa_main-netwr = wa_vbap-netwr.
    READ TABLE it_vbak INTO wa_vbak WITH KEY vbeln = wa_vbap-vbeln BINARY SEARCH.
    IF sy-subrc EQ 0.
      wa_main-vkorg = wa_vbak-vkorg.
      wa_main-erdat = wa_vbak-erdat.
      wa_main-ernam = wa_vbak-ernam.
      wa_main-vtweg = wa_vbak-vtweg.
      wa_main-spart = wa_vbak-spart.
    ENDIF.
    APPEND wa_main TO it_main.
  ENDLOOP.

ENDFORM.                    " sales_data

*&---------------------------------------------------------------------*
*&      Form  material_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM material_data .

  SELECT matnr
        mbrsh
        mtart
        matkl
        meins
        FROM mara
         INTO TABLE it_mara
         WHERE matnr IN s_matnr.


  SELECT matnr
    maktx
    maktg
    spras
  FROM makt
       INTO TABLE it_makt
       FOR ALL ENTRIES IN it_mara
       WHERE matnr = it_mara-matnr.

  LOOP AT it_makt INTO wa_makt.
    wa_main1-matnr = wa_makt-matnr.
    wa_main1-maktx = wa_makt-maktx.
    wa_main1-maktg = wa_makt-maktg.
    wa_main1-spras = wa_makt-spras.
    READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_makt-matnr BINARY SEARCH.
    IF sy-subrc EQ  0.
      wa_main1-mbrsh = wa_mara-mbrsh.
      wa_main1-mtart = wa_mara-mtart.
      wa_main1-matkl = wa_mara-matkl.
      wa_main1-meins = wa_mara-meins.
    ENDIF.
    APPEND wa_main1 TO it_main1.
  ENDLOOP.

ENDFORM.                    " material_data

END-OF-SELECTION.

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

FORM display_data .

  LOOP AT it_main INTO wa_main.
     WRITE:/ wa_main-vbeln,
             wa_main-vkorg,
             wa_main-erdat,
             wa_main-ernam,
             wa_main-vtweg,
             wa_main-spart,
             wa_main-posnr,
             wa_main-matnr,
             wa_main-netwr.
  ENDLOOP.

ENDFORM.                    " display_data

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

FORM display1_data .

  LOOP AT it_main1 INTO wa_main1.
    WRITE:/ wa_main1-matnr,
      wa_main1-mbrsh,
      wa_main1-mtart,
      wa_main1-matkl,
      wa_main1-meins,
      wa_main1-maktx,
wa_main1-maktg,
wa_main1-spras.

  ENDLOOP.

ENDFORM.                    " display1_data

No comments: