Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.12 KB | None | 0 0
  1. DATA: "lin TYPE i,
  2. lv_bbelnr TYPE bkpf-belnr,
  3. lv_wrbtr TYPE wrbtr,
  4.  
  5. BEGIN OF lt_t001u OCCURS 0,
  6. abukr TYPE t001u-abukr,
  7. END OF lt_t001u.
  8. DATA: lv_is_gas TYPE abap_bool,
  9. ls_bkpf TYPE bkpf.
  10.  
  11. MOVE space TO gv_payment.
  12. CLEAR gt_hbseg. REFRESH gt_hbseg.
  13. CLEAR gv_pay_wzach. CLEAR gv_pay_dzach.
  14. CLEAR gv_buv_wzach. CLEAR gv_buv_dzach.
  15. SELECT * FROM *bseg INTO TABLE gt_hbseg
  16. WHERE bukrs EQ iv_bukrs
  17. AND gjahr EQ iv_gjahr
  18. AND belnr EQ iv_belnr.
  19. LOOP AT gt_hbseg WHERE koart EQ 'S'.
  20. CLEAR skb1.
  21. SELECT SINGLE * FROM skb1 WHERE bukrs EQ gt_hbseg-bukrs
  22. AND saknr EQ gt_hbseg-hkont.
  23. IF gt_hbseg-shkzg = 'H'.
  24. gt_hbseg-wrbtr = ( -1 ) * gt_hbseg-wrbtr.
  25. gt_hbseg-dmbtr = ( -1 ) * gt_hbseg-dmbtr.
  26. ENDIF.
  27. CLEAR ls_bkpf.
  28.  
  29. SELECT SINGLE * FROM bkpf INTO ls_bkpf
  30. WHERE bukrs = gt_hbseg-bukrs
  31. AND belnr = gt_hbseg-belnr
  32. AND gjahr = gt_hbseg-gjahr.
  33.  
  34. IF skb1-xgkon NE space.
  35. gv_pay_wzach = gv_pay_wzach + gt_hbseg-wrbtr.
  36. gv_pay_dzach = gv_pay_dzach + gt_hbseg-dmbtr.
  37. gv_shkz = gt_hbseg-shkzg.
  38. MOVE 'X' TO gv_payment.
  39. ELSEIF gt_hbseg-ktosl EQ 'BUV'.
  40. gv_buv_wzach = gv_buv_wzach + gt_hbseg-wrbtr.
  41. gv_buv_dzach = gv_buv_dzach + gt_hbseg-dmbtr.
  42. gv_shkz = gt_hbseg-shkzg.
  43. CLEAR lt_t001u[].
  44. SELECT abukr FROM t001u INTO TABLE lt_t001u
  45. WHERE vbukr EQ iv_bukrs.
  46. DELETE ADJACENT DUPLICATES FROM lt_t001u.
  47. LOOP AT lt_t001u.
  48.  
  49. SELECT SINGLE belnr FROM bvor INTO lv_bbelnr
  50. WHERE bvorg = iv_bvorg
  51. AND bukrs = lt_t001u-abukr
  52. AND gjahr = iv_gjahr.
  53. IF sy-subrc = 0.
  54.  
  55. SELECT SINGLE * FROM bkpf
  56. WHERE bukrs EQ lt_t001u-abukr
  57. AND belnr = lv_bbelnr
  58. AND gjahr EQ iv_gjahr.
  59. IF sy-subrc = 0.
  60.  
  61. SELECT * FROM bseg
  62. WHERE bukrs EQ bkpf-bukrs
  63. AND belnr EQ bkpf-belnr
  64. AND gjahr EQ bkpf-gjahr
  65. AND koart EQ 'S'.
  66.  
  67. IF bseg-shkzg = 'H'.
  68. bseg-wrbtr = ( -1 ) * bseg-wrbtr.
  69. bseg-dmbtr = ( -1 ) * bseg-dmbtr.
  70. ENDIF.
  71.  
  72. CLEAR skb1.
  73. SELECT SINGLE * FROM skb1 WHERE bukrs EQ bseg-bukrs
  74. AND saknr EQ bseg-hkont.
  75. IF skb1-xgkon NE space.
  76.  
  77. gv_pay_wzach = gv_pay_wzach + bseg-wrbtr.
  78. gv_pay_dzach = gv_pay_dzach + bseg-dmbtr.
  79. gv_shkz = gt_hbseg-shkzg.
  80.  
  81. gv_buv_wzach = gv_buv_wzach - bseg-wrbtr.
  82. gv_buv_dzach = gv_buv_dzach - bseg-dmbtr.
  83.  
  84. MOVE 'X' TO gv_payment.
  85. ENDIF.
  86. ENDSELECT.
  87. ENDIF.
  88. ENDIF.
  89. ENDLOOP.
  90. ENDIF.
  91. ENDLOOP.
  92. **************
  93. * Упростить
  94. IF gv_payment EQ 'X'.
  95. IF iv_koart = gc_koart_d.
  96. LOOP AT gt_hbseg WHERE ( koart EQ 'D'
  97. AND kunnr NE gt_bsid-kunnr
  98. OR koart EQ 'K' )
  99. AND buzei NE gt_bsid-buzei
  100. AND shkzg NE gt_bsid-shkzg.
  101.  
  102. EXIT.
  103. ENDLOOP.
  104. ENDIF.
  105. IF iv_koart = gc_koart_k.
  106. LOOP AT gt_hbseg WHERE ( koart EQ 'K'
  107. AND lifnr NE gt_bsid-lifnr
  108. OR koart EQ 'D' )
  109. AND buzei NE gt_bsid-buzei
  110. AND shkzg NE gt_bsid-shkzg.
  111. EXIT.
  112. ENDLOOP.
  113. ENDIF.
  114.  
  115. IF sy-subrc EQ 0 OR gv_buv_wzach NE 0 OR gv_buv_dzach NE 0.
  116. * and payment (and/or clearing) and reckoning in one document
  117. CLEAR gv_payment.
  118. EXIT.
  119. ENDIF.
  120. * clear: pay_wzach, pay_dzach.
  121. IF gt_bsid-shkzg EQ 'H'.
  122. gt_bsid-dmbtr = gt_bsid-dmbtr * ( -1 ).
  123. gt_bsid-wrbtr = gt_bsid-wrbtr * ( -1 ).
  124. ENDIF.
  125. ENDIF.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement