Você está na página 1de 9

SALES ORDER INFORMATION REPORT:

Source Code:
*&---------------------------------------------------------------------*
*& Report ZSD_R_SALES_ORDER_DETAILS
*&
*&---------------------------------------------------------------------*
*&Purpose:Displaying sales order information in ALV Grid Format.
*&And on clicking particular sales order number,it goes toVA03.
*&---------------------------------------------------------------------*
REPORT zsd_r_sales_order_details MESSAGE-ID zsd_r_sales_order.
include zsd_r_sales_order_top.
include zsd_r_sales_order_selscr.
include zsd_r_sales_order_perform.
include zsd_r_sales_order_form.
INCLUDE

ZSD_R_SALES_ORDER_TOP.

*&---------------------------------------------------------------------*
*& Include
ZSD_R_SALES_ORDER_TOP
*&Purpose:It contains Data types,Internal Tables and Work Areas.
*&---------------------------------------------------------------------*
TYPE-POOLS:slis.
TABLES:vbak.
TYPES:BEGIN OF gty_vbak,
"Structure for holding header
details of sales order
vbeln TYPE vbeln_va,
"Sales order number
erdat TYPE erdat,
"Creation Date
ernam TYPE ernam,
"Creator Name
auart TYPE auart,
"Order Type
vkorg TYPE vkorg,
"Sales Organization
vtweg TYPE vtweg,
"Distribution Channel
spart TYPE spart,
"Division
END OF gty_vbak,
BEGIN OF gty_vbap,
of sales order
vbeln TYPE vbeln_va,
posnr TYPE posnr_va,
matnr TYPE matnr,
meins TYPE meins,
netwr TYPE netwr_ap,
END OF gty_vbap,
BEGIN OF gty_final,
flag TYPE c,
vbeln TYPE vbeln_va,
erdat TYPE erdat,
ernam TYPE ernam,
auart TYPE auart,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
spart TYPE spart,
posnr TYPE posnr_va,
matnr TYPE matnr,
meins TYPE meins,
netwr TYPE netwr_ap,
END OF gty_final.
DATA:gv_erdat TYPE erdat,
gv_count TYPE i.

"Structure for holding Item details


"Sales Order Number
"Item Number
"Material Number
"Unit of measure
"Net Weight
"Structure for final output

"Creation Date
"Counter Value

DATA:gt_vbak TYPE STANDARD TABLE OF gty_vbak,


gt_vbap TYPE STANDARD TABLE OF gty_vbap,
gt_final TYPE STANDARD TABLE OF gty_final,
gt_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv,
gt_header TYPE TABLE OF slis_listheader.
DATA:gw_vbak TYPE gty_vbak,
gw_vbap TYPE gty_vbap,
gw_final TYPE gty_final.
INCLUDE

ZSD_R_SALES_ORDER_SELSCR.

*&---------------------------------------------------------------------*
*& Include
ZSD_R_SALES_ORDER_SELSCR
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS:p_kunnr TYPE kunag.
SELECT-OPTIONS:s_erdat FOR vbak-erdat.
SELECTION-SCREEN END OF BLOCK b1.
*&---------------------------------------------------------------------*
*& AT SELECTION-SCREEN
*&Purpose:Validating User inputs such as Creation Date,Customer Number
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
SELECT COUNT(*) FROM kna1 WHERE kunnr = p_kunnr.
IF sy-subrc NE 0.
MESSAGE e001 WITH p_kunnr.
ENDIF.
SELECT SINGLE erdat FROM vbak INTO gv_erdat WHERE erdat IN s_erdat.
IF sy-subrc NE 0.
MESSAGE e002 WITH s_erdat.
ENDIF.

INCLUDE

ZSD_R_SALES_ORDER_PERFORM.

*&---------------------------------------------------------------------*
*& Include
ZSD_R_SALES_ORDER_PERFORM
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*Retrieving Data from database and populating into final internal table
PERFORM data_selection.
END-OF-SELECTION.
*Displaying Output In ALV Grid Format
PERFORM alv_output.
INCLUDE ZSD_R_SALES_ORDER_FORM.
*&---------------------------------------------------------------------*
*& Include
ZSD_R_SALES_ORDER_FORM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form data_selection
*&---------------------------------------------------------------------*
*Purpose:Retrieving data from vbak and vbap tables and populating into
*Final Internal table.
*----------------------------------------------------------------------*
FORM data_selection .
SELECT vbeln erdat ernam auart vkorg vtweg spart FROM vbak INTO TABLE gt_vbak WHERE
kunnr = p_kunnr AND erdat IN s_erdat.
IF sy-subrc EQ 0.
SORT gt_vbak BY vbeln.

SELECT vbeln posnr matnr meins netwr FROM vbap INTO TABLE gt_vbap FOR ALL ENTRIES
IN gt_vbak WHERE vbeln = gt_vbak-vbeln.
IF sy-subrc EQ 0.
SORT gt_vbap BY vbeln posnr.
ENDIF.
ENDIF.
LOOP AT gt_vbap INTO gw_vbap.
READ TABLE gt_vbak INTO gw_vbak WITH KEY vbeln = gw_vbap-vbeln.
IF sy-subrc EQ 0.
MOVE gw_vbak-vbeln TO gw_final-vbeln.
MOVE gw_vbak-erdat TO gw_final-erdat.
MOVE gw_vbak-ernam TO gw_final-ernam.
MOVE gw_vbak-auart TO gw_final-auart.
MOVE gw_vbak-vkorg TO gw_final-vkorg.
MOVE gw_vbak-vtweg TO gw_final-vtweg.
MOVE gw_vbak-spart TO gw_final-spart.
MOVE gw_vbap-posnr TO gw_final-posnr.
MOVE gw_vbap-matnr TO gw_final-matnr.
MOVE gw_vbap-meins TO gw_final-meins.
MOVE gw_vbap-netwr TO gw_final-netwr.
APPEND gw_final TO gt_final.
CLEAR:gw_final.
ENDIF.
ENDLOOP.
ENDFORM.
" data_selection
*&---------------------------------------------------------------------*
*&
Form alv_output
*&---------------------------------------------------------------------*
*Purpose:Building field catalog
*----------------------------------------------------------------------*
FORM alv_output .
gv_count = 1.
PERFORM build_catalog USING gv_count 'VBELN' 'GT_FINAL' 'Sales Order Number' 'X'.
PERFORM build_catalog USING gv_count 'ERDAT' 'GT_FINAL' 'Creation Date' ' '.
PERFORM build_catalog USING gv_count 'ERNAM' 'GT_FINAL' 'Creator Name' ' '.
PERFORM build_catalog USING gv_count 'AUART' 'GT_FINAL' 'Order Type' ' '.
PERFORM build_catalog USING gv_count 'VKORG' 'GT_FINAL' 'Sales Organiztion' ' '.
PERFORM build_catalog USING gv_count 'VTWEG' 'GT_FINAL' 'Distribution Channel' ' '.
PERFORM build_catalog USING gv_count 'SPART' 'GT_FINAL' 'Division' ' '.
PERFORM build_catalog USING gv_count 'POSNR' 'GT_FINAL' 'Item Number' ' '.
PERFORM build_catalog USING gv_count 'MATNR' 'GT_FINAL' 'Material Number' ' '.
PERFORM build_catalog USING gv_count 'MEINS' 'GT_FINAL' 'Unit Of Measure' ' '.
PERFORM build_catalog USING gv_count 'NETWR' 'GT_FINAL' 'Net Value' ' '.
PERFORM alv_display.
ENDFORM.
" alv_output
*&---------------------------------------------------------------------*
*&
Form build_catalog
*&---------------------------------------------------------------------*
*Purpose:Building a fieldcatalog
*----------------------------------------------------------------------*
*
-->lp_count-Counter for dynamically increasing the column value
*
-->lp_fieldname-Fieldname
*
-->lp_tabname-Internal Table Name
*
-->lp_seltext-Header Text
*----------------------------------------------------------------------*
FORM build_catalog USING
lp_count TYPE sy-cucol
lp_fieldname TYPE slis_fieldname
lp_tabname
TYPE slis_tabname
lp_seltext
TYPE dd03p-scrtext_l
lp_hotspot
type c .
DATA:lw_fieldcat TYPE slis_fieldcat_alv.

CLEAR:lw_fieldcat.
lw_fieldcat-col_pos = lp_count.
lw_fieldcat-fieldname = lp_fieldname.
lw_fieldcat-tabname = lp_tabname.
lw_fieldcat-seltext_l = lp_seltext.
lw_fieldcat-hotspot = lp_hotspot.
APPEND lw_fieldcat TO gt_fieldcat.
lp_count = lp_count + 1.
ENDFORM.
" build_catalog
*&---------------------------------------------------------------------*
*&
Form alv_display
*&---------------------------------------------------------------------*
*Purpose:Displaying Output in ALV Grid Format using
* REUSE_ALV_GRID_DISPLAY function module
*----------------------------------------------------------------------*
FORM alv_display .
DATA:lv_repid TYPE sy-repid.
lv_repid = sy-repid.
IF NOT gt_final IS INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program
= lv_repid
i_callback_pf_status_set = 'STATUSBAR'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page
= 'TOP_OF_PAGE'
it_fieldcat
= gt_fieldcat[]
TABLES
t_outtab
= gt_final
EXCEPTIONS
program_error
= 1
OTHERS
= 2.
IF sy-subrc <> 0.
MESSAGE e004.
ENDIF.
ELSE.
MESSAGE s003 DISPLAY LIKE 'E'.
ENDIF.
ENDFORM.
" alv_display
*&---------------------------------------------------------------------*
*&
Form statusbar
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM statusbar USING lptab TYPE slis_t_extab.
SET PF-STATUS 'ZSTATUSBAR'.
ENDFORM.
"statusbar
*&---------------------------------------------------------------------*
*&
Form user_command
*&---------------------------------------------------------------------*
*Purpose:On clicking a sales order number,it goes to VA03 Transaction
*----------------------------------------------------------------------*
*
-->LP_UCOMM -User Command Value
*
-->LP_SELFIELD -Selected field Structure
*----------------------------------------------------------------------*
FORM user_command USING lp_ucomm TYPE sy-ucomm
lp_selfield TYPE slis_selfield.
CASE lp_ucomm.
WHEN '&IC1'.
IF lp_selfield-fieldname = 'VBELN'.
READ TABLE gt_vbak INTO gw_vbak WITH KEY vbeln = lp_selfield-value.
IF sy-subrc EQ 0.
SET PARAMETER ID 'AUN' FIELD gw_vbak-vbeln.

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.


ENDIF.
ELSE.
MESSAGE s005 DISPLAY LIKE 'E'.
ENDIF.
ENDCASE.
ENDFORM.
"user_command
*&---------------------------------------------------------------------*
*&
Form top_of_page
*&---------------------------------------------------------------------*
*Purpose:To display Header information such as Title,User Name,Date
*----------------------------------------------------------------------*
FORM top_of_page .
DATA:lw_header TYPE slis_listheader ,
lv_date(10) TYPE c.
*
CLEAR:lw_header.
lw_header-typ = 'H'.
lw_header-info = 'Sales Order Information'.
APPEND lw_header TO gt_header.
*
CLEAR:lw_header.
lw_header-typ = 'S'.
lw_header-key = 'User Name:'.
lw_header-info = sy-uname.
APPEND lw_header TO gt_header.
*
CLEAR:lw_header.
lw_header-typ = 'S'.
lw_header-key = 'Date:'.
CONCATENATE sy-datum+6(2) sy-datum+4(2) sy-datum+0(4) INTO lv_date SEPARATED BY ':'.
lw_header-info = lv_date.
APPEND lw_header TO gt_header.
*
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_header.
CLEAR:gt_header[].
ENDFORM.
"top_of_page

Validating the user inputs:


Customer Number Validation:

Creation Date Validation:

Input Screen

After Pressing the Execute button.

On Double clicking the Sales Order :0000011240 and it goes to transaction VA03.

Você também pode gostar