Displaying sales orders using ALV Tree (3-level)

By Rajiv V, Lanco

Source Code :  

*&---------------------------------------------------------------------*
*& Report  YRJ_ALV_TREE_CUST_ORDERS
*&
*& Description :  To display Sales orders for the given customers
*&                  using ALV Tree (3 Level)
*&
*& Created By : Rajiv. V
*& Module     : SD
*& Company    : Lanco Industries Ltd.
*&
*&---------------------------------------------------------------------
REPORT  yrj_alv_tree_cust_orders.

******Tables
TABLES : kna1.

********Types Declaration
TYPES : BEGIN OF ts_vbak,
        vbeln 
TYPE vbak-vbeln,        "Sales Order
        audat 
TYPE vbak-audat,        "Order Date
        kunnr 
TYPE vbak-kunnr,        "Customer No.
        
END OF ts_vbak,

        
BEGIN OF ts_vbap,
        vbeln 
TYPE vbap-vbeln,
        posnr 
TYPE vbap-posnr,        "Order Item
        kwmeng 
TYPE vbap-kwmeng,      "Net weight
        netpr 
TYPE vbap-netpr,        "Item Price
        
END OF ts_vbap,

        
BEGIN OF ts_kna1,
        kunnr 
TYPE kna1-kunnr,
        name1 
TYPE kna1-name1,        "Customer Name
        
END OF ts_kna1.

*******Internal Table declaration
DATA : lt_node TYPE TABLE OF snodetext,
       lt_vbak 
TYPE TABLE OF ts_vbak,
       lt_vbap 
TYPE TABLE OF ts_vbap,
       lt_kna1 
TYPE TABLE OF ts_kna1.

*******Work area declaration
DATA : ls_node TYPE snodetext,
       ls_vbak 
TYPE ts_vbak,
       ls_vbap 
TYPE ts_vbap,
       ls_kna1 
TYPE ts_kna1.

*******Variable Declaration
DATA : w_value(15TYPE c,
       w_qty 
TYPE kwmeng,
       w_amt 
TYPE netpr.

***************Selection screen
SELECT-OPTIONS : s_kunnr FOR kna1-kunnr.

*********Start of selection.
START-
OF-SELECTION.

  
PERFORM get_kna1.
  
PERFORM get_vbak.
  
PERFORM get_vbap.
  
PERFORM build_tree.

*************End of selection
END-OF-SELECTION.

  
PERFORM display_tree.
*&---------------------------------------------------------------------*
*&      Form  get_vbak
*&---------------------------------------------------------------------
FORM get_vbak .

  
SELECT vbeln
         audat
         kunnr
      
FROM vbak INTO TABLE lt_vbak
      
FOR ALL ENTRIES IN lt_kna1
      
WHERE kunnr EQ lt_kna1-kunnr.

  
IF sy-subrc NE 0.

    
MESSAGE 'No Orders found'(001TYPE 'I'.
    
LEAVE LIST-PROCESSING.

  
ENDIF.

ENDFORM.                    " get_vbak
*&---------------------------------------------------------------------*
*&      Form  build_tree
*&---------------------------------------------------------------------
FORM build_tree .

  
CLEAR : lt_node, ls_node.

  
SORT : lt_vbak BY kunnr vbeln,
         lt_vbap 
BY vbeln posnr,
         lt_kna1 
BY kunnr.

  ls_node-
type      = 'T'.
  ls_node-name      = 
'Orders of Customers'(002).
  ls_node-tlevel    = 
'01'.
  ls_node-nlength   = 
'20'.
  ls_node-
color     = '5'.
  ls_node-
text      = 'Orders'(003).
  ls_node-tlength   = 
'10'.
  ls_node-tcolor    = 
'3'.
  
APPEND ls_node TO lt_node.
  
CLEAR ls_node.

  ls_node-
type      = 'P'.
  ls_node-tlevel    = 
'2'.
  ls_node-
text      = 'Customer No'(004).
  ls_node-tlength   = 
'15'.
  ls_node-tcolor    = 
'7'.
  ls_node-text1      = 
'Customer Name'(005).
  ls_node-tlength1   = 
'30'.
  ls_node-tcolor1    = 
'7'.
  
APPEND ls_node TO lt_node.
  
CLEAR ls_node.

  
LOOP AT lt_kna1 INTO ls_kna1.

    
DATA : w_flg TYPE c,
           w_flg1 
TYPE c.

    ls_node-
type      = 'P'.
    ls_node-tlevel    = 
'2'.
    ls_node-
text      = ls_kna1-kunnr.
    ls_node-tlength   = 
'15'.
    ls_node-tcolor    = 
'1'.
    ls_node-text1     = ls_kna1-name1.
    ls_node-tlength1   = 
'30'.
    ls_node-tcolor1    = 
'1'.
    
APPEND ls_node TO lt_node.
    
CLEAR ls_node.

    
LOOP AT lt_vbak INTO ls_vbak WHERE kunnr EQ ls_kna1-kunnr.

      
IF w_flg1 IS INITIAL.

        w_flg1              = 
'X'.
        ls_node-
type      = 'P'.
        ls_node-tlevel    = 
'3'.
        ls_node-
text      = 'Sales Order'(006).
        ls_node-tlength   = 
'15'.
        ls_node-tcolor    = 
'7'.
        ls_node-text1      = 
'Order Date'(007).
        ls_node-tlength1   = 
'15'.
        ls_node-tcolor1    = 
'7'.
        
APPEND ls_node TO lt_node.
        
CLEAR ls_node.

      
ENDIF.

      ls_node-
type        = 'P'.
      ls_node-tlevel      = 
'3'.
      ls_node-
text        = ls_vbak-vbeln.
      ls_node-tlength     = 
15.
      ls_node-tcolor       = 
5.
      
CLEAR w_value.
      
WRITE ls_vbak-audat TO w_value.
      ls_node-text1       = w_value.
      ls_node-tlength1    = 
15.
      ls_node-tcolor1      = 
5.
      
APPEND ls_node TO lt_node.

      
CLEAR : w_qty, w_amt.

      
LOOP AT lt_vbap INTO ls_vbap WHERE vbeln EQ ls_vbak-vbeln.

        
IF w_flg IS INITIAL.

          w_flg             = 
'X'.
          ls_node-
type      = 'P'.
          ls_node-tlevel    = 
'4'.
          ls_node-
text      = 'Item'(008).
          ls_node-tlength   = 
'11'.
          ls_node-tcolor    = 
'7'.
          ls_node-text1      = 
'Net Weight'(009).
          ls_node-tlength1   = 
'15'.
          ls_node-tcolor1    = 
'7'.
          ls_node-text2      = 
'Net Price'(010).
          ls_node-tlength2   = 
'15'.
          ls_node-tcolor2    = 
'7'.
          
APPEND ls_node TO lt_node.
          
CLEAR ls_node.

        
ENDIF.

        ls_node-
type      = 'P'.
        ls_node-tlevel    = 
'4'.
        ls_node-
text      = ls_vbap-posnr.
        ls_node-tlength   = 
'11'.
        ls_node-tcolor    = 
'2'.

        
CLEAR w_value.
        w_value            = ls_vbap-kwmeng.
        ls_node-text1      = w_value.
        ls_node-tlength1   = 
'15'.
        ls_node-tcolor1    = 
'2'.

        
CLEAR w_value.
        w_value            = ls_vbap-netpr.
        ls_node-text2      = w_value.
        ls_node-tlength2   = 
'15'.
        ls_node-tcolor2    = 
'2'.
        
APPEND ls_node TO lt_node.
        
CLEAR ls_node.

        
ADD ls_vbap-kwmeng TO w_qty.
        
ADD ls_vbap-netpr TO w_amt.

      
ENDLOOP.

      
IF w_qty IS NOT INITIAL.

        
ls_node-type      = 'P'.
        ls_node-tlevel    = 
'4'.
        ls_node-
text      = 'Total'(011).
        
ls_node-tlength   = '11'.
        ls_node-tcolor    = 
'3'.
        
CLEAR w_value.
        w_value            = w_qty.
        ls_node-text1      = w_value.
        ls_node-tlength1   = 
'15'.
        ls_node-tcolor1    = 
'3'.
        
CLEAR w_value.
        w_value            = w_amt.
        ls_node-text2      = w_value.
        ls_node-tlength2   = 
'15'.
        ls_node-tcolor2    = 
'3'.
        
APPEND ls_node TO lt_node.
        
CLEAR ls_node.

      
ENDIF.

      
CLEAR w_flg.

    
ENDLOOP.

  
ENDLOOP.

ENDFORM.                    " build_tree
*&---------------------------------------------------------------------*
*&      Form  display_tree
*&---------------------------------------------------------------------
FORM display_tree .

  
CALL FUNCTION 'RS_TREE_CONSTRUCT'
    
TABLES
      nodetab            = lt_node
    
EXCEPTIONS
      tree_failure       = 
1
      id_not_found       = 
2
      wrong_relationship = 
3
      
OTHERS             = 4.
  
IF sy-subrc <> 0.
    
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  
ENDIF.

  
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
    
EXPORTING
      callback_program = sy-repid.

ENDFORM.                    " display_tree
*&---------------------------------------------------------------------*
*&      Form  get_vbap
*&---------------------------------------------------------------------
FORM get_vbap .

  
SELECT vbeln
         posnr
         kwmeng
         netpr
      
FROM vbap INTO TABLE lt_vbap
      
FOR ALL ENTRIES IN lt_vbak
      
WHERE vbeln EQ lt_vbak-vbeln.

ENDFORM.                    " get_vbap
*&---------------------------------------------------------------------*
*&      Form  get_kna1
*&---------------------------------------------------------------------
FORM get_kna1 .

  
SELECT kunnr
         name1
      
FROM kna1 INTO TABLE lt_kna1
      
WHERE kunnr IN s_kunnr.

  
IF sy-subrc NE 0.

    
MESSAGE 'No customers exists'(012TYPE 'I'.
    
LEAVE LIST-PROCESSING.

  
ENDIF.
ENDFORM.                                                    " get_kna1

Selection Screen 

 

Output :

Please send us your feedback/suggestions at webmaster@SAPTechnical.COM 

HomeContribute About Us Privacy Terms Of Use • Disclaimer • SafeCompanies: Advertise on SAPTechnical.COM | Post JobContact Us  

Graphic Design by Round the Bend Wizards

footer image footer image