Advertisement
Guest User

Untitled

a guest
Dec 19th, 2014
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 6.03 KB | None | 0 0
  1. REPORT zhr_payslip_period." NO STANDARD PAGE HEADING LINE-SIZE 132.
  2.  
  3. TABLES pernr.
  4. INFOTYPES: 0001.
  5.  
  6. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-b01.
  7.  
  8. SELECTION-SCREEN BEGIN OF LINE.
  9. SELECTION-SCREEN COMMENT 1(31) text-t01 FOR FIELD p_month1.
  10. PARAMETERS p_month1 LIKE pnppabrp OBLIGATORY.
  11. PARAMETERS p_yaer1  LIKE pnppabrj OBLIGATORY.
  12.  
  13. SELECTION-SCREEN COMMENT 50(10) text-t02 FOR FIELD p_month2.
  14. PARAMETERS p_month2 LIKE pnppabrp OBLIGATORY.
  15. PARAMETERS p_yaer2  LIKE pnppabrj OBLIGATORY.
  16. SELECTION-SCREEN END OF LINE.
  17.  
  18. PARAMETERS p_report LIKE sy-repid      DEFAULT 'HRUCEDT0' NO-DISPLAY.
  19. PARAMETERS p_vari   LIKE rsvar-variant DEFAULT 'CUS&RG2'  OBLIGATORY.
  20.  
  21. PARAMETERS p_double AS CHECKBOX USER-COMMAND but01.
  22. SELECTION-SCREEN END OF BLOCK b1.
  23.  
  24. PARAMETERS c_line TYPE i DEFAULT '75'."'65'.
  25. "PARAMETERS c_line_count  TYPE i DEFAULT '75'."'65'.
  26. CONSTANTS c_line_size   TYPE i VALUE '132'.
  27. CONSTANTS c_line_size_2 TYPE i VALUE '238'. "'227'.
  28.  
  29. CONSTANTS c_pos_2       TYPE i VALUE '127'."'115'.
  30.  
  31.  
  32. DATA g_flag.
  33. DATA g_linno       TYPE sy-linno.
  34. DATA g_line_size   TYPE i.
  35. DATA g_period_from TYPE pc261-fpper.
  36. DATA g_period_to   TYPE pc261-fpper.
  37. DATA g_period_cur  TYPE pc261-fpper.
  38. DATA gt_549q       LIKE TABLE OF t549q WITH HEADER LINE.
  39. DATA l_index       TYPE sy-tabix.
  40.  
  41. *=======================================================================
  42. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
  43.   PERFORM f4_variant.
  44.  
  45. AT SELECTION-SCREEN OUTPUT.
  46.   IF ( p_double IS INITIAL ).
  47.     p_vari = 'CUS&RG2'.
  48.   ELSE.
  49.     p_vari = 'CUS&RG-EMPL_2'. "'CUS&RUSG-EMPL'.
  50.   ENDIF.
  51.  
  52. *=======================================================================
  53. INITIALIZATION.
  54.   p_month1 = p_month2 = sy-datum+4(2).
  55.   p_yaer1  = p_yaer2  = sy-datum(4).
  56.  
  57. *=======================================================================
  58. START-OF-SELECTION.
  59.   g_linno = sy-linno.
  60.   CONCATENATE p_yaer1 p_month1 INTO g_period_from.
  61.   CONCATENATE p_yaer2 p_month2 INTO g_period_to.
  62.  
  63.   IF ( g_period_from > g_period_to ).
  64.     MESSAGE i015(hrbas00_pnpce).
  65.     REJECT.
  66.   ENDIF.
  67.  
  68.   SELECT * INTO TABLE gt_549q FROM t549q WHERE permo = '01'
  69.                                            AND pabrj <= p_yaer2
  70.                                            AND pabrj >= p_yaer1.
  71.  
  72.  
  73.   IF ( p_double IS INITIAL ).
  74.     g_line_size = c_line_size.
  75.   ELSE.
  76.     g_line_size = c_line_size_2.
  77.   ENDIF.
  78.  
  79.   NEW-PAGE LINE-COUNT c_line
  80.            LINE-SIZE  g_line_size.
  81.  
  82.  
  83. *=======================================================================
  84. GET pernr.
  85.  
  86.   g_period_cur = g_period_from.
  87.  
  88.   WHILE g_period_cur <= g_period_to.
  89.     READ TABLE gt_549q WITH KEY pabrj = g_period_cur(4)
  90.                                 pabrp = g_period_cur+4(2).
  91.     IF ( sy-subrc = 0 ).
  92.       l_index = sy-tabix + 1.
  93.     ELSE.
  94.       MESSAGE e505(pg) WITH g_period_cur+4(2) g_period_cur(4).
  95.       EXIT.
  96.     ENDIF.
  97.  
  98.     PERFORM get_data USING g_period_cur+4(2) g_period_cur(4).
  99.  
  100.     READ TABLE gt_549q INDEX l_index.
  101.     IF ( sy-subrc = 0 ).
  102.       CONCATENATE gt_549q-pabrj gt_549q-pabrp INTO g_period_cur.
  103.     ELSE.
  104.       EXIT.
  105.     ENDIF.
  106.  
  107.   ENDWHILE.
  108.  
  109. *=======================================================================
  110. FORM get_data USING p_month p_year.
  111.   DATA lv_lines TYPE i.
  112.   DATA lt_data  TYPE TABLE OF abaplist.
  113.   DATA contents_data TYPE TABLE OF solisti1.
  114.   DATA ls_contents_data TYPE solisti1.
  115.  
  116. * Чистим память перед импортом результата
  117.   DO.
  118.     CALL FUNCTION 'LIST_FREE_MEMORY'
  119.       TABLES
  120.         listobject = lt_data.
  121.  
  122.     CALL FUNCTION 'LIST_FROM_MEMORY'
  123.       TABLES
  124.         listobject = lt_data
  125.       EXCEPTIONS
  126.         not_found  = 1
  127.         OTHERS     = 2.
  128.  
  129.     CHECK sy-subrc <> 0.
  130.     EXIT.
  131.   ENDDO.
  132.  
  133.   rp-provide-from-last p0001 '' pn-begda pn-endda.
  134.  
  135.   SUBMIT (p_report) USING SELECTION-SET p_vari
  136.                   WITH pnppernr EQ pernr-pernr
  137.                   WITH pnpxabkr EQ p0001-abkrs "pnpxabkr
  138.                   WITH pnpabkrs IN pnpabkrs
  139.                   WITH pnptimr9 EQ abap_false  "pnptimr9
  140.                   WITH pnptimra EQ abap_true   "pnptimra
  141.                   WITH pnppabrp EQ p_month
  142.                   WITH pnppabrj EQ p_year
  143.                   WITH prt_prot EQ ' '
  144.                   EXPORTING LIST TO MEMORY
  145.                   AND RETURN.
  146.  
  147.   CALL FUNCTION 'LIST_FROM_MEMORY'
  148.     TABLES
  149.       listobject = lt_data
  150.     EXCEPTIONS
  151.       not_found  = 1
  152.       OTHERS     = 2.
  153.  
  154.   CALL FUNCTION 'LIST_TO_ASCI'
  155.     TABLES
  156.       listasci           = contents_data
  157.       listobject         = lt_data
  158.     EXCEPTIONS
  159.       empty_list         = 1
  160.       list_index_invalid = 2
  161.       OTHERS             = 3.
  162.  
  163.   IF ( sy-subrc = 0 AND g_flag = abap_true ).
  164. *    NEW-PAGE.
  165.     "SKIP.
  166.   ENDIF.
  167.  
  168.   lv_lines = lines( contents_data ).
  169.   lv_lines = lv_lines + g_linno.
  170.   IF ( lv_lines > c_line ).
  171.     NEW-PAGE LINE-COUNT c_line
  172.              LINE-SIZE  g_line_size.
  173.   ENDIF.
  174.  
  175.   LOOP AT contents_data INTO ls_contents_data.
  176.     IF ( ls_contents_data IS INITIAL ).
  177.       SKIP.
  178.  
  179.     ELSE.
  180.  
  181.       IF ( p_double IS INITIAL ).
  182.         WRITE: / ls_contents_data.
  183.       ELSE.
  184.         WRITE: /14(c_line_size) ls_contents_data,
  185.                AT c_pos_2(c_line_size) ls_contents_data.
  186.       ENDIF.
  187.  
  188.     ENDIF.
  189.   ENDLOOP.
  190.   IF ( sy-subrc = 0 ).
  191.     g_flag  = abap_true.
  192.     g_linno = sy-linno + 1.
  193.   ENDIF.
  194.  
  195. ENDFORM.                    "get_data
  196. *&---------------------------------------------------------------------*
  197. *&      Form  f4_variant
  198. *&---------------------------------------------------------------------*
  199. FORM f4_variant.
  200.  
  201.   CALL FUNCTION 'RS_VARIANT_CATALOG'
  202.     EXPORTING
  203.       report               = p_report
  204.       new_title            = text-s01
  205.     IMPORTING
  206.       sel_variant          = p_vari
  207.     EXCEPTIONS
  208.       no_report            = 1
  209.       report_not_existent  = 2
  210.       report_not_supplied  = 3
  211.       no_variants          = 4
  212.       no_variant_selected  = 5
  213.       variant_not_existent = 6
  214.       OTHERS               = 7.
  215.  
  216. ENDFORM.                    "f4_variant
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement