You are on page 1of 33

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

*& Subroutine Pool ZPO_FTP_TRANSFER

*&

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

*&

*&

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

PROGRAM ZPO_FTP_TRANSFER.

TABLES : nast.

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

*& Form SUB_FILE_TRANSFER_PO

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

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM SUB_FILE_TRANSFER_PO USING ent_retco TYPE sy-subrc

ent_screen TYPE c .

DATA : w_ebeln TYPE ekko-ebeln.

w_ebeln = nast-OBJKY+0(10).
DATA IT_EKKO TYPE STANDARD TABLE OF EKKO. "internal table

DATA IS_EKKO TYPE EKKO. "Work area

DATA IS_J_1IMOVEND TYPE J_1IMOVEND.

DATA IS_LFA1 TYPE LFA1.

TYPES : BEGIN OF ts_vendor,

"Vendor

Vendor_Legacy_Code TYPE ekko-lifnr,

Vendor_EPS_Code TYPE char20,

UID TYPE char10,

UID_Type TYPE char10,

VENDOR_GSTIN TYPE lfa1-stcd3,

"vendor

"Heder

PO_No TYPE ekko-ebeln,

PO_Value TYPE char20,"ekko-rlwrt,

PO_Amendment_Flag TYPE char5,

PO_Date TYPE char10,"ekko-bedat,

PO_start_dt TYPE char10,"ekko-kdatb,

PO_Expiry_dt TYPE char10,"ekko-kdate,

Buyer_org_ID TYPE char20,

Buyer_Org_Name TYPE char20,

PO_Creator_Name TYPE adrp-name_text,

Buyer_org_GSTIN TYPE kna1-stcd3,


PO_Type TYPE ekko-bsart,

PO_Category TYPE char20,

PO_Creator_ID TYPE ekko-ernam,

SAP_PO_REL_DT_TIME TYPE char50,

"Heder

"Item

Item_Code TYPE char50,

Item_Description TYPE EKPO-TXZ01,

UOM TYPE EKPO-MEINS,

Quantity TYPE char20,"EKPO-MENGE,

Unit_Price_Rate TYPE char20,"EKPO-NETPR,

Sub_Total TYPE char20,"EKPO-NETPR,

PR_No TYPE EKPO-BANFN,

po_line_item TYPE EKPO-EBELP,

Service_Header_Desc TYPE char30,

"Item

"T&C

Clause_No TYPE EKkO-zterm,

Clause_Name TYPE char20,

Clause_Details TYPE tvzbt-vtext,

"T&C

END OF ts_vendor.

DATA is_vendor TYPE ts_vendor.

DATA : it_final TYPE STANDARD TABLE OF ts_vendor,


is_final TYPE ts_vendor,

is_final_temp TYPE ts_vendor.

TYPES : BEGIN OF ts_header,

PO_No TYPE ekko-ebeln,

PO_Value TYPE char20,"ekko-rlwrt,

PO_Amendment_Flag TYPE char5,

PO_Date TYPE char10,"ekko-bedat,

PO_start_dt TYPE char10,"ekko-kdatb,

PO_Expiry_dt TYPE char10,"ekko-kdate,

Buyer_org_ID TYPE char20,

Buyer_Org_Name TYPE char20,

PO_Creator_Name TYPE adrp-name_text,

Buyer_org_GSTIN TYPE kna1-stcd3,

PO_Type TYPE ekko-bsart,

PO_Category TYPE char20,

PO_Creator_ID TYPE ekko-ernam,

SAP_PO_REL_DT_TIME TYPE char50,

END OF ts_header.

DATA : is_header TYPE ts_header.

TYPES : BEGIN OF ts_item,

Item_Code TYPE EKPO-MATNR,

Item_Description TYPE EKPO-TXZ01,

UOM TYPE EKPO-MEINS,

Quantity TYPE char20,"EKPO-MENGE,


Unit_Price_Rate TYPE char20,"EKPO-NETPR,

Sub_Total TYPE char20,"EKPO-NETPR,

PR_No TYPE EKPO-BANFN,

po_line_item TYPE EKPO-EBELP,

Service_Header_Desc TYPE char30,

END OF ts_item.

DATA : it_item TYPE STANDARD TABLE OF ts_item,

is_item TYPE ts_item.

TYPES : BEGIN OF ts_TC,

Clause_No TYPE EKkO-zterm,

Clause_Name TYPE char20,

Clause_Details TYPE tvzbt-vtext,

END OF ts_tc.

DATA : is_tc TYPE ts_tc.

TYPES : BEGIN OF ts_ekpo,

ebeln TYPE EKPO-ebeln ,

EBELP TYPE EKPO-EBELP ,

BANFN TYPE EKPO-BANFN ,

MATNR TYPE EKPO-MATNR ,

TXZ01 TYPE EKPO-TXZ01 ,

MEINS TYPE EKPO-MEINS ,


MENGE TYPE EKPO-MENGE ,

NETPR TYPE EKPO-NETPR ,

PACKNO TYPE EKPO-PACKNO ,

werks TYPE EKPO-werks ,

loekz TYPE EKPO-loekz ,

netwr TYPE EKPO-netwr ,

END OF ts_ekpo.

DATA : it_ekpo TYPE STANDARD TABLE OF ts_ekpo,

is_ekpo TYPE ts_ekpo.

DATA : it_ekpo_temp TYPE STANDARD TABLE OF ts_ekpo.

TYPES : BEGIN OF TS_T001W,

WERKS TYPE T001W-WERKS,

KUNNR TYPE T001W-KUNNR,

END OF TS_T001W.

DATA : it_t001w TYPE STANDARD TABLE OF ts_t001w,

is_t001w TYPE ts_t001w.

TYPES : BEGIN OF TS_KNA1,

KUNNR TYPE KNA1-KUNNR,

STCD3 TYPE KNA1-STCD3,

END OF TS_KNA1.

DATA : it_kna1 TYPE STANDARD TABLE OF ts_kna1,

is_kna1 TYPE ts_kna1.

DATA : w_PO_Value TYPE ekpo-netwr.


CONSTANTS: C_KEY TYPE I VALUE 26101957,

C_DEST TYPE RFCDES-RFCDEST VALUE 'SAPFTPA'.

DATA: G_DHDL TYPE I, " Handle

G_DLEN TYPE I, " password length

G_DPWD(30). " For storing password

DATA: P_USER(30) TYPE C," VALUE 'epsuser@eps.baldota.co.in', "User-name of ftp server

P_PWD(30) TYPE C ,"VALUE 'EPS@789#', "Password of ftp server

P_HOST(64) TYPE C VALUE '103.53.41.216', "IP-ADDRESS of FTP server

P_FILE(50) TYPE C.

TYPES: BEGIN OF TY_TEXT,

TEXT(1000),

END OF TY_TEXT.

DATA:IT_TEXT TYPE TABLE OF TY_TEXT,

IS_TEXT TYPE TY_TEXT.

TYPES : BEGIN OF lts_result,


LINE(100) TYPE C,

END OF lts_result.

DATA : w_time TYPE char10.

DATA : lt_result TYPE STANDARD TABLE OF lts_result,

ls_result TYPE lts_result.

DATA : lw_cmd TYPE char50.

DATA : LS_USER TYPE ZFTP_USERNAME.

* DATA : it_cdhdr TYPE STANDARD TABLE OF cdhdr,

* is_cdhdr TYPE cdhdr.

DATA : it_nast TYPE STANDARD TABLE OF nast.

DATA : w_nast TYPE i.

TYPES : BEGIN OF TS_ESLL,

PACKNO TYPE ESLL-PACKNO,

INTROW TYPE ESLL-INTROW,

EXTROW TYPE ESLL-EXTROW,

SRVPOS TYPE ESLL-SRVPOS,

SUB_PACKNO TYPE ESLL-SUB_PACKNO,

MENGE TYPE ESLL-MENGE,

MEINS TYPE ESLL-MEINS,

NETWR TYPE ESLL-NETWR,

KTEXT1 TYPE ESLL-KTEXT1,

MATKL TYPE ESLL-MATKL,

END OF TS_ESLL.

DATA : LT_ESLL TYPE STANDARD TABLE OF TS_ESLL,

LS_ESLL TYPE TS_ESLL,


LS_ESLL_T TYPE TS_ESLL,

LT_ESLL_T TYPE STANDARD TABLE OF TS_ESLL.

SELECT SINGLE *

FROM EKKO

INTO IS_EKKO

WHERE EBELN = w_EBELN.

IF SY-SUBRC = 0.

REFRESH it_nast.

SELECT * FROM nast

INTO TABLE it_nast

WHERE kappl = 'EF'

AND objky = is_ekko-ebeln

AND kschl = 'ZEPS'.

REFRESH it_ekpo.

SELECT ebeln

EBELP

BANFN

MATNR

TXZ01
MEINS

MENGE

NETPR

PACKNO

werks

loekz

netwr

FROM ekpo

INTO TABLE it_ekpo

WHERE ebeln = w_ebeln.

IF sy-subrc eq 0.

delete it_ekpo WHERE loekz IS NOT INITIAL.

REFRESH it_ekpo_temp.

it_ekpo_temp = it_ekpo.

SORT it_ekpo_temp by werks.

delete ADJACENT DUPLICATES FROM it_ekpo_temp COMPARING werks.

delete it_ekpo_temp WHERE werks IS INITIAL.

IF it_ekpo_temp IS NOT INITIAL.

SELECT werks

kunnr

FROM t001w

INTO TABLE it_t001w

FOR ALL ENTRIES IN it_ekpo_temp

WHERE werks = it_ekpo_temp-werks.

IF sy-subrc eq 0.
SORT it_t001w by werks.

SELECT kunnr

STCD3

FROM kna1

INTO TABLE it_kna1

FOR ALL ENTRIES IN it_t001w

WHERE kunnr = it_t001w-kunnr.

IF sy-subrc eq 0.

SORT it_kna1 by kunnr.

ENDIF.

ENDIF.

ENDIF.

REFRESH it_ekpo_temp.

it_ekpo_temp = it_ekpo.

SORT it_ekpo_temp by PACKNO.

delete ADJACENT DUPLICATES FROM it_ekpo_temp COMPARING PACKNO.

delete it_ekpo_temp WHERE PACKNO IS INITIAL.

if it_ekpo_temp IS NOT INITIAL.

REFRESH LT_ESLL_T.

SELECT PACKNO

INTROW

EXTROW

SRVPOS
SUB_PACKNO

MENGE

MEINS

NETWR

KTEXT1

MATKL

FROM ESLL

INTO TABLE LT_ESLL_T

FOR ALL ENTRIES IN it_ekpo_temp

WHERE PACKNO = it_ekpo_temp-PACKNO.

IF SY-SUBRC EQ 0.

SORT LT_ESLL_T BY PACKNO.

REFRESH LT_ESLL.

SELECT PACKNO

INTROW

EXTROW

SRVPOS

SUB_PACKNO

MENGE

MEINS

NETWR

KTEXT1

MATKL

FROM ESLL

INTO TABLE LT_ESLL


FOR ALL ENTRIES IN LT_ESLL_T

WHERE PACKNO = LT_ESLL_T-SUB_PACKNO.

IF SY-SUBRC EQ 0.

SORT LT_ESLL BY SUB_PACKNO.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

SELECT SINGLE *

FROM J_1IMOVEND

INTO IS_J_1IMOVEND

WHERE LIFNR = IS_EKKO-LIFNR.

SELECT SINGLE *

FROM LFA1

INTO IS_LFA1

WHERE LIFNR = IS_EKKO-LIFNR.

CHECK it_ekpo IS NOT INITIAL.

CLEAR is_final.
is_final-Vendor_Legacy_Code = is_ekko-lifnr.

CONCATENATE 'MSPL' is_ekko-lifnr INTO is_final-Vendor_EPS_Code SEPARATED BY '-'.

SELECT SINGLE J_1IPANNO

FROM J_1IMOVEND

INTO is_final-uid

WHERE lifnr = is_ekko-lifnr.

is_final-UID_Type = 'PAN'.

is_final-VENDOR_GSTIN = is_lfa1-stcd3.

"build header

is_final-PO_No = is_ekko-ebeln.

CLEAR w_nast.

DESCRIBE TABLE it_nast LINES w_nast.

IF w_nast > 1 .

is_final-PO_Amendment_Flag = 'Yes'.

ELSE.

is_final-PO_Amendment_Flag = 'No'.

ENDIF.

IF is_ekko-bedat IS NOT INITIAL.

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'


EXPORTING

DATE_INTERNAL = is_ekko-bedat

IMPORTING

DATE_EXTERNAL = is_final-PO_Date

EXCEPTIONS

DATE_INTERNAL_IS_INVALID = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

if is_ekko-kdatb IS NOT INITIAL.

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'

EXPORTING

DATE_INTERNAL = is_ekko-kdatb

IMPORTING

DATE_EXTERNAL = is_final-PO_start_dt

EXCEPTIONS

DATE_INTERNAL_IS_INVALID = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO


WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

if is_ekko-kdate IS NOT INITIAL.

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'

EXPORTING

DATE_INTERNAL = is_ekko-kdate

IMPORTING

DATE_EXTERNAL = is_final-PO_Expiry_dt

EXCEPTIONS

DATE_INTERNAL_IS_INVALID = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

is_final-Buyer_org_ID = '416'.

is_final-Buyer_Org_Name = 'MSPL Limited'. "is_ekko-Bukrs.

SELECT SINGLE name_text

INTO is_final-PO_Creator_Name

FROM V_USR_NAME

WHERE BNAME = is_ekko-ernam.

is_final-PO_Type = is_ekko-bsart.
is_final-PO_Category = 'Default_Cat'.

is_final-PO_Creator_ID = is_ekko-ernam.

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'

EXPORTING

DATE_INTERNAL = sy-datum

IMPORTING

DATE_EXTERNAL = is_final-SAP_PO_REL_DT_TIME

EXCEPTIONS

DATE_INTERNAL_IS_INVALID = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CONDENSE is_final-SAP_PO_REL_DT_TIME.

CLEAR w_time.

CONCATENATE sy-uzeit+0(2) ':' sy-uzeit+2(2) ':' sy-uzeit+4(2) INTO w_time.

CONDENSE w_time.

CONCATENATE is_final-SAP_PO_REL_DT_TIME w_time INTO is_final-SAP_PO_REL_DT_TIME SEPARATED


BY space.

is_final-Clause_No = is_ekko-zterm .

is_final-Clause_Name = 'Payment Terms'.


SELECT SINGLE text1

FROM t052U

INTO is_final-Clause_Details

WHERE spras = 'EN'

AND zterm = is_ekko-zterm.

CLEAR LS_USER.

SELECT SINGLE *

FROM ZFTP_USERNAME

INTO LS_USER.

CONDENSE LS_USER-path.

G_DPWD = LS_USER-PASSWORD.

P_USER = LS_USER-USER_NAME.

" To get the length of the password.

G_DLEN = STRLEN( G_DPWD ).

" Below Function module is used to Encrypt the Password.

CALL FUNCTION 'HTTP_SCRAMBLE'

EXPORTING

SOURCE = G_DPWD " Actual password

SOURCELEN = G_DLEN
KEY = C_KEY

IMPORTING

DESTINATION = G_DPWD. " Encyrpted Password

* Connects to the FTP Server as specified by user.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING

TEXT = 'Connecting to FTP Server'.

* Below function module is used to connect the FTP Server.

* It Accepts only Encrypted Passwords.

* This Function module will provide a handle to perform different

* operations on the FTP Server via FTP Commands.

CALL FUNCTION 'FTP_CONNECT'

EXPORTING

USER = P_USER " FTP USER-NAME

PASSWORD = G_DPWD " FTP PASSWORD


HOST = P_HOST " FTP IP-ADDRESS

RFC_DESTINATION = C_DEST " RFC Destination 'SAPFTP'

IMPORTING

HANDLE = G_DHDL

EXCEPTIONS

NOT_CONNECTED.

IF SY-SUBRC NE 0.

FORMAT COLOR COL_NEGATIVE.

WRITE:/ 'Error in Connection'.

ELSE.

WRITE:/ 'FTP Connection is opened '.

"open folder dir

REFRESH lt_result.

CLEAR lw_cmd.
CONCATENATE 'cd /' LS_USER-path '/Outgoing/PO/New' INTO lw_cmd.

CALL FUNCTION 'FTP_COMMAND'

EXPORTING

handle = G_DHDL

* command = 'cd /Outgoing/PO/New'

command = lw_cmd

compress = 'N'

TABLES

DATA = lt_result

EXCEPTIONS

command_error = 1

tcpip_error = 2.

LOOP AT lt_result INTO ls_result.

WRITE AT / ls_result-LINE.

ENDLOOP.

REFRESH lt_result.

CLEAR lw_cmd.

CONCATENATE 'mkdir PO_' is_ekko-ebeln INTO lw_cmd.

CALL FUNCTION 'FTP_COMMAND'

EXPORTING

handle = G_DHDL

command = lw_cmd

compress = 'N'

TABLES

DATA = lt_result
EXCEPTIONS

command_error = 1

tcpip_error = 2.

LOOP AT lt_result INTO ls_result.

WRITE AT / ls_result-LINE.

ENDLOOP.

REFRESH lt_result.

CLEAR P_FILE.

CONCATENATE 'PO_' is_ekko-ebeln '/PO_ITEM_' is_ekko-ebeln '.csv' INTO P_FILE.

CONDENSE P_FILE.

REFRESH IT_TEXT[].

CLEAR IS_TEXT.

"Prepare header of file with comma ',' separated.

CONCATENATE

"Item

'Item Code'

'Item Description'

'UOM'

'Quantity'

'Unit Price/Rate'

'Sub Total'

'PR No'

'po line item'

'Service Header Desc.'

"Item
INTO IS_TEXT SEPARATED BY '@~@'.

APPEND IS_TEXT TO IT_TEXT[].

CLEAR IS_TEXT.

CLEAR w_PO_Value.

LOOP AT it_ekpo INTO is_ekpo.

w_PO_Value = w_PO_Value + is_ekpo-netwr.

CLEAR is_final_temp.

MOVE-CORRESPONDING is_final to is_final_temp.

is_final-Buyer_org_GSTIN = '29AABCM1040N1ZG'.

CLEAR LS_ESLL_T.

READ TABLE LT_ESLL_T INTO LS_ESLL_T WITH KEY PACKNO = is_ekpo-PACKNO BINARY SEARCH.

IF SY-SUBRC EQ 0.

CLEAR LS_ESLL.

READ TABLE LT_ESLL INTO LS_ESLL WITH KEY SUB_PACKNO = LS_ESLL_T-SUB_PACKNO BINARY
SEARCH.

IF SY-SUBRC EQ 0.

is_final_temp-Service_Header_Desc = LS_ESLL-KTEXT1.

ENDIF.

ENDIF.

IF is_ekpo-MATNR IS INITIAL.
is_ekpo-MATNR = '88888888'.

ENDIF.

CONCATENATE is_ekpo-banfn

is_ekpo-ebelp

is_ekpo-matnr

INTO is_final_temp-Item_Code SEPARATED BY '.'.

is_final_temp-Item_Description = is_ekpo-txz01.

CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'

EXPORTING

INPUT = is_ekpo-meins

LANGUAGE = SY-LANGU

IMPORTING

* LONG_TEXT =

OUTPUT = is_final_temp-UOM

* SHORT_TEXT =

EXCEPTIONS

UNIT_NOT_FOUND =1

OTHERS =2

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

is_final_temp-Quantity = is_ekpo-menge.
is_final_temp-Unit_Price_Rate = is_ekpo-netpr.

is_final_temp-Sub_Total = is_ekpo-netpr.

is_final_temp-PR_No = is_ekpo-banfn.

is_final_temp-po_line_item = is_ekpo-ebelp.

CONCATENATE

is_final_temp-Item_Code

is_final_temp-Item_Description

is_final_temp-UOM

is_final_temp-Quantity

is_final_temp-Unit_Price_Rate

is_final_temp-Sub_Total

is_final_temp-PR_No

is_final_temp-po_line_item

is_final_temp-Service_Header_Desc

INTO IS_TEXT SEPARATED BY '@~@'.

APPEND IS_TEXT TO IT_TEXT[].

CLEAR IS_TEXT.

ENDLOOP.
CALL FUNCTION 'FTP_R3_TO_SERVER'

EXPORTING

HANDLE = G_DHDL

FNAME = P_FILE " FILE NAME 'MATERIAL_DATA.txt'

CHARACTER_MODE = 'X'

TABLES

TEXT = IT_TEXT " CONCATENATED MATERIAL DATA

EXCEPTIONS

TCPIP_ERROR = 1

COMMAND_ERROR = 2

DATA_ERROR =3

OTHERS = 4.

IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ELSE.

CLEAR P_FILE.

CONCATENATE 'PO_' is_ekko-ebeln '/PO_VENDOR_' is_ekko-ebeln '.csv' INTO P_FILE.


CONDENSE P_FILE.

REFRESH IT_TEXT[].

CONCATENATE

'Vendor Legacy Code'

'Vendor EPS Code'

'UID'

'UID Type'

'VENDOR GSTIN'

INTO IS_TEXT SEPARATED BY '@~@'.

APPEND IS_TEXT TO IT_TEXT[].

CLEAR IS_TEXT.

CONCATENATE

is_final-Vendor_Legacy_Code

is_final-Vendor_EPS_Code

is_final-UID

is_final-UID_Type

is_final-VENDOR_GSTIN

INTO IS_TEXT SEPARATED BY '@~@'.

APPEND IS_TEXT TO IT_TEXT[].

CLEAR IS_TEXT.
CALL FUNCTION 'FTP_R3_TO_SERVER'

EXPORTING

HANDLE = G_DHDL

FNAME = P_FILE " FILE NAME 'MATERIAL_DATA.txt'

CHARACTER_MODE = 'X'

TABLES

TEXT = IT_TEXT " CONCATENATED MATERIAL DATA

EXCEPTIONS

TCPIP_ERROR = 1

COMMAND_ERROR = 2

DATA_ERROR =3

OTHERS = 4.

CLEAR P_FILE.

CONCATENATE 'PO_' is_ekko-ebeln '/PO_HEADER_' is_ekko-ebeln '.csv' INTO P_FILE.

CONDENSE P_FILE.

REFRESH IT_TEXT[].

CONCATENATE

"Heder

'PO No'

'PO Value'

'PO Amendment Flag'

'PO Date (DD.MM.YYYY)'


'PO start dt (DD.MM.YYYY)'

'PO Expiry dt (DD.MM.YYYY)'

'Buyer org ID'

'Buyer Org Name'

'PO Creator Name'

'Buyer org GSTIN'

'PO Type'

'PO Category'

'PO Creator ID'

'SAP_PO_REL_DT_TIME'

"Heder

INTO IS_TEXT SEPARATED BY '@~@'.

APPEND IS_TEXT TO IT_TEXT[].

CLEAR IS_TEXT.

IF w_PO_Value IS NOT INITIAL.

is_final-PO_Value = w_PO_Value.

ENDIF.

CONCATENATE

is_final-PO_No

is_final-PO_Value

is_final-PO_Amendment_Flag

is_final-PO_Date

is_final-PO_start_dt
is_final-PO_Expiry_dt

is_final-Buyer_org_ID

is_final-Buyer_Org_Name

is_final-PO_Creator_Name

is_final-Buyer_org_GSTIN

is_final-PO_Type

is_final-PO_Category

is_final-PO_Creator_ID

is_final-SAP_PO_REL_DT_TIME

INTO IS_TEXT SEPARATED BY '@~@'.

APPEND IS_TEXT TO IT_TEXT[].

CLEAR IS_TEXT.

CALL FUNCTION 'FTP_R3_TO_SERVER'

EXPORTING

HANDLE = G_DHDL

FNAME = P_FILE " FILE NAME 'MATERIAL_DATA.txt'

CHARACTER_MODE = 'X'

TABLES

TEXT = IT_TEXT " CONCATENATED MATERIAL DATA

EXCEPTIONS

TCPIP_ERROR = 1

COMMAND_ERROR = 2

DATA_ERROR =3
OTHERS = 4.

CLEAR P_FILE.

CONCATENATE 'PO_' is_ekko-ebeln '/PO_T&C_' is_ekko-ebeln '.csv' INTO P_FILE.

CONDENSE P_FILE.

REFRESH IT_TEXT[].

CONCATENATE

"T&C

'Clause No'

'Clause Name'

'Clause Details'

"T&C

INTO IS_TEXT SEPARATED BY '@~@'.

APPEND IS_TEXT TO IT_TEXT[].

CLEAR IS_TEXT.

CONCATENATE

is_final-Clause_No

is_final-Clause_Name

is_final-Clause_Details

INTO IS_TEXT SEPARATED BY '@~@'.


APPEND IS_TEXT TO IT_TEXT[].

CLEAR IS_TEXT.

CALL FUNCTION 'FTP_R3_TO_SERVER'

EXPORTING

HANDLE = G_DHDL

FNAME = P_FILE " FILE NAME 'MATERIAL_DATA.txt'

CHARACTER_MODE = 'X'

TABLES

TEXT = IT_TEXT " CONCATENATED MATERIAL DATA

EXCEPTIONS

TCPIP_ERROR = 1

COMMAND_ERROR = 2

DATA_ERROR =3

OTHERS = 4.

WRITE:/ 'File has created on FTP Server'.

ENDIF.

ENDIF.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'


EXPORTING

TEXT = 'File has created on FTP Server'.

*To Disconnect the FTP Server.

CALL FUNCTION 'FTP_DISCONNECT'

EXPORTING

HANDLE = G_DHDL.

*To Disconnect the Destination.

CALL FUNCTION 'RFC_CONNECTION_CLOSE'

EXPORTING

DESTINATION = C_DEST

EXCEPTIONS

OTHERS = 1.

ent_retco = 0.

ENDFORM. " SUB_FILE_TRANSFER_PO

You might also like