REPORT  zpsr_psp_cbf_upload_sch.
***************************************************************
INCLUDE zpsr_psp_cbf_upload_schtop.
START-OF-SELECTION.
  SELECT DISTINCT pernr                  
                                       bukrs            
FROM  pa0001       INTO TABLE it_pa0001            
WHERE bukrs IN ('WC01' ,'WH01','WT01','WT02','WT11', 'WT23', 'WT27', 'WT29', 'WT40', 'WU11')       
%_HINTS ORACLE 'INDEX("pa0001" "pa0001~BUK")'. 
* This is create secondary index in select statement  this improves the performance
IF sy-subrc = 0.    
SORT it_pa0001 BY pernr.    
IF it_pa0001 IS NOT INITIAL.      
SELECT DISTINCT pernr                 
FROM pa0000           
INTO TABLE it_pa0000        
FOR ALL ENTRIES IN it_pa0001      
 WHERE pernr = it_pa0001-pernr AND             
endda = '99991231'      AND            
 stat2 = '3'   
%_HINTS ORACLE 'INDEX("pa0000" "pa0000~Z03")'.
 IF sy-subrc = 0.        
SORT it_pa0000 BY pernr.       
 IF it_pa0000 IS NOT INITIAL.          
SELECT DISTINCT pernr                     
FROM pa0008              
 INTO TABLE it_pa0008      
 FOR ALL ENTRIES IN it_pa0000                    
WHERE pernr = it_pa0000-pernr AND                         
 endda = '99991231'      AND                         
 trfgr NOT IN ('GROUP D1', 'GROUP D2', 'GROUP E').         
 IF sy-subrc = 0.            
SORT it_pa0008 BY pernr.          
ENDIF.      
  ENDIF.   "End of PA0008    
  ENDIF.   
 ENDIF.       "End of PA0000  
ENDIF.         "End of PA0001
 DESCRIBE TABLE it_pa0008 LINES lv_count.
  lv_n = lv_count / lv_value.
  lv_val = lv_n * lv_value.  
IF lv_count LT lv_value.    
lv_n = '1'.  
ELSE.   
 IF lv_count GT lv_val.     
 lv_n = lv_n + 1.    
ENDIF. 
 ENDIF.
  IF lv_count GE lv_value.   
 lv_end = lv_value. 
 ELSE.   
 lv_end  = lv_end  + lv_count. 
 ENDIF.
 lv_start = '1'.
  DO lv_n TIMES.
    LOOP AT it_pa0008 INTO wa_pa0008 FROM lv_start TO lv_end.    
  rspar_line-selname = 'SO_PERNR'.     
 rspar_line-kind    = 'S'.     
 rspar_line-low     = wa_pa0008-pernr.     
 rspar_line-sign    = 'I'.     
 rspar_line-option  = 'EQ'.     
 APPEND rspar_line TO rspar_tab.   
 ENDLOOP.
 IF rspar_tab IS NOT INITIAL.      
lv_no = sy-index.
      CONCATENATE '/oracle/WE3/sapreorg/abap/cbf' lv_no INTO lv_filename.      
CONDENSE lv_filename NO-GAPS.      
CONCATENATE lv_filename sy-datum INTO lv_filename SEPARATED BY '_'.      CONCATENATE lv_filename '.txt' INTO lv_filename.      
CONDENSE lv_filename NO-GAPS.      
rspar_line-selname = 'P_PATH'.      
rspar_line-kind    = 'P'.     
 rspar_line-low     = lv_filename.     
 rspar_line-sign    = 'I'.     
 rspar_line-option  = 'EQ'.      
APPEND rspar_line TO rspar_tab.      
CLEAR: lv_filename.
CONCATENATE lv_name  lv_no INTO lv_jobname SEPARATED BY '_'.
CONDENSE lv_jobname NO-GAPS.
********************************************
 CALL FUNCTION 'JOB_OPEN'        
EXPORTING         
 jobname          = lv_jobname       
 IMPORTING         
 jobcount         = number        
EXCEPTIONS          
cant_create_job  = 1        
  invalid_job_data = 2        
  jobname_missing  = 3      
    OTHERS           = 4.
*******************************************
IF sy-subrc IS INITIAL.        
SUBMIT  zpsr_psp_cbf_file TO SAP-SPOOL                                  
SPOOL PARAMETERS print_parameters                                 .
 WITHOUT SPOOL DYNPRO                                  
VIA JOB lv_jobname NUMBER number                                  
WITH SELECTION-TABLE rspar_tab                                  
AND RETURN.     
 ENDIF.
************************************************************
IF sy-subrc IS INITIAL.        
CALL FUNCTION 'JOB_CLOSE'        
EXPORTING         
 jobcount             = number          
jobname              = lv_jobname
*          predjob_checkstat    = 'X'         
 strtimmed            = 'X'
*          pred_jobcount        = ls_jobstatus-prejobno
*          pred_jobname         = ls_jobstatus-prejobname        
EXCEPTIONS          
cant_start_immediate = 1          
invalid_startdate    = 2         
 jobname_missing      = 3        
  job_close_failed     = 4         
 job_nosteps          = 5        
  job_notex            = 6         
 lock_failed          = 7          
OTHERS               = 8.       
 IF sy-subrc IS INITIAL.          
WRITE: / lv_jobname, 'is created'.        
ELSE.         
 WRITE: / lv_jobname, 'is not created'.        
ENDIF.      
ENDIF.    
ENDIF.
*********************************************
 lv_start =  lv_start + lv_value.
lv_end = lv_end + lv_value.
    IF lv_end > lv_count.      
lv_end = lv_count.    
ENDIF.
    CLEAR: lv_jobname, 
rspar_tab, number.  
ENDDO.
**********************************************
 
No comments:
Post a Comment