*&---------------------------------------------------------------------*
*& Report Z_OOPS_CONTINER
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_oops_continer.
INCLUDE z_oops_continer_top.
INCLUDE z_oops_continer_imp.
AT SELECTION-SCREEN.
PERFORM validation.
START-OF-SELECTION.
PERFORM get_data.
PERFORM field_cat.
CALL SCREEN 9001.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
" STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*& Module INILIZATION OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE inilization OUTPUT.
*----------------------------------------------------------------------*
* -->P_FNAM text
* -->P_FVAL text
*----------------------------------------------------------------------*
IF gr_cont IS INITIAL.
CREATE OBJECT gr_cont
EXPORTING
container_name = 'CNT'.
IF gr_cont IS NOT INITIAL.
CREATE OBJECT gr_split1
EXPORTING
parent = gr_cont
rows = 2
columns = 1.
IF gr_split1 IS NOT INITIAL.
CALL METHOD gr_split1->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = gr_cont_kna1.
CALL METHOD gr_split1->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = gr_cont_2.
IF gr_cont_2 IS NOT INITIAL.
CREATE OBJECT gr_split2
EXPORTING
parent = gr_cont_2
rows = 1
columns = 2.
IF gr_split2 IS NOT INITIAL.
CALL METHOD gr_split2->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = gr_cont_vbak.
CALL METHOD gr_split2->get_container
EXPORTING
row = 1
column = 2
RECEIVING
container = gr_cont_vbap.
IF gr_cont_kna1 IS NOT INITIAL.
CREATE OBJECT gr_alv_kna1
EXPORTING
i_parent = gr_cont_kna1.
ENDIF.
IF gr_cont_vbak IS NOT INITIAL.
CREATE OBJECT gr_alv_vbak
EXPORTING
i_parent = gr_cont_vbak.
ENDIF.
IF gr_cont_vbap IS NOT INITIAL.
CREATE OBJECT gr_alv_vbap
EXPORTING
i_parent = gr_cont_vbap.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF gr_alv_kna1 IS NOT INITIAL.
is_lay-zebra = 'X'.
is_lay-cwidth_opt = 'X'.
CALL METHOD gr_alv_kna1->set_table_for_first_display
EXPORTING
is_layout = is_lay
CHANGING
it_outtab = t_kna1
it_fieldcatalog = t_fcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
IF gr_alv_vbak IS NOT INITIAL.
is_lay-zebra = 'X'.
is_lay-cwidth_opt = 'X'.
CALL METHOD gr_alv_vbak->set_table_for_first_display
EXPORTING
is_layout = is_lay
CHANGING
it_outtab = t_vbak
it_fieldcatalog = t_fcat2
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
IF gr_alv_vbap IS NOT INITIAL.
is_lay-zebra = 'X'.
is_lay-cwidth_opt = 'X'.
CALL METHOD gr_alv_vbap->set_table_for_first_display
EXPORTING
is_layout = is_lay
CHANGING
it_outtab = t_vbap
it_fieldcatalog = t_fcat3
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ENDMODULE. " INILIZATION OUTPUT
*&---------------------------------------------------------------------*
*& Include Z_OOPS_CONTINER_TOP
*&---------------------------------------------------------------------*
TABLES kna1.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS s_kunnr FOR kna1-kunnr.
SELECT-OPTIONS s_land1 FOR kna1-land1.
SELECT-OPTIONS s_ort01 FOR kna1-ort01.
SELECTION-SCREEN END OF BLOCK b1.
TYPES : BEGIN OF ty_vbak,
vbeln TYPE vbeln,
audat TYPE audat,
vkorg TYPE vkorg,
netwr TYPE netwr,
kunnr TYPE kunnr,
END OF ty_vbak,
BEGIN OF ty_kna1,
kunnr TYPE kunnr,
name1 TYPE name1,
ort01 TYPE ort01,
pstlz TYPE pstlz,
END OF ty_kna1,
BEGIN OF ty_vbap,
vbeln TYPE vbeln,
posnr TYPE posnr,
matnr TYPE matnr,
netwr TYPE netwr,
kwmeng TYPE kwmeng,
END OF ty_vbap.
DATA : t_vbak TYPE STANDARD TABLE OF ty_vbak INITIAL SIZE 1,
t_vbak_temp TYPE STANDARD TABLE OF ty_vbak INITIAL SIZE 1,
t_kna1 TYPE STANDARD TABLE OF ty_kna1 INITIAL SIZE 1,
t_kna1_temp TYPE STANDARD TABLE OF ty_kna1 INITIAL SIZE 1,
t_vbap TYPE STANDARD TABLE OF ty_vbap INITIAL SIZE 1,
t_fcat TYPE lvc_t_fcat,
w_fcat TYPE lvc_s_fcat,
t_fcat2 TYPE lvc_t_fcat,
w_fcat2 TYPE lvc_s_fcat,
t_fcat3 TYPE lvc_t_fcat,
w_fcat3 TYPE lvc_s_fcat,
w_vbak TYPE ty_vbak,
w_kna1 TYPE ty_kna1,
w_vbap TYPE ty_vbap.
DATA : v_kunnr TYPE kunnr,
v_land1 TYPE land1,
v_ort01 TYPE ort01.
DATA is_lay TYPE lvc_s_layo.
DATA gr_alv_kna1 TYPE REF TO cl_gui_alv_grid.
DATA gr_alv_vbak TYPE REF TO cl_gui_alv_grid.
DATA gr_alv_vbap TYPE REF TO cl_gui_alv_grid.
DATA gr_cont TYPE REF TO cl_gui_custom_container.
DATA gr_cont_kna1 TYPE REF TO cl_gui_container.
DATA gr_cont_2 TYPE REF TO cl_gui_container.
DATA gr_cont_vbak TYPE REF TO cl_gui_container.
DATA gr_cont_vbap TYPE REF TO cl_gui_container.
DATA gr_split1 TYPE REF TO cl_gui_splitter_container.
DATA gr_split2 TYPE REF TO cl_gui_splitter_container.
*& Include Z_OOPS_CONTINER_TOP
*&---------------------------------------------------------------------*
TABLES kna1.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS s_kunnr FOR kna1-kunnr.
SELECT-OPTIONS s_land1 FOR kna1-land1.
SELECT-OPTIONS s_ort01 FOR kna1-ort01.
SELECTION-SCREEN END OF BLOCK b1.
TYPES : BEGIN OF ty_vbak,
vbeln TYPE vbeln,
audat TYPE audat,
vkorg TYPE vkorg,
netwr TYPE netwr,
kunnr TYPE kunnr,
END OF ty_vbak,
BEGIN OF ty_kna1,
kunnr TYPE kunnr,
name1 TYPE name1,
ort01 TYPE ort01,
pstlz TYPE pstlz,
END OF ty_kna1,
BEGIN OF ty_vbap,
vbeln TYPE vbeln,
posnr TYPE posnr,
matnr TYPE matnr,
netwr TYPE netwr,
kwmeng TYPE kwmeng,
END OF ty_vbap.
DATA : t_vbak TYPE STANDARD TABLE OF ty_vbak INITIAL SIZE 1,
t_vbak_temp TYPE STANDARD TABLE OF ty_vbak INITIAL SIZE 1,
t_kna1 TYPE STANDARD TABLE OF ty_kna1 INITIAL SIZE 1,
t_kna1_temp TYPE STANDARD TABLE OF ty_kna1 INITIAL SIZE 1,
t_vbap TYPE STANDARD TABLE OF ty_vbap INITIAL SIZE 1,
t_fcat TYPE lvc_t_fcat,
w_fcat TYPE lvc_s_fcat,
t_fcat2 TYPE lvc_t_fcat,
w_fcat2 TYPE lvc_s_fcat,
t_fcat3 TYPE lvc_t_fcat,
w_fcat3 TYPE lvc_s_fcat,
w_vbak TYPE ty_vbak,
w_kna1 TYPE ty_kna1,
w_vbap TYPE ty_vbap.
DATA : v_kunnr TYPE kunnr,
v_land1 TYPE land1,
v_ort01 TYPE ort01.
DATA is_lay TYPE lvc_s_layo.
DATA gr_alv_kna1 TYPE REF TO cl_gui_alv_grid.
DATA gr_alv_vbak TYPE REF TO cl_gui_alv_grid.
DATA gr_alv_vbap TYPE REF TO cl_gui_alv_grid.
DATA gr_cont TYPE REF TO cl_gui_custom_container.
DATA gr_cont_kna1 TYPE REF TO cl_gui_container.
DATA gr_cont_2 TYPE REF TO cl_gui_container.
DATA gr_cont_vbak TYPE REF TO cl_gui_container.
DATA gr_cont_vbap TYPE REF TO cl_gui_container.
DATA gr_split1 TYPE REF TO cl_gui_splitter_container.
DATA gr_split2 TYPE REF TO cl_gui_splitter_container.
*&---------------------------------------------------------------------*
*& Include Z_OOPS_CONTINER_IMP
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form VALIDATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM validation .
IF s_kunnr IS NOT INITIAL.
SELECT SINGLE kunnr FROM kna1 INTO v_kunnr WHERE kunnr IN s_kunnr.
IF sy-subrc <> 0.
MESSAGE 'Customer is invalid' TYPE 'E'.
ENDIF.
ENDIF.
IF s_land1 IS NOT INITIAL.
SELECT SINGLE land1 FROM t005 INTO v_land1 WHERE land1 IN s_land1.
IF sy-subrc <> 0.
MESSAGE 'Country is invalid' TYPE 'E'.
ENDIF.
ENDIF.
IF s_ort01 IS NOT INITIAL.
SELECT SINGLE ort01 FROM kna1 INTO v_ort01 WHERE ort01 IN s_ort01.
IF sy-subrc <> 0.
MESSAGE 'City is invalid' TYPE 'E'.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .
SELECT kunnr name1 ort01 pstlz FROM kna1 INTO TABLE t_kna1 WHERE kunnr IN s_kunnr AND land1 IN s_land1 AND ort01 IN s_ort01.
IF sy-subrc <> 0.
MESSAGE 'NO RECORDS FOUND FOR THIS COMBINATION' TYPE 'I'.
LEAVE LIST-PROCESSING.
ELSE.
SORT t_kna1 BY kunnr.
ENDIF.
IF t_kna1 IS NOT INITIAL.
t_kna1_temp = t_kna1.
SORT t_kna1_temp BY kunnr.
DELETE ADJACENT DUPLICATES FROM t_kna1_temp COMPARING kunnr.
SELECT vbeln audat vkorg netwr kunnr FROM vbak INTO TABLE t_vbak FOR ALL ENTRIES IN t_kna1_temp WHERE kunnr = t_kna1_temp-kunnr.
IF sy-subrc = 0.
SORT t_vbak BY vbeln.
ENDIF.
IF t_vbak IS NOT INITIAL.
t_vbak_temp = t_vbak.
SORT t_vbak_temp BY vbeln kunnr.
DELETE ADJACENT DUPLICATES FROM t_vbak_temp COMPARING vbeln kunnr.
SELECT vbeln posnr matnr netwr kwmeng FROM vbap INTO TABLE t_vbap FOR ALL ENTRIES IN t_vbak_temp WHERE vbeln = t_vbak_temp-vbeln.
IF sy-subrc = 0.
SORT t_vbap BY vbeln.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*----------------------------------------------------------------------*
* MODULE STATUS_9001 OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE status_9001 OUTPUT.
SET PF-STATUS 'ZMYSTATUS_9001'.
SET TITLEBAR 'ZTITLE_9001'.
ENDMODULE. "STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*& Form FIELD_CAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM field_cat .
PERFORM fill_fcat USING : 'KUNNR' 'CUSTOMER NAME',
'NAME1' 'NAME',
'ORT01' 'CITY',
'PSTLZ' 'POSTALCODE'.
PERFORM fill_fcat2 USING : 'VBELN' 'SALES ID',
'KUNNR' 'CUSTOMER NAME',
'AUDAT' 'DATE',
'VKORG' 'SALES ORG.',
'NETWR' 'PRICE'.
PERFORM fill_fcat3 USING : 'VBELN' 'SALES ID',
'POSNR' 'SL NO.',
'MATNR' 'MATERIAL',
'KWMENG' 'QUANTITY',
'NETWR' 'PRICE'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9001 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
*& Form fill_fcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FNAM text
* -->P_FVAL text
*----------------------------------------------------------------------*
FORM fill_fcat USING p_fnam p_fval.
CLEAR w_fcat.
w_fcat-col_pos = '4'.
w_fcat-fieldname = p_fnam.
w_fcat-scrtext_m = p_fval.
APPEND w_fcat TO t_fcat.
ENDFORM. "fill_fcat
*&---------------------------------------------------------------------*
*& Form FILL_FCAT2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0404 text
* -->P_0405 text
*----------------------------------------------------------------------*
FORM fill_fcat2 USING p_fnam p_fval.
CLEAR w_fcat2.
w_fcat2-col_pos = '4'.
w_fcat2-fieldname = p_fnam.
w_fcat2-scrtext_m = p_fval.
APPEND w_fcat2 TO t_fcat2.
ENDFORM. " FILL_FCAT2
*&---------------------------------------------------------------------*
*& Form FILL_FCAT3
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0432 text
* -->P_0433 text
*----------------------------------------------------------------------*
FORM fill_fcat3 USING p_fnam p_fval.
CLEAR w_fcat3.
w_fcat3-col_pos = '4'.
w_fcat3-fieldname = p_fnam.
w_fcat3-scrtext_m = p_fval.
APPEND w_fcat3 TO t_fcat3.
ENDFORM. " FILL_FCAT3
*& Include Z_OOPS_CONTINER_IMP
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form VALIDATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM validation .
IF s_kunnr IS NOT INITIAL.
SELECT SINGLE kunnr FROM kna1 INTO v_kunnr WHERE kunnr IN s_kunnr.
IF sy-subrc <> 0.
MESSAGE 'Customer is invalid' TYPE 'E'.
ENDIF.
ENDIF.
IF s_land1 IS NOT INITIAL.
SELECT SINGLE land1 FROM t005 INTO v_land1 WHERE land1 IN s_land1.
IF sy-subrc <> 0.
MESSAGE 'Country is invalid' TYPE 'E'.
ENDIF.
ENDIF.
IF s_ort01 IS NOT INITIAL.
SELECT SINGLE ort01 FROM kna1 INTO v_ort01 WHERE ort01 IN s_ort01.
IF sy-subrc <> 0.
MESSAGE 'City is invalid' TYPE 'E'.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .
SELECT kunnr name1 ort01 pstlz FROM kna1 INTO TABLE t_kna1 WHERE kunnr IN s_kunnr AND land1 IN s_land1 AND ort01 IN s_ort01.
IF sy-subrc <> 0.
MESSAGE 'NO RECORDS FOUND FOR THIS COMBINATION' TYPE 'I'.
LEAVE LIST-PROCESSING.
ELSE.
SORT t_kna1 BY kunnr.
ENDIF.
IF t_kna1 IS NOT INITIAL.
t_kna1_temp = t_kna1.
SORT t_kna1_temp BY kunnr.
DELETE ADJACENT DUPLICATES FROM t_kna1_temp COMPARING kunnr.
SELECT vbeln audat vkorg netwr kunnr FROM vbak INTO TABLE t_vbak FOR ALL ENTRIES IN t_kna1_temp WHERE kunnr = t_kna1_temp-kunnr.
IF sy-subrc = 0.
SORT t_vbak BY vbeln.
ENDIF.
IF t_vbak IS NOT INITIAL.
t_vbak_temp = t_vbak.
SORT t_vbak_temp BY vbeln kunnr.
DELETE ADJACENT DUPLICATES FROM t_vbak_temp COMPARING vbeln kunnr.
SELECT vbeln posnr matnr netwr kwmeng FROM vbap INTO TABLE t_vbap FOR ALL ENTRIES IN t_vbak_temp WHERE vbeln = t_vbak_temp-vbeln.
IF sy-subrc = 0.
SORT t_vbap BY vbeln.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*----------------------------------------------------------------------*
* MODULE STATUS_9001 OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE status_9001 OUTPUT.
SET PF-STATUS 'ZMYSTATUS_9001'.
SET TITLEBAR 'ZTITLE_9001'.
ENDMODULE. "STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*& Form FIELD_CAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM field_cat .
PERFORM fill_fcat USING : 'KUNNR' 'CUSTOMER NAME',
'NAME1' 'NAME',
'ORT01' 'CITY',
'PSTLZ' 'POSTALCODE'.
PERFORM fill_fcat2 USING : 'VBELN' 'SALES ID',
'KUNNR' 'CUSTOMER NAME',
'AUDAT' 'DATE',
'VKORG' 'SALES ORG.',
'NETWR' 'PRICE'.
PERFORM fill_fcat3 USING : 'VBELN' 'SALES ID',
'POSNR' 'SL NO.',
'MATNR' 'MATERIAL',
'KWMENG' 'QUANTITY',
'NETWR' 'PRICE'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9001 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
*& Form fill_fcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FNAM text
* -->P_FVAL text
*----------------------------------------------------------------------*
FORM fill_fcat USING p_fnam p_fval.
CLEAR w_fcat.
w_fcat-col_pos = '4'.
w_fcat-fieldname = p_fnam.
w_fcat-scrtext_m = p_fval.
APPEND w_fcat TO t_fcat.
ENDFORM. "fill_fcat
*&---------------------------------------------------------------------*
*& Form FILL_FCAT2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0404 text
* -->P_0405 text
*----------------------------------------------------------------------*
FORM fill_fcat2 USING p_fnam p_fval.
CLEAR w_fcat2.
w_fcat2-col_pos = '4'.
w_fcat2-fieldname = p_fnam.
w_fcat2-scrtext_m = p_fval.
APPEND w_fcat2 TO t_fcat2.
ENDFORM. " FILL_FCAT2
*&---------------------------------------------------------------------*
*& Form FILL_FCAT3
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0432 text
* -->P_0433 text
*----------------------------------------------------------------------*
FORM fill_fcat3 USING p_fnam p_fval.
CLEAR w_fcat3.
w_fcat3-col_pos = '4'.
w_fcat3-fieldname = p_fnam.
w_fcat3-scrtext_m = p_fval.
APPEND w_fcat3 TO t_fcat3.
ENDFORM. " FILL_FCAT3
SCREEN9001:
PROCESS BEFORE OUTPUT.
MODULE status_9001.
MODULE inilization .
PROCESS AFTER INPUT.
MODULE user_command_9001.
MODULE status_9001.
MODULE inilization .
PROCESS AFTER INPUT.
MODULE user_command_9001.
INPUT SCREEN:
No comments:
Post a Comment