Real Time Delivery Report
Real Time Delivery Report
Real-time example of displaying delivery details for a range of sales orders in SAP ABAP.
REPORT ZPROJECT_RANGE NO STANDARD PAGE HEADING LINE-COUNT 37(3).
TABLES : VBAK,VBAP,VBFA,LIKP,LIPS.
INITIALIZATION.
V_TITLE = 'SALES DOCUMENT:ITEM DATA AND DELIVERY DETAILS'.
AT SELECTION-SCREEN.
PERFORM VALIDATE_SALESDOCUMENT.
PERFORM VALIDATE_SALESORGANIZATION.
PERFORM VALIDATE_DISTRIBUTIONCHANNEL.
PERFORM VALIDATE_DIVISION.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM DISPLAY_DATA.
PERFORM DOWNLOAD_DATA.
END-OF-SELECTION.
TOP-OF-PAGE.
PERFORM DISPLAY_HEADING.
END-OF-PAGE.
PERFORM DISPLAY_FOOTER.
FORM GET_FILE_PATH .
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
PROGRAM_NAME = SYST-REPID
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = P_FILE
CHANGING
FILE_NAME = P_FILE.
ENDFORM. " GET_FILE_PATH
FORM GET_HELP_FOR_FILE_PATH .
MESSAGE 'PLEASE SELECT FILE PATH' TYPE 'I'.
ENDFORM. " GET_HELP_FOR_FILE_PATH
FORM VALIDATE_SALESDOCUMENT .
SELECT SINGLE VBELN FROM VBAK INTO WA_VBAK WHERE VBELN IN S_VBELN.
IF SY-SUBRC <> 0.
MESSAGE 'INVALID SALES DOCUMENT NO' TYPE 'I'.
ENDIF.
ENDFORM. " VALIDATE_SALESDOCUMENT
FORM VALIDATE_SALESORGANIZATION .
SELECT VKORG FROM VBAK INTO WA_VBAK UP TO 1 ROWS WHERE VKORG IN S_VKORG.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE 'INVALID SALES ORGANIZATION' TYPE 'I'.
ENDIF.
ENDFORM. " VALIDATE_SALESORGANIZATION
FORM VALIDATE_DISTRIBUTIONCHANNEL.
SELECT VTWEG FROM VBAK INTO WA_VBAK UP TO 1 ROWS WHERE VTWEG IN S_VTWEG.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE 'INVALID DISTRIBUTION CHANNEL' TYPE 'I'.
ENDIF.
ENDFORM. " VALIDATE_DISTRIBUTIONCHANNEL
FORM VALIDATE_DIVISION .
SELECT SPART FROM VBAK INTO WA_VBAK UP TO 1 ROWS WHERE SPART IN S_SPART.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE 'INVALID DIVISION' TYPE 'I'.
ENDIF.
ENDFORM. " VALIDATE_DIVISION
FORM GET_DATA .
SELECT VBELN VKORG VTWEG SPART FROM VBAK INTO TABLE I_VBAK WHERE VBELN IN
S_VBELN AND VKORG IN S_VKORG
AND VTWEG IN
S_VTWEG AND SPART IN S_SPART.
IF I_VBAK IS NOT INITIAL.
SELECT VBELN POSNR MATNR ZMENG NETPR FROM VBAP INTO TABLE I_VBAP FOR ALL
ENTRIES IN I_VBAK
WHERE
VBELN = I_VBAK-VBELN.
SELECT VBELV POSNV VBELN POSNN VBTYP_N FROM VBFA INTO TABLE I_VBFA FOR
ALL ENTRIES IN I_VBAP
WHERE VBELV = I_VBAP-
VBELN AND VBTYP_N = 'J'.
SELECT VBELN FROM LIKP INTO TABLE I_LIKP FOR ALL ENTRIES IN I_VBFA WHERE
VBELN = I_VBFA-VBELN.
SELECT VBELN POSNR LFIMG NETPR FROM LIPS INTO TABLE I_LIPS FOR ALL
ENTRIES IN I_LIKP
WHERE VBELN =
I_LIKP-VBELN.
SORT I_VBAP.
SORT I_LIPS.
FORM DISPLAY_DATA .
LOOP AT I_FINAL INTO WA_FINAL.
WRITE : / WA_FINAL-VBELN,WA_FINAL-POSNR,WA_FINAL-MATNR,WA_FINAL-
ZMENG,WA_FINAL-NETPR,
WA_FINAL-VBELN1,WA_FINAL-POSNR1,WA_FINAL-LFIMG,WA_FINAL-NETPR.
ENDLOOP.
ENDFORM. " DISPLAY_DATA
FORM DOWNLOAD_DATA .
IF DOWNLOAD = 'X'.
V_FNAME = P_FILE.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = V_FNAME
FILETYPE = 'ASC'
WRITE_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = I_FINAL.
IF SY-SUBRC = 0.
MESSAGE 'DATA SUCCESSFULLY DOWNLOADED' TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM. " DOWNLOAD_DATA
FORM DISPLAY_HEADING .
WRITE: SY-ULINE.
WRITE :/45 V_TITLE.
WRITE: SY-ULINE.
ENDFORM. " DISPLAY_HEADING
FORM DISPLAY_FOOTER .
WRITE: SY-ULINE.
WRITE :/45 'INTEL GROUP OF COMPANIES'.
WRITE: SY-ULINE.
ENDFORM. " DISPLAY_FOOTER