Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *&---------------------------------------------------------------------*
- *& Report ZRE_SD007_REPORTKARTUPIUTANG
- *&---------------------------------------------------------------------*
- *"----------------------------------------------------------------------------
- *& Title : Report Kartu Piutang *
- *& Module : SD *
- *& Functional : Erik / Peny Wijaya *
- *&----------------------------------------------------------------------------*
- *& ENHANCEMENT LOG *
- *& *
- *& VER# DATE AUTHOR DESCRIPTION *
- *& ---- ---- ------ ----------- *
- *& 1.0 31/08/2016 Rachmad Kurniawan Initial Version *
- *& 1.0 - -- - *
- *&----------------------------------------------------------------------------*
- REPORT zre_sd007_reportkartupiutang.
- DATA : gw_context TYPE zst_kartupiutang,
- gw_header TYPE zst_krtpt_header,
- gw_item TYPE zst_krtpt_item,
- gw_footer TYPE zst_krtpt_footer.
- SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
- PARAMETERS : pa_vkorg TYPE vkorg OBLIGATORY DEFAULT 'PP01',
- pa_prctr TYPE prctr OBLIGATORY.
- SELECTION-SCREEN : END OF BLOCK b1.
- START-OF-SELECTION.
- PERFORM fm_get_data.
- IF gw_header IS NOT INITIAL.
- CALL FUNCTION 'ZXLWB_CALLFORM'
- EXPORTING
- iv_formname = 'ZXLS_SD_KARTUPIUTANG'
- iv_context_ref = gw_context
- iv_protect = 'X'
- iv_viewer_title = 'Kartu Piutang'
- EXCEPTIONS
- process_terminated = 1
- OTHERS = 2.
- IF sy-subrc NE 0 .
- MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
- WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 .
- ENDIF .
- ENDIF.
- *&---------------------------------------------------------------------*
- *& Form FM_GET_DATA
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM fm_get_data .
- DATA : lv_objnr TYPE j_objnr,
- lv_parnr TYPE i_parnr,
- lv_adrnr TYPE adrnr.
- DATA : lw_adrc TYPE adrc.
- DATA : lw_lines TYPE tline,
- li_lines TYPE STANDARD TABLE OF tline. "Lines of text read
- DATA : lv_id TYPE thead-tdid,
- lv_name TYPE thead-tdname,
- lv_object TYPE thead-tdobject,
- lv_vbeln TYPE vbeln_va,
- lv_pspnr TYPE ps_intnr,
- lv_knumv TYPE knumv,
- li_vbap TYPE TABLE OF vbap WITH HEADER LINE.
- DATA : lv_kwert TYPE wertv13,
- lr_kschl TYPE RANGE OF kschl WITH HEADER LINE,
- lr_pstyv TYPE RANGE OF pstyv WITH HEADER LINE,
- lv_mwst TYPE wertv13,
- lv_nk TYPE wertv13.
- DATA : BEGIN OF li_prcd_contr OCCURS 0,
- knumv TYPE knumv,
- kschl TYPE kschl,
- kposn TYPE kposn,
- kwert TYPE vfprc_element_value,
- kbetr TYPE vfprc_element_amount,
- waerk TYPE waers,
- END OF li_prcd_contr.
- DATA : BEGIN OF li_vbeln_all OCCURS 0,
- vbeln TYPE vbeln_va,
- posnr TYPE posnr,
- pstyv TYPE pstyv,
- ktgrm TYPE ktgrm,
- END OF li_vbeln_all.
- DATA : li_fplt TYPE TABLE OF fplt WITH HEADER LINE,
- li_vbeln_ztao LIKE TABLE OF li_vbeln_all WITH HEADER LINE,
- li_vbeln_z2kp LIKE TABLE OF li_vbeln_all WITH HEADER LINE,
- li_vbeln_ytao LIKE TABLE OF li_vbeln_all WITH HEADER LINE,
- li_prcd_bill LIKE TABLE OF li_prcd_contr WITH HEADER LINE.
- DATA : BEGIN OF li_fplnr OCCURS 0,
- fplnr TYPE fplnr,
- vbeln TYPE vbeln_va,
- END OF li_fplnr.
- DATA : lv_titlemedi TYPE ad_titletx.
- DATA : lv_month TYPE i,
- lv_nmonth TYPE text15.
- DATA: BEGIN OF li_vbfa OCCURS 0,
- vbeln TYPE vbeln_nach,
- posnn TYPE posnr_nach,
- vbelv TYPE vbeln_von,
- END OF li_vbfa.
- DATA: BEGIN OF li_vbrk OCCURS 0,
- vbeln TYPE vbeln_vf,
- fkdat TYPE fkdat,
- knumv TYPE knumv,
- netwr TYPE netwr,
- waerk TYPE waerk,
- perio TYPE n LENGTH 6,
- END OF li_vbrk.
- DATA : BEGIN OF li_merge OCCURS 0,
- fkdat TYPE fkdat,
- vbeln TYPE vbeln_vf,
- posnn TYPE posnr,
- knumv TYPE knumv,
- END OF li_merge.
- DATA : li_vbfa_ztao LIKE TABLE OF li_vbfa WITH HEADER LINE,
- li_vbfa_ytao LIKE TABLE OF li_vbfa WITH HEADER LINE,
- li_vbfa_z2kp LIKE TABLE OF li_vbfa WITH HEADER LINE,
- li_vbrk_ztao LIKE TABLE OF li_vbrk WITH HEADER LINE,
- li_vbrk_ytao LIKE TABLE OF li_vbrk WITH HEADER LINE,
- li_vbrk_z2kp LIKE TABLE OF li_vbrk WITH HEADER LINE.
- DATA : lv_idx TYPE sy-tabix,
- lv_num1 TYPE numc2,
- lv_num2 TYPE numc2.
- DATA : BEGIN OF li_vbrp OCCURS 0,
- vbeln TYPE vbeln_vf,
- posnr TYPE posnr,
- netwr TYPE wertv13,
- END OF li_vbrp.
- DATA : BEGIN OF li_bsad OCCURS 0,
- vbeln TYPE vbeln_vf,
- augdt TYPE augdt,
- END OF li_bsad.
- DATA : BEGIN OF li_vbak OCCURS 0,
- vbeln TYPE vbeln_va,
- vtweg TYPE vtweg,
- END OF li_vbak.
- DATA : lv_bulan TYPE char30,
- lv_localamt TYPE wertv13,
- lv_ukurs TYPE ukurs_curr,
- lv_loc_fact TYPE tfact_curr.
- DATA : lv_itab TYPE char10.
- FIELD-SYMBOLS : <fs_itab> TYPE any,
- <lv_val> TYPE any.
- FIELD-SYMBOLS : <fs_item> TYPE zst_krtpt_item.
- REFRESH : lr_kschl, li_merge, lr_pstyv.
- CLEAR : lv_nk, lv_mwst.
- DEFINE mc_kschl.
- lr_kschl-sign = 'I'.
- lr_kschl-option = 'EQ'.
- lr_kschl-low = &1.
- lr_kschl-high = ''.
- APPEND lr_kschl.
- END-OF-DEFINITION.
- DEFINE mc_pstyv.
- lr_pstyv-sign = 'I'.
- lr_pstyv-option = 'EQ'.
- lr_pstyv-low = &1.
- lr_pstyv-high = ''.
- APPEND lr_pstyv.
- END-OF-DEFINITION.
- "Constant Condition Type.
- mc_kschl: 'ZEK1', 'MWST', 'ZPPH', 'ZPRB', 'ZPR9', 'ZPRD', 'ZPR3'.
- mc_pstyv: 'ZTAO', 'YTAO', 'Z2KP', 'ZUMO', 'ZRET'.
- "Get Name of Sales Org
- SELECT SINGLE vtext INTO gw_header-vtext FROM tvkot WHERE vkorg = pa_vkorg
- AND spras = sy-langu.
- "Get Profti Center and Desc Project.
- SELECT SINGLE post1 objnr pspnr INTO (gw_header-post1, lv_objnr, lv_pspnr) FROM proj WHERE prctr = pa_prctr.
- CONCATENATE gw_header-post1 '/' pa_prctr INTO gw_header-kodeproject.
- "Get Owner identitas.
- SELECT SINGLE parnr INTO lv_parnr FROM ihpa WHERE objnr = lv_objnr.
- * AND parvw = 'AG'.
- IF sy-subrc EQ 0.
- SELECT SINGLE adrnr INTO lv_adrnr FROM kna1 WHERE kunnr = lv_parnr.
- SELECT SINGLE * FROM adrc INTO lw_adrc WHERE addrnumber = lv_adrnr.
- SELECT SINGLE title_medi INTO lv_titlemedi FROM tsad3t WHERE title = lw_adrc-title
- AND langu = sy-langu.
- CONCATENATE lv_titlemedi lw_adrc-name1 lw_adrc-name2 lw_adrc-name3 lw_adrc-name4
- INTO gw_header-name_owner SEPARATED BY space.
- 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
- INTO gw_header-addr_owner SEPARATED BY space.
- ENDIF.
- "get Kontrak based wbs lvl1.
- SELECT * INTO TABLE li_vbap FROM vbap WHERE prctr = pa_prctr
- AND pstyv = 'Z2KP'
- AND abgru = ''.
- IF sy-subrc EQ 0.
- SELECT vbeln vtweg INTO TABLE li_vbak FROM vbak FOR ALL ENTRIES IN li_vbap
- WHERE vbeln = li_vbap-vbeln.
- READ TABLE li_vbap INDEX 1.
- lv_vbeln = li_vbap-vbeln.
- "Get sumber dana
- REFRESH : li_lines.
- lv_id = 'Z004'.
- lv_object = 'VBBK'.
- lv_name = lv_vbeln.
- PERFORM fm_read_text
- TABLES
- li_lines
- USING
- lv_id
- lv_name
- lv_object.
- READ TABLE li_lines INTO lw_lines INDEX 1.
- gw_header-sumber_dana = lw_lines-tdline.
- "Get waktu pelaksanaan
- REFRESH : li_lines.
- lv_id = 'Z005'.
- lv_object = 'VBBK'.
- lv_name = lv_vbeln.
- PERFORM fm_read_text
- TABLES
- li_lines
- USING
- lv_id
- lv_name
- lv_object.
- READ TABLE li_lines INTO lw_lines INDEX 1.
- gw_header-wkt_pelaksana = lw_lines-tdline.
- "Get waktu pemeliharaan
- REFRESH : li_lines.
- lv_id = 'Z006'.
- lv_object = 'VBBK'.
- lv_name = lv_vbeln.
- PERFORM fm_read_text
- TABLES
- li_lines
- USING
- lv_id
- lv_name
- lv_object.
- READ TABLE li_lines INTO lw_lines INDEX 1.
- gw_header-wkt_pelihara = lw_lines-tdline.
- "no kontrak.
- SELECT SINGLE bstkd INTO gw_header-kontrak FROM vbkd WHERE vbeln = lv_vbeln
- AND posnr = '000000'.
- "Get NK+PPn
- SELECT SINGLE knumv INTO lv_knumv FROM vbak WHERE vbeln = lv_vbeln.
- SELECT knumv kschl kposn kwert kbetr waerk INTO TABLE li_prcd_contr FROM prcd_elements FOR ALL ENTRIES IN li_vbap
- WHERE knumv = lv_knumv
- AND kposn = li_vbap-posnr
- AND kschl IN lr_kschl.
- LOOP AT li_prcd_contr.
- READ TABLE li_vbap WITH KEY posnr = li_prcd_contr-kposn TRANSPORTING NO FIELDS.
- IF sy-subrc EQ 0.
- CASE li_prcd_contr-kschl.
- WHEN 'ZEK1'.
- IF li_prcd_contr-waerk = 'IDR'.
- lv_nk = ( lv_nk + li_prcd_contr-kwert ) * 100.
- ELSE.
- lv_nk = lv_nk + li_prcd_contr-kwert .
- ENDIF.
- WHEN 'MWST'.
- IF li_prcd_contr-waerk = 'IDR'.
- lv_mwst = ( lv_mwst + li_prcd_contr-kwert ) * 100.
- ELSE.
- lv_mwst = lv_mwst + li_prcd_contr-kwert.
- ENDIF.
- ENDCASE.
- ENDIF.
- ENDLOOP.
- gw_header-nkaddppn = lv_nk + lv_mwst.
- gw_header-nkminppn = lv_nk.
- gw_header-waers = li_prcd_contr-waerk.
- READ TABLE li_vbak WITH KEY vbeln = li_vbap-vbeln.
- gw_header-vtweg = li_vbak-vtweg.
- IF gw_header-waers NE 'IDR'.
- PERFORM fm_exchange_rate
- USING
- gw_header-waers
- 1
- CHANGING
- lv_ukurs
- lv_localamt
- lv_loc_fact.
- gw_header-ukurs = lv_ukurs * lv_loc_fact.
- ENDIF.
- "Cara Pembayaran
- "Get sumber dana
- REFRESH : li_lines.
- lv_id = 'Z007'.
- lv_object = 'VBBK'.
- lv_name = lv_vbeln.
- PERFORM fm_read_text
- TABLES
- li_lines
- USING
- lv_id
- lv_name
- lv_object.
- READ TABLE li_lines INTO lw_lines INDEX 1.
- gw_header-carabayar = lw_lines-tdline.
- gw_context-header = gw_header.
- "Get Billing Plan and Item
- SELECT vbeln posnr pstyv ktgrm INTO TABLE li_vbeln_all FROM vbap WHERE prctr = pa_prctr
- AND pstyv IN lr_pstyv
- AND abgru = ''.
- IF li_vbeln_all[] IS NOT INITIAL.
- "Get VBFA All item category
- SELECT vbeln posnn vbelv INTO TABLE li_vbfa FROM vbfa FOR ALL ENTRIES IN li_vbeln_all
- WHERE vbelv = li_vbeln_all-vbeln
- AND posnv = li_vbeln_all-posnr
- AND vbtyp_n = 'M'.
- "Get Pph Lpp
- IF li_vbfa[] IS NOT INITIAL.
- SELECT vbeln fkdat knumv netwr waerk INTO TABLE li_vbrk FROM vbrk FOR ALL ENTRIES IN li_vbfa
- WHERE vbeln = li_vbfa-vbeln
- AND fksto = ''.
- IF li_vbrk[] IS NOT INITIAL.
- LOOP AT li_vbrk.
- lv_idx = sy-tabix.
- CONCATENATE li_vbrk-fkdat+0(4) li_vbrk-fkdat+4(2) INTO li_vbrk-perio.
- MODIFY li_vbrk INDEX lv_idx TRANSPORTING perio.
- ENDLOOP.
- SELECT vbeln augdt INTO TABLE li_bsad FROM bsad FOR ALL ENTRIES IN li_vbrk
- WHERE vbeln = li_vbrk-vbeln.
- SELECT vbeln posnr netwr INTO TABLE li_vbrp FROM vbrp FOR ALL ENTRIES IN li_vbrk
- WHERE vbeln = li_vbrk-vbeln.
- ENDIF.
- li_vbeln_ztao[] = li_vbeln_all[].
- DELETE li_vbeln_ztao WHERE pstyv NE 'ZTAO'.
- SORT li_vbeln_ztao BY vbeln .
- DELETE ADJACENT DUPLICATES FROM li_vbeln_ztao.
- li_vbfa_ztao[] = li_vbfa[].
- LOOP AT li_vbfa_ztao.
- lv_idx = sy-tabix.
- READ TABLE li_vbeln_ztao WITH KEY vbeln = li_vbfa_ztao-vbelv.
- IF sy-subrc NE 0.
- DELETE li_vbfa_ztao INDEX lv_idx.
- ENDIF.
- ENDLOOP.
- li_vbrk_ztao[] = li_vbrk[].
- LOOP AT li_vbrk_ztao.
- CLEAR li_vbfa.
- lv_idx = sy-tabix.
- READ TABLE li_vbfa_ztao WITH KEY vbeln = li_vbrk_ztao-vbeln.
- READ TABLE li_vbeln_ztao WITH KEY vbeln = li_vbfa_ztao-vbelv.
- IF sy-subrc NE 0.
- DELETE li_vbrk_ztao INDEX lv_idx.
- ENDIF.
- ENDLOOP.
- LOOP AT li_vbfa_ztao.
- READ TABLE li_vbrk_ztao WITH KEY vbeln = li_vbfa_ztao-vbeln.
- IF sy-subrc EQ 0.
- li_merge-fkdat = li_vbrk_ztao-fkdat.
- li_merge-vbeln = li_vbrk_ztao-vbeln.
- li_merge-posnn = li_vbfa_ztao-posnn.
- li_merge-knumv = li_vbrk_ztao-knumv.
- APPEND li_merge.
- ENDIF.
- ENDLOOP.
- SELECT knumv kschl kposn kwert kbetr waerk INTO TABLE li_prcd_bill FROM prcd_elements FOR ALL ENTRIES IN li_vbrk
- WHERE knumv = li_vbrk-knumv
- AND kschl IN lr_kschl.
- ENDIF.
- "Termin (YTAO)
- li_vbeln_ytao[] = li_vbeln_all[].
- DELETE li_vbeln_ytao WHERE pstyv NE 'YTAO'.
- SORT li_vbeln_ytao BY vbeln .
- DELETE ADJACENT DUPLICATES FROM li_vbeln_ytao.
- li_vbfa_ytao[] = li_vbfa[].
- LOOP AT li_vbfa_ytao.
- lv_idx = sy-tabix.
- READ TABLE li_vbeln_ytao WITH KEY vbeln = li_vbfa_ytao-vbelv.
- IF sy-subrc NE 0.
- DELETE li_vbfa_ytao INDEX lv_idx.
- ENDIF.
- ENDLOOP.
- li_vbrk_ytao[] = li_vbrk[].
- LOOP AT li_vbrk_ytao.
- CLEAR li_vbfa.
- lv_idx = sy-tabix.
- READ TABLE li_vbfa WITH KEY vbeln = li_vbrk_ytao-vbeln.
- READ TABLE li_vbeln_ytao WITH KEY vbeln = li_vbfa-vbelv.
- IF sy-subrc NE 0.
- DELETE li_vbrk_ytao INDEX lv_idx.
- ENDIF.
- ENDLOOP.
- "Uang Muka Z2KP ( UM )
- li_vbeln_z2kp[] = li_vbeln_all[].
- DELETE li_vbeln_z2kp WHERE pstyv NE 'Z2KP'.
- SORT li_vbeln_z2kp BY vbeln .
- DELETE ADJACENT DUPLICATES FROM li_vbeln_z2kp.
- li_vbfa_z2kp[] = li_vbfa[].
- LOOP AT li_vbfa_z2kp.
- lv_idx = sy-tabix.
- READ TABLE li_vbeln_z2kp WITH KEY vbeln = li_vbfa_z2kp-vbelv.
- IF sy-subrc NE 0.
- DELETE li_vbfa_z2kp INDEX lv_idx.
- ENDIF.
- ENDLOOP.
- li_vbrk_z2kp[] = li_vbrk[].
- LOOP AT li_vbrk_z2kp.
- CLEAR li_vbfa.
- lv_idx = sy-tabix.
- READ TABLE li_vbfa WITH KEY vbeln = li_vbrk_z2kp-vbeln.
- READ TABLE li_vbeln_z2kp WITH KEY vbeln = li_vbfa-vbelv.
- IF sy-subrc NE 0.
- DELETE li_vbrk_z2kp INDEX lv_idx.
- ENDIF.
- ENDLOOP.
- "Build Item FOR REPORT
- SELECT fplnr vbeln INTO TABLE li_fplnr FROM fpla FOR ALL ENTRIES IN li_vbeln_ztao
- WHERE vbeln = li_vbeln_ztao-vbeln.
- IF li_fplnr[] IS NOT INITIAL.
- SELECT * FROM fplt INTO TABLE li_fplt FOR ALL ENTRIES IN li_fplnr
- WHERE fplnr = li_fplnr-fplnr.
- ENDIF.
- LOOP AT li_fplt.
- "=== FOR LPP ==============
- lv_month = li_fplt-fkdat+4(2).
- PERFORM fm_change_date USING lv_month
- CHANGING lv_nmonth.
- CONCATENATE lv_nmonth '' li_fplt-fkdat+0(4) INTO gw_item-bulan SEPARATED BY space.
- gw_item-zfproz = li_fplt-zfproz.
- gw_item-lpp = ( li_fplt-zfproz / 100 ) * gw_header-nkminppn.
- READ TABLE li_merge WITH KEY fkdat = li_fplt-fkdat.
- IF sy-subrc EQ 0.
- CLEAR li_prcd_bill.
- READ TABLE li_prcd_bill WITH KEY knumv = li_merge-knumv
- kposn = li_merge-posnn
- kschl = 'ZPR3'.
- IF li_prcd_bill-waerk = 'IDR'.
- IF li_prcd_bill-kwert < 1.
- gw_item-pphlpp = li_prcd_bill-kwert * 100 * -1.
- ELSE.
- gw_item-pphlpp = li_prcd_bill-kwert * 100.
- ENDIF.
- ELSE.
- IF li_prcd_bill-kwert < 1.
- gw_item-pphlpp = li_prcd_bill-kwert * -1.
- ELSE.
- gw_item-pphlpp = li_prcd_bill-kwert.
- ENDIF.
- ENDIF.
- gw_item-lppbill = li_merge-vbeln.
- ENDIF.
- " === FOR BAP ===========
- READ TABLE li_vbrk_ytao WITH KEY perio = li_fplt-fkdat+0(6).
- IF sy-subrc EQ 0.
- ADD 1 TO lv_num1.
- CONCATENATE 'TERMIN' lv_num1 INTO gw_item-termin SEPARATED BY space.
- CONCATENATE li_vbrk_ytao-fkdat+6(2) '.' li_vbrk_ytao-fkdat+4(2) '.' li_vbrk_ytao-fkdat+0(4) INTO gw_item-tglbabayar.
- IF li_vbrk_ytao-waerk = 'IDR'.
- gw_item-kydf = li_vbrk_ytao-netwr * 100.
- ELSE.
- gw_item-kydf = li_vbrk_ytao-netwr.
- ENDIF.
- gw_item-bap = ( gw_item-kydf / gw_header-nkminppn ) * 100 .
- "Potongan UAng muka ytao
- LOOP AT li_vbrk WHERE perio = li_fplt-fkdat+0(6).
- CLEAR li_vbfa.
- READ TABLE li_vbfa WITH KEY vbeln = li_vbrk-vbeln.
- READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa-vbelv
- ktgrm = '02'.
- IF sy-subrc EQ 0.
- CLEAR li_vbrp.
- READ TABLE li_vbrp WITH KEY vbeln = li_vbrk-vbeln
- posnr = li_vbeln_all-posnr.
- IF li_vbrk-waerk = 'IDR'.
- gw_item-potdp = li_vbrp-netwr * 100.
- ELSE.
- gw_item-potdp = li_vbrp-netwr.
- ENDIF.
- ENDIF.
- ENDLOOP.
- "PPh dibayar dimuka
- LOOP AT li_vbrk WHERE perio = li_fplt-fkdat+0(6).
- CLEAR li_vbfa.
- READ TABLE li_vbfa WITH KEY vbeln = li_vbrk-vbeln.
- READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa-vbelv
- pstyv = 'ZUMO'.
- IF sy-subrc EQ 0.
- CLEAR li_prcd_bill.
- READ TABLE li_prcd_bill WITH KEY knumv = li_vbrk-knumv
- kposn = li_vbeln_all-posnr
- kschl = 'ZPRB'.
- IF li_vbrk-waerk = 'IDR'.
- gw_item-pphbap = li_prcd_bill-kwert * 100.
- gw_item-pphdimuka = gw_item-pphbap.
- ELSE.
- gw_item-pphbap = li_prcd_bill-kwert.
- gw_item-pphdimuka = gw_item-pphbap.
- ENDIF.
- gw_item-billbap = li_vbrk-vbeln.
- CLEAR li_prcd_bill.
- READ TABLE li_prcd_bill WITH KEY knumv = li_vbrk-knumv
- kposn = li_vbeln_all-posnr
- kschl = 'ZPRD'.
- IF li_vbrk-waerk = 'IDR'.
- gw_item-pphhutang = li_prcd_bill-kwert * 100 * -1.
- ELSE.
- gw_item-pphhutang = li_prcd_bill-kwert * -1.
- ENDIF.
- ENDIF.
- ENDLOOP.
- "PPn
- LOOP AT li_vbrk WHERE perio = li_fplt-fkdat+0(6).
- CLEAR li_vbfa.
- READ TABLE li_vbfa WITH KEY vbeln = li_vbrk-vbeln.
- READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa-vbelv
- pstyv = 'YTAO'.
- IF sy-subrc EQ 0.
- CLEAR : li_prcd_bill, li_bsad.
- READ TABLE li_prcd_bill WITH KEY knumv = li_vbrk-knumv
- kposn = li_vbeln_all-posnr
- kschl = 'ZPR9'.
- IF li_vbrk-waerk = 'IDR'.
- gw_item-ppn = li_prcd_bill-kwert * 100.
- ELSE.
- gw_item-ppn = li_prcd_bill-kwert.
- ENDIF.
- "tanggal cair
- READ TABLE li_bsad WITH KEY vbeln = li_vbrk-vbeln.
- IF sy-subrc EQ 0.
- CONCATENATE li_bsad-augdt+6(2) '.' li_bsad-augdt+4(2) '.' li_bsad-augdt+0(4) INTO gw_item-tglcair.
- ENDIF.
- ENDIF.
- ENDLOOP.
- "Potongan Retensi logicnya sama dgn YTAO dan Z2KP
- LOOP AT li_vbrk WHERE perio = li_fplt-fkdat+0(6).
- CLEAR li_vbfa.
- READ TABLE li_vbfa WITH KEY vbeln = li_vbrk-vbeln.
- READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa-vbelv
- ktgrm = '03'.
- IF sy-subrc EQ 0.
- CLEAR li_vbrp.
- READ TABLE li_vbrp WITH KEY vbeln = li_vbrk-vbeln
- posnr = li_vbeln_all-posnr.
- IF li_vbrk-waerk = 'IDR'.
- gw_item-potret = li_vbrp-netwr * 100.
- ELSE.
- gw_item-potret = li_vbrp-netwr.
- ENDIF.
- ENDIF.
- ENDLOOP.
- "Jumah Bersih
- gw_item-netto = gw_item-kydf - gw_item-potdp - gw_item-potret.
- "Jml include PPn
- gw_item-inclppn = gw_item-netto + gw_item-ppn.
- "jml diterima
- gw_item-jmlterima = gw_item-netto - gw_item-pphbap.
- APPEND gw_item TO gw_context-item.
- ENDIF.
- "=== FOR Z2KP / Contract ==========
- CLEAR : gw_item-termin, gw_item-tglbabayar, gw_item-bap, gw_item-kydf, gw_item-potdp, gw_item-potret, gw_item-netto,
- gw_item-pphhutang, gw_item-ppn, gw_item-inclppn, gw_item-pphbap, gw_item-jmlterima, gw_item-tglcair.
- READ TABLE li_vbrk_z2kp WITH KEY perio = li_fplt-fkdat+0(6).
- IF sy-subrc EQ 0.
- ADD 1 TO lv_num2.
- CONCATENATE 'UM' lv_num2 INTO gw_item-termin SEPARATED BY space.
- CONCATENATE li_vbrk_z2kp-fkdat+6(2) '.' li_vbrk_z2kp-fkdat+4(2) '.' li_vbrk_z2kp-fkdat+0(4) INTO gw_item-tglbabayar.
- gw_item-bap = ( gw_item-kydf / gw_header-nkminppn ) * 100.
- "Potongan uang muka z2kp
- CLEAR : li_vbfa_z2kp, li_vbrp, li_vbeln_all.
- READ TABLE li_vbfa_z2kp WITH KEY vbeln = li_vbrk_z2kp-vbeln.
- READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa_z2kp-vbelv
- pstyv = 'Z2KP'.
- READ TABLE li_vbrp WITH KEY vbeln = li_vbfa_z2kp-vbeln
- posnr = li_vbeln_all-posnr.
- IF li_vbrk_z2kp-waerk = 'IDR'.
- gw_item-potdp = li_vbrp-netwr * 100 * -1.
- ELSE.
- gw_item-potdp = li_vbrp-netwr * -1.
- ENDIF.
- "PPh dibayar dimuka
- LOOP AT li_vbrk WHERE perio = li_fplt-fkdat+0(6).
- CLEAR li_vbfa.
- READ TABLE li_vbfa WITH KEY vbeln = li_vbrk-vbeln.
- READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa-vbelv
- pstyv = 'Z2KP'.
- IF sy-subrc EQ 0.
- CLEAR li_prcd_bill.
- READ TABLE li_prcd_bill WITH KEY knumv = li_vbrk-knumv
- kschl = 'ZPPH'
- kposn = li_vbeln_all-posnr.
- IF li_vbrk-waerk = 'IDR'.
- gw_item-pphbap = li_prcd_bill-kwert * 100.
- gw_item-pphdimuka = gw_item-pphbap * -1.
- ELSE.
- gw_item-pphbap = li_prcd_bill-kwert.
- gw_item-pphdimuka = gw_item-pphbap * -1.
- ENDIF.
- ENDIF.
- ENDLOOP.
- gw_item-pphhutang = gw_item-pphbap * -1.
- "PPn
- LOOP AT li_vbrk WHERE perio = li_fplt-fkdat+0(6).
- CLEAR li_vbfa.
- READ TABLE li_vbfa WITH KEY vbeln = li_vbrk-vbeln.
- READ TABLE li_vbeln_all WITH KEY vbeln = li_vbfa-vbelv
- pstyv = 'Z2KP'.
- IF sy-subrc EQ 0.
- CLEAR li_prcd_bill.
- READ TABLE li_prcd_bill WITH KEY knumv = li_vbrk-knumv
- kposn = li_vbeln_all-posnr
- kschl = 'MWST'.
- IF li_vbrk-waerk = 'IDR'.
- gw_item-ppn = ( ( li_prcd_bill-kbetr / 100 ) * gw_item-potdp ) * -1.
- ELSE.
- gw_item-ppn = ( li_prcd_bill-kbetr / 100 ) * gw_item-potdp * -1 .
- ENDIF.
- "tanggal cair
- READ TABLE li_bsad WITH KEY vbeln = li_vbrk-vbeln.
- IF sy-subrc EQ 0.
- CONCATENATE li_bsad-augdt+6(2) '.' li_bsad-augdt+4(2) '.' li_bsad-augdt+0(4) INTO gw_item-tglcair.
- ENDIF.
- ENDIF.
- ENDLOOP.
- "Jumah Bersih
- gw_item-netto = gw_item-kydf - gw_item-potdp - gw_item-potret.
- "Jml include PPn
- gw_item-inclppn = gw_item-netto + gw_item-ppn.
- "jml diterima
- gw_item-jmlterima = gw_item-netto - gw_item-pphbap.
- APPEND gw_item TO gw_context-item.
- ENDIF.
- ENDLOOP.
- ENDIF.
- ELSE.
- MESSAGE e001(zsd).
- ENDIF.
- "Merge Bulan LPP %LPP Karena 1 Bulan pasti 1 LPP
- LOOP AT gw_context-item ASSIGNING <fs_item>.
- IF <fs_item>-bulan = lv_bulan.
- <fs_item>-bulan = ''.
- <fs_item>-lpp = ''.
- <fs_item>-zfproz = ''.
- <fs_item>-pphlpp = ''.
- <fs_item>-lppbill = ''.
- ENDIF.
- lv_bulan = <fs_item>-bulan.
- ENDLOOP.
- "=== FOOTER =======
- LOOP AT gw_context-item INTO gw_item.
- gw_footer-totlpp = gw_footer-totlpp + gw_item-lpp.
- gw_footer-totzfproz = gw_footer-totzfproz + gw_item-zfproz.
- gw_footer-totpphlpp = gw_footer-totpphlpp + gw_item-pphlpp.
- gw_footer-totbap = gw_footer-totbap + gw_item-bap.
- gw_footer-totkydf = gw_footer-totkydf + gw_item-kydf.
- gw_footer-totpotdp = gw_footer-totpotdp + gw_item-potdp.
- gw_footer-totpotret = gw_footer-totpotret + gw_item-potret.
- gw_footer-totnetto = gw_footer-totnetto + gw_item-netto.
- gw_footer-totpphdimuka = gw_footer-totpphdimuka + gw_item-pphdimuka.
- gw_footer-totpphhutang = gw_footer-totpphhutang + gw_item-pphhutang.
- gw_footer-totppn = gw_footer-totppn + gw_item-ppn.
- gw_footer-totinclppn = gw_footer-totinclppn + gw_item-inclppn.
- gw_footer-totpphbap = gw_footer-totpphbap + gw_item-pphbap.
- gw_footer-totjmlterima = gw_footer-totjmlterima + gw_item-jmlterima.
- IF gw_item-tglcair EQ ''.
- gw_footer-tagihaniniwip1 = gw_footer-tagihaniniwip1 + gw_item-kydf.
- ENDIF.
- ENDLOOP.
- IF gw_header-waers NE 'IDR'.
- lv_idx = 0.
- gw_footer-valas = 'VALAS'.
- lv_itab = 'GW_FOOTER'.
- ASSIGN (lv_itab) TO <fs_itab>.
- DO 14 TIMES.
- lv_idx = lv_idx + 1.
- IF lv_idx NE 2. "Bukan Total Persentase tidak perlu di translate exchange rate to IDR
- ASSIGN COMPONENT lv_idx OF STRUCTURE <fs_itab> TO <lv_val>.
- PERFORM fm_exchange_rate
- USING
- gw_header-waers
- <lv_val>
- CHANGING
- lv_ukurs
- lv_localamt
- lv_loc_fact.
- CASE lv_idx.
- WHEN 1.
- gw_footer-totlppvalas = lv_localamt.
- WHEN 3.
- gw_footer-totpphlppvalas = lv_localamt.
- WHEN 4.
- gw_footer-totbapvalas = lv_localamt.
- WHEN 5.
- gw_footer-totkydfvalas = lv_localamt.
- WHEN 6.
- gw_footer-totpotdpvalas = lv_localamt.
- WHEN 7.
- gw_footer-totpotretvalas = lv_localamt.
- WHEN 8.
- gw_footer-totnettovalas = lv_localamt.
- WHEN 9.
- gw_footer-totpphdimukavalas = lv_localamt.
- WHEN 10.
- gw_footer-totpphhutangvalas = lv_localamt.
- WHEN 11.
- gw_footer-totppnvalas = lv_localamt.
- WHEN 12.
- gw_footer-totinclppnvalas = lv_localamt.
- WHEN 13.
- gw_footer-totpphbapvalas = lv_localamt.
- WHEN 14.
- gw_footer-totjmlterimavalas = lv_localamt.
- ENDCASE.
- ENDIF.
- ENDDO.
- PERFORM fm_exchange_rate
- USING
- gw_header-waers
- gw_footer-tagihaniniwip1
- CHANGING
- lv_ukurs
- lv_localamt
- lv_loc_fact.
- gw_footer-tagihaniniwip1 = lv_localamt.
- ENDIF.
- IF gw_header-waers = 'IDR'.
- gw_footer-potum = abs( gw_footer-totpotdpvalas ).
- gw_footer-tagihanretensi = gw_footer-totpotret.
- gw_footer-haktagih = gw_footer-totlpp - gw_footer-totjmlterima - gw_footer-totpphbap + gw_footer-totpotdp.
- gw_footer-sisahaktagih = gw_footer-haktagih - gw_footer-tagihaniniwip1 - gw_footer-tagihanretensi.
- IF gw_header-vtweg = '20'.
- gw_footer-totjmlterima = gw_footer-totppn - gw_footer-totpphbap.
- ENDIF.
- ELSE.
- gw_footer-potum = abs( gw_footer-totpotdpvalas ).
- gw_footer-tagihanretensi = gw_footer-totpotretvalas.
- gw_footer-haktagih = gw_footer-totlppvalas - gw_footer-totjmlterimavalas - gw_footer-totpphbapvalas + gw_footer-totpotdpvalas.
- gw_footer-sisahaktagih = gw_footer-haktagih - gw_footer-tagihaniniwip1 - gw_footer-tagihanretensi.
- IF gw_header-vtweg = '20'.
- gw_footer-totjmlterimavalas = gw_footer-totppnvalas - gw_footer-totpphbapvalas.
- ENDIF.
- ENDIF.
- "Penanda tangan'
- "Nama Pembuat
- READ TABLE li_vbeln_z2kp INDEX 1.
- REFRESH : li_lines.
- lv_id = 'Z008'.
- lv_object = 'VBBK'.
- lv_name = li_vbeln_z2kp-vbeln.
- PERFORM fm_read_text
- TABLES
- li_lines
- USING
- lv_id
- lv_name
- lv_object.
- READ TABLE li_lines INTO lw_lines INDEX 1.
- gw_footer-namecreate = lw_lines-tdline.
- "Jabatan pembuat
- REFRESH : li_lines.
- lv_id = 'Z009'.
- lv_object = 'VBBK'.
- lv_name = li_vbeln_z2kp-vbeln.
- PERFORM fm_read_text
- TABLES
- li_lines
- USING
- lv_id
- lv_name
- lv_object.
- READ TABLE li_lines INTO lw_lines INDEX 1.
- gw_footer-jabatcreate = lw_lines-tdline.
- "Nama Penjabat yang mengetahui
- REFRESH : li_lines.
- lv_id = 'Z010'.
- lv_object = 'VBBK'.
- lv_name = li_vbeln_z2kp-vbeln.
- PERFORM fm_read_text
- TABLES
- li_lines
- USING
- lv_id
- lv_name
- lv_object.
- READ TABLE li_lines INTO lw_lines INDEX 1.
- gw_footer-nameknown = lw_lines-tdline.
- "Jabatan Penjabat mengetahui
- REFRESH : li_lines.
- lv_id = 'Z011'.
- lv_object = 'VBBK'.
- lv_name = li_vbeln_z2kp-vbeln.
- PERFORM fm_read_text
- TABLES
- li_lines
- USING
- lv_id
- lv_name
- lv_object.
- READ TABLE li_lines INTO lw_lines INDEX 1.
- gw_footer-jabatknown = lw_lines-tdline.
- "Go to footer strucutre form
- gw_context-footer = gw_footer .
- ENDFORM.
- FORM fm_exchange_rate USING im_curr
- im_val
- CHANGING ch_exchange
- ch_localamt
- ch_locfact.
- CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
- EXPORTING
- date = sy-datum
- foreign_amount = im_val
- foreign_currency = im_curr
- local_currency = 'IDR'
- IMPORTING
- exchange_rate = ch_exchange
- local_amount = ch_localamt
- local_factor = ch_locfact
- EXCEPTIONS
- no_rate_found = 1
- overflow = 2
- no_factors_found = 3
- no_spread_found = 4
- derived_2_times = 5
- OTHERS = 6.
- IF sy-subrc <> 0.
- * Implement suitable error handling here
- ENDIF.
- ENDFORM.
- FORM fm_change_date USING im_month
- CHANGING ch_month.
- CASE im_month.
- WHEN 1.
- ch_month = 'Jan'.
- WHEN 2.
- ch_month = 'Feb'.
- WHEN 3.
- ch_month = 'Mar'.
- WHEN 4.
- ch_month = 'Apr'.
- WHEN 5.
- ch_month = 'Mei'.
- WHEN 6.
- ch_month = 'Jun'.
- WHEN 7.
- ch_month = 'Jul'.
- WHEN 8.
- ch_month = 'Agu'.
- WHEN 9.
- ch_month = 'Sep'.
- WHEN 10.
- ch_month = 'Okt'.
- WHEN 11.
- ch_month = 'Nov'.
- WHEN 12.
- ch_month = 'Des'.
- ENDCASE.
- ENDFORM.
- FORM fm_read_text TABLES p_lines
- USING pu_id TYPE thead-tdid
- pu_name TYPE thead-tdname
- pu_object TYPE thead-tdobject.
- DATA : l_wa_lines TYPE tline,
- l_itab_lines TYPE STANDARD TABLE OF tline.
- DATA : lv_langu TYPE thead-tdspras.
- lv_langu = sy-langu.
- CALL FUNCTION 'READ_TEXT'
- EXPORTING
- id = pu_id
- language = lv_langu
- name = pu_name
- object = pu_object
- TABLES
- lines = p_lines
- EXCEPTIONS
- id = 1
- language = 2
- name = 3
- not_found = 4
- object = 5
- reference_check = 6
- wrong_access_to_archive = 7
- OTHERS = 8.
- ENDFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement