You are on page 1of 11

Sales Order Report

Developed by sweekar.m

Select Option: Order No., Order Date, Customer ID

Input Selection screen for given requirement find below

Given values : 2 to 15

after clicking execute button we get first level output find output below

First Level output:

- Order No.

- Order Date

- Customer ID

- Customer Name

- Total order Value


When you double on any of the order no its moves to second level output find output below

On click of Order No: Second level:

- Order No.
- Item No.
- Material Code
- Material Description
- Quantity
- Order Unit
- Item Value

I have choose order no :000000012 by double clicking it takes to second level output find output
below

In the first level Output provide tool bar to show order Details:

- When button -Display VA03 tool to Display order Detail


- When come back from VA03 again first level display to be shown
-
Clicking on button VA03 which was highlighted below screen shot takes to the transaction
code VA03.

After going VA03 TCODE if u click on back button its takes level one output.
SOURCE CODE FOR ABOVE REQUIREMENT:

*&---------------------------------------------------------------------*
*& Report Z_SWEEKAR_SALESORDER_REPORT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_SWEEKAR_SALESORDER_REPORT.

TABLES: vbak, vbap,kna1.

DATA: ls_fieldcat TYPE slis_fieldcat_alv,


lt_fieldcat TYPE slis_t_fieldcat_alv.

DATA: ls_fieldcat1 TYPE slis_fieldcat_alv,


lt_fieldcat1 TYPE slis_t_fieldcat_alv.

DATA: lt_events TYPE slis_t_event,


ls_event TYPE slis_alv_event.

* declartion for layout


DATA: lv_layout TYPE slis_layout_alv.

* declaration for variant(type of display we want)


DATA: lv_variant TYPE disvariant,
lv_variant1 TYPE disvariant,
lv_save(1) TYPE c.

DATA: lv_vbeln TYPE vbak-vbeln."RS_SELFIELD-VALUE.

SELECT-OPTIONS: s_vbeln FOR vbak-vbeln, "order No.


s_date FOR vbak-erdat, "order date
s_kunnr FOR kna1-kunnr. "customer id

START-OF-SELECTION.

SELECT vbak~vbeln, vbak~erdat, vbak~netwr, kna1~kunnr, kna1~name1


INTO TABLE @DATA(lt_vbak)
FROM vbak AS vbak
INNER JOIN kna1 AS kna1
ON kna1~kunnr = vbak~kunnr
WHERE vbak~vbeln IN @s_vbeln
AND vbak~erdat IN @s_date
AND vbak~kunnr IN @s_kunnr.
IF sy-subrc IS INITIAL.
* select vbeln, posnr, matnr
ENDIF.
IF NOT lt_vbak[] IS INITIAL.
PERFORM fieldcatlog.
PERFORM call_event.
PERFORM populate_event.
PERFORM display_data.
ENDIF.

*&---------------------------------------------------------------------*
*& Form FIELDCATLOG
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM fieldcatlog .

CLEAR ls_fieldcat.
ls_fieldcat-col_pos = '1'.
ls_fieldcat-fieldname = 'VBELN'.
ls_fieldcat-tabname = 'LT_VBAK'.
ls_fieldcat-seltext_l = 'Order No.'.
APPEND ls_fieldcat TO lt_fieldcat .

CLEAR ls_fieldcat.
ls_fieldcat-col_pos = '2'.
ls_fieldcat-fieldname = 'ERDAT'.
ls_fieldcat-tabname = 'LT_VBAK'.
ls_fieldcat-seltext_l = 'Order Date'.
APPEND ls_fieldcat TO lt_fieldcat .

CLEAR ls_fieldcat.
ls_fieldcat-col_pos = '3'.
ls_fieldcat-fieldname = 'KUNNR'.
ls_fieldcat-tabname = 'LT_VBAK'.
ls_fieldcat-seltext_l = 'Customer ID'.
APPEND ls_fieldcat TO lt_fieldcat .

CLEAR ls_fieldcat.
ls_fieldcat-col_pos = '4'.
ls_fieldcat-fieldname = 'NAME1'.
ls_fieldcat-tabname = 'LT_VBAK'.
ls_fieldcat-seltext_l = 'Customer Name'.
APPEND ls_fieldcat TO lt_fieldcat .

CLEAR ls_fieldcat.
ls_fieldcat-col_pos = '5'.
ls_fieldcat-fieldname = 'NETWR'.
ls_fieldcat-tabname = 'LT_VBAK'.
ls_fieldcat-seltext_l = 'Total order Value'.
APPEND ls_fieldcat TO lt_fieldcat .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM display_data .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK =''
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE =''
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE =''
* I_CALLBACK_HTML_END_OF_LIST =''
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID =''
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
it_fieldcat = lt_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'A'
* IS_VARIANT =
it_events = lt_events
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE =0
* I_HTML_HEIGHT_TOP =0
* I_HTML_HEIGHT_END =0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = lt_vbak
EXCEPTIONS
program_error =1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form CALL_EVENT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM call_event .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = lt_events
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.

IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form POPULATE_EVENT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM populate_event .

READ TABLE lt_events INTO ls_event WITH KEY name = 'USER_COMMAND'.


IF sy-subrc EQ 0.
ls_event-form = 'USER_COMMAND'.
MODIFY lt_events FROM ls_event TRANSPORTING form
WHERE name = ls_event-name.
ENDIF.

ENDFORM.
*&--------------------------------------------------------------------*
*& Form USER_COMMAND
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->R_UCOMM text
* -->, text
* -->RS_SLEFIELDtext
*---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CLEAR: lv_vbeln.

lv_vbeln = rs_selfield-value.

CASE r_ucomm.
WHEN '&IC1'.
IF rs_selfield-fieldname = 'VBELN'.
* READ TABLE lt_vbak INTO DATA(ls_vbak) INDEX rs_selfield-tabindex.

PERFORM fieldcatlog_list2.
PERFORM call_event_list2.
* PERFORM get_data_list2.
PERFORM display_data_list2.
clear: rs_selfield.
ENDIF.

WHEN 'VA03'.
CALL TRANSACTION 'VA03'.

ENDCASE.
clear: rs_selfield.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FIELDCATLOG_LIST2
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM fieldcatlog_list2 .
refresh: lt_fieldcat1.
CLEAR ls_fieldcat1.
ls_fieldcat1-col_pos = '1'.
ls_fieldcat1-fieldname = 'VBELN'.
ls_fieldcat1-tabname = 'LT_VBAP'.
ls_fieldcat1-seltext_l = 'Order No.'.
APPEND ls_fieldcat1 TO lt_fieldcat1 .

CLEAR ls_fieldcat1.
ls_fieldcat1-col_pos = '2'.
ls_fieldcat1-fieldname = 'POSNR'.
ls_fieldcat1-tabname = 'LT_VBAP'.
ls_fieldcat1-seltext_l = 'Item No.'.
APPEND ls_fieldcat1 TO lt_fieldcat1 .

CLEAR ls_fieldcat1.
ls_fieldcat1-col_pos = '3'.
ls_fieldcat1-fieldname = 'MATNR'.
ls_fieldcat1-tabname = 'LT_VBAP'.
ls_fieldcat1-seltext_l = 'Material code'.
APPEND ls_fieldcat1 TO lt_fieldcat1 .

CLEAR ls_fieldcat1.
ls_fieldcat1-col_pos = '4'.
ls_fieldcat1-fieldname = 'MAKTX'.
ls_fieldcat1-tabname = 'LT_VBAP'.
ls_fieldcat1-seltext_l = 'Material Description'.
APPEND ls_fieldcat1 TO lt_fieldcat1 .
*
CLEAR ls_fieldcat1.
ls_fieldcat1-col_pos = '5'.
ls_fieldcat1-fieldname = 'KWMENG'.
ls_fieldcat1-tabname = 'LT_VBAP'.
ls_fieldcat1-seltext_l = 'Quantity'.
APPEND ls_fieldcat1 TO lt_fieldcat1 .

CLEAR ls_fieldcat1.
ls_fieldcat1-col_pos = '6'.
ls_fieldcat1-fieldname = 'VRKME'.
ls_fieldcat1-tabname = 'LT_VBAP'.
ls_fieldcat1-seltext_l = 'Order Unit'.
APPEND ls_fieldcat1 TO lt_fieldcat1 .

CLEAR ls_fieldcat1.
ls_fieldcat1-col_pos = '7'.
ls_fieldcat1-fieldname = 'NETWR'.
ls_fieldcat1-tabname = 'LT_VBAP'.
ls_fieldcat1-seltext_l = 'Item Value'.
APPEND ls_fieldcat1 TO lt_fieldcat1 .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CALL_EVENT_LIST2
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM call_event_list2 .

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'


EXPORTING
i_list_type = 0
IMPORTING
et_events = lt_events
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.

IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_DATA_LIST2
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_data_list2 .
* select vbeln, posnr, matnr from vbap into table @data(lt_vbap).
* where vbeln =
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA_LIST2
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM display_data_list2 .

SELECT vbap~vbeln, vbap~posnr, vbap~matnr, vbap~netwr, vbap~kwmeng, vbap~vrkme,


makt~maktx
FROM vbap as vbap
INNER JOIN makt as makt on makt~matnr = vbap~matnr
INTO TABLE @DATA(lt_vbap)
WHERE vbap~vbeln = @lv_vbeln "RS_SELFIELD-VALUE.
and makt~spras = @sy-langu.

CLEAR: lv_vbeln.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
* I_CALLBACK_PF_STATUS_SET = ''
* I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE =''
* I_CALLBACK_HTML_TOP_OF_PAGE =''
* I_CALLBACK_HTML_END_OF_LIST =''
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
it_fieldcat = lt_fieldcat1[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'A'
* IS_VARIANT =
it_events = lt_events
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN =0
* I_SCREEN_START_LINE =0
* I_SCREEN_END_COLUMN =0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = lt_vbap
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form sub_pf_status
*&---------------------------------------------------------------------*
* Sub-Routine to Set the PF status
*----------------------------------------------------------------------*
FORM set_pf_status USING rt_extab TYPE slis_t_extab..
SET PF-STATUS 'ZSTAT'.
ENDFORM. "sub_pf_status

You might also like