************************************************************************ * Author - Sheila Titchener * * Program - Report of orders with billing/delivery blocks * Date - October 1998 * * Company - IconeT Services * ************************************************************************ ************************************************************************ REPORT YVREE024 LINE-SIZE 185 LINE-COUNT 63 NO STANDARD PAGE HEADING. *---------------------------------------------------------------------* * DATA DECLARATIONS * *---------------------------------------------------------------------* TABLES: VBAK, VBAP, VBEP, KNA1, TVFST, TVLST. * Selection screens. *----------------------------------------------------------------------- * mandatory parameters SELECTION-SCREEN BEGIN OF BLOCK PARAMETERS WITH FRAME TITLE TEXT-020 . PARAMETERS: P_VKORG LIKE VBAK-VKORG OBLIGATORY , P_VTWEG LIKE VBAK-VTWEG OBLIGATORY , P_SPART LIKE VBAK-SPART OBLIGATORY . SELECTION-SCREEN END OF BLOCK PARAMETERS. *----------------------------------------------------------------------- * optional selection ranges SELECTION-SCREEN BEGIN OF BLOCK SELECT_CRITERIA WITH FRAME TITLE TEXT-010 . SELECT-OPTIONS: S_VKBUR FOR VBAK-VKBUR, S_VKGRP FOR VBAK-VKGRP, S_KUNNR FOR VBAK-KUNNR. SELECTION-SCREEN END OF BLOCK SELECT_CRITERIA . * Order header table. DATA: BEGIN OF I_VBAK OCCURS 0, VBELN LIKE VBAK-VBELN, KUNNR LIKE VBAK-KUNNR, FAKSK LIKE VBAK-FAKSK, "billing block LIFSK LIKE VBAK-LIFSK, "delivery block END OF I_VBAK. * report table DATA: BEGIN OF ITAB OCCURS 0, VBELN LIKE VBAP-VBELN, " Order Number KUNNR LIKE VBAK-KUNNR, " Customer Number NAME1 LIKE KNA1-NAME1, " Customer Name ERNAM LIKE VBAK-ERNAM, " User created POSNR LIKE VBAP-POSNR, " Line Item MATNR LIKE VBAP-MATNR, " Material Number KWMENG LIKE VBAP-KWMENG, " Quantity MEINS LIKE VBAP-MEINS, " Unit of measure NETWR LIKE VBAP-NETWR, " value FAKSP LIKE VBAP-FAKSP, " billing block LIFSP LIKE VBEP-LIFSP, " delivery block END OF ITAB. *---------------------------------------------------------------------* INITIALIZATION . GET PARAMETER ID 'VKO' FIELD P_VKORG. GET PARAMETER ID 'VTW' FIELD P_VTWEG. GET PARAMETER ID 'SPA' FIELD P_SPART. *---------------------------------------------------------------------* START-OF-SELECTION . *---------------------------------------------------------------------* * populate vbak table from selection criteria with headers that have * billing or delivery blocks PERFORM SELECT_DOCUMENTS. * select blocked items from documents selected from vbak PERFORM SELECT_BLOCKED_ITEMS. *---------------------------------------------------------------------* END-OF-SELECTION. *---------------------------------------------------------------------* SORT ITAB BY VBELN POSNR. * print report from internal table PERFORM PRINT_REPORT. * run report of orders with payment block on customer SUBMIT YVREE025 EXPORTING LIST TO MEMORY AND RETURN WITH P_VKORG = P_VKORG WITH P_VTWEG = P_VTWEG WITH P_SPART = P_SPART WITH S_VKBUR IN S_VKBUR WITH S_VKGRP IN S_VKGRP WITH S_KUNNR IN S_KUNNR. DATA: ABAPLIST LIKE ABAPLIST OCCURS 0. * recover YVREE025 report and display CALL FUNCTION 'LIST_FROM_MEMORY' TABLES LISTOBJECT = ABAPLIST EXCEPTIONS NOT_FOUND = 1 OTHERS = 2. *if sy-batch = space. CALL FUNCTION 'DISPLAY_LIST' EXPORTING FULLSCREEN = 'X' * CALLER_HANDLES_EVENTS = IMPORTING USER_COMMAND = SY-UCOMM TABLES LISTOBJECT = ABAPLIST EXCEPTIONS EMPTY_LIST = 1 OTHERS = 2. *else. * using write_list duplicates yvree024 headings on yvree025 list * display_list prints ok in background as long as print immediately is * NOT switched off *call function 'WRITE_LIST' * tables * listobject = abaplist * exceptions * empty_list = 1 * others = 2. *endif. *---------------------------------------------------------------------* TOP-OF-PAGE. *---------------------------------------------------------------------* * write top of page title. PERFORM WRITE_TITLE . * write column headings. PERFORM WRITE_HEADER. *&---------------------------------------------------------------------* *& Form SELECT_DOCUMENTS *&---------------------------------------------------------------------* * select order header details from vbak depending on selection * criteria entered *----------------------------------------------------------------------* FORM SELECT_DOCUMENTS. SELECT VBELN KUNNR LIFSK FAKSK FROM VBAK INTO CORRESPONDING FIELDS OF TABLE I_VBAK WHERE VKORG = P_VKORG AND VTWEG = P_VTWEG AND SPART = P_SPART AND VKGRP IN S_VKGRP AND VKBUR IN S_VKBUR AND KUNNR IN S_KUNNR. ENDFORM. " SELECT_DOCUMENTS *&---------------------------------------------------------------------* *& Form SELECT_BLOCKED_ITEMS *&---------------------------------------------------------------------* * check extracted documents for blocks * *----------------------------------------------------------------------* FORM SELECT_BLOCKED_ITEMS. * process oders selected LOOP AT I_VBAK. * if order blocked at header level select all items IF I_VBAK-FAKSK NE SPACE OR I_VBAK-LIFSK NE SPACE. PERFORM SELECT_ALL_ITEMS. ELSE. * check for block at item level SELECT VBELN POSNR MATNR KWMENG MEINS NETWR FAKSP ERNAM FROM VBAP INTO (VBAP-VBELN, VBAP-POSNR, VBAP-MATNR, VBAP-KWMENG, VBAP-MEINS, VBAP-NETWR, VBAP-FAKSP, VBAP-ERNAM) WHERE VBELN = I_VBAK-VBELN. IF VBAP-FAKSP NE SPACE. CLEAR ITAB. MOVE-CORRESPONDING VBAP TO ITAB. MOVE I_VBAK-KUNNR TO ITAB-KUNNR. APPEND ITAB. ELSE. * check for block at delivery level SELECT LIFSP WMENG FROM VBEP INTO (VBEP-LIFSP, VBEP-WMENG) WHERE VBELN = I_VBAK-VBELN AND POSNR = VBAP-POSNR. IF VBEP-LIFSP NE SPACE. CLEAR ITAB. MOVE-CORRESPONDING VBAP TO ITAB. MOVE I_VBAK-KUNNR TO ITAB-KUNNR. * use schedule qty MOVE VBEP-WMENG TO ITAB-KWMENG. * and reason MOVE VBEP-LIFSP TO ITAB-LIFSP. * recalculate value ITAB-NETWR = ITAB-NETWR / VBAP-KWMENG * VBEP-WMENG. APPEND ITAB. ENDIF. ENDSELECT. ENDIF. ENDSELECT. ENDIF. ENDLOOP. ENDFORM. " SELECT_BLOCKED_ITEMS *&---------------------------------------------------------------------* *& Form PRINT_REPORT *&---------------------------------------------------------------------* * text * *----------------------------------------------------------------------* FORM PRINT_REPORT. DATA: W_REASON_TEXT(25). LOOP AT ITAB. * get name SELECT SINGLE NAME1 FROM KNA1 INTO KNA1-NAME1 WHERE KUNNR = ITAB-KUNNR . * get reason text IF ITAB-FAKSP NE SPACE. SELECT SINGLE VTEXT FROM TVFST INTO W_REASON_TEXT WHERE SPRAS = SY-LANGU AND FAKSP = ITAB-FAKSP . ELSE. SELECT SINGLE VTEXT FROM TVLST INTO W_REASON_TEXT WHERE SPRAS = SY-LANGU AND LIFSP = ITAB-LIFSP. ENDIF. * WRITE: / SY-VLINE , (10) ITAB-VBELN, SY-VLINE , (10) ITAB-KUNNR, SY-VLINE , (35) KNA1-NAME1, SY-VLINE , (12) ITAB-ERNAM, SY-VLINE , (6) ITAB-POSNR, SY-VLINE , (18) ITAB-MATNR, SY-VLINE , (10) ITAB-KWMENG DECIMALS 0, SY-VLINE , (3) ITAB-MEINS, SY-VLINE , (15) ITAB-NETWR, SY-VLINE , (02) ITAB-LIFSP, SY-VLINE , (02) ITAB-FAKSP, SY-VLINE , (25) W_REASON_TEXT, SY-VLINE . ENDLOOP. WRITE:/1(185) SY-ULINE. ENDFORM. " PRINT_REPORT *---------------------------------------------------------------------* * FORM WRITE_TITLE * *---------------------------------------------------------------------* * Form to write top of page title. * *---------------------------------------------------------------------* FORM WRITE_TITLE. WRITE:/1(185) SY-ULINE. WRITE:/ 'Pirelli Cables Limited' , 40 SY-TITLE , " Report title 120 'Date :' , 130 SY-DATUM . WRITE:/120 'Page :' , 130 SY-PAGNO , " Page number of the report 160 'YV24 / YVREE024 /', SY-MANDT. WRITE:/160 'Report 2 of 2'. WRITE:/1(185) SY-ULINE. * format color col_heading intensified off. WRITE:/(25) 'Report generated for; ', 'Sales Organisation:', P_VKORG , ' Distribution Channel:', P_VTWEG, ' Division:', P_SPART. WRITE: /27 'Sales Office:', S_VKBUR-LOW. IF S_VKBUR-HIGH NE SPACE. WRITE: ' - ', S_VKBUR-HIGH. ENDIF. WRITE: 59 ' Sales Group:', S_VKGRP-LOW. IF S_VKGRP-HIGH NE SPACE. WRITE: ' - ', S_VKGRP-HIGH. ENDIF. WRITE: 92 ' Customer:', S_KUNNR-LOW. IF S_KUNNR-HIGH NE SPACE. WRITE: ' - ', S_KUNNR-HIGH. ENDIF. WRITE:/1(185) SY-ULINE. ENDFORM. *---------------------------------------------------------------------* * FORM WRITE-HEADER * *---------------------------------------------------------------------* * Form to write Column headings * *---------------------------------------------------------------------* FORM WRITE_HEADER. SKIP. FORMAT COLOR COL_HEADING INTENSIFIED. WRITE:/1(185) SY-ULINE. WRITE:/ SY-VLINE , (10) ' Order ' , SY-VLINE , (10) ' Customer ' , SY-VLINE , (35) ' Name ' , SY-VLINE , (12) ' User created', SY-VLINE , (06) ' Item ' , SY-VLINE , (18) ' Material', SY-VLINE , (10) 'Quantity' CENTERED DECIMALS 0, SY-VLINE , (03) 'UOM' , SY-VLINE , (15) ' Value ', SY-VLINE , (02) 'DB', SY-VLINE , (02) 'BB', SY-VLINE , (25) ' Reason', SY-VLINE . ENDFORM. *&---------------------------------------------------------------------* *& Form SELECT_ALL_ITEMS *&---------------------------------------------------------------------* * select all items for this header when blocked at header level * *----------------------------------------------------------------------* FORM SELECT_ALL_ITEMS. SELECT VBELN POSNR MATNR KWMENG MEINS NETWR ERNAM FROM VBAP INTO (VBAP-VBELN, VBAP-POSNR, VBAP-MATNR, VBAP-KWMENG, VBAP-MEINS, VBAP-NETWR, VBAP-ERNAM) * REMOVED appending corresponding fields of table itab WHERE VBELN = I_VBAK-VBELN. MOVE-CORRESPONDING VBAP TO ITAB. MOVE I_VBAK-FAKSK TO ITAB-FAKSP. MOVE I_VBAK-LIFSK TO ITAB-LIFSP. MOVE I_VBAK-KUNNR TO ITAB-KUNNR. APPEND ITAB. ENDSELECT. ENDFORM. " SELECT_ALL_ITEMS