REPORT ZQC_OO_VBRK_VBRP.
INCLUDE ZQC_OO_VBRK_VBRP_TOP.
INCLUDE ZQC_OO_VBRK_VBRP_SCR.
INCLUDE ZQC_OO_VBRK_VBRP_CLS.
INCLUDE ZQC_OO_VBRK_VBRP_DSP.
START-OF-SELECTION.
DATA: lo_report TYPE REF TO lcl_ship_rpt.
CREATE OBJECT lo_report.
lo_report->m_extract_vbrk(
IMPORTING
lt_vbrk = gt_vbrk
).
lo_report->m_extract_vbrp(
EXPORTING
lt_vbrk = gt_vbrk
IMPORTING
lt_vbrp = gt_vbrp
).
lo_report->m_populate_output(
EXPORTING
lt_vbrk = gt_vbrk
lt_vbrp = gt_vbrp
IMPORTING
lt_output = gt_output
).
lo_report->m_display_alv(
CHANGING
lt_output = gt_output
).
-------------------------
top
DATA: gv_vkorg TYPE vkorg,
gv_vtweg TYPE vtweg,
gv_spart TYPE spart,
gv_FKDAT TYPE FKDAT.
TYPES: BEGIN OF ty_vbrk,
vbeln TYPE vbeln_vf,
fkart TYPE fkart,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
END OF ty_vbrk,
tt_vbrk TYPE STANDARD TABLE OF ty_vbrk,
BEGIN OF ty_vbrp,
vbeln TYPE vbeln_vf,
posnr TYPE posnr_vf,
matnr TYPE matnr,
END OF ty_vbrp,
tt_vbrp TYPE STANDARD TABLE OF ty_vbrp,
BEGIN OF ty_output,
vbeln TYPE vbeln_vf,
posnr TYPE posnr_vf,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
fkart TYPE fkart,
matnr TYPE matnr,
END OF ty_output,
tt_output TYPE STANDARD TABLE OF ty_output.
DATA: gt_vbrk TYPE STANDARD TABLE OF ty_vbrk,
gt_vbrp TYPE STANDARD TABLE OF ty_vbrp,
gt_output TYPE STANDARD TABLE OF ty_output.
-----------------------------
SCR
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_vkorg FOR gv_vkorg,
s_vtweg FOR gv_vtweg,
s_spart FOR gv_spart,
s_FKDAT for gv_FKDAT.
SELECTION-SCREEN: END OF BLOCK b1.
-----------------------------
CLS
CLASS lcl_ship_rpt DEFINITION.
PUBLIC SECTION.
METHODS : m_extract_vbrk
EXPORTING
lt_vbrk TYPE tt_vbrk.
METHODS : m_extract_vbrp
IMPORTING
lt_vbrk TYPE tt_vbrk
EXPORTING
lt_vbrp TYPE tt_vbrp.
METHODS : m_populate_output
IMPORTING
lt_vbrk TYPE tt_vbrk
lt_vbrp TYPE tt_vbrp
EXPORTING
lt_output TYPE tt_output.
METHODS : m_display_alv
CHANGING
lt_output TYPE tt_output.
ENDCLASS.
CLASS lcl_ship_rpt IMPLEMENTATION.
METHOD m_extract_vbrk.
SELECT vbeln
fkart
vkorg
vtweg
FROM vbrk
INTO TABLE lt_vbrk
WHERE vkorg in s_vkorg
and vtweg in s_vtweg
and spart in s_spart
and FKDAT in s_FKDAT.
ENDMETHOD.
METHOD m_extract_vbrp.
DATA: lt_vbrk_tmp TYPE STANDARD TABLE OF ty_vbrk.
lt_vbrk_tmp[] = lt_vbrk[].
IF lt_vbrk_tmp[] IS NOT INITIAL.
SORT lt_vbrk_tmp by vbeln.
DELETE ADJACENT DUPLICATES FROM lt_vbrk_tmp COMPARING vbeln.
SELECT vbeln
posnr
matnr
FROM vbrp
INTO TABLE lt_vbrp
FOR ALL ENTRIES IN lt_vbrk_tmp
WHERE vbeln = lt_vbrk_tmp-vbeln.
ENDIF.
ENDMETHOD.
METHOD m_populate_output.
DATA: lwa_output TYPE ty_output.
FIELD-SYMBOLS: <lfs_vbrk> TYPE ty_vbrk,
<lfs_vbrp> TYPE ty_vbrp.
LOOP AT lt_vbrk ASSIGNING <lfs_vbrk>. " Header table
READ TABLE lt_vbrp ASSIGNING <lfs_vbrp>
WITH KEY vbeln = <lfs_vbrk>-vbeln
BINARY SEARCH.
IF sy-subrc IS INITIAL.
LOOP AT lt_vbrp ASSIGNING <lfs_vbrp>
FROM sy-tabix.
IF <lfs_vbrk>-vbeln ne <lfs_vbrp>-vbeln.
exit.
else.
lwa_output-vbeln = <lfs_vbrp>-vbeln.
lwa_output-posnr = <lfs_vbrp>-posnr.
lwa_output-vkorg = <lfs_vbrk>-vkorg.
lwa_output-vtweg = <lfs_vbrk>-vtweg.
lwa_output-fkart = <lfs_vbrk>-fkart.
lwa_output-matnr = <lfs_vbrp>-matnr.
APPEND lwa_output TO lt_output.
CLEAR lwa_output.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD m_display_alv.
DATA: lo_alv TYPE REF TO cl_salv_table.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = lt_output
.
lo_alv->display( ).
ENDMETHOD.
ENDCLASS.
No comments:
Post a Comment