Advertisement
Guest User

Contoh Report Kartu Piutang

a guest
Jan 21st, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 35.71 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Report ZRE_SD007_REPORTKARTUPIUTANG
  3. *&---------------------------------------------------------------------*
  4. *"----------------------------------------------------------------------------
  5. *& Title : Report Kartu Piutang *
  6. *& Module : SD *
  7. *& Functional : Erik / Peny Wijaya *
  8. *&----------------------------------------------------------------------------*
  9. *& ENHANCEMENT LOG *
  10. *& *
  11. *& VER# DATE AUTHOR DESCRIPTION *
  12. *& ---- ---- ------ ----------- *
  13. *& 1.0 31/08/2016 Rachmad Kurniawan Initial Version *
  14. *& 1.0 - -- - *
  15. *&----------------------------------------------------------------------------*
  16. REPORT zre_sd007_reportkartupiutang.
  17.  
  18.  
  19. DATA : gw_context TYPE zst_kartupiutang,
  20. gw_header TYPE zst_krtpt_header,
  21. gw_item TYPE zst_krtpt_item,
  22. gw_footer TYPE zst_krtpt_footer.
  23.  
  24. SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
  25. PARAMETERS : pa_vkorg TYPE vkorg OBLIGATORY DEFAULT 'PP01',
  26. pa_prctr TYPE prctr OBLIGATORY.
  27. SELECTION-SCREEN : END OF BLOCK b1.
  28.  
  29. START-OF-SELECTION.
  30.  
  31. PERFORM fm_get_data.
  32. IF gw_header IS NOT INITIAL.
  33.  
  34. CALL FUNCTION 'ZXLWB_CALLFORM'
  35. EXPORTING
  36. iv_formname = 'ZXLS_SD_KARTUPIUTANG'
  37. iv_context_ref = gw_context
  38. iv_protect = 'X'
  39. iv_viewer_title = 'Kartu Piutang'
  40. EXCEPTIONS
  41. process_terminated = 1
  42. OTHERS = 2.
  43. IF sy-subrc NE 0 .
  44. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
  45. WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 .
  46. ENDIF .
  47. ENDIF.
  48.  
  49. *&---------------------------------------------------------------------*
  50. *& Form FM_GET_DATA
  51. *&---------------------------------------------------------------------*
  52. * text
  53. *----------------------------------------------------------------------*
  54. * --> p1 text
  55. * <-- p2 text
  56. *----------------------------------------------------------------------*
  57. FORM fm_get_data .
  58.  
  59. DATA : lv_objnr TYPE j_objnr,
  60. lv_parnr TYPE i_parnr,
  61. lv_adrnr TYPE adrnr.
  62.  
  63. DATA : lw_adrc TYPE adrc.
  64.  
  65. DATA : lw_lines TYPE tline,
  66. li_lines TYPE STANDARD TABLE OF tline. "Lines of text read
  67.  
  68. DATA : lv_id TYPE thead-tdid,
  69. lv_name TYPE thead-tdname,
  70. lv_object TYPE thead-tdobject,
  71. lv_vbeln TYPE vbeln_va,
  72. lv_pspnr TYPE ps_intnr,
  73. lv_knumv TYPE knumv,
  74. li_vbap TYPE TABLE OF vbap WITH HEADER LINE.
  75.  
  76. DATA : lv_kwert TYPE wertv13,
  77. lr_kschl TYPE RANGE OF kschl WITH HEADER LINE,
  78. lr_pstyv TYPE RANGE OF pstyv WITH HEADER LINE,
  79. lv_mwst TYPE wertv13,
  80. lv_nk TYPE wertv13.
  81.  
  82. DATA : BEGIN OF li_prcd_contr OCCURS 0,
  83. knumv TYPE knumv,
  84. kschl TYPE kschl,
  85. kposn TYPE kposn,
  86. kwert TYPE vfprc_element_value,
  87. kbetr TYPE vfprc_element_amount,
  88. waerk TYPE waers,
  89. END OF li_prcd_contr.
  90.  
  91. DATA : BEGIN OF li_vbeln_all OCCURS 0,
  92. vbeln TYPE vbeln_va,
  93. posnr TYPE posnr,
  94. pstyv TYPE pstyv,
  95. ktgrm TYPE ktgrm,
  96. END OF li_vbeln_all.
  97.  
  98. DATA : li_fplt TYPE TABLE OF fplt WITH HEADER LINE,
  99. li_vbeln_ztao LIKE TABLE OF li_vbeln_all WITH HEADER LINE,
  100. li_vbeln_z2kp LIKE TABLE OF li_vbeln_all WITH HEADER LINE,
  101. li_vbeln_ytao LIKE TABLE OF li_vbeln_all WITH HEADER LINE,
  102. li_prcd_bill LIKE TABLE OF li_prcd_contr WITH HEADER LINE.
  103.  
  104. DATA : BEGIN OF li_fplnr OCCURS 0,
  105. fplnr TYPE fplnr,
  106. vbeln TYPE vbeln_va,
  107. END OF li_fplnr.
  108.  
  109. DATA : lv_titlemedi TYPE ad_titletx.
  110.  
  111.  
  112. DATA : lv_month TYPE i,
  113. lv_nmonth TYPE text15.
  114.  
  115. DATA: BEGIN OF li_vbfa OCCURS 0,
  116. vbeln TYPE vbeln_nach,
  117. posnn TYPE posnr_nach,
  118. vbelv TYPE vbeln_von,
  119. END OF li_vbfa.
  120.  
  121. DATA: BEGIN OF li_vbrk OCCURS 0,
  122. vbeln TYPE vbeln_vf,
  123. fkdat TYPE fkdat,
  124. knumv TYPE knumv,
  125. netwr TYPE netwr,
  126. waerk TYPE waerk,
  127. perio TYPE n LENGTH 6,
  128. END OF li_vbrk.
  129.  
  130. DATA : BEGIN OF li_merge OCCURS 0,
  131. fkdat TYPE fkdat,
  132. vbeln TYPE vbeln_vf,
  133. posnn TYPE posnr,
  134. knumv TYPE knumv,
  135. END OF li_merge.
  136.  
  137. DATA : li_vbfa_ztao LIKE TABLE OF li_vbfa WITH HEADER LINE,
  138. li_vbfa_ytao LIKE TABLE OF li_vbfa WITH HEADER LINE,
  139. li_vbfa_z2kp LIKE TABLE OF li_vbfa WITH HEADER LINE,
  140. li_vbrk_ztao LIKE TABLE OF li_vbrk WITH HEADER LINE,
  141. li_vbrk_ytao LIKE TABLE OF li_vbrk WITH HEADER LINE,
  142. li_vbrk_z2kp LIKE TABLE OF li_vbrk WITH HEADER LINE.
  143.  
  144. DATA : lv_idx TYPE sy-tabix,
  145. lv_num1 TYPE numc2,
  146. lv_num2 TYPE numc2.
  147.  
  148. DATA : BEGIN OF li_vbrp OCCURS 0,
  149. vbeln TYPE vbeln_vf,
  150. posnr TYPE posnr,
  151. netwr TYPE wertv13,
  152. END OF li_vbrp.
  153.  
  154. DATA : BEGIN OF li_bsad OCCURS 0,
  155. vbeln TYPE vbeln_vf,
  156. augdt TYPE augdt,
  157. END OF li_bsad.
  158.  
  159. DATA : BEGIN OF li_vbak OCCURS 0,
  160. vbeln TYPE vbeln_va,
  161. vtweg TYPE vtweg,
  162. END OF li_vbak.
  163.  
  164.  
  165. DATA : lv_bulan TYPE char30,
  166. lv_localamt TYPE wertv13,
  167. lv_ukurs TYPE ukurs_curr,
  168. lv_loc_fact TYPE tfact_curr.
  169.  
  170.  
  171. DATA : lv_itab TYPE char10.
  172.  
  173. FIELD-SYMBOLS : <fs_itab> TYPE any,
  174. <lv_val> TYPE any.
  175.  
  176. FIELD-SYMBOLS : <fs_item> TYPE zst_krtpt_item.
  177.  
  178. REFRESH : lr_kschl, li_merge, lr_pstyv.
  179.  
  180. CLEAR : lv_nk, lv_mwst.
  181.  
  182. DEFINE mc_kschl.
  183. lr_kschl-sign = 'I'.
  184. lr_kschl-option = 'EQ'.
  185. lr_kschl-low = &1.
  186. lr_kschl-high = ''.
  187. APPEND lr_kschl.
  188.  
  189. END-OF-DEFINITION.
  190.  
  191. DEFINE mc_pstyv.
  192. lr_pstyv-sign = 'I'.
  193. lr_pstyv-option = 'EQ'.
  194. lr_pstyv-low = &1.
  195. lr_pstyv-high = ''.
  196. APPEND lr_pstyv.
  197.  
  198. END-OF-DEFINITION.
  199.  
  200. "Constant Condition Type.
  201. mc_kschl: 'ZEK1', 'MWST', 'ZPPH', 'ZPRB', 'ZPR9', 'ZPRD', 'ZPR3'.
  202. mc_pstyv: 'ZTAO', 'YTAO', 'Z2KP', 'ZUMO', 'ZRET'.
  203.  
  204. "Get Name of Sales Org
  205. SELECT SINGLE vtext INTO gw_header-vtext FROM tvkot WHERE vkorg = pa_vkorg
  206. AND spras = sy-langu.
  207.  
  208. "Get Profti Center and Desc Project.
  209. SELECT SINGLE post1 objnr pspnr INTO (gw_header-post1, lv_objnr, lv_pspnr) FROM proj WHERE prctr = pa_prctr.
  210.  
  211. CONCATENATE gw_header-post1 '/' pa_prctr INTO gw_header-kodeproject.
  212.  
  213. "Get Owner identitas.
  214. SELECT SINGLE parnr INTO lv_parnr FROM ihpa WHERE objnr = lv_objnr.
  215. * AND parvw = 'AG'.
  216. IF sy-subrc EQ 0.
  217. SELECT SINGLE adrnr INTO lv_adrnr FROM kna1 WHERE kunnr = lv_parnr.
  218. SELECT SINGLE * FROM adrc INTO lw_adrc WHERE addrnumber = lv_adrnr.
  219. SELECT SINGLE title_medi INTO lv_titlemedi FROM tsad3t WHERE title = lw_adrc-title
  220. AND langu = sy-langu.
  221.  
  222. CONCATENATE lv_titlemedi lw_adrc-name1 lw_adrc-name2 lw_adrc-name3 lw_adrc-name4
  223. INTO gw_header-name_owner SEPARATED BY space.
  224.  
  225. CONCATENATE lw_adrc-street lw_adrc-str_suppl1 lw_adrc-str_suppl2 lw_adrc-str_suppl3 lw_adrc-city2 lw_adrc-city1 lw_adrc-post_code1
  226. INTO gw_header-addr_owner SEPARATED BY space.
  227.  
  228. ENDIF.
  229.  
  230. "get Kontrak based wbs lvl1.
  231. SELECT * INTO TABLE li_vbap FROM vbap WHERE prctr = pa_prctr
  232. AND pstyv = 'Z2KP'
  233. AND abgru = ''.
  234.  
  235. IF sy-subrc EQ 0.
  236.  
  237. SELECT vbeln vtweg INTO TABLE li_vbak FROM vbak FOR ALL ENTRIES IN li_vbap
  238. WHERE vbeln = li_vbap-vbeln.
  239. READ TABLE li_vbap INDEX 1.
  240.  
  241. lv_vbeln = li_vbap-vbeln.
  242.  
  243. "Get sumber dana
  244. REFRESH : li_lines.
  245.  
  246. lv_id = 'Z004'.
  247. lv_object = 'VBBK'.
  248. lv_name = lv_vbeln.
  249.  
  250. PERFORM fm_read_text
  251. TABLES
  252. li_lines
  253. USING
  254. lv_id
  255. lv_name
  256. lv_object.
  257.  
  258. READ TABLE li_lines INTO lw_lines INDEX 1.
  259. gw_header-sumber_dana = lw_lines-tdline.
  260.  
  261. "Get waktu pelaksanaan
  262. REFRESH : li_lines.
  263.  
  264. lv_id = 'Z005'.
  265. lv_object = 'VBBK'.
  266. lv_name = lv_vbeln.
  267.  
  268. PERFORM fm_read_text
  269. TABLES
  270. li_lines
  271. USING
  272. lv_id
  273. lv_name
  274. lv_object.
  275.  
  276. READ TABLE li_lines INTO lw_lines INDEX 1.
  277. gw_header-wkt_pelaksana = lw_lines-tdline.
  278.  
  279. "Get waktu pemeliharaan
  280. REFRESH : li_lines.
  281.  
  282. lv_id = 'Z006'.
  283. lv_object = 'VBBK'.
  284. lv_name = lv_vbeln.
  285.  
  286. PERFORM fm_read_text
  287. TABLES
  288. li_lines
  289. USING
  290. lv_id
  291. lv_name
  292. lv_object.
  293.  
  294. READ TABLE li_lines INTO lw_lines INDEX 1.
  295. gw_header-wkt_pelihara = lw_lines-tdline.
  296.  
  297. "no kontrak.
  298. SELECT SINGLE bstkd INTO gw_header-kontrak FROM vbkd WHERE vbeln = lv_vbeln
  299. AND posnr = '000000'.
  300.  
  301.  
  302. "Get NK+PPn
  303. SELECT SINGLE knumv INTO lv_knumv FROM vbak WHERE vbeln = lv_vbeln.
  304.  
  305. SELECT knumv kschl kposn kwert kbetr waerk INTO TABLE li_prcd_contr FROM prcd_elements FOR ALL ENTRIES IN li_vbap
  306. WHERE knumv = lv_knumv
  307. AND kposn = li_vbap-posnr
  308. AND kschl IN lr_kschl.
  309.  
  310. LOOP AT li_prcd_contr.
  311. READ TABLE li_vbap WITH KEY posnr = li_prcd_contr-kposn TRANSPORTING NO FIELDS.
  312. IF sy-subrc EQ 0.
  313. CASE li_prcd_contr-kschl.
  314. WHEN 'ZEK1'.
  315. IF li_prcd_contr-waerk = 'IDR'.
  316. lv_nk = ( lv_nk + li_prcd_contr-kwert ) * 100.
  317. ELSE.
  318. lv_nk = lv_nk + li_prcd_contr-kwert .
  319. ENDIF.
  320. WHEN 'MWST'.
  321. IF li_prcd_contr-waerk = 'IDR'.
  322. lv_mwst = ( lv_mwst + li_prcd_contr-kwert ) * 100.
  323. ELSE.
  324. lv_mwst = lv_mwst + li_prcd_contr-kwert.
  325. ENDIF.
  326. ENDCASE.
  327.  
  328. ENDIF.
  329. ENDLOOP.
  330.  
  331. gw_header-nkaddppn = lv_nk + lv_mwst.
  332. gw_header-nkminppn = lv_nk.
  333. gw_header-waers = li_prcd_contr-waerk.
  334.  
  335. READ TABLE li_vbak WITH KEY vbeln = li_vbap-vbeln.
  336. gw_header-vtweg = li_vbak-vtweg.
  337.  
  338. IF gw_header-waers NE 'IDR'.
  339. PERFORM fm_exchange_rate
  340. USING
  341. gw_header-waers
  342. 1
  343. CHANGING
  344. lv_ukurs
  345. lv_localamt
  346. lv_loc_fact.
  347.  
  348. gw_header-ukurs = lv_ukurs * lv_loc_fact.
  349. ENDIF.
  350.  
  351.  
  352. "Cara Pembayaran
  353. "Get sumber dana
  354. REFRESH : li_lines.
  355.  
  356. lv_id = 'Z007'.
  357. lv_object = 'VBBK'.
  358. lv_name = lv_vbeln.
  359.  
  360. PERFORM fm_read_text
  361. TABLES
  362. li_lines
  363. USING
  364. lv_id
  365. lv_name
  366. lv_object.
  367.  
  368. READ TABLE li_lines INTO lw_lines INDEX 1.
  369. gw_header-carabayar = lw_lines-tdline.
  370.  
  371. gw_context-header = gw_header.
  372.  
  373.  
  374. "Get Billing Plan and Item
  375. SELECT vbeln posnr pstyv ktgrm INTO TABLE li_vbeln_all FROM vbap WHERE prctr = pa_prctr
  376. AND pstyv IN lr_pstyv
  377. AND abgru = ''.
  378.  
  379. IF li_vbeln_all[] IS NOT INITIAL.
  380. "Get VBFA All item category
  381. SELECT vbeln posnn vbelv INTO TABLE li_vbfa FROM vbfa FOR ALL ENTRIES IN li_vbeln_all
  382. WHERE vbelv = li_vbeln_all-vbeln
  383. AND posnv = li_vbeln_all-posnr
  384. AND vbtyp_n = 'M'.
  385.  
  386. "Get Pph Lpp
  387. IF li_vbfa[] IS NOT INITIAL.
  388.  
  389. SELECT vbeln fkdat knumv netwr waerk INTO TABLE li_vbrk FROM vbrk FOR ALL ENTRIES IN li_vbfa
  390. WHERE vbeln = li_vbfa-vbeln
  391. AND fksto = ''.
  392.  
  393. IF li_vbrk[] IS NOT INITIAL.
  394. LOOP AT li_vbrk.
  395. lv_idx = sy-tabix.
  396.  
  397. CONCATENATE li_vbrk-fkdat+0(4) li_vbrk-fkdat+4(2) INTO li_vbrk-perio.
  398. MODIFY li_vbrk INDEX lv_idx TRANSPORTING perio.
  399. ENDLOOP.
  400.  
  401. SELECT vbeln augdt INTO TABLE li_bsad FROM bsad FOR ALL ENTRIES IN li_vbrk
  402. WHERE vbeln = li_vbrk-vbeln.
  403.  
  404. SELECT vbeln posnr netwr INTO TABLE li_vbrp FROM vbrp FOR ALL ENTRIES IN li_vbrk
  405. WHERE vbeln = li_vbrk-vbeln.
  406.  
  407. ENDIF.
  408.  
  409. li_vbeln_ztao[] = li_vbeln_all[].
  410.  
  411. DELETE li_vbeln_ztao WHERE pstyv NE 'ZTAO'.
  412.  
  413. SORT li_vbeln_ztao BY vbeln .
  414. DELETE ADJACENT DUPLICATES FROM li_vbeln_ztao.
  415.  
  416. li_vbfa_ztao[] = li_vbfa[].
  417.  
  418. LOOP AT li_vbfa_ztao.
  419. lv_idx = sy-tabix.
  420.  
  421. READ TABLE li_vbeln_ztao WITH KEY vbeln = li_vbfa_ztao-vbelv.
  422. IF sy-subrc NE 0.
  423. DELETE li_vbfa_ztao INDEX lv_idx.
  424. ENDIF.
  425. ENDLOOP.
  426.  
  427. li_vbrk_ztao[] = li_vbrk[].
  428. LOOP AT li_vbrk_ztao.
  429. CLEAR li_vbfa.
  430.  
  431. lv_idx = sy-tabix.
  432.  
  433. READ TABLE li_vbfa_ztao WITH KEY vbeln = li_vbrk_ztao-vbeln.
  434. READ TABLE li_vbeln_ztao WITH KEY vbeln = li_vbfa_ztao-vbelv.
  435. IF sy-subrc NE 0.
  436. DELETE li_vbrk_ztao INDEX lv_idx.
  437. ENDIF.
  438. ENDLOOP.
  439.  
  440. LOOP AT li_vbfa_ztao.
  441. READ TABLE li_vbrk_ztao WITH KEY vbeln = li_vbfa_ztao-vbeln.
  442. IF sy-subrc EQ 0.
  443. li_merge-fkdat = li_vbrk_ztao-fkdat.
  444. li_merge-vbeln = li_vbrk_ztao-vbeln.
  445. li_merge-posnn = li_vbfa_ztao-posnn.
  446. li_merge-knumv = li_vbrk_ztao-knumv.
  447. APPEND li_merge.
  448. ENDIF.
  449. ENDLOOP.
  450.  
  451. SELECT knumv kschl kposn kwert kbetr waerk INTO TABLE li_prcd_bill FROM prcd_elements FOR ALL ENTRIES IN li_vbrk
  452. WHERE knumv = li_vbrk-knumv
  453. AND kschl IN lr_kschl.
  454.  
  455.  
  456. ENDIF.
  457.  
  458. "Termin (YTAO)
  459. li_vbeln_ytao[] = li_vbeln_all[].
  460.  
  461. DELETE li_vbeln_ytao WHERE pstyv NE 'YTAO'.
  462.  
  463. SORT li_vbeln_ytao BY vbeln .
  464. DELETE ADJACENT DUPLICATES FROM li_vbeln_ytao.
  465.  
  466. li_vbfa_ytao[] = li_vbfa[].
  467.  
  468. LOOP AT li_vbfa_ytao.
  469. lv_idx = sy-tabix.
  470.  
  471. READ TABLE li_vbeln_ytao WITH KEY vbeln = li_vbfa_ytao-vbelv.
  472. IF sy-subrc NE 0.
  473. DELETE li_vbfa_ytao INDEX lv_idx.
  474. ENDIF.
  475. ENDLOOP.
  476.  
  477. li_vbrk_ytao[] = li_vbrk[].
  478. LOOP AT li_vbrk_ytao.
  479. CLEAR li_vbfa.
  480.  
  481. lv_idx = sy-tabix.
  482.  
  483. READ TABLE li_vbfa WITH KEY vbeln = li_vbrk_ytao-vbeln.
  484. READ TABLE li_vbeln_ytao WITH KEY vbeln = li_vbfa-vbelv.
  485. IF sy-subrc NE 0.
  486. DELETE li_vbrk_ytao INDEX lv_idx.
  487. ENDIF.
  488. ENDLOOP.
  489.  
  490. "Uang Muka Z2KP ( UM )
  491. li_vbeln_z2kp[] = li_vbeln_all[].
  492.  
  493. DELETE li_vbeln_z2kp WHERE pstyv NE 'Z2KP'.
  494.  
  495. SORT li_vbeln_z2kp BY vbeln .
  496. DELETE ADJACENT DUPLICATES FROM li_vbeln_z2kp.
  497.  
  498. li_vbfa_z2kp[] = li_vbfa[].
  499.  
  500. LOOP AT li_vbfa_z2kp.
  501. lv_idx = sy-tabix.
  502.  
  503. READ TABLE li_vbeln_z2kp WITH KEY vbeln = li_vbfa_z2kp-vbelv.
  504. IF sy-subrc NE 0.
  505. DELETE li_vbfa_z2kp INDEX lv_idx.
  506. ENDIF.
  507. ENDLOOP.
  508.  
  509. li_vbrk_z2kp[] = li_vbrk[].
  510. LOOP AT li_vbrk_z2kp.
  511. CLEAR li_vbfa.
  512.  
  513. lv_idx = sy-tabix.
  514.  
  515. READ TABLE li_vbfa WITH KEY vbeln = li_vbrk_z2kp-vbeln.
  516. READ TABLE li_vbeln_z2kp WITH KEY vbeln = li_vbfa-vbelv.
  517. IF sy-subrc NE 0.
  518. DELETE li_vbrk_z2kp INDEX lv_idx.
  519. ENDIF.
  520. ENDLOOP.
  521.  
  522. "Build Item FOR REPORT
  523. SELECT fplnr vbeln INTO TABLE li_fplnr FROM fpla FOR ALL ENTRIES IN li_vbeln_ztao
  524. WHERE vbeln = li_vbeln_ztao-vbeln.
  525.  
  526. IF li_fplnr[] IS NOT INITIAL.
  527. SELECT * FROM fplt INTO TABLE li_fplt FOR ALL ENTRIES IN li_fplnr
  528. WHERE fplnr = li_fplnr-fplnr.
  529. ENDIF.
  530.  
  531.  
  532. LOOP AT li_fplt.
  533.  
  534. "=== FOR LPP ==============
  535. lv_month = li_fplt-fkdat+4(2).
  536.  
  537. PERFORM fm_change_date USING lv_month
  538. CHANGING lv_nmonth.
  539.  
  540. CONCATENATE lv_nmonth '' li_fplt-fkdat+0(4) INTO gw_item-bulan SEPARATED BY space.
  541.  
  542. gw_item-zfproz = li_fplt-zfproz.
  543. gw_item-lpp = ( li_fplt-zfproz / 100 ) * gw_header-nkminppn.
  544.  
  545. READ TABLE li_merge WITH KEY fkdat = li_fplt-fkdat.
  546. IF sy-subrc EQ 0.
  547. CLEAR li_prcd_bill.
  548. READ TABLE li_prcd_bill WITH KEY knumv = li_merge-knumv
  549. kposn = li_merge-posnn
  550. kschl = 'ZPR3'.
  551.  
  552. IF li_prcd_bill-waerk = 'IDR'.
  553. IF li_prcd_bill-kwert < 1.
  554. gw_item-pphlpp = li_prcd_bill-kwert * 100 * -1.
  555. ELSE.
  556. gw_item-pphlpp = li_prcd_bill-kwert * 100.
  557. ENDIF.
  558. ELSE.
  559. IF li_prcd_bill-kwert < 1.
  560. gw_item-pphlpp = li_prcd_bill-kwert * -1.
  561. ELSE.
  562. gw_item-pphlpp = li_prcd_bill-kwert.
  563. ENDIF.
  564. ENDIF.
  565.  
  566. gw_item-lppbill = li_merge-vbeln.
  567. ENDIF.
  568.  
  569. " === FOR BAP ===========
  570. READ TABLE li_vbrk_ytao WITH KEY perio = li_fplt-fkdat+0(6).
  571. IF sy-subrc EQ 0.
  572. ADD 1 TO lv_num1.
  573. CONCATENATE 'TERMIN' lv_num1 INTO gw_item-termin SEPARATED BY space.
  574.  
  575. CONCATENATE li_vbrk_ytao-fkdat+6(2) '.' li_vbrk_ytao-fkdat+4(2) '.' li_vbrk_ytao-fkdat+0(4) INTO gw_item-tglbabayar.
  576.  
  577. IF li_vbrk_ytao-waerk = 'IDR'.
  578. gw_item-kydf = li_vbrk_ytao-netwr * 100.
  579. ELSE.
  580. gw_item-kydf = li_vbrk_ytao-netwr.
  581. ENDIF.
  582.  
  583. gw_item-bap = ( gw_item-kydf / gw_header-nkminppn ) * 100 .
  584.  
  585. "Potongan UAng muka ytao
  586. LOOP AT li_vbrk WHERE perio = li_fplt-fkdat+0(6).
  587. CLEAR li_vbfa.
  588.  
  589. READ TABLE li_vbfa WITH KEY vbeln = li_vbrk-vbeln.
  590. READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa-vbelv
  591. ktgrm = '02'.
  592. IF sy-subrc EQ 0.
  593. CLEAR li_vbrp.
  594. READ TABLE li_vbrp WITH KEY vbeln = li_vbrk-vbeln
  595. posnr = li_vbeln_all-posnr.
  596. IF li_vbrk-waerk = 'IDR'.
  597. gw_item-potdp = li_vbrp-netwr * 100.
  598. ELSE.
  599. gw_item-potdp = li_vbrp-netwr.
  600. ENDIF.
  601. ENDIF.
  602. ENDLOOP.
  603.  
  604. "PPh dibayar dimuka
  605. LOOP AT li_vbrk WHERE perio = li_fplt-fkdat+0(6).
  606. CLEAR li_vbfa.
  607.  
  608. READ TABLE li_vbfa WITH KEY vbeln = li_vbrk-vbeln.
  609. READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa-vbelv
  610. pstyv = 'ZUMO'.
  611.  
  612. IF sy-subrc EQ 0.
  613. CLEAR li_prcd_bill.
  614. READ TABLE li_prcd_bill WITH KEY knumv = li_vbrk-knumv
  615. kposn = li_vbeln_all-posnr
  616. kschl = 'ZPRB'.
  617.  
  618. IF li_vbrk-waerk = 'IDR'.
  619. gw_item-pphbap = li_prcd_bill-kwert * 100.
  620. gw_item-pphdimuka = gw_item-pphbap.
  621. ELSE.
  622. gw_item-pphbap = li_prcd_bill-kwert.
  623. gw_item-pphdimuka = gw_item-pphbap.
  624. ENDIF.
  625.  
  626. gw_item-billbap = li_vbrk-vbeln.
  627.  
  628. CLEAR li_prcd_bill.
  629. READ TABLE li_prcd_bill WITH KEY knumv = li_vbrk-knumv
  630. kposn = li_vbeln_all-posnr
  631. kschl = 'ZPRD'.
  632.  
  633. IF li_vbrk-waerk = 'IDR'.
  634. gw_item-pphhutang = li_prcd_bill-kwert * 100 * -1.
  635. ELSE.
  636. gw_item-pphhutang = li_prcd_bill-kwert * -1.
  637. ENDIF.
  638.  
  639. ENDIF.
  640. ENDLOOP.
  641.  
  642. "PPn
  643. LOOP AT li_vbrk WHERE perio = li_fplt-fkdat+0(6).
  644. CLEAR li_vbfa.
  645.  
  646. READ TABLE li_vbfa WITH KEY vbeln = li_vbrk-vbeln.
  647. READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa-vbelv
  648. pstyv = 'YTAO'.
  649.  
  650. IF sy-subrc EQ 0.
  651. CLEAR : li_prcd_bill, li_bsad.
  652. READ TABLE li_prcd_bill WITH KEY knumv = li_vbrk-knumv
  653. kposn = li_vbeln_all-posnr
  654. kschl = 'ZPR9'.
  655.  
  656. IF li_vbrk-waerk = 'IDR'.
  657. gw_item-ppn = li_prcd_bill-kwert * 100.
  658. ELSE.
  659. gw_item-ppn = li_prcd_bill-kwert.
  660. ENDIF.
  661.  
  662.  
  663. "tanggal cair
  664. READ TABLE li_bsad WITH KEY vbeln = li_vbrk-vbeln.
  665. IF sy-subrc EQ 0.
  666. CONCATENATE li_bsad-augdt+6(2) '.' li_bsad-augdt+4(2) '.' li_bsad-augdt+0(4) INTO gw_item-tglcair.
  667. ENDIF.
  668.  
  669. ENDIF.
  670. ENDLOOP.
  671.  
  672. "Potongan Retensi logicnya sama dgn YTAO dan Z2KP
  673. LOOP AT li_vbrk WHERE perio = li_fplt-fkdat+0(6).
  674. CLEAR li_vbfa.
  675.  
  676. READ TABLE li_vbfa WITH KEY vbeln = li_vbrk-vbeln.
  677. READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa-vbelv
  678. ktgrm = '03'.
  679. IF sy-subrc EQ 0.
  680. CLEAR li_vbrp.
  681. READ TABLE li_vbrp WITH KEY vbeln = li_vbrk-vbeln
  682. posnr = li_vbeln_all-posnr.
  683. IF li_vbrk-waerk = 'IDR'.
  684. gw_item-potret = li_vbrp-netwr * 100.
  685. ELSE.
  686. gw_item-potret = li_vbrp-netwr.
  687. ENDIF.
  688. ENDIF.
  689. ENDLOOP.
  690.  
  691.  
  692. "Jumah Bersih
  693. gw_item-netto = gw_item-kydf - gw_item-potdp - gw_item-potret.
  694.  
  695. "Jml include PPn
  696. gw_item-inclppn = gw_item-netto + gw_item-ppn.
  697.  
  698. "jml diterima
  699. gw_item-jmlterima = gw_item-netto - gw_item-pphbap.
  700.  
  701.  
  702. APPEND gw_item TO gw_context-item.
  703. ENDIF.
  704.  
  705. "=== FOR Z2KP / Contract ==========
  706. CLEAR : gw_item-termin, gw_item-tglbabayar, gw_item-bap, gw_item-kydf, gw_item-potdp, gw_item-potret, gw_item-netto,
  707. gw_item-pphhutang, gw_item-ppn, gw_item-inclppn, gw_item-pphbap, gw_item-jmlterima, gw_item-tglcair.
  708.  
  709. READ TABLE li_vbrk_z2kp WITH KEY perio = li_fplt-fkdat+0(6).
  710. IF sy-subrc EQ 0.
  711. ADD 1 TO lv_num2.
  712. CONCATENATE 'UM' lv_num2 INTO gw_item-termin SEPARATED BY space.
  713.  
  714. CONCATENATE li_vbrk_z2kp-fkdat+6(2) '.' li_vbrk_z2kp-fkdat+4(2) '.' li_vbrk_z2kp-fkdat+0(4) INTO gw_item-tglbabayar.
  715.  
  716.  
  717. gw_item-bap = ( gw_item-kydf / gw_header-nkminppn ) * 100.
  718.  
  719. "Potongan uang muka z2kp
  720. CLEAR : li_vbfa_z2kp, li_vbrp, li_vbeln_all.
  721. READ TABLE li_vbfa_z2kp WITH KEY vbeln = li_vbrk_z2kp-vbeln.
  722.  
  723. READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa_z2kp-vbelv
  724. pstyv = 'Z2KP'.
  725.  
  726. READ TABLE li_vbrp WITH KEY vbeln = li_vbfa_z2kp-vbeln
  727. posnr = li_vbeln_all-posnr.
  728.  
  729. IF li_vbrk_z2kp-waerk = 'IDR'.
  730. gw_item-potdp = li_vbrp-netwr * 100 * -1.
  731. ELSE.
  732. gw_item-potdp = li_vbrp-netwr * -1.
  733. ENDIF.
  734.  
  735. "PPh dibayar dimuka
  736. LOOP AT li_vbrk WHERE perio = li_fplt-fkdat+0(6).
  737. CLEAR li_vbfa.
  738.  
  739. READ TABLE li_vbfa WITH KEY vbeln = li_vbrk-vbeln.
  740. READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa-vbelv
  741. pstyv = 'Z2KP'.
  742.  
  743. IF sy-subrc EQ 0.
  744. CLEAR li_prcd_bill.
  745. READ TABLE li_prcd_bill WITH KEY knumv = li_vbrk-knumv
  746. kschl = 'ZPPH'
  747. kposn = li_vbeln_all-posnr.
  748. IF li_vbrk-waerk = 'IDR'.
  749. gw_item-pphbap = li_prcd_bill-kwert * 100.
  750. gw_item-pphdimuka = gw_item-pphbap * -1.
  751. ELSE.
  752. gw_item-pphbap = li_prcd_bill-kwert.
  753. gw_item-pphdimuka = gw_item-pphbap * -1.
  754. ENDIF.
  755. ENDIF.
  756. ENDLOOP.
  757.  
  758. gw_item-pphhutang = gw_item-pphbap * -1.
  759.  
  760. "PPn
  761. LOOP AT li_vbrk WHERE perio = li_fplt-fkdat+0(6).
  762. CLEAR li_vbfa.
  763.  
  764. READ TABLE li_vbfa WITH KEY vbeln = li_vbrk-vbeln.
  765. READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa-vbelv
  766. pstyv = 'Z2KP'.
  767.  
  768. IF sy-subrc EQ 0.
  769. CLEAR li_prcd_bill.
  770. READ TABLE li_prcd_bill WITH KEY knumv = li_vbrk-knumv
  771. kposn = li_vbeln_all-posnr
  772. kschl = 'MWST'.
  773.  
  774. IF li_vbrk-waerk = 'IDR'.
  775. gw_item-ppn = ( ( li_prcd_bill-kbetr / 100 ) * gw_item-potdp ) * -1.
  776. ELSE.
  777. gw_item-ppn = ( li_prcd_bill-kbetr / 100 ) * gw_item-potdp * -1 .
  778. ENDIF.
  779.  
  780.  
  781. "tanggal cair
  782. READ TABLE li_bsad WITH KEY vbeln = li_vbrk-vbeln.
  783. IF sy-subrc EQ 0.
  784. CONCATENATE li_bsad-augdt+6(2) '.' li_bsad-augdt+4(2) '.' li_bsad-augdt+0(4) INTO gw_item-tglcair.
  785. ENDIF.
  786.  
  787. ENDIF.
  788. ENDLOOP.
  789.  
  790. "Jumah Bersih
  791. gw_item-netto = gw_item-kydf - gw_item-potdp - gw_item-potret.
  792.  
  793. "Jml include PPn
  794. gw_item-inclppn = gw_item-netto + gw_item-ppn.
  795.  
  796. "jml diterima
  797. gw_item-jmlterima = gw_item-netto - gw_item-pphbap.
  798.  
  799. APPEND gw_item TO gw_context-item.
  800.  
  801. ENDIF.
  802.  
  803. ENDLOOP.
  804.  
  805. ENDIF.
  806.  
  807. ELSE.
  808. MESSAGE e001(zsd).
  809. ENDIF.
  810.  
  811. "Merge Bulan LPP %LPP Karena 1 Bulan pasti 1 LPP
  812. LOOP AT gw_context-item ASSIGNING <fs_item>.
  813. IF <fs_item>-bulan = lv_bulan.
  814. <fs_item>-bulan = ''.
  815. <fs_item>-lpp = ''.
  816. <fs_item>-zfproz = ''.
  817. <fs_item>-pphlpp = ''.
  818. <fs_item>-lppbill = ''.
  819. ENDIF.
  820.  
  821. lv_bulan = <fs_item>-bulan.
  822. ENDLOOP.
  823.  
  824. "=== FOOTER =======
  825. LOOP AT gw_context-item INTO gw_item.
  826. gw_footer-totlpp = gw_footer-totlpp + gw_item-lpp.
  827. gw_footer-totzfproz = gw_footer-totzfproz + gw_item-zfproz.
  828. gw_footer-totpphlpp = gw_footer-totpphlpp + gw_item-pphlpp.
  829. gw_footer-totbap = gw_footer-totbap + gw_item-bap.
  830. gw_footer-totkydf = gw_footer-totkydf + gw_item-kydf.
  831. gw_footer-totpotdp = gw_footer-totpotdp + gw_item-potdp.
  832. gw_footer-totpotret = gw_footer-totpotret + gw_item-potret.
  833. gw_footer-totnetto = gw_footer-totnetto + gw_item-netto.
  834. gw_footer-totpphdimuka = gw_footer-totpphdimuka + gw_item-pphdimuka.
  835. gw_footer-totpphhutang = gw_footer-totpphhutang + gw_item-pphhutang.
  836. gw_footer-totppn = gw_footer-totppn + gw_item-ppn.
  837. gw_footer-totinclppn = gw_footer-totinclppn + gw_item-inclppn.
  838. gw_footer-totpphbap = gw_footer-totpphbap + gw_item-pphbap.
  839. gw_footer-totjmlterima = gw_footer-totjmlterima + gw_item-jmlterima.
  840.  
  841.  
  842. IF gw_item-tglcair EQ ''.
  843. gw_footer-tagihaniniwip1 = gw_footer-tagihaniniwip1 + gw_item-kydf.
  844.  
  845. ENDIF.
  846.  
  847. ENDLOOP.
  848.  
  849. IF gw_header-waers NE 'IDR'.
  850. lv_idx = 0.
  851.  
  852. gw_footer-valas = 'VALAS'.
  853. lv_itab = 'GW_FOOTER'.
  854.  
  855. ASSIGN (lv_itab) TO <fs_itab>.
  856.  
  857. DO 14 TIMES.
  858. lv_idx = lv_idx + 1.
  859.  
  860. IF lv_idx NE 2. "Bukan Total Persentase tidak perlu di translate exchange rate to IDR
  861. ASSIGN COMPONENT lv_idx OF STRUCTURE <fs_itab> TO <lv_val>.
  862.  
  863.  
  864. PERFORM fm_exchange_rate
  865. USING
  866. gw_header-waers
  867. <lv_val>
  868. CHANGING
  869. lv_ukurs
  870. lv_localamt
  871. lv_loc_fact.
  872.  
  873. CASE lv_idx.
  874. WHEN 1.
  875. gw_footer-totlppvalas = lv_localamt.
  876. WHEN 3.
  877. gw_footer-totpphlppvalas = lv_localamt.
  878. WHEN 4.
  879. gw_footer-totbapvalas = lv_localamt.
  880. WHEN 5.
  881. gw_footer-totkydfvalas = lv_localamt.
  882. WHEN 6.
  883. gw_footer-totpotdpvalas = lv_localamt.
  884. WHEN 7.
  885. gw_footer-totpotretvalas = lv_localamt.
  886. WHEN 8.
  887. gw_footer-totnettovalas = lv_localamt.
  888. WHEN 9.
  889. gw_footer-totpphdimukavalas = lv_localamt.
  890. WHEN 10.
  891. gw_footer-totpphhutangvalas = lv_localamt.
  892. WHEN 11.
  893. gw_footer-totppnvalas = lv_localamt.
  894. WHEN 12.
  895. gw_footer-totinclppnvalas = lv_localamt.
  896. WHEN 13.
  897. gw_footer-totpphbapvalas = lv_localamt.
  898. WHEN 14.
  899. gw_footer-totjmlterimavalas = lv_localamt.
  900. ENDCASE.
  901.  
  902. ENDIF.
  903. ENDDO.
  904.  
  905. PERFORM fm_exchange_rate
  906. USING
  907. gw_header-waers
  908. gw_footer-tagihaniniwip1
  909. CHANGING
  910. lv_ukurs
  911. lv_localamt
  912. lv_loc_fact.
  913.  
  914. gw_footer-tagihaniniwip1 = lv_localamt.
  915.  
  916. ENDIF.
  917.  
  918. IF gw_header-waers = 'IDR'.
  919.  
  920. gw_footer-potum = abs( gw_footer-totpotdpvalas ).
  921. gw_footer-tagihanretensi = gw_footer-totpotret.
  922. gw_footer-haktagih = gw_footer-totlpp - gw_footer-totjmlterima - gw_footer-totpphbap + gw_footer-totpotdp.
  923. gw_footer-sisahaktagih = gw_footer-haktagih - gw_footer-tagihaniniwip1 - gw_footer-tagihanretensi.
  924.  
  925.  
  926. IF gw_header-vtweg = '20'.
  927. gw_footer-totjmlterima = gw_footer-totppn - gw_footer-totpphbap.
  928. ENDIF.
  929.  
  930.  
  931. ELSE.
  932. gw_footer-potum = abs( gw_footer-totpotdpvalas ).
  933. gw_footer-tagihanretensi = gw_footer-totpotretvalas.
  934. gw_footer-haktagih = gw_footer-totlppvalas - gw_footer-totjmlterimavalas - gw_footer-totpphbapvalas + gw_footer-totpotdpvalas.
  935. gw_footer-sisahaktagih = gw_footer-haktagih - gw_footer-tagihaniniwip1 - gw_footer-tagihanretensi.
  936.  
  937. IF gw_header-vtweg = '20'.
  938. gw_footer-totjmlterimavalas = gw_footer-totppnvalas - gw_footer-totpphbapvalas.
  939. ENDIF.
  940.  
  941. ENDIF.
  942.  
  943. "Penanda tangan'
  944. "Nama Pembuat
  945. READ TABLE li_vbeln_z2kp INDEX 1.
  946.  
  947. REFRESH : li_lines.
  948.  
  949. lv_id = 'Z008'.
  950. lv_object = 'VBBK'.
  951. lv_name = li_vbeln_z2kp-vbeln.
  952.  
  953. PERFORM fm_read_text
  954. TABLES
  955. li_lines
  956. USING
  957. lv_id
  958. lv_name
  959. lv_object.
  960.  
  961. READ TABLE li_lines INTO lw_lines INDEX 1.
  962. gw_footer-namecreate = lw_lines-tdline.
  963.  
  964. "Jabatan pembuat
  965. REFRESH : li_lines.
  966.  
  967. lv_id = 'Z009'.
  968. lv_object = 'VBBK'.
  969. lv_name = li_vbeln_z2kp-vbeln.
  970.  
  971. PERFORM fm_read_text
  972. TABLES
  973. li_lines
  974. USING
  975. lv_id
  976. lv_name
  977. lv_object.
  978.  
  979. READ TABLE li_lines INTO lw_lines INDEX 1.
  980. gw_footer-jabatcreate = lw_lines-tdline.
  981.  
  982. "Nama Penjabat yang mengetahui
  983. REFRESH : li_lines.
  984.  
  985. lv_id = 'Z010'.
  986. lv_object = 'VBBK'.
  987. lv_name = li_vbeln_z2kp-vbeln.
  988.  
  989. PERFORM fm_read_text
  990. TABLES
  991. li_lines
  992. USING
  993. lv_id
  994. lv_name
  995. lv_object.
  996.  
  997. READ TABLE li_lines INTO lw_lines INDEX 1.
  998. gw_footer-nameknown = lw_lines-tdline.
  999.  
  1000. "Jabatan Penjabat mengetahui
  1001. REFRESH : li_lines.
  1002.  
  1003. lv_id = 'Z011'.
  1004. lv_object = 'VBBK'.
  1005. lv_name = li_vbeln_z2kp-vbeln.
  1006.  
  1007. PERFORM fm_read_text
  1008. TABLES
  1009. li_lines
  1010. USING
  1011. lv_id
  1012. lv_name
  1013. lv_object.
  1014.  
  1015. READ TABLE li_lines INTO lw_lines INDEX 1.
  1016. gw_footer-jabatknown = lw_lines-tdline.
  1017.  
  1018.  
  1019. "Go to footer strucutre form
  1020. gw_context-footer = gw_footer .
  1021. ENDFORM.
  1022.  
  1023. FORM fm_exchange_rate USING im_curr
  1024. im_val
  1025. CHANGING ch_exchange
  1026. ch_localamt
  1027. ch_locfact.
  1028.  
  1029. CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
  1030. EXPORTING
  1031. date = sy-datum
  1032. foreign_amount = im_val
  1033. foreign_currency = im_curr
  1034. local_currency = 'IDR'
  1035. IMPORTING
  1036. exchange_rate = ch_exchange
  1037. local_amount = ch_localamt
  1038. local_factor = ch_locfact
  1039. EXCEPTIONS
  1040. no_rate_found = 1
  1041. overflow = 2
  1042. no_factors_found = 3
  1043. no_spread_found = 4
  1044. derived_2_times = 5
  1045. OTHERS = 6.
  1046. IF sy-subrc <> 0.
  1047. * Implement suitable error handling here
  1048. ENDIF.
  1049.  
  1050.  
  1051. ENDFORM.
  1052.  
  1053. FORM fm_change_date USING im_month
  1054. CHANGING ch_month.
  1055.  
  1056. CASE im_month.
  1057. WHEN 1.
  1058. ch_month = 'Jan'.
  1059. WHEN 2.
  1060. ch_month = 'Feb'.
  1061. WHEN 3.
  1062. ch_month = 'Mar'.
  1063. WHEN 4.
  1064. ch_month = 'Apr'.
  1065. WHEN 5.
  1066. ch_month = 'Mei'.
  1067. WHEN 6.
  1068. ch_month = 'Jun'.
  1069. WHEN 7.
  1070. ch_month = 'Jul'.
  1071. WHEN 8.
  1072. ch_month = 'Agu'.
  1073. WHEN 9.
  1074. ch_month = 'Sep'.
  1075. WHEN 10.
  1076. ch_month = 'Okt'.
  1077. WHEN 11.
  1078. ch_month = 'Nov'.
  1079. WHEN 12.
  1080. ch_month = 'Des'.
  1081.  
  1082. ENDCASE.
  1083.  
  1084. ENDFORM.
  1085.  
  1086. FORM fm_read_text TABLES p_lines
  1087. USING pu_id TYPE thead-tdid
  1088. pu_name TYPE thead-tdname
  1089. pu_object TYPE thead-tdobject.
  1090.  
  1091. DATA : l_wa_lines TYPE tline,
  1092. l_itab_lines TYPE STANDARD TABLE OF tline.
  1093.  
  1094. DATA : lv_langu TYPE thead-tdspras.
  1095.  
  1096.  
  1097. lv_langu = sy-langu.
  1098.  
  1099. CALL FUNCTION 'READ_TEXT'
  1100. EXPORTING
  1101. id = pu_id
  1102. language = lv_langu
  1103. name = pu_name
  1104. object = pu_object
  1105. TABLES
  1106. lines = p_lines
  1107. EXCEPTIONS
  1108. id = 1
  1109. language = 2
  1110. name = 3
  1111. not_found = 4
  1112. object = 5
  1113. reference_check = 6
  1114. wrong_access_to_archive = 7
  1115. OTHERS = 8.
  1116.  
  1117. ENDFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement