Sales Report
Sales Report
PERFORM build_fieldcat.
IF gd_fieldcat IS NOT INITIAL.
PERFORM build_layout.
PERFORM display_output.
ENDIF. "IF gd_fieldcat IS NOT INITIAL
ELSE.
ELSE.
MESSAGE s117(rsdme) DISPLAY LIKE 'E'.
* Record not found
ENDIF. "IF it_vbap[] IS NOT INITIAL
*----------------------------------------------------------------------*
* End of main program
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FETCH_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fetch_data .
gd_repid = sy-repid.
IF sy-uname EQ 'ABAP'.
gd_save = 'A'. "Default
ELSE.
gd_save = 'U'. "User Specific
ENDIF. "IF sy-uname EQ 'ABAP'
SELECT vbeln
erdat
ernam
vbtyp
vkorg
waerk
kunnr
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN so_vbeln
AND vbtyp EQ 'C'.
SELECT vbeln
posnr
matnr
kwmeng
meins
netpr
kpein
netwr
FROM vbap
INTO TABLE it_vbap
FOR ALL ENTRIES IN it_vbak
WHERE vbeln EQ it_vbak-vbeln.
SELECT kunnr
name1
FROM kna1
INTO TABLE it_kna1
FOR ALL ENTRIES IN it_vbak
WHERE kunnr EQ it_vbak-kunnr.
SELECT matnr
spras
maktx
FROM makt
INTO TABLE it_makt
FOR ALL ENTRIES IN it_vbap
WHERE matnr EQ it_vbap-matnr
AND spras EQ sy-langu.
SELECT vbelv
posnv
vbeln
posnn
vbtyp_n
FROM vbfa
INTO TABLE it_vbfa
FOR ALL ENTRIES IN it_vbap
WHERE vbelv EQ it_vbap-vbeln
AND posnv EQ it_vbap-posnr
AND vbtyp_n IN ('J','M').
SELECT vbeln
waerk
FROM likp
INTO TABLE it_likp
FOR ALL ENTRIES IN it_vbfa
WHERE vbeln EQ it_vbfa-vbeln.
SELECT vbeln
waerk
fksto
FROM vbrk
INTO TABLE it_vbrk
FOR ALL ENTRIES IN it_vbfa
WHERE vbeln EQ it_vbfa-vbeln
AND fksto EQ ' '.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_data .
LOOP AT it_vbap.
it_output-vbeln = it_vbap-vbeln.
it_output-posnr = it_vbap-posnr.
it_output-matnr = it_vbap-matnr.
it_output-kwmeng = it_vbap-kwmeng.
it_output-meins = it_vbap-meins.
it_output-netpr = it_vbap-netpr.
it_output-kpein = it_vbap-kpein.
it_output-netwr = it_vbap-netwr.
READ TABLE it_vbak
WITH KEY vbeln = it_vbap-vbeln.
IF sy-subrc EQ 0.
it_output-erdat = it_vbak-erdat.
it_output-ernam = it_vbak-ernam.
it_output-vkorg = it_vbak-vkorg.
it_output-waerk = it_vbak-waerk.
it_output-kunnr = it_vbak-kunnr.
CLEAR: it_makt,
it_vbrp,
it_vbrk,
it_vbfa.
ENDLOOP. "LOOP AT it_vbfa WHERE vbelv EQ it_vbap-vbeln
IF it_output-vbeln1 IS INITIAL.
APPEND it_output.
ENDIF. "IF it_output-vbeln1 IS INITIAL
CLEAR: it_output,
it_vbak,
it_vbap,
it_kna1.
ENDLOOP. "LOOP AT it_vbap
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fieldcat .
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
CASE wa_fieldcat-fieldname.
WHEN 'SELECTION' OR 'NETPR' OR 'KPEIN'.
wa_fieldcat-no_out = 'X'.
wa_fieldcat-tech = 'X'.
WHEN 'VBELN' OR 'VBELN1' OR 'VBELN2' OR 'MATNR' OR
'MATNR1' OR 'MATNR2'.
wa_fieldcat-hotspot = 'X'.
WHEN 'KWMENG'.
wa_fieldcat-no_zero = 'X'.
ENDCASE. "CASE wa_fieldcat-fieldname
CLEAR wa_fieldcat.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_layout .
gd_layout-zebra = 'X'.
gd_layout-box_fieldname = 'SELECTION'.
gd_layout-colwidth_optimize = 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_output .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF. "IF sy-subrc <> 0
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PROGRESS_INDICATOR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_30 text
* -->P_TEXT_T02 text
*----------------------------------------------------------------------*
FORM progress_indicator USING p_per p_text.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM user_command USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN '&IC1'.
IF p_selfield-value IS NOT INITIAL.
CASE p_selfield-fieldname.
WHEN 'VBELN'.
SET PARAMETER ID 'AUN' FIELD p_selfield-value.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
WHEN 'VBELN1'.
SET PARAMETER ID 'VL' FIELD p_selfield-value.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
WHEN 'VBELN2'.
SET PARAMETER ID 'VF' FIELD p_selfield-value.
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
WHEN 'MATNR' OR 'MATNR1' OR 'MATNR2'.
SET PARAMETER ID 'MAT' FIELD p_selfield-value.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PF_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM pf_status USING p_extab TYPE slis_t_extab.
it_exclude-fcode = '&DATA_SAVE'.
APPEND it_exclude.
CLEAR it_exclude.
ENDFORM.