Sunteți pe pagina 1din 6

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

*& Report ZTRW_REPORTS


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ztrw_reports LINE-SIZE 255.
TYPES:BEGIN OF gty_vbakvbap,
vbeln TYPE vbak-vbeln,
audat TYPE vbak-audat,
auart TYPE vbak-auart,
lifsk TYPE vbak-lifsk,
faksk TYPE vbak-faksk,
netwr TYPE vbak-netwr,
vsbed TYPE vbak-vsbed,
bstnk TYPE vbak-bstnk,
bstdk TYPE vbak-bstdk,
kunnr TYPE vbak-kunnr,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
matkl TYPE vbap-matkl,
arktx TYPE vbap-arktx,
lfrel TYPE vbap-lfrel,
fkrel TYPE vbap-fkrel,
meins TYPE vbap-meins,
kwmeng TYPE vbap-kwmeng,
END OF gty_vbakvbap,
gty_t_vbakvbap TYPE TABLE OF gty_vbakvbap.
TYPES:BEGIN OF gty_kna1,
kunnr TYPE kna1-kunnr,
land1 TYPE kna1-land1,
name1 TYPE kna1-name1,
ort01 TYPE kna1-ort01,
pstlz TYPE kna1-pstlz,
regio TYPE kna1-regio,
stras TYPE kna1-stras,
END OF gty_kna1,
gty_t_kna1 TYPE TABLE OF gty_kna1.
TYPES:BEGIN OF gty_final,
vbeln TYPE vbak-vbeln,
audat TYPE vbak-audat,
auart TYPE vbak-auart,
lifsk TYPE vbak-lifsk,
faksk TYPE vbak-faksk,
netwr TYPE vbak-netwr,
vsbed TYPE vbak-vsbed,
bstnk TYPE vbak-bstnk,
bstdk TYPE vbak-bstdk,
kunnr TYPE vbak-kunnr,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
matkl TYPE vbap-matkl,
arktx TYPE vbap-arktx,
lfrel TYPE vbap-lfrel,
fkrel TYPE vbap-fkrel,
meins TYPE vbap-meins,

kwmeng TYPE vbap-kwmeng,


land1 TYPE kna1-land1,
name1 TYPE kna1-name1,
ort01 TYPE kna1-ort01,
pstlz TYPE kna1-pstlz,
regio TYPE kna1-regio,
stras TYPE kna1-stras,
END OF gty_final,
gty_t_final TYPE TABLE OF gty_final.
DATA:gt_vbeln TYPE vbak-vbeln,
gt_kunnr TYPE vbak-kunnr,
gt_audat TYPE vbak-audat.
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-000.
SELECT-OPTIONS:s_vbeln FOR gt_vbeln,
s_kunnr FOR gt_kunnr,
s_audat FOR gt_audat.
SELECTION-SCREEN END OF BLOCK blk.
DATA : gt_vbakvbap TYPE gty_t_vbakvbap,
gw_vbakvbap TYPE gty_vbakvbap,
gt_kna1 TYPE gty_t_kna1,
gw_kna1 TYPE gty_kna1,
gt_final TYPE gty_t_final,
gw_final TYPE gty_final.
INITIALIZATION.
*Default document date from 1st of the month to end of the month
PERFORM f_fill_doc_date.
AT SELECTION-SCREEN.
PERFORM f_validate_custome.
START-OF-SELECTION.
PERFORM f_fetch_vbakvbap.
PERFORM f_fetch_kna1.

SORT BY gt_kna1.
PERFORM f_fill_final.
END-OF-SELECTION.
IF gt_final IS NOT INITIAL.
PERFORM f_display.
ELSE.
MESSAGE 'No records exists for the selection' TYPE 'I'.
ENDIF.
AT LINE-SELECTION.
DATA:lv_fname TYPE string,
lv_fval TYPE string,
lv_vbeln TYPE vbak-vbeln,
lv_kunnr TYPE vbak-kunnr.
GET CURSOR FIELD lv_fname VALUE lv_fval.

CASE lv_fname.
WHEN 'GW_FINAL-VBELN'.
lv_vbeln = lv_fval.
SET PARAMETER ID 'AUN' FIELD lv_vbeln.
CALL TRANSACTION'VA03' AND SKIP FIRST SCREEN.
WHEN 'GW_FINAL-KUNNR'.
lv_kunnr = lv_fval.
SET PARAMETER ID 'KUN' FIELD lv_kunnr.
CALL TRANSACTION'XD03' AND SKIP FIRST SCREEN.
WHEN OTHERS.
MESSAGE'select only sales order or customer Num' TYPE 'I'.
ENDCASE.
*Always Write work Area of field In caps.
*
* IF lv_fname = 'GW_FINAL-KUNNR'.
*
lv_kunnr = lv_fval.
*
SET PARAMETER ID 'KUN' FIELD lv_kunnr.
*
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
*
elseif
*
lv_fname = 'GW_FINAL-VBELN'.
*
lv_vbeln = lv_fval.
*
SET PARAMETER ID 'AUN' FIELD lv_vbeln.
*
CALL TRANSACTION'VA03' AND SKIP FIRST SCREEN.
*
*
*
*else.
* message'select only sales order or customer Num' type 'I'.
*ENDIF.
*&---------------------------------------------------------------------*
*&
Form f_fetch_vbakvbap
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_fetch_vbakvbap .
SELECT vbak~vbeln vbak~audat vbak~auart vbak~lifsk vbak~faksk vbak~netwr vbak~
vsbed vbak~bstnk vbak~bstdk vbak~kunnr
vbap~posnr vbap~matnr vbap~matkl vbap~arktx vbap~lfrel vbap~fkrel vbap
~meins vbap~kwmeng
INTO TABLE gt_vbakvbap
FROM vbak
INNER JOIN vbap
ON vbak~vbeln = vbap~vbeln
WHERE vbak~vbeln IN s_vbeln
AND vbak~kunnr IN s_kunnr.
*
AND vbak~audat IN s_audat .
ENDFORM.
" f_fetch_vbakvbap
*&---------------------------------------------------------------------*
*&
Form f_fetch_kna1
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*

* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_fetch_kna1 .
IF NOT gt_vbakvbap[] IS INITIAL.
SELECT kunnr land1 name1 ort01 pstlz regio stras
INTO TABLE gt_kna1
FROM kna1
FOR ALL ENTRIES IN gt_vbakvbap
WHERE kunnr = gt_vbakvbap-kunnr.
ENDIF.
ENDFORM.
" f_fetch_kna1
*&---------------------------------------------------------------------*
*&
Form f_fill_final
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_fill_final .
LOOP AT gt_vbakvbap INTO gw_vbakvbap.
MOVE : gw_vbakvbap-vbeln TO gw_final-vbeln,
gw_vbakvbap-audat TO gw_final-audat,
gw_vbakvbap-auart TO gw_final-auart,
gw_vbakvbap-lifsk TO gw_final-lifsk,
gw_vbakvbap-faksk TO gw_final-faksk,
gw_vbakvbap-netwr TO gw_final-netwr,
gw_vbakvbap-vsbed TO gw_final-vsbed,
gw_vbakvbap-bstnk TO gw_final-bstnk,
gw_vbakvbap-bstdk TO gw_final-bstdk,
gw_vbakvbap-kunnr TO gw_final-kunnr,
gw_vbakvbap-posnr TO gw_final-posnr,
gw_vbakvbap-matnr TO gw_final-matnr,
gw_vbakvbap-matkl TO gw_final-matkl,
gw_vbakvbap-arktx TO gw_final-arktx,
gw_vbakvbap-lfrel TO gw_final-lfrel,
gw_vbakvbap-meins TO gw_final-meins,
gw_vbakvbap-kwmeng TO gw_final-kwmeng.
READ TABLE gt_kna1 INTO gw_kna1 WITH KEY kunnr = gw_vbakvbap-kunnr BINARY SE
ARCH.
IF sy-subrc = 0.
MOVE: gw_kna1-name1
gw_kna1-land1
gw_kna1-ort01
gw_kna1-pstlz
gw_kna1-regio
gw_kna1-stras

TO
TO
TO
TO
TO
TO

gw_final-name1,
gw_final-land1,
gw_final-ort01,
gw_final-pstlz,
gw_final-regio,
gw_final-stras.

ENDIF.
APPEND gw_final TO gt_final.
CLEAR gw_final.
ENDLOOP.
ENDFORM.
" f_fill_final

*&---------------------------------------------------------------------*
*&
Form f_display
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_display .
LOOP AT gt_final INTO gw_final.

*
*
*
*
*

WRITE:/ gw_final-vbeln,
gw_final-audat,
gw_final-auart,
gw_final-lifsk,
gw_final-faksk,
gw_final-netwr,
gw_final-vsbed,
gw_final-bstnk,
gw_final-bstdk,
gw_final-kunnr,
gw_final-posnr,
gw_final-matnr,
gw_final-matkl,
gw_final-arktx,
gw_final-lfrel,
gw_final-meins,
gw_final-kwmeng,
gw_final-name1,
gw_final-land1,
gw_final-ort01,
gw_final-pstlz,
gw_final-regio,
gw_final-stras.

ENDLOOP.
ENDFORM.
" f_display
*&---------------------------------------------------------------------*
*&
Form f_fill_doc_date
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_fill_doc_date .
DATA:lv_edate TYPE sy-datum.
s_audat-sign = 'I'.
s_audat-option = 'BT'.
s_audat-low = sy-datum.
s_audat-low+6(2) = '01'.
* s_audat-high = sy-datum.
CALL FUNCTION 'OIL_LAST_DAY_OF_MONTH'
EXPORTING
i_date
= sy-datum
IMPORTING
e_last_day = lv_edate.

s_audat-high = lv_edate.
APPEND s_audat.
ENDFORM.
" f_fill_doc_date
*&---------------------------------------------------------------------*
*&
Form f_validate_custome
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_validate_custome .
DATA:lv_kunnr TYPE vbak-kunnr.
SELECT SINGLE kunnr
INTO lv_kunnr
FROM kna1
WHERE kunnr IN s_kunnr.
IF sy-subrc NE 0.
MESSAGE 'Invalid Customer' TYPE 'E'.
ENDIF.
ENDFORM.

" f_validate_custome

S-ar putea să vă placă și