Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 41

*&---------------------------------------------------------------------*

*& Report ZSEND_PO_2_ONBASE


*-------------------------------------------------------------------------------*
* Modification Information
*-------------------------------------------------------------------------------*
* Date : 07/30/2012
* Author : Tejas Chhabra
* Change request : TK 196479
* Transport number: XXXX
* Description : Derive company code from WBS or Cost Center , change PCG as per
the derived company code
*-------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------*
* Modification Information
*-------------------------------------------------------------------------------*
* Date : 04/24/2013
* Author : NAIKP
* work order : WO#257811
* Transport number: ECDK910960
* Description : Correct the currency fields.
*-------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------*
* Modification Information
*-------------------------------------------------------------------------------*
* Date : 06/06/2013
* Author : NAIKP
* work order : WO#247802
* Transport number: ECDK910960
* Description : fetch profit center based on validity from Cost Center master
data table.
*-------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------*
* Modification Log *
* Author : RAWATS(Sandeep RAWAT) *
* Functional : NONE *
* Date : 17.08.2015 *
* Work Order : WO#18220 *
* Change Key : WO#18220 *
* Transport : ECDK914111 *
* Description : 1. Adding a field'Project Id' in the outbound file *
* collected from line item EKPO-BEDNR which contain project id*
*-------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------*
* Modification Log *
* Author : RAWATS(Sandeep RAWAT) *
* Functional : Juned *
* Date : 15.10.2015 *
* Work Order : WO#48955 *
* Change Key : WO#48955 *
* Transport : ECDK914514 *
* Description : 1. Adding India specific changes for tax *
*-------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------*
* Modification Log *
* Author : RAWATS(Sandeep RAWAT) *
* Functional : sachin *
* Date : 13.11.2015 *
* Work Order : WO#57083 *
* Change Key : WO#57083 *
* Transport : ECDK914691 *
* Description 1.Collect the field'Location' and pass to the file *
*-------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------*
* Modification Log *
* Author : RAWATS(Sandeep RAWAT) *
* Functional : *
* Date : 20.02.2016 *
* Work Order : WO#087402 *
* Change Key : WO#087402 *
* Transport : ECDK915176 *
* Description 1.Profit Cnter text issue *
*-------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------*
* Modification Log *
* Author : PRASADAJ(Ajit Prasad) *
* Functional : Amit Ranjan *
* Date : 08.03.2016 *
* Work Order : WO#090488 *
* Change Key : WO#090488 *
* Transport : ECDK915272 *
* Description 1.Total issue in onbase for deleted line items *
*-------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------*
* Modification Log *
* Author : Sandeep Rawat *
* Functional : Amit Ranjan *
* Date : 25.07.2016 *
* Work Order : WO#131467 *
* Change Key : WO#131467 *
* Transport : ECDK915931 *
* Description 1.Issue with currency KRW *
*-------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------*
* Modification Log *
* Author : Sandeep Rawat *
* Functional : Amit Ranjan *
* Date : 09.08.2016 *
* Work Order : WO#115440 *
* Change Key : WO#115440 *
* Transport : ECDK916014 *
* Description 1.There are different line of tax on each po line item *
* so our old alignment of page is coming wrong, to fix the *
* same we have add our code to hanle dynamic lines *
*-------------------------------------------------------------------------------*
* Author : Bala *
* Functional : Venkata *
* Date : Dec 30 2016 *
* Work Order : WO#192238 *
* Description : Current program can get Profit center group hier upto 3 *
* levels only, added 4th level to add as suffix to com code*
*-------------------------------------------------------------------------------*
* Author : Bala *
* Functional : Bug fix *
* Date : 03/16/2017 *
* Work Order : WO#218852 *
* Description : Removing subroutine "get_all_pcg", same functionality has
* been acheived through CALL FUNCTION
'ZFI_GET_PROFIT_CENTER_LIST'.
*-------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------*
* Modification Log *
* Author : Sandeep Rawat *
* Functional : Amit Ranjan *
* Date : 04.07.2017(mm/dd/yy) *
* Work Order : WO#226892 *
* Change Key : WO#226892 *
* Transport : ECDK916856 *
* Description 1. Check if the po line item has del indicator and delete *
* the lines. *
*-------------------------------------------------------------------------------*
REPORT zmmi_send_po_to_onbase.

TABLES ekko.
INCLUDE zmmi_send_po_to_onbase_top.

*INCLUDE zmmi_send_po_to_onbase_sel.
SELECTION-SCREEN BEGIN OF BLOCK select WITH FRAME TITLE text-s02.

PARAMETERS: p_nrml RADIOBUTTON GROUP r1 DEFAULT 'X' USER-COMMAND dis,


p_sel RADIOBUTTON GROUP r1.

SELECT-OPTIONS s_ebeln FOR ekko-ebeln.

SELECTION-SCREEN END OF BLOCK select.

SELECTION-SCREEN BEGIN OF BLOCK file WITH FRAME TITLE text-s01.


* Application Server Filename
PARAMETERS: p_file TYPE rlgrap-filename LOWER CASE OBLIGATORY DEFAULT text-a01.
* DEFAULT text-s01.

SELECTION-SCREEN END OF BLOCK file.

* F4 To get the Application Server File name


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM get_path_list USING 'P_FILE'
CHANGING p_file.

AT SELECTION-SCREEN OUTPUT.
IF p_nrml EQ c_x.
LOOP AT SCREEN.
IF screen-name EQ 'S_EBELN-LOW' OR
screen-name EQ 'S_EBELN-HIGH'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF p_sel EQ c_x.
LOOP AT SCREEN.
IF screen-name EQ 'S_EBELN-LOW' OR
screen-name EQ 'S_EBELN-HIGH'.
screen-input = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
*-------------------------------------------------------------------------------*
START-OF-SELECTION.
*-------------------------------------------------------------------------------*

*clear global variables and internal tables.


PERFORM clear_variables.

*get the POs that need to be sent to Onbase from the table ZMM_PO_TO_ONBASE
PERFORM get_po_docs.

*GET ALL THE BLOCKED PO'S


PERFORM get_block_pos.

PERFORM fill_file.

*-------------------------------------------------------------------------------*
END-OF-SELECTION.
*-------------------------------------------------------------------------------*

IF git_file[] IS NOT INITIAL.


PERFORM download_file.
PERFORM update_ztable.
ELSE.
WRITE: / 'File is empty. No file is created.'(009).
ENDIF.
*&---------------------------------------------------------------------*
*& Form GET_PATH_LIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P1 text
* <--P2 text
*----------------------------------------------------------------------*
FORM get_path_list USING fld_name
CHANGING p_apfile.
DATA: l_rfcsi_export LIKE rfcsi.
DATA: l_ser_name LIKE msxxlist-name,
l_path LIKE dxfields-longpath,
l_i_path LIKE dxfields-longpath.

CLEAR: l_i_path,
l_path.

DATA: it_dynp LIKE dynpread OCCURS 0 WITH HEADER LINE.

CLEAR l_path.
CALL FUNCTION 'RFC_SYSTEM_INFO'
IMPORTING
rfcsi_export = l_rfcsi_export.

l_ser_name = l_rfcsi_export-rfcdest.

it_dynp-fieldname = fld_name.

APPEND it_dynp.

CALL FUNCTION 'DYNP_VALUES_READ'


EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = it_dynp
EXCEPTIONS
invalid_abapworkarea = 01
invalid_dynprofield = 02
invalid_dynproname = 03
invalid_dynpronummer = 04
invalid_request = 05
no_fielddescription = 06
undefind_error = 07.

IF sy-subrc = 0.
READ TABLE it_dynp INDEX 1.
p_apfile = it_dynp-fieldvalue.

IF p_apfile IS NOT INITIAL.


l_i_path = p_apfile.
ELSE.
l_i_path = '/'.
ENDIF.

CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'


EXPORTING
i_location_flag = 'A'
i_server = l_ser_name
i_path = l_i_path
IMPORTING
o_path = l_path
EXCEPTIONS
rfc_error = 1
error_with_gui = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE id text-m14 type 'E'.
ELSE.
MOVE l_path TO p_apfile.
ENDIF.
ENDIF.

ENDFORM. " GET_PATH_LIST


*&---------------------------------------------------------------------*
*& Form GET_BLOCK_POS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_block_pos .

IF p_nrml EQ c_x AND git_po_to_onbase[] IS NOT INITIAL..


SELECT ebeln bukrs lifnr aedat ekorg ekgrp bsart bedat ernam knumv waers zterm
wkurs
INTO TABLE git_po_header_data
FROM ekko
FOR ALL ENTRIES IN git_po_to_onbase
WHERE ebeln = git_po_to_onbase-ebeln AND
frggr = c_rel_grp AND
frgsx = c_rel_str AND
frgke = c_x AND
frgzu = c_rel_sta AND
frgrl = c_x AND
procstat = c_blocked.
ELSEIF p_sel EQ c_x.
SELECT ebeln bukrs lifnr aedat ekorg ekgrp bsart bedat ernam knumv waers zterm
wkurs
INTO TABLE git_po_header_data
FROM ekko
WHERE ebeln IN s_ebeln AND
frggr = c_rel_grp AND
frgsx = c_rel_str AND
frgke = c_x AND
frgzu = c_rel_sta AND
frgrl = c_x AND
procstat = c_blocked.
ENDIF.

IF sy-subrc EQ 0.
SORT git_po_header_data BY ebeln.
ENDIF.

IF git_po_header_data[] IS NOT INITIAL.


SELECT ebeln ebelp pstyp matnr bukrs bednr txz01 menge meins netpr bprme matkl
werks lgort "WO#18220 - Adding bednr in the selection
wepos afnam uebto untto mwskz txjcd webre repos netwr loekz
INTO CORRESPONDING FIELDS OF TABLE git_po_item_data
FROM ekpo
FOR ALL ENTRIES IN git_po_header_data
WHERE ebeln = git_po_header_data-ebeln.

*----------------------------------------------------------------------------------
------*
*__{Begin of WO#226892
*__Delete the lines of po line item based on del/block indicator
DELETE git_po_item_data WHERE loekz EQ c_del OR loekz EQ c_block.
*__After filtering from line item, if all the lines items in a PO is block/lock
*__ then there will be no line for that po in line item table, similarly those
*__po are not required in header table also.Now we will filter the header table

LOOP AT git_po_header_data ASSIGNING <fs_po_header_data>.


READ TABLE git_po_item_data INTO gwa_po_item_data WITH KEY ebeln =
<fs_po_header_data>-ebeln.
IF sy-subrc NE 0.
<fs_po_header_data>-if_del = c_x.
ENDIF.
CLEAR:gwa_po_item_data.
ENDLOOP.
*__Delete all the marked PO
DELETE git_po_header_data WHERE if_del EQ c_x.
*__{End of WO#226892
*----------------------------------------------------------------------------------
------*
IF sy-subrc EQ 0.
SORT git_po_item_data BY ebeln ebelp.
**SOC by todmalr WO#404970 on 11/8/2014
**Get country base on company code.
SELECT bukrs land1
FROM t001
INTO TABLE git_t001
FOR ALL ENTRIES IN git_po_item_data
WHERE bukrs = git_po_item_data-bukrs.

**Get country available in TVARVC


IF sy-subrc = 0.
SORT git_t001.
SELECT name low high
FROM tvarvc
INTO TABLE git_tvarvc
WHERE name = sy-repid
AND low = 'COUNTRY'.
IF sy-subrc = 0.
SORT git_tvarvc.
ENDIF.
ENDIF.
**SOC by todmalr WO#404970 on 11/8/2014
ENDIF.

*__{Start of WO#57083
SELECT ebeln ebelp sakto kostl anln1 aufnr wempf ps_psp_pnr kokrs FROM ekkn
"Adding of wempf
INTO CORRESPONDING FIELDS OF TABLE git_po_acc_data
FOR ALL ENTRIES IN git_po_header_data
WHERE ebeln = git_po_header_data-ebeln.
*__}End of WO#57083
IF sy-subrc EQ 0.
SORT git_po_acc_data BY ebeln ebelp.
LOOP AT git_po_acc_data ASSIGNING <lfs_acc_data>.

CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'


EXPORTING
input = <lfs_acc_data>-ps_psp_pnr
IMPORTING
output = <lfs_acc_data>-posid.

ENDLOOP.
ENDIF.

SELECT ebeln ebelp eindt FROM eket INTO TABLE git_po_deli_data


FOR ALL ENTRIES IN git_po_header_data
WHERE ebeln = git_po_header_data-ebeln.

IF sy-subrc EQ 0.
SORT git_po_deli_data BY ebeln ebelp.
ENDIF.

ENDIF.

LOOP AT git_po_header_data INTO gwa_po_header_data.


CLEAR : l_tot_net,
l_tot_tax,
l_tot_po,
l_hdr_txt,
l_cc_txt,
l_po_app_txt,
l_wbs_txt.
PERFORM get_header_note USING gwa_po_header_data-ebeln
CHANGING l_hdr_txt.
PERFORM get_po_app_text USING gwa_po_header_data-ebeln
CHANGING l_po_app_txt.
PERFORM get_cc_wbs_text USING gwa_po_header_data-ebeln
gwa_po_header_data-bsart
CHANGING l_cc_txt.
PERFORM get_cc_wbs_text USING gwa_po_header_data-ebeln
gwa_po_header_data-bsart
CHANGING l_wbs_txt.
LOOP AT git_po_item_data INTO gwa_po_item_data WHERE ebeln =
gwa_po_header_data-ebeln.
MOVE-CORRESPONDING gwa_po_header_data TO git_send_po_data.
IF gwa_po_header_data-lifnr IS NOT INITIAL.
SELECT SINGLE name1 FROM lfa1 INTO git_send_po_data-name1
WHERE lifnr = gwa_po_header_data-lifnr.
ENDIF.

MOVE-CORRESPONDING gwa_po_item_data TO git_send_po_data.


git_send_po_data-hrtxt = l_hdr_txt.
git_send_po_data-poatxt = l_po_app_txt.
git_send_po_data-cctxt = l_cc_txt.
git_send_po_data-wbstxt = l_wbs_txt.
PERFORM calculate_tax USING gwa_po_header_data-ebeln
gwa_po_item_data-ebelp
CHANGING git_send_po_data-tax_val.

IF git_send_po_data-loekz NE 'L' AND


git_send_po_data-loekz NE 'S'.
l_tot_net = gwa_po_item_data-netwr + l_tot_net.
l_tot_tax = git_send_po_data-tax_val + l_tot_tax.
l_tot_po = l_tot_net + l_tot_tax.
git_send_po_data-tot_po = git_send_po_data-netwr + git_send_po_data-
tax_val.
ENDIF.
READ TABLE git_po_acc_data INTO gwa_po_acc_data WITH KEY ebeln =
gwa_po_item_data-ebeln
ebelp =
gwa_po_item_data-ebelp
BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING gwa_po_acc_data TO git_send_po_data.
MOVE gwa_po_acc_data-ps_psp_pnr TO git_send_po_data-pspnr.
IF git_send_po_data-bsart EQ c_zb.
PERFORM get_pc_kostl USING git_send_po_data-cctxt(10)
git_send_po_data-bukrs
CHANGING git_send_po_data-ko_prctr.
ELSEIF git_send_po_data-bsart EQ c_za.
PERFORM get_pc_wbs USING git_send_po_data-wbstxt
CHANGING git_send_po_data-ko_prctr.
ENDIF.
ENDIF.
IF l_cc_txt IS NOT INITIAL.
LOOP AT git_po_acc_data INTO gwa_po_acc_data WHERE ebeln EQ
gwa_po_item_data-ebeln.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'


EXPORTING
input = gwa_po_acc_data-kostl
IMPORTING
output = gwa_po_acc_data-kostl.
IF gwa_po_acc_data-kostl NE l_cc_txt(10).

git_send_po_data-multi_cc_flg = c_x.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.

READ TABLE git_po_deli_data INTO gwa_po_deli_data WITH KEY ebeln =


gwa_po_item_data-ebeln
ebelp =
gwa_po_item_data-ebelp
BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING gwa_po_deli_data TO git_send_po_data.
ENDIF.
l_no_item = l_no_item + 1.
APPEND git_send_po_data.
CLEAR git_send_po_data.

ENDLOOP.
MOVE : gwa_po_header_data-ebeln TO git_tot_val-ebeln,
l_no_item TO git_tot_val-tot_items,
l_tot_net TO git_tot_val-tot_net,
l_tot_tax TO git_tot_val-tot_tax,
l_tot_po TO git_tot_val-tot_po.
APPEND git_tot_val.
CLEAR : git_tot_val,
l_no_item.
ENDLOOP.

SORT git_tot_val BY ebeln.

ENDFORM. " GET_BLOCK_POS


*&---------------------------------------------------------------------*
*& Form CLEAR_VARIABLES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM clear_variables .

CLEAR : git_po_header_data,
git_po_item_data,
git_send_po_data,
git_po_acc_data,
git_po_deli_data,
git_po_to_onbase,
gwa_po_to_onbase,
gwa_po_header_data,
gwa_po_item_data,
gwa_po_acc_data,
gwa_po_deli_data,
git_file,
git_cc2pcg_onbase,
gwa_cc2pcg_onbase,
git_tax_onbase,
gwa_tax_onbase,
gwa_t001, "WO#404970
gwa_tvarvc. "WO#404970
* git_pcg_2_pc.

REFRESH:git_po_header_data,
git_po_item_data,
git_send_po_data,
git_po_acc_data,
git_po_deli_data,
git_po_to_onbase,
git_file,
git_cc2pcg_onbase,
git_tax_onbase,
git_t001, "WO#404970
git_tvarvc. "WO#404970
* git_pcg_2_pc.

ENDFORM. " CLEAR_VARIABLES


*&---------------------------------------------------------------------*
*& Form GET_PO_DOCS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_po_docs .

IF p_nrml EQ c_x.
SELECT * FROM zmm_po_to_onbase INTO TABLE git_po_to_onbase
WHERE status EQ c_space.
ENDIF.

SELECT * FROM zmm_tax_onbase INTO TABLE git_tax_onbase.


SELECT * FROM zmm_cc2pcg_onbas INTO TABLE git_cc2pcg_onbase.

IF git_cc2pcg_onbase[] IS NOT INITIAL.


*__Begin of WO#87402
*__--------------------------------------------------------------------------------
---------
*__Selecting the list of controlling area and herarchy for COA1000
"
SELECT kokrs
" Controlling Area
phinr
" Profit center area
FROM tka01
"
INTO
"
TABLE git_tka01
"
WHERE ktopl EQ c_1000.
" For Chart of Account 1000
IF sy-subrc EQ 0 AND git_tka01 IS NOT INITIAL.
"
LOOP AT git_tka01 ASSIGNING <fs_tka01> .
"
CONCATENATE lc_setid <fs_tka01>-kokrs <fs_tka01>-phinr INTO <fs_tka01>-
setid. " Create a setid that contains 0106+Controlling Area+Profit center area
*__old code where static setid was passed ( 1000 contolling area ).
"
** gv_setid = '01061000DESG-PCHIR'.
" Old Code
*__--------------------------------------------------------------------------------
---------
*__End of WO#87402
CALL FUNCTION 'G_SET_LIST_SELECT_IN_HIERARCHY'
EXPORTING
top_setid = <fs_tka01>-setid
" WO#87402 Adding dynamic setid instead of static one
TABLES
et_sethier = git_sethier
EXCEPTIONS
hierarchy_not_found = 1
OTHERS = 2.

LOOP AT git_sethier INTO gwa_sethier.


CLEAR gwa_pcg_txt.
gwa_pcg_txt-phinr = gwa_sethier-shortname.
gwa_pcg_txt-descript = gwa_sethier-descript.
APPEND gwa_pcg_txt TO git_pcg_txt.
ENDLOOP.
SORT git_pcg_txt BY phinr.
ENDLOOP.
" WO#87402 End of git_tka01
ENDIF.
" WO#87402 End of tka01 select
ENDIF.
ENDFORM. " GET_PO_DOCS
*&---------------------------------------------------------------------*
*& Form CALCULATE_TAX
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_BUKRS text
* -->P_WAERS text
* -->P_MWSKZ text
* -->P_TXJCD text
* -->P_NETWR text
* <--P_TAX_VAL text
*----------------------------------------------------------------------*
FORM calculate_tax USING p_ebeln
p_ebelp
CHANGING p_tax_val.

*
* DATA: lit_fwste TYPE STANDARD TABLE OF rtax1u15.
*
* REFRESH lit_fwste.
* CLEAR lit_fwste.

CALL FUNCTION 'ZGET_PO_TAX_AMT'


EXPORTING
ebeln = p_ebeln
ebelp = p_ebelp
IMPORTING
wmwst = p_tax_val.

* CALL FUNCTION 'CALCULATE_TAX_FROM_NET_AMOUNT'


* EXPORTING
* i_bukrs = p_bukrs
* i_mwskz = p_mwskz
* i_txjcd = p_txjcd
* i_waers = p_waers
* i_wrbtr = p_netwr
* IMPORTING
* e_fwste = p_tax_val
* TABLES
* t_mwdat = lit_fwste
* EXCEPTIONS
* bukrs_not_found = 1
* country_not_found = 2
* mwskz_not_defined = 3
* mwskz_not_valid = 4
* ktosl_not_found = 5
* kalsm_not_found = 6
* parameter_error = 7
* knumh_not_found = 8
* kschl_not_found = 9
* unknown_error = 10
* account_not_found = 11
* txjcd_not_valid = 12
* OTHERS = 13.
* IF sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.

ENDFORM. " CALCULATE_TAX


*&---------------------------------------------------------------------*
*& Form GET_HEADER_NOTE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EBELN text
* <--P_HRTXT text
*----------------------------------------------------------------------*
FORM get_header_note USING p_ebeln
CHANGING p_hrtxt.

DATA : lit_tline TYPE STANDARD TABLE OF tline WITH HEADER LINE,


l_name LIKE thead-tdname.

l_name = p_ebeln.

CALL FUNCTION 'READ_TEXT'


EXPORTING
id = c_f01
language = sy-langu
name = l_name
object = c_ekko
TABLES
lines = lit_tline
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.

IF sy-subrc EQ 0.
LOOP AT lit_tline.
CONCATENATE p_hrtxt lit_tline-tdline INTO p_hrtxt.
ENDLOOP.
ENDIF.

ENDFORM. " GET_HEADER_NOTE


*&---------------------------------------------------------------------*
*& Form FILL_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_file .
DATA : l_ebeln LIKE ekko-ebeln,
l_no TYPE i,
l_seg LIKE cepc-segment,
* l_pcg LIKE cepc-khinr,
* l_pcg_flg,
l_cc_txt LIKE t001-butxt,
l_seg_name LIKE fagl_segmt-name,
l_pur_txt LIKE t024e-ekotx,
l_pur_grp_txt LIKE t024-eknam,
l_pspnr_txt LIKE prps-post1,
l_csks_txt LIKE cskt-ltext,
l_tax_flg,
l_it_flg,
l_usr_txt LIKE v_username-name_text,
l_pyt_txt LIKE t052u-text1,
l_item_no(3),
l_qty(16),
l_net_price(18),
l_unit_price(18),
l_net_value(18),
l_tax_perc(6),
l_matkl_txt(30),
l_anln1_txt(50),
l_gl_txt(24),
l_tax_%(3) TYPE p DECIMALS 2,
l_tax_amt(18),
l_tot_po(18),
l_uebto(3) TYPE p,
l_no_lines TYPE i,
l_tot_net(18),
l_lines_cnt TYPE i,
l_hdr_flg,
l_cc2pcg TYPE i,
l_flg_pcg,
l_pcg LIKE cepc-khinr,
l_amt(13) TYPE p DECIMALS 5,
l_amt1(13) TYPE p,
l_khinr0 TYPE phinr,
l_khinr1 TYPE phinr,
l_khinr2 TYPE phinr,
l_khinr3 TYPE phinr,
l_khinr4 TYPE phinr,
l_return TYPE bapiret2.

DATA : lit_cc2pcg_onbase TYPE STANDARD TABLE OF zmm_cc2pcg_onbas,


lwa_cc2pcg_onbase TYPE zmm_cc2pcg_onbas.

IF git_send_po_data[] IS NOT INITIAL.


SORT git_send_po_data BY ebeln ebelp.

LOOP AT git_send_po_data.
*__Begin of {WO#115440
*__ We will be getting the total number of lines in the final table
DESCRIBE TABLE git_send_po_data LINES lv_po_tot_lines.
*__Calculating the curent line item uased and adding 1 to get the next lines for
*__ further getting the tax lines
lv_po_lines = sy-tabix.
IF lv_po_lines LT lv_po_tot_lines.
lv_po_lines_n = lv_po_lines + 1.
ENDIF.
*__End of {WO#115440

CLEAR : l_seg, l_cc_txt, l_seg_name, l_pur_txt, l_pur_grp_txt, l_pspnr_txt,


l_csks_txt, l_tax_flg, l_usr_txt, l_pyt_txt, lwa_cc2pcg_onbase, l_cc2pcg, git_pcg,
l_flg_pcg, l_pcg, l_khinr0, l_khinr1, l_khinr2, l_khinr3, l_it_flg.
REFRESH: lit_cc2pcg_onbase,
git_pcg.
IF l_ebeln NE git_send_po_data-ebeln OR l_no EQ 0 OR l_hdr_flg EQ c_x.
l_no = 1.
IF l_ebeln NE git_send_po_data-ebeln.
CLEAR : l_no_lines,
l_lines_cnt.
ENDIF.
MOVE git_send_po_data-ebeln TO l_ebeln.
** CLEAR git_file.
** APPEND git_file. l_no_lines = l_no_lines + 1.

SELECT SINGLE name_text FROM v_username INTO l_usr_txt WHERE bname =


git_send_po_data-ernam.
MOVE: text-f01 TO git_file(12),
git_send_po_data-ebeln TO git_file+12(23),
text-f16 TO git_file+35(15),
text-f18 TO git_file+70(12).
WRITE : git_send_po_data-bedat TO git_file+50(20) MM/DD/YYYY,
l_usr_txt TO git_file+83(65) LEFT-JUSTIFIED.

APPEND git_file.
l_no_lines = l_no_lines + 1.
CLEAR git_file.
APPEND git_file. l_no_lines = l_no_lines + 1.

READ TABLE git_tot_val WITH KEY ebeln = git_send_po_data-ebeln BINARY


SEARCH.
IF sy-subrc EQ 0.
MOVE : text-f02 TO git_file(12),
text-f09 TO git_file+35(15),
text-f19 TO git_file+70(12).
LOOP AT git_po_item_data INTO gwa_po_item_data WHERE ebeln =
git_send_po_data-ebeln.
**SOC by todmalr WO#404970 on 11/8/2014
READ TABLE git_t001 INTO gwa_t001 WITH KEY bukrs = gwa_po_item_data-
bukrs BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE git_tvarvc INTO gwa_tvarvc WITH KEY high = gwa_t001-land1
BINARY SEARCH.
IF sy-subrc = 0.
**SOC by todmalr WO#404970 on 11/8/2014
READ TABLE git_tax_onbase INTO gwa_tax_onbase WITH KEY matkl =
gwa_po_item_data-matkl.
IF sy-subrc EQ 0.
l_tax_flg = c_x.
EXIT.
ENDIF.
**SOC by todmalr WO#404970 on 11/8/2014
ENDIF.
ENDIF.
**SOC by todmalr WO#404970 on 11/8/2014
ENDLOOP.

IF l_tax_flg EQ c_x.
MOVE c_yes TO git_file+50(20).
ELSE.
MOVE c_no TO git_file+50(20).
ENDIF.
IF git_send_po_data-waers EQ 'USDN'.
CLEAR l_amt.
l_amt = git_tot_val-tot_po / 1000.
WRITE : l_amt TO git_file+16(19) LEFT-JUSTIFIED,
git_send_po_data-waers TO git_file+12(4) LEFT-JUSTIFIED,
git_send_po_data-ernam TO git_file+83(65) LEFT-JUSTIFIED.
*WO#257811
*BOC NAIKP 04/24/2013
* ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
ELSEIF git_send_po_data-waers EQ 'JPY' OR "WO#131467
git_send_po_data-waers EQ 'KRW'. "WO#131467
CLEAR l_amt1.
l_amt1 = git_tot_val-tot_po * 100.
WRITE : l_amt1 TO git_file+16(19) LEFT-JUSTIFIED,
git_send_po_data-waers TO git_file+12(4) LEFT-JUSTIFIED,
git_send_po_data-ernam TO git_file+83(65) LEFT-JUSTIFIED.
*EOC NAIKP 04/24/2013
ELSE.
WRITE : git_tot_val-tot_po TO git_file+16(19) LEFT-JUSTIFIED,
git_send_po_data-waers TO git_file+12(4) LEFT-JUSTIFIED,
git_send_po_data-ernam TO git_file+83(65) LEFT-JUSTIFIED.
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR git_file.
LOOP AT git_po_item_data INTO gwa_po_item_data WHERE ebeln =
git_send_po_data-ebeln.
IF gwa_po_item_data-matkl EQ 'PCH200252' OR gwa_po_item_data-matkl EQ
'PCH200253' OR
gwa_po_item_data-matkl EQ 'PCH300014' OR gwa_po_item_data-matkl EQ
'PCH300015'.
l_it_flg = c_x.
EXIT.
ENDIF.
ENDLOOP.
MOVE text-f23 TO git_file+35(15).
IF l_it_flg EQ c_x.
MOVE c_yes TO git_file+50(20).
ELSE.
MOVE c_no TO git_file+50(20).
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
ENDIF.
MOVE : text-f03 TO git_file(12),
text-f17 TO git_file+35(15),
text-f20 TO git_file+70(12),
git_send_po_data-lifnr TO git_file+12(23),
git_send_po_data-name1 TO git_file+83(65).
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = git_file+12(10)
IMPORTING
output = git_file+12(10).
SELECT SINGLE text1 FROM t052u INTO l_pyt_txt WHERE spras EQ 'E' AND zterm
EQ git_send_po_data-zterm.
IF l_pyt_txt IS NOT INITIAL.
CONCATENATE git_send_po_data-zterm l_pyt_txt INTO git_file+50(20)
SEPARATED BY ' - '.
ELSE.
MOVE git_send_po_data-zterm TO git_file+50(20).
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR git_file.
APPEND git_file. l_no_lines = l_no_lines + 1.

MOVE : text-f05 TO git_file(13),


text-f21 TO git_file+70(12).

*first find the how many entries are there in the table zmm_cc2pcg_onbas for the
given company code
* LOOP AT git_cc2pcg_onbase INTO gwa_cc2pcg_onbase WHERE bukrs =
git_send_po_data-bukrs.
* MOVE gwa_cc2pcg_onbase TO lwa_cc2pcg_onbase.
* APPEND lwa_cc2pcg_onbase TO lit_cc2pcg_onbase.
* ENDLOOP. "Commented by CHHABRAT - 07/30/2012 - TK 196479

* Begin of addition - CHHABRAT - TK 196479


DATA : gv_der_bukrs TYPE bukrs. "Derived Company Code
CLEAR gv_der_bukrs.
IF git_send_po_data-kostl IS NOT INITIAL.
SELECT SINGLE bukrs FROM csks INTO gv_der_bukrs WHERE kokrs EQ '1000'
AND kostl EQ
git_send_po_data-kostl
AND datbi GE sy-datum.
ELSEIF git_send_po_data-pspnr IS NOT INITIAL.
SELECT SINGLE pbukr FROM prps INTO gv_der_bukrs WHERE pspnr EQ
git_send_po_data-pspnr.
ENDIF.
IF gv_der_bukrs IS NOT INITIAL.
LOOP AT git_cc2pcg_onbase INTO gwa_cc2pcg_onbase WHERE bukrs =
gv_der_bukrs.
MOVE gwa_cc2pcg_onbase TO lwa_cc2pcg_onbase.
APPEND lwa_cc2pcg_onbase TO lit_cc2pcg_onbase.
ENDLOOP.
ELSE.
LOOP AT git_cc2pcg_onbase INTO gwa_cc2pcg_onbase WHERE bukrs =
git_send_po_data-bukrs.
MOVE gwa_cc2pcg_onbase TO lwa_cc2pcg_onbase.
APPEND lwa_cc2pcg_onbase TO lit_cc2pcg_onbase.
ENDLOOP.
ENDIF.
* End of addition
DESCRIBE TABLE lit_cc2pcg_onbase LINES l_cc2pcg.
IF l_cc2pcg EQ 1.
READ TABLE lit_cc2pcg_onbase INTO lwa_cc2pcg_onbase INDEX 1.
IF lwa_cc2pcg_onbase-prfgrp IS NOT INITIAL.
CONCATENATE git_send_po_data-bukrs lwa_cc2pcg_onbase-prfgrp INTO
git_file+14(23) SEPARATED BY '-'.
PERFORM get_cc_txt USING git_send_po_data-bukrs
CHANGING l_cc_txt.
READ TABLE git_pcg_txt INTO gwa_pcg_txt WITH KEY phinr =
lwa_cc2pcg_onbase-prfgrp.
IF gwa_pcg_txt-descript IS NOT INITIAL.
CONCATENATE l_cc_txt gwa_pcg_txt-descript INTO git_file+83(65)
SEPARATED BY '-'.
ELSE.
MOVE l_cc_txt TO git_file+83(65).
ENDIF.
ELSE.
MOVE git_send_po_data-bukrs TO git_file+14(23).
PERFORM get_cc_txt USING git_send_po_data-bukrs
CHANGING l_cc_txt.
MOVE l_cc_txt TO git_file+83(65).
ENDIF.
ELSEIF l_cc2pcg GT 1.
* PERFORM get_all_pcg TABLES git_pcg CHANGING l_pcg.
SORT git_pcg BY phinr.
CALL FUNCTION 'ZFI_GET_PROFIT_CENTER_LIST'
EXPORTING
iv_prctr = git_send_po_data-ko_prctr
IMPORTING
e_khinr0 = l_khinr0
e_khinr1 = l_khinr1
e_khinr2 = l_khinr2
e_khinr3 = l_khinr3
e_khinr4 = l_khinr4 "WO#192238
return = l_return.
IF sy-subrc EQ 0.
READ TABLE lit_cc2pcg_onbase INTO lwa_cc2pcg_onbase WITH KEY prfgrp =
l_khinr4. "WO#192238
IF sy-subrc EQ 0.
l_flg_pcg = c_x.
ELSE.
READ TABLE lit_cc2pcg_onbase INTO lwa_cc2pcg_onbase WITH KEY prfgrp =
l_khinr3.
IF sy-subrc EQ 0.
l_flg_pcg = c_x.
ELSE.
READ TABLE lit_cc2pcg_onbase INTO lwa_cc2pcg_onbase WITH KEY prfgrp
= l_khinr2.
IF sy-subrc EQ 0.
l_flg_pcg = c_x.
ELSE.
READ TABLE lit_cc2pcg_onbase INTO lwa_cc2pcg_onbase WITH KEY
prfgrp = l_khinr1.
IF sy-subrc EQ 0.
l_flg_pcg = c_x.
ELSE.
READ TABLE lit_cc2pcg_onbase INTO lwa_cc2pcg_onbase WITH KEY
prfgrp = l_khinr0.
IF sy-subrc EQ 0.
l_flg_pcg = c_x.
ELSE.
CLEAR l_flg_pcg.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF l_flg_pcg = c_x.
IF gv_der_bukrs IS NOT INITIAL. "Print Company Code and PCG in cold
file
CONCATENATE gv_der_bukrs lwa_cc2pcg_onbase-prfgrp INTO
git_file+14(23) SEPARATED BY '-'.
ELSE.
CONCATENATE git_send_po_data-bukrs lwa_cc2pcg_onbase-prfgrp INTO
git_file+14(23) SEPARATED BY '-'.
ENDIF.
PERFORM get_cc_txt USING git_send_po_data-bukrs
CHANGING l_cc_txt.
READ TABLE git_pcg_txt INTO gwa_pcg_txt WITH KEY phinr =
lwa_cc2pcg_onbase-prfgrp.
IF sy-subrc EQ 0 AND gwa_pcg_txt-descript IS NOT INITIAL.
"WO#087402 - Add sy-subrc
CONCATENATE l_cc_txt gwa_pcg_txt-descript INTO git_file+83(65)
SEPARATED BY '-'.
ELSE.
MOVE l_cc_txt TO git_file+83(65).
ENDIF.
ELSE.
MOVE git_send_po_data-bukrs TO git_file+14(23).
PERFORM get_cc_txt USING git_send_po_data-bukrs
CHANGING l_cc_txt.
MOVE l_cc_txt TO git_file+83(65).
ENDIF.

ELSEIF l_cc2pcg EQ 0.
MOVE git_send_po_data-bukrs TO git_file+14(23).
PERFORM get_cc_txt USING git_send_po_data-bukrs
CHANGING l_cc_txt.
MOVE l_cc_txt TO git_file+83(65).
ENDIF.

APPEND git_file. l_no_lines = l_no_lines + 1.


CLEAR git_file.
APPEND git_file. l_no_lines = l_no_lines + 1.

MOVE : text-f07 TO git_file(12),


text-f21 TO git_file+70(12),
git_send_po_data-ekgrp TO git_file+12(23).
SELECT SINGLE eknam FROM t024 INTO l_pur_grp_txt WHERE ekgrp EQ
git_send_po_data-ekgrp.
WRITE l_pur_grp_txt TO git_file+83(65) LEFT-JUSTIFIED.
CONDENSE git_file+83(65).
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR git_file.
APPEND git_file. l_no_lines = l_no_lines + 1.

MOVE : text-f21 TO git_file+70(12).


IF git_send_po_data-bsart EQ c_za.
MOVE : text-f13 TO git_file(12),
git_send_po_data-wbstxt TO git_file+13(23).
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_INPUT'
EXPORTING
input = git_send_po_data-wbstxt
IMPORTING
output = git_send_po_data-wbstxt.
SELECT SINGLE post1 FROM prps INTO l_pspnr_txt WHERE pspnr EQ
git_send_po_data-wbstxt(8).
WRITE l_pspnr_txt TO git_file+83(65) LEFT-JUSTIFIED.
ELSEIF git_send_po_data-bsart EQ c_zb.
MOVE : text-f08 TO git_file(12),
git_send_po_data-cctxt TO git_file+13(23).
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = git_send_po_data-cctxt(10)
IMPORTING
output = git_send_po_data-cctxt(10).
SELECT SINGLE ltext FROM cskt INTO l_csks_txt WHERE kostl EQ
git_send_po_data-cctxt.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = git_send_po_data-cctxt(10)
IMPORTING
output = git_send_po_data-cctxt(10).
MOVE l_csks_txt TO git_file+83(65).
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR git_file.
IF git_send_po_data-bsart EQ c_zb AND git_send_po_data-multi_cc_flg EQ
c_x.
MOVE text-f22 TO git_file(12).
WRITE text-s03 TO git_file+13(38).
APPEND git_file. l_no_lines = l_no_lines + 1.
ELSE.
APPEND git_file. l_no_lines = l_no_lines + 1.
ENDIF.

MOVE text-f14 TO git_file(12).


WRITE git_send_po_data-hrtxt TO git_file+13(250) LEFT-JUSTIFIED.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR git_file.
APPEND git_file. l_no_lines = l_no_lines + 1.

MOVE text-f15 TO git_file(12).


WRITE git_send_po_data-afnam TO git_file+13(12) LEFT-JUSTIFIED.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR git_file.
APPEND git_file. l_no_lines = l_no_lines + 1.
APPEND git_file. l_no_lines = l_no_lines + 1.
APPEND git_file. l_no_lines = l_no_lines + 1.
APPEND git_file. l_no_lines = l_no_lines + 1.

IF l_hdr_flg EQ c_x.
CLEAR l_hdr_flg.
ENDIF.
ENDIF.

CLEAR : l_item_no, l_qty, l_net_price, l_net_value, l_tax_perc, l_tax_%,


l_tax_amt, l_tot_po, l_unit_price, l_matkl_txt, l_gl_txt, l_uebto, l_anln1_txt.
l_lines_cnt = l_lines_cnt + 1.

* Start of changes for WO#090488


** CHECK git_send_po_data-loekz NE 'L' AND
** git_send_po_data-loekz NE 'S'.
IF git_send_po_data-loekz NE 'L' AND git_send_po_data-loekz NE 'S'.
* End of changes for WO#090488
WRITE : git_send_po_data-menge TO l_qty LEFT-JUSTIFIED,
git_send_po_data-bprme TO l_unit_price LEFT-JUSTIFIED.
IF git_send_po_data-waers EQ 'USDN'.
l_amt = git_send_po_data-netpr / 1000.
WRITE l_amt TO l_net_price LEFT-JUSTIFIED.
CLEAR l_amt.
l_amt = git_send_po_data-netwr / 1000.
WRITE l_amt TO l_net_value LEFT-JUSTIFIED.
CLEAR l_amt.
l_amt = git_send_po_data-tax_val / 1000.
WRITE l_amt TO l_tax_amt LEFT-JUSTIFIED.
CLEAR l_amt.
l_amt = git_send_po_data-tot_po / 1000.
WRITE l_amt TO l_tot_po LEFT-JUSTIFIED.
CLEAR l_amt.
*WO#257811
*BOC NAIKP 04/24/2013
* ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
ELSEIF git_send_po_data-waers EQ 'JPY' OR "WO#131467
git_send_po_data-waers EQ 'KRW'. "WO#131467
l_amt1 = git_send_po_data-netpr * 100.
WRITE l_amt1 TO l_net_price LEFT-JUSTIFIED.
CLEAR l_amt1.
l_amt1 = git_send_po_data-netwr * 100.
WRITE l_amt1 TO l_net_value LEFT-JUSTIFIED.
CLEAR l_amt1.
l_amt1 = git_send_po_data-tax_val * 100.
WRITE l_amt1 TO l_tax_amt LEFT-JUSTIFIED.
CLEAR l_amt1.
l_amt1 = git_send_po_data-tot_po * 100.
WRITE l_amt1 TO l_tot_po LEFT-JUSTIFIED.
CLEAR l_amt1.
*EOC NAIKP 04/24/2013
ELSE.
WRITE : git_send_po_data-netpr TO l_net_price LEFT-JUSTIFIED,
git_send_po_data-netwr TO l_net_value LEFT-JUSTIFIED,
git_send_po_data-tax_val TO l_tax_amt LEFT-JUSTIFIED,
git_send_po_data-tot_po TO l_tot_po LEFT-JUSTIFIED.
ENDIF.

l_uebto = git_send_po_data-uebto.
l_tax_% = ( git_send_po_data-tax_val / git_send_po_data-netwr ) * 100.
WRITE : l_tax_% TO l_tax_perc LEFT-JUSTIFIED.
* MOVE : git_send_po_data-matkl TO git_file+4(9),
* git_send_po_data-meins TO git_file+55(3),
* git_send_po_data-mwskz TO git_file+61(2),
* git_send_po_data-uebto TO git_file+84(3).

WRITE : l_lines_cnt TO git_file(3) CENTERED,


git_send_po_data-txz01 TO git_file+3(42) LEFT-JUSTIFIED,
l_qty TO git_file+45(15) RIGHT-JUSTIFIED,
git_send_po_data-meins TO git_file+61(3) CENTERED,
l_net_price TO git_file+64(18) RIGHT-JUSTIFIED,
l_net_value TO git_file+82(18) RIGHT-JUSTIFIED,
l_tax_perc TO git_file+100(6) RIGHT-JUSTIFIED,
* '%' to git_file+106(1),
l_tax_amt TO git_file+107(18) RIGHT-JUSTIFIED,
l_tot_po TO git_file+125(18) RIGHT-JUSTIFIED,
l_uebto TO git_file+144(3) CENTERED.
CONCATENATE git_file+100(6) '%' INTO git_file+100(7).
CONCATENATE git_file+144(3) '%' INTO git_file+144(4).
WRITE : git_file+100(7) TO git_file+100(7) CENTERED,
git_file+144(4) TO git_file+144(4) CENTERED.

WRITE git_file+100(7) TO git_file+100(7) CENTERED.

APPEND git_file. l_no_lines = l_no_lines + 1.


CLEAR git_file.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'


EXPORTING
input = git_send_po_data-sakto
IMPORTING
output = git_file+46(15).
WRITE : git_send_po_data-matkl TO git_file+4(12) RIGHT-JUSTIFIED,
git_file+46(15) TO git_file+46(15) RIGHT-JUSTIFIED.
SELECT SINGLE wgbez FROM t023t INTO l_matkl_txt WHERE spras = 'E' AND matkl
= git_send_po_data-matkl.
SELECT SINGLE txt20 FROM skat INTO l_gl_txt WHERE spras = 'E' AND ktopl
= '1000' AND
saknr =
git_send_po_data-sakto.

IF git_send_po_data-bsart EQ c_zb.
WRITE : git_send_po_data-matkl TO git_file+4(12) RIGHT-JUSTIFIED.
SELECT SINGLE wgbez FROM t023t INTO l_matkl_txt WHERE spras = 'E' AND
matkl = git_send_po_data-matkl.
WRITE : l_matkl_txt TO git_file+17(29) LEFT-JUSTIFIED.
ELSEIF git_send_po_data-bsart EQ c_za.
WRITE : git_send_po_data-anln1 TO git_file+4(12) RIGHT-JUSTIFIED.
SELECT SINGLE anlhtxt FROM anlh INTO l_anln1_txt WHERE bukrs =
git_send_po_data-bukrs AND anln1 = git_send_po_data-anln1.
WRITE : l_anln1_txt TO git_file+17(29) LEFT-JUSTIFIED.
ENDIF.
WRITE: l_gl_txt TO git_file+62(23) LEFT-JUSTIFIED,
git_send_po_data-mwskz TO git_file+85(3) CENTERED.

*{Begin of WO#57083
*__ Pass the collected location from line item to file
WRITE: git_send_po_data-wempf TO git_file+92(10) LEFT-JUSTIFIED.
*}End of WO#57083
*{Begin of WO#18220
*__ Pass the collected project Id from line item to file
WRITE: git_send_po_data-bednr TO git_file+110(10) LEFT-JUSTIFIED.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR : git_file.
*}End of WO#18220

*__ new line tax


*_begin of change WO#48955
*__ code will run for India company code only
IF git_send_po_data-bukrs EQ lc_ind.
REFRESH: git_taxes[].
CLEAR: gv_vtext,lt_temp2,lwa_t686t,lwa_taxes.
CALL FUNCTION 'ZGET_PO_TAX_DATA'
EXPORTING
ebeln = git_send_po_data-ebeln
ebelp = git_send_po_data-ebelp
TABLES
et_taxes = git_taxes.

*__ delete the records which are not match with line item
DELETE git_taxes WHERE kposn+1(5) NE git_send_po_data-ebelp.
*__ Sort and delete the duplicate lines
SORT git_taxes BY kposn stunr.
DELETE ADJACENT DUPLICATES FROM git_taxes.
*__ filter the table by removing the base amount
DELETE git_taxes WHERE kntyp EQ lc_k.
DELETE git_taxes WHERE kntyp EQ lc_base.
*__ Delete 0 amount tax records
DELETE git_taxes WHERE kbetr EQ 0.
*__ Get the condition type description
IF git_taxes[] IS NOT INITIAL.
SELECT *
FROM t685t
INTO
TABLE git_t685t
FOR
ALL ENTRIES IN git_taxes
WHERE spras = sy-langu
AND kvewe = lc_a
AND kappl = git_taxes-kappl
AND kschl = git_taxes-kschl.
ENDIF.

SORT git_t685t BY kschl.


LOOP AT git_taxes INTO lwa_taxes.
READ TABLE git_t685t INTO lwa_t686t WITH KEY kschl = lwa_taxes-kschl
BINARY SEARCH.
IF sy-subrc EQ 0.
lt_temp2 = lwa_taxes-kbetr / 10.
CONCATENATE '(' lt_temp2 '%)' INTO lt_temp2.
CONCATENATE lwa_t686t-vtext lt_temp2 INTO gv_vtext.

IF lt_temp2 IS NOT INITIAL.


*__Display the taxes
WRITE: gv_vtext TO git_file+115(28) LEFT-JUSTIFIED.
WRITE: lwa_taxes-kwert TO git_file+145(10) LEFT-JUSTIFIED.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR : git_file.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
*__} end of WO#48955
* Start of changes for WO#090488
ENDIF.
* End of changes for WO#090488
READ TABLE git_tot_val WITH KEY ebeln = git_send_po_data-ebeln.
IF sy-subrc EQ 0.
*__Begin of {WO#115440
*----------------------------------------------------------------------------------
--------*
IF lv_po_tot_lines EQ 1.
*_ Case 1:Only 1 record and we are displaying the same with total
-----------------*
WHILE l_no_lines NE 42.
APPEND git_file. l_no_lines = l_no_lines + 1.
ENDWHILE.

MOVE : text-f10 TO git_file+101(13).


CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).

IF git_send_po_data-waers EQ 'USDN'.
CLEAR l_amt.
l_amt = git_tot_val-tot_net / 1000.
WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt.
*WO#257811
*BOC NAIKP 04/24/2013
* ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
ELSEIF git_send_po_data-waers EQ 'JPY' OR "WO#131467
git_send_po_data-waers EQ 'KRW'. "WO#131467
CLEAR l_amt1.
l_amt1 = git_tot_val-tot_net * 100.
WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt1.
*EOC NAIKP 04/24/2013
ELSE.
WRITE : git_tot_val-tot_net TO l_tot_net LEFT-JUSTIFIED,
l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR : git_file,
l_tot_net.
MOVE : text-f11 TO git_file+101(13).
CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).

IF git_send_po_data-waers EQ 'USDN'.
CLEAR l_amt.
l_amt = git_tot_val-tot_tax / 1000.
WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt.
*WO#257811
*BOC NAIKP 04/24/2013
** ELSEIF git_send_po_data-waers EQ 'JPY'.
" WO#131467
ELSEIF git_send_po_data-waers EQ 'JPY' OR " WO#131467
git_send_po_data-waers EQ 'KRW'. " WO#131467
CLEAR l_amt1.
l_amt1 = git_tot_val-tot_tax * 100.
WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt1.
*EOC NAIKP 04/24/2013
*__{Begin of WO#131467
ELSE.
WRITE : git_tot_val-tot_tax TO l_tot_net LEFT-JUSTIFIED,
l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR : git_file,
l_tot_net.
MOVE : text-f12 TO git_file+101(16).
CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).

IF git_send_po_data-waers EQ 'USDN'.
CLEAR l_amt.
l_amt = git_tot_val-tot_po / 1000.
WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt.
*WO#257811
*BOC NAIKP 04/24/2013
** ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
ELSEIF git_send_po_data-waers EQ 'JPY' OR "WO#131467
git_send_po_data-waers EQ 'KRW'. "WO#131467
CLEAR l_amt1.
l_amt1 = git_tot_val-tot_po * 100.
WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt1.
*EOC NAIKP 04/24/2013
ELSE.
WRITE : git_tot_val-tot_po TO l_tot_net LEFT-JUSTIFIED,
l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR : git_file,
l_tot_net.
WHILE l_no_lines NE 49.
APPEND git_file. l_no_lines = l_no_lines + 1.
ENDWHILE.
CLEAR l_no_lines.

*_ Case 2:More then 1 record and we are displaying the same with total
-----------------*
ELSEIF lv_po_lines NE lv_po_lines_n.
*----------------------------------------------------------------------------------
--------*
* Case 2 contain 2 senario 1) if this record is last line item record for po as
there are multiple po
*__If the po last line item is there then display the total at the end.
IF git_tot_val-tot_items EQ l_lines_cnt .
WHILE l_no_lines NE 42.
APPEND git_file. l_no_lines = l_no_lines + 1.
ENDWHILE.

MOVE : text-f10 TO git_file+101(13).


CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).

IF git_send_po_data-waers EQ 'USDN'.
CLEAR l_amt.
l_amt = git_tot_val-tot_net / 1000.
WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt.
*WO#257811
*BOC NAIKP 04/24/2013
** ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
ELSEIF git_send_po_data-waers EQ 'JPY' OR "WO#131467
git_send_po_data-waers EQ 'KRW'. "WO#131467
CLEAR l_amt1.
l_amt1 = git_tot_val-tot_net * 100.
WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt1.
*EOC NAIKP 04/24/2013
ELSE.
WRITE : git_tot_val-tot_net TO l_tot_net LEFT-JUSTIFIED,
l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR : git_file,
l_tot_net.
MOVE : text-f11 TO git_file+101(13).
CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).

IF git_send_po_data-waers EQ 'USDN'.
CLEAR l_amt.
l_amt = git_tot_val-tot_tax / 1000.
WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt.
*WO#257811
*BOC NAIKP 04/24/2013
** ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
ELSEIF git_send_po_data-waers EQ 'JPY' OR "WO#131467
git_send_po_data-waers EQ 'KRW'. "WO#131467
CLEAR l_amt1.
l_amt1 = git_tot_val-tot_tax * 100.
WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt1.
*EOC NAIKP 04/24/2013
ELSE.
WRITE : git_tot_val-tot_tax TO l_tot_net LEFT-JUSTIFIED,
l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR : git_file,
l_tot_net.
MOVE : text-f12 TO git_file+101(16).
CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).

IF git_send_po_data-waers EQ 'USDN'.
CLEAR l_amt.
l_amt = git_tot_val-tot_po / 1000.
WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt.
*WO#257811
*BOC NAIKP 04/24/2013
** ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
ELSEIF git_send_po_data-waers EQ 'JPY' OR "WO#131467
git_send_po_data-waers EQ 'KRW'. "WO#131467
CLEAR l_amt1.
l_amt1 = git_tot_val-tot_po * 100.
WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt1.
*EOC NAIKP 04/24/2013
ELSE.
WRITE : git_tot_val-tot_po TO l_tot_net LEFT-JUSTIFIED,
l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR : git_file,
l_tot_net.
WHILE l_no_lines NE 49.
APPEND git_file. l_no_lines = l_no_lines + 1.
ENDWHILE.
CLEAR l_no_lines.
*----------------------------------------------------------------------------------
--------*
*Case 2 for 2 where same po line item are going on so we are checking if they have
cross the 40
* line by calculating the next line item number and if it cross 40 then call the
header if not then nothing
ELSE.
*__To check if last line is not reached
READ TABLE git_send_po_data INTO gwa_send_po_data INDEX lv_po_lines_n .
IF sy-subrc EQ 0.
PERFORM get_next_line_text USING gwa_send_po_data-ebeln
gwa_send_po_data-ebelp
CHANGING lv_count.

ENDIF.
*__Add the 2 as each line take 2 lines atleast so we are adding tax lines also
lv_count_check = lv_count + 2.

lv_line_next = l_no_lines + lv_count_check .

IF lv_line_next > 40.


*__Display header
l_hdr_flg = c_x.
WHILE l_no_lines NE 49.
APPEND git_file. l_no_lines = l_no_lines + 1.
ENDWHILE.
CLEAR l_no_lines.
ELSE.
* display total
ENDIF.
ENDIF.
*----------------------------------------------------------------------------------
--------*
ELSE.
*_ Case 3: Last record and we are displaying the same with total
-----------------------*
WHILE l_no_lines NE 42 .
APPEND git_file. l_no_lines = l_no_lines + 1.
ENDWHILE.

MOVE : text-f10 TO git_file+101(13).


CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).

IF git_send_po_data-waers EQ 'USDN'.
CLEAR l_amt.
l_amt = git_tot_val-tot_net / 1000.
WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt.
*WO#257811
*BOC NAIKP 04/24/2013
** ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
ELSEIF git_send_po_data-waers EQ 'JPY' OR "WO#131467
git_send_po_data-waers EQ 'KRW'. "WO#131467
CLEAR l_amt1.
l_amt1 = git_tot_val-tot_net * 100.
WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt1.
*EOC NAIKP 04/24/2013
ELSE.
WRITE : git_tot_val-tot_net TO l_tot_net LEFT-JUSTIFIED,
l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR : git_file,
l_tot_net.
MOVE : text-f11 TO git_file+101(13).
CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).

IF git_send_po_data-waers EQ 'USDN'.
CLEAR l_amt.
l_amt = git_tot_val-tot_tax / 1000.
WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt.
*WO#257811
*BOC NAIKP 04/24/2013
** ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
ELSEIF git_send_po_data-waers EQ 'JPY' OR "WO#131467
git_send_po_data-waers EQ 'KRW'. "WO#131467
CLEAR l_amt1.
l_amt1 = git_tot_val-tot_tax * 100.
WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt1.
*EOC NAIKP 04/24/2013
ELSE.
WRITE : git_tot_val-tot_tax TO l_tot_net LEFT-JUSTIFIED,
l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR : git_file,
l_tot_net.
MOVE : text-f12 TO git_file+101(16).
CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).

IF git_send_po_data-waers EQ 'USDN'.
CLEAR l_amt.
l_amt = git_tot_val-tot_po / 1000.
WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt.
*WO#257811
*BOC NAIKP 04/24/2013
** ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
ELSEIF git_send_po_data-waers EQ 'JPY' OR "WO#131467
git_send_po_data-waers EQ 'KRW'. "WO#131467
CLEAR l_amt1.
l_amt1 = git_tot_val-tot_po * 100.
WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
CLEAR l_amt1.
*EOC NAIKP 04/24/2013
ELSE.
WRITE : git_tot_val-tot_po TO l_tot_net LEFT-JUSTIFIED,
l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
ENDIF.
APPEND git_file. l_no_lines = l_no_lines + 1.
CLEAR : git_file,
l_tot_net.
WHILE l_no_lines NE 49.
APPEND git_file. l_no_lines = l_no_lines + 1.
ENDWHILE.
CLEAR l_no_lines.
ENDIF.

** IF git_tot_val-tot_items EQ 10 AND l_no_lines EQ 40.


**
** WHILE l_no_lines NE 42.
** APPEND git_file. l_no_lines = l_no_lines + 1.
** ENDWHILE.
**
** MOVE : text-f10 TO git_file+101(13).
** CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).
**
** IF git_send_po_data-waers EQ 'USDN'.
** CLEAR l_amt.
** l_amt = git_tot_val-tot_net / 1000.
** WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
** CLEAR l_amt.
***WO#257811
***BOC NAIKP 04/24/2013
*** ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
** ELSEIF git_send_po_data-waers EQ 'JPY' OR
"WO#131467
** git_send_po_data-waers EQ 'KRW'.
"WO#131467
** CLEAR l_amt1.
** l_amt1 = git_tot_val-tot_net * 100.
** WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
** CLEAR l_amt1.
***EOC NAIKP 04/24/2013
** ELSE.
** WRITE : git_tot_val-tot_net TO l_tot_net LEFT-JUSTIFIED,
** l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
** ENDIF.
** APPEND git_file. l_no_lines = l_no_lines + 1.
** CLEAR : git_file,
** l_tot_net.
** MOVE : text-f11 TO git_file+101(13).
** CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).
**
** IF git_send_po_data-waers EQ 'USDN'.
** CLEAR l_amt.
** l_amt = git_tot_val-tot_tax / 1000.
** WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
** CLEAR l_amt.
***WO#257811
***BOC NAIKP 04/24/2013
**** ELSEIF git_send_po_data-waers EQ 'JPY'.
" WO#131467
** ELSEIF git_send_po_data-waers EQ 'JPY' OR
" WO#131467
** git_send_po_data-waers EQ 'KRW'.
" WO#131467
** CLEAR l_amt1.
** l_amt1 = git_tot_val-tot_tax * 100.
** WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
** CLEAR l_amt1.
***EOC NAIKP 04/24/2013
***__{Begin of WO#131467
** ELSE.
** WRITE : git_tot_val-tot_tax TO l_tot_net LEFT-JUSTIFIED,
** l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
** ENDIF.
** APPEND git_file. l_no_lines = l_no_lines + 1.
** CLEAR : git_file,
** l_tot_net.
** MOVE : text-f12 TO git_file+101(16).
** CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).
**
** IF git_send_po_data-waers EQ 'USDN'.
** CLEAR l_amt.
** l_amt = git_tot_val-tot_po / 1000.
** WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
** CLEAR l_amt.
***WO#257811
***BOC NAIKP 04/24/2013
**** ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
** ELSEIF git_send_po_data-waers EQ 'JPY' OR
"WO#131467
** git_send_po_data-waers EQ 'KRW'.
"WO#131467
** CLEAR l_amt1.
** l_amt1 = git_tot_val-tot_po * 100.
** WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
** CLEAR l_amt1.
***EOC NAIKP 04/24/2013
** ELSE.
** WRITE : git_tot_val-tot_po TO l_tot_net LEFT-JUSTIFIED,
** l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
** ENDIF.
** APPEND git_file. l_no_lines = l_no_lines + 1.
** CLEAR : git_file,
** l_tot_net.
** WHILE l_no_lines NE 50.
** APPEND git_file. l_no_lines = l_no_lines + 1.
** ENDWHILE.
** CLEAR l_no_lines.
**
** ELSEIF ( git_tot_val-tot_items LT 10 OR git_tot_val-tot_items GT 10 ) AND
git_tot_val-tot_items EQ l_lines_cnt AND l_no_lines LT 40.
**
** WHILE l_no_lines NE 42.
** APPEND git_file. l_no_lines = l_no_lines + 1.
** ENDWHILE.
**
** MOVE : text-f10 TO git_file+101(13).
** CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).
**
** IF git_send_po_data-waers EQ 'USDN'.
** CLEAR l_amt.
** l_amt = git_tot_val-tot_net / 1000.
** WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
** CLEAR l_amt.
***WO#257811
***BOC NAIKP 04/24/2013
**** ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
** ELSEIF git_send_po_data-waers EQ 'JPY' OR
"WO#131467
** git_send_po_data-waers EQ 'KRW'.
"WO#131467
** CLEAR l_amt1.
** l_amt1 = git_tot_val-tot_net * 100.
** WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
** CLEAR l_amt1.
***EOC NAIKP 04/24/2013
** ELSE.
** WRITE : git_tot_val-tot_net TO l_tot_net LEFT-JUSTIFIED,
** l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
** ENDIF.
** APPEND git_file. l_no_lines = l_no_lines + 1.
** CLEAR : git_file,
** l_tot_net.
** MOVE : text-f11 TO git_file+101(13).
** CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).
**
** IF git_send_po_data-waers EQ 'USDN'.
** CLEAR l_amt.
** l_amt = git_tot_val-tot_tax / 1000.
** WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
** CLEAR l_amt.
***WO#257811
***BOC NAIKP 04/24/2013
**** ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
** ELSEIF git_send_po_data-waers EQ 'JPY' OR
"WO#131467
** git_send_po_data-waers EQ 'KRW'.
"WO#131467
** CLEAR l_amt1.
** l_amt1 = git_tot_val-tot_tax * 100.
** WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
** CLEAR l_amt1.
***EOC NAIKP 04/24/2013
** ELSE.
** WRITE : git_tot_val-tot_tax TO l_tot_net LEFT-JUSTIFIED,
** l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
** ENDIF.
** APPEND git_file. l_no_lines = l_no_lines + 1.
** CLEAR : git_file,
** l_tot_net.
** MOVE : text-f12 TO git_file+101(16).
** CONCATENATE '(' git_send_po_data-waers ')' INTO git_file+118(7).
**
** IF git_send_po_data-waers EQ 'USDN'.
** CLEAR l_amt.
** l_amt = git_tot_val-tot_po / 1000.
** WRITE: l_amt TO git_file+125(18) RIGHT-JUSTIFIED.
** CLEAR l_amt.
***WO#257811
***BOC NAIKP 04/24/2013
**** ELSEIF git_send_po_data-waers EQ 'JPY'.
"WO#131467
** ELSEIF git_send_po_data-waers EQ 'JPY' OR
"WO#131467
** git_send_po_data-waers EQ 'KRW'.
"WO#131467
** CLEAR l_amt1.
** l_amt1 = git_tot_val-tot_po * 100.
** WRITE: l_amt1 TO git_file+125(18) RIGHT-JUSTIFIED.
** CLEAR l_amt1.
***EOC NAIKP 04/24/2013
** ELSE.
** WRITE : git_tot_val-tot_po TO l_tot_net LEFT-JUSTIFIED,
** l_tot_net TO git_file+125(18) RIGHT-JUSTIFIED.
** ENDIF.
** APPEND git_file. l_no_lines = l_no_lines + 1.
** CLEAR : git_file,
** l_tot_net.
** WHILE l_no_lines NE 50.
** APPEND git_file. l_no_lines = l_no_lines + 1.
** ENDWHILE.
** CLEAR l_no_lines.
**
** ELSEIF git_tot_val-tot_items GT 10 AND l_no_lines EQ 40.
**
** l_hdr_flg = c_x.
** WHILE l_no_lines NE 50.
** APPEND git_file. l_no_lines = l_no_lines + 1.
** ENDWHILE.
** CLEAR l_no_lines.
** ENDIF.
*----------------------------------------------------------------------------------
--------*
*__End of {WO#115440
ENDIF.
ENDLOOP.
*__Addition of 1 header line to fix the alignment
CLEAR: gwa_file.
INSERT gwa_file INTO git_file INDEX 1.
ENDIF.

ENDFORM. " FILL_FILE


*&---------------------------------------------------------------------*
*& Form GET_SEGMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_pspnr text
* <--P_SEG text
*----------------------------------------------------------------------*
FORM get_segment USING p_pspnr
CHANGING p_seg.

DATA : l_prctr LIKE prps-prctr.


CLEAR l_prctr.

SELECT SINGLE prctr FROM prps


INTO l_prctr WHERE pspnr EQ p_pspnr.

IF sy-subrc EQ 0 AND l_prctr IS NOT INITIAL.


SELECT SINGLE segment FROM cepc
INTO p_seg WHERE prctr EQ l_prctr.
ENDIF.

ENDFORM. " GET_SEGMENT


*&---------------------------------------------------------------------*
*& Form GET_SEGMENT_KOSTL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_KOSTL text
* <--P_SEG text
*----------------------------------------------------------------------*
FORM get_segment_kostl USING p_kostl
CHANGING p_seg.
DATA : l_prctr LIKE prps-prctr.
CLEAR l_prctr.

SELECT SINGLE prctr FROM csks


INTO l_prctr WHERE kostl EQ p_kostl
AND datbi GE sy-datum.
IF sy-subrc EQ 0 AND l_prctr IS NOT INITIAL.
SELECT SINGLE segment FROM cepc INTO p_seg WHERE prctr EQ l_prctr.
ENDIF.
ENDFORM. " GET_SEGMENT_KOSTL
*&---------------------------------------------------------------------*
*& Form GET_CC_TXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GIT_SEND_PO_DATA_BUKRS text
* -->P_CHANING text
* -->P_L_CC_TXT text
*----------------------------------------------------------------------*
FORM get_cc_txt USING p_bukrs
CHANGING p_txt.

SELECT SINGLE butxt FROM t001 INTO p_txt WHERE bukrs = p_bukrs.

ENDFORM. " GET_CC_TXT


*&---------------------------------------------------------------------*
*& Form GET_PO_APP_TEXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EBELN text
* <--P_POATXT text
*----------------------------------------------------------------------*
FORM get_po_app_text USING p_ebeln
CHANGING p_poatxt.
DATA : lit_tline TYPE STANDARD TABLE OF tline WITH HEADER LINE,
l_name LIKE thead-tdname.
REFRESH lit_tline.

l_name = p_ebeln.

CALL FUNCTION 'READ_TEXT'


EXPORTING
id = c_f99
language = sy-langu
name = l_name
object = c_ekko
TABLES
lines = lit_tline
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.

IF sy-subrc EQ 0.
READ TABLE lit_tline INDEX 1.
IF sy-subrc EQ 0.
p_poatxt = lit_tline-tdline.
ENDIF.
ENDIF.
ENDFORM. " GET_PO_APP_TEXT
*&---------------------------------------------------------------------*
*& Form DOWNLOAD_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM download_file .

DATA : l_file_name(30),
l_date(8),
l_time(8),
l_len TYPE i.

CLEAR : l_file_name,
l_date,
l_time,
l_len.

l_len = STRLEN( p_file ) .


l_len = l_len - 1.

IF p_file+l_len(1) EQ '/'.

WRITE: sy-datum TO l_date MMDDYY,


sy-uzeit TO l_time.

REPLACE ALL OCCURRENCES OF ':' IN l_time WITH ''. CONDENSE l_time.

CONCATENATE 'PO_' l_date '_' l_time '.txt' INTO l_file_name.

CONCATENATE p_file l_file_name INTO p_file.


ENDIF.

**** OPEN DATASET p_file FOR OUTPUT IN TEXT MODE ENCODING default.
OPEN DATASET p_file FOR OUTPUT IN LEGACY TEXT MODE BIG
ENDIAN CODE PAGE '1100' IGNORING CONVERSION ERRORS..

IF sy-subrc EQ 0.
LOOP AT git_file.
TRANSFER git_file TO p_file.
ENDLOOP.
WRITE: / 'File is created:'(008), p_file.
ELSE.
WRITE: / 'File cannot be opened:'(007), p_file.
ENDIF.
CLOSE DATASET p_file.

ENDFORM. " DOWNLOAD_FILE


*&---------------------------------------------------------------------*
*& Form UPDATE_ZTABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM update_ztable .

LOOP AT git_tot_val.
TRY.
UPDATE zmm_po_to_onbase SET status = c_x WHERE ebeln = git_tot_val-ebeln.
CATCH cx_sy_dynamic_osql_error.
WRITE: / 'Error while updating the table ZMM_PO_TO_ONBASE'.
ENDTRY.
ENDLOOP.

ENDFORM. " UPDATE_ZTABLE


*&---------------------------------------------------------------------*
*& Form GET_CC_WBS_TEXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EBELN text
* -->P_BSART text
* <--P_TXT text
*----------------------------------------------------------------------*
FORM get_cc_wbs_text USING p_ebeln
p_bsart
CHANGING p_txt.

DATA : lit_tline TYPE STANDARD TABLE OF tline WITH HEADER LINE,


l_name LIKE thead-tdname.
REFRESH lit_tline.

l_name = p_ebeln.

IF p_bsart EQ c_zb.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = c_f98
language = sy-langu
name = l_name
object = c_ekko
TABLES
lines = lit_tline
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
ELSEIF p_bsart EQ c_za.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = c_f12
language = sy-langu
name = l_name
object = c_ekko
TABLES
lines = lit_tline
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
ENDIF.

IF sy-subrc EQ 0.
READ TABLE lit_tline INDEX 1.
IF sy-subrc EQ 0.
p_txt = lit_tline-tdline.
ENDIF.
ENDIF.

ENDFORM. " GET_CC_WBS_TEXT


*&---------------------------------------------------------------------*
*& Form GET_PC_KOSTL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_KOSTL text
* <--P_PRCTR text
*----------------------------------------------------------------------*
FORM get_pc_kostl USING p_kostl
p_bukrs
CHANGING p_prctr.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'


EXPORTING
input = p_kostl
IMPORTING
output = p_kostl.
SELECT SINGLE prctr FROM csks INTO p_prctr WHERE kokrs = gwa_po_acc_data-kokrs
AND kostl = p_kostl
AND datbi GE sy-datum.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'


EXPORTING
input = p_kostl
IMPORTING
output = p_kostl.
ENDFORM. " GET_PC_KOSTL
*&---------------------------------------------------------------------*
*& Form GET_PC_WBS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PSPNR text
* <--P_PRCTR text
*----------------------------------------------------------------------*
FORM get_pc_wbs USING p_pspnr
CHANGING p_prctr.

CALL FUNCTION 'CONVERSION_EXIT_ABPSP_INPUT'


EXPORTING
input = p_pspnr
IMPORTING
output = p_pspnr.
SELECT SINGLE prctr FROM prps INTO p_prctr WHERE pspnr = p_pspnr.
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
EXPORTING
input = p_pspnr
IMPORTING
output = p_pspnr.
ENDFORM. " GET_PC_WBS
*&---------------------------------------------------------------------*
*& Form GET_ALL_PCG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PRCTR text
* -->P_PCG text
*----------------------------------------------------------------------*
FORM get_all_pcg TABLES pt_pcg STRUCTURE gwa_pcg
CHANGING p_pcg.

DATA : lwa_cepc TYPE cepc.


DATA : lit_sethier TYPE TABLE OF sethier,
lwa_sethier TYPE sethier,
lwa_sethier2 TYPE sethier,
lv_tabix_found TYPE sytabix,
lv_tabix_found_dw TYPE sytabix,
lv_level_found TYPE setlev,
lv_level_found_dw TYPE setlev,
lv_subrc TYPE sysubrc,
l_max TYPE sy-tabix.

CLEAR : lwa_cepc,
lwa_sethier,
lwa_sethier2,
lit_sethier,
lv_tabix_found,
lv_level_found,
lv_subrc.

REFRESH : lit_sethier.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'


EXPORTING
input = git_send_po_data-ko_prctr
IMPORTING
output = git_send_po_data-ko_prctr.

SELECT SINGLE * FROM cepc INTO lwa_cepc WHERE prctr EQ git_send_po_data-ko_prctr


AND
datbi EQ '99991231'.

IF lwa_cepc IS NOT INITIAL.

*__Begin of WO#087402
*__--------------------------------------------------------------------------------
-------------
*__Pass the corrct setid based on controlling area
READ TABLE git_tka01 INTO gwa_tka01 WITH KEY kokrs = lwa_cepc-kokrs.
IF sy-subrc EQ 0 .
CONCATENATE lc_setid gwa_tka01-kokrs gwa_tka01-phinr INTO gv_setid.
" Create a setid that contains 0106+Controlling Area+Profit center area
ELSE.
gv_setid = lc_set_d.
ENDIF.
*__--------------------------------------------------------------------------------
-------------
CALL FUNCTION 'G_SET_TREE_IMPORT'
EXPORTING
setid = gv_setid
TABLES
set_hierarchy = lit_sethier
EXCEPTIONS
set_not_found = 1
illegal_field_replacement = 2
illegal_table_replacement = 3
set_is_damaged = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

DESCRIBE TABLE lit_sethier LINES l_max.


READ TABLE lit_sethier INTO lwa_sethier WITH KEY shortname = lwa_cepc-khinr.
IF sy-subrc EQ 0.
lv_tabix_found = sy-tabix.
lv_tabix_found_dw = sy-tabix + 1.
lv_level_found = lwa_sethier-level.
lv_level_found_dw = lwa_sethier-level.
p_pcg = lwa_cepc-khinr.
ENDIF.

IF lv_tabix_found IS NOT INITIAL AND lv_level_found IS NOT INITIAL.


WHILE lv_level_found GE 0.
* lv_level_found = lv_level_found - 1.
lv_subrc = 4.
WHILE lv_subrc NE 0.
CLEAR lwa_sethier.
* lv_tabix_found = lv_tabix_found - 1.
READ TABLE lit_sethier INTO lwa_sethier INDEX lv_tabix_found.
IF sy-subrc EQ 0.
IF lwa_sethier-level EQ lv_level_found.
pt_pcg-phinr = lwa_sethier-shortname.
APPEND pt_pcg.
CLEAR pt_pcg.
lv_subrc = 0.
ENDIF.
ENDIF.
lv_tabix_found = lv_tabix_found - 1.
ENDWHILE.
IF lv_tabix_found GT 0.
READ TABLE lit_sethier INTO lwa_sethier INDEX lv_tabix_found.
IF sy-subrc EQ 0 AND lwa_sethier-level NE lv_level_found.
lv_level_found = lv_level_found - 1.
ENDIF.
ELSE.
lv_level_found = lv_level_found - 1.
ENDIF.
ENDWHILE.
ELSE.
READ TABLE lit_sethier INTO lwa_sethier INDEX lv_tabix_found.
IF sy-subrc EQ 0.
IF lwa_sethier-level EQ lv_level_found.
pt_pcg-phinr = lwa_sethier-shortname.
APPEND pt_pcg.
CLEAR pt_pcg.
lv_subrc = 0.
ENDIF.
ENDIF.
ENDIF.

IF lv_tabix_found_dw IS NOT INITIAL AND lv_level_found_dw IS NOT INITIAL.


WHILE lv_level_found_dw GT 1.
* lv_level_found = lv_level_found - 1.
lv_subrc = 4.
WHILE lv_subrc NE 0.
CLEAR lwa_sethier.
* lv_tabix_found = lv_tabix_found - 1.
READ TABLE lit_sethier INTO lwa_sethier INDEX lv_tabix_found_dw.
IF sy-subrc EQ 0.
IF lwa_sethier-level EQ lv_level_found_dw.
pt_pcg-phinr = lwa_sethier-shortname.
APPEND pt_pcg.
CLEAR pt_pcg.
lv_subrc = 0.
ENDIF.
ENDIF.
IF lv_tabix_found_dw EQ l_max.
EXIT.
ELSE.
lv_tabix_found_dw = lv_tabix_found_dw + 1.
ENDIF.
ENDWHILE.
* IF lv_tabix_found GT 0.
READ TABLE lit_sethier INTO lwa_sethier INDEX lv_tabix_found_dw.
IF sy-subrc EQ 0 AND lwa_sethier-level NE lv_level_found_dw.
lv_level_found_dw = lwa_sethier-level.
ENDIF.
IF lv_tabix_found_dw EQ l_max.
EXIT.
ENDIF.
* ELSE.
* lv_level_found = lv_level_found - 1.
* ENDIF.
ENDWHILE.
ELSE.
READ TABLE lit_sethier INTO lwa_sethier INDEX lv_tabix_found_dw.
IF sy-subrc EQ 0.
IF lwa_sethier-level EQ lv_level_found_dw.
pt_pcg-phinr = lwa_sethier-shortname.
APPEND pt_pcg.
CLEAR pt_pcg.
lv_subrc = 0.
ENDIF.
ENDIF.
ENDIF.

ENDIF.

ENDFORM. " GET_ALL_PCG

*&---------------------------------------------------------------------*
*& Form GET_NEXT_LINE_TEXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GIT_SEND_PO_DATA_EBELN text
* -->P_GIT_SEND_PO_DATA_EBELP text
* <--P_LV_COUNT text
*----------------------------------------------------------------------*
*__Begin of {WO#115440
FORM get_next_line_text USING p_git_send_po_data_ebeln
p_git_send_po_data_ebelp
CHANGING p_lv_count.

DATA: git_taxes_n TYPE TABLE OF komv WITH HEADER LINE. "RAWATS

REFRESH: git_taxes_n[].
CLEAR: p_lv_count,gv_vtext,lt_temp2,lwa_t686t,lwa_taxes.
CALL FUNCTION 'ZGET_PO_TAX_DATA'
EXPORTING
ebeln = p_git_send_po_data_ebeln
ebelp = p_git_send_po_data_ebelp
TABLES
et_taxes = git_taxes_n.
*__ delete the records which are not match with line item
DELETE git_taxes_n WHERE kposn+1(5) NE p_git_send_po_data_ebelp.

*__ Sort and delete the duplicate lines


SORT git_taxes_n BY kposn stunr.
DELETE ADJACENT DUPLICATES FROM git_taxes.
*__ filter the table by removing the base amount
DELETE git_taxes_n WHERE kntyp EQ lc_k.
DELETE git_taxes_n WHERE kntyp EQ lc_base.
*__ Delete 0 amount tax records
DELETE git_taxes_n WHERE kbetr EQ 0.
*__Return the lines found for taxes
DESCRIBE TABLE git_taxes_n LINES p_lv_count.

ENDFORM. " GET_NEXT_LINE_TEXT


*__End of {WO#115440

You might also like