You are on page 1of 5

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

*& Include
Z66_EXERCISE11_FORMS
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form f_clear_refresh
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_clear_refresh.
IF p_bill = 'X'.
*
* Clear the work areas and Global variables
CLEAR:wa_vbrk_vbrp,
gv_count.
REFRESH:gt_vbrk_vbrp.
ELSEIF p_sales = 'X'.
CLEAR:wa_vbak_vbap,
gv_count.
REFRESH:gt_vbak_vbap.
ENDIF.

*Refresh the Internal tables


ENDFORM.
" f_clear_refresh
*&---------------------------------------------------------------------*
*&
Form f_validate_matnr
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_validate_vbeln.
IF p_bill = 'X'.
*

* Declaration of Local data


TYPES:BEGIN OF typ_vbeln,
vbeln TYPE vbeln_vf,
END OF typ_vbeln.
* Define Sorted Internal table
DATA lt_vbeln TYPE SORTED TABLE OF typ_vbeln WITH UNIQUE KEY vbeln.
REFRESH lt_vbeln.
* Get the Material Number from vbrk based on the selection field
SELECT vbeln
FROM vbrk
INTO TABLE lt_vbeln
WHERE vbeln IN s_vbeln.
* SORT lt_matnr BY matnr.
* IF lt_matnr[] IS INITIAL.
*
OR
IF sy-subrc NE 0.
* mESSAGE-Please provide a valid input

*
*

MESSAGE e001(zb7_msg_class) WITH text-002 s_matnr-low."WITH text-002.


MESSAGE 'Please provide a valid Input' TYPE 'E'.
EXIT.
ENDIF.
ELSEIF p_sales = 'X'.

* Declaration of Local data for Sales data


TYPES:BEGIN OF typ_vbeln1,
vbeln1 TYPE vbeln_va,
END OF typ_vbeln1.
* Define Sorted Internal table
DATA lt_vbeln1 TYPE SORTED TABLE OF typ_vbeln1 WITH UNIQUE KEY vbeln1.
REFRESH lt_vbeln1.
* Get the Material Number from vbrk based on the selection field
SELECT vbeln
FROM vbak
INTO TABLE lt_vbeln1
WHERE vbeln IN s_vbeln1.
* SORT lt_matnr BY matnr.
* IF lt_matnr[] IS INITIAL.
*
OR
IF sy-subrc NE 0.
* mESSAGE-Please provide a valid input
*
MESSAGE e001(zb7_msg_class) WITH text-002 s_matnr-low."WITH text-002.
MESSAGE 'Please provide a valid Input' TYPE 'E'.
*
EXIT.
ENDIF.
ENDIF.
ENDFORM.
" f_validate_matnr
*&---------------------------------------------------------------------*
*&
Form f_get_vbrk_vbrp
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_get_vbrk_vbrp .
IF p_bill = 'X'.
* REFRESH:lt_matnr.
* Fetch the data from vbrk and vbrp by joining- Preferable
SELECT
a~vbeln
a~fkart
a~fktyp
a~vkorg
a~vsbed
b~posnr
b~fkimg
b~vrkme
b~ntgew
b~gewei
INTO TABLE gt_vbrk_vbrp
FROM vbrk AS a

INNER JOIN vbrp AS b


ON a~vbeln EQ b~vbeln
WHERE a~vbeln IN s_vbeln AND b~posnr IN s_posnr.
"and b~posnr eq s_posnr.
SORT gt_vbrk_vbrp BY vbeln." DESCENDING. "-> Descending Order
ELSEIF p_sales = 'X'.
SELECT
a~vbeln
a~erdat
a~erzet
a~auart
a~gwldt
b~posnr
b~matnr
b~matwa
b~matkl
b~pstyv
INTO TABLE gt_vbak_vbap
FROM vbak AS a
INNER JOIN vbap AS b
ON a~vbeln EQ b~vbeln
WHERE a~vbeln IN s_vbeln1 AND b~posnr IN s_posnr1.
SORT gt_vbak_vbap BY vbeln." DESCENDING. "-> Descending Order
ENDIF.
ENDFORM.
" f_get_vbrk_vbrp
*&---------------------------------------------------------------------*
*&
Form f_final_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_final_data .
IF p_bill = 'X'.
* Delete the adjacent duplicates from the Internal tables
DELETE ADJACENT DUPLICATES FROM gt_vbrk_vbrp COMPARING vbeln.
* Get the total number of extracted records
DESCRIBE TABLE gt_vbrk_vbrp LINES gv_count.
* Display the the Required Data
*
ULINE.
FORMAT COLOR 4.
LOOP AT gt_vbrk_vbrp INTO wa_vbrk_vbrp.
WRITE:/ '|', wa_vbrk_vbrp-vbeln HOTSPOT,20 '|', wa_vbrk_vbrp-fkart,35 '|',
wa_vbrk_vbrp-fktyp,55 '|', wa_vbrk_vbrp-vkorg,
78 '|', wa_vbrk_vbrp-vsbed ,100 '|', wa_vbrk_vbrp-posnr ,115 '|', wa
_vbrk_vbrp-fkimg,144 '|',wa_vbrk_vbrp-vrkme,
160 '|', wa_vbrk_vbrp-ntgew,175 '|', wa_vbrk_vbrp-gewei,190 '|'.
CLEAR wa_vbrk_vbrp.
ENDLOOP.

ULINE.
FORMAT COLOR OFF.
ELSEIF p_sales = 'X'.
DELETE ADJACENT DUPLICATES FROM gt_vbak_vbap COMPARING vbeln.
DESCRIBE TABLE gt_vbak_vbap LINES gv_count.
* * Display the the Required Data
*
ULINE.
FORMAT COLOR 4.
LOOP AT gt_vbak_vbap INTO wa_vbak_vbap.
WRITE:/ '|', wa_vbak_vbap-vbeln HOTSPOT,18 '|', wa_vbak_vbap-erdat,55 '|',
wa_vbak_vbap-erzet,70 '|', wa_vbak_vbap-auart,
93 '|', wa_vbak_vbap-gwldt ,110 '|', wa_vbak_vbap-posnr HOTSPOT,133
'|', wa_vbak_vbap-matnr,150 '|',wa_vbak_vbap-matwa,
170 '|', wa_vbak_vbap-matkl,188 '|', wa_vbak_vbap-pstyv,223 '|'.
CLEAR wa_vbak_vbap.
ENDLOOP.
ULINE.
FORMAT COLOR OFF.
ENDIF.
ENDFORM.

" f_final_data

*&---------------------------------------------------------------------*
*&
Form f_list_heading
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_list_heading .
IF p_bill = 'X'.
* Display List Headings
ULINE.
FORMAT COLOR 5.
WRITE:/'|', text-003,20 '|', text-004,35 '|',text-005,55 '|', text-006,78 '
|',text-007,
100 '|',text-008,115 '|', text-009,144 '|',text-010,160 '|',text-011,1
75 '|',text-012,190 '|'.
FORMAT COLOR OFF.
ULINE.
ELSEIF p_sales = 'X'.
* Display List Headings
ULINE.
FORMAT COLOR 6.
WRITE:/'|', text-013,18 '|', text-014,55 '|',text-015,70 '|', text-016,93 '
|',text-017,
110 '|',text-018,133 '|', text-019,150 '|',text-020,170 '|',text-021,1
88 '|',text-022,223 '|'.
FORMAT COLOR OFF.
ULINE.

ENDIF.
ENDFORM.
" f_list_heading
*&---------------------------------------------------------------------*
*&
Form f_footer
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_footer .
ULINE.
WRITE:/ '|', 'Total number of records', gv_count, 159 '|'.
ULINE.
ENDFORM.

" f_footer

You might also like