Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

FORM-PERFORM

Former Member
0 Likes
1,116

HELLO EXPERTS,

I need some help in coding.

I have to read the data from 3 different files which r in apps server with 3 different structures.

so i declared one common form form_read_data....... with the code...

&----


*& Form FORM_READ_DATA

&----


  • Imports the data into an internal table from the specified

  • file on the application server.

----


  • <T> i_filedata Table containing the imported records

  • --> src_filename Full name of file containing the source data

  • --> l_PIPE Indicator: file PIPE delimited or not

  • <-- l_rc System return code

----


  • Usage:

*

  • This perform will be called from within the perform

  • 'sub_importData'. Explicit call to this perform is not

  • recommended.

----


form FORM_READ_DATA tables I_FILEDATA

using S_FNAME1

S_PIPE

changing S_RC .

  • Ensure the internal table is empty

refresh i_filedata.

clear v_message.

  • Open the source file for reading

open dataset S_FNAME1 for input in text mode

encoding default

message v_message.

if sy-subrc = 0.

  • Read each line in the source file and add it's contents to the

  • internal table.

do.

read dataset S_FNAME1 into i_filedata.

  • EOF reached

if sy-subrc <> 0.

exit.

else.

append i_filedata.

endif.

enddo.

if i_filedata[] is not initial.

S_RC = 0.

else.

S_RC = 4.

endif.

else.

S_RC = sy-subrc.

endif.

  • Close the source file

close dataset S_FNAME1.

endform. " FORM_READ_DATA.

and call that routine as............

PERFORM FORM_READ_DATA tables I_FILEDATA1

using V_FNAME1

C_PIPE

changing L_SUBRC.

PERFORM FORM_READ_DATA tables I_FILEDATA2

using V_FNAME2

C_PIPE

changing L_SUBRC.

PERFORM FORM_READ_DATA tables I_FILEDATA3

using V_FNAME3

C_PIPE

changing L_SUBRC.

and declarations are like............

types: begin of IT_AR_FILE,

P_DATE type sydatum,

P_XBLNR TYPE XBLNR,

P_BLDAT TYPE BLDAT,

P_BUDAT TYPE BUDAT,

P_BLART TYPE BLART,

P_AWKEY TYPE AWKEY,

P_KUNNR TYPE KUNNR,

P_XREF1 type XREF1 ,

P_XREF2 type XREF2 ,

P_XREF3 type XREF3,

P_WRBTR TYPE WRBTR,

P_ZTERM TYPE DZTERM,

P_ZUONR TYPE DZUONR,

P_RSTGR TYPE RSTGR,

P_WSKTO TYPE WSKTO,

P_SGTXT TYPE SGTXT,

P_BUKRS TYPE BUKRS,

chkflg type boolean,

end of IT_AR_FILE.

TYPES: BEGIN OF IT_GLITEM,

P_DATE type sydatum ,

P_KUNNR TYPE KUNNR,

P_XBLNR TYPE XBLNR,

  • P_BLDAT TYPE BLDAT,

  • P_BUDAT TYPE BUDAT,

  • P_BLART TYPE BLART,

  • P_AWKEY TYPE AWKEY,

  • P_KUNNR TYPE KUNNR,

  • P_XREF1 type XREF1 ,

  • P_XREF2 type XREF2 ,

  • P_XREF3 type XREF3,

P_WRBTR TYPE WRBTR,

  • P_ZTERM TYPE DZTERM,

  • P_ZUONR TYPE DZUONR,

  • P_RSTGR TYPE RSTGR,

  • P_WSKTO TYPE WSKTO,

  • P_SGTXT TYPE SGTXT,

  • P_BUKRS TYPE BUKRS,

chkflg type boolean,

END OF IT_GLITEM.

DATA: I_FILEDATA1 TYPE IT_AR_FILE OCCURS 0 WITH HEADER LINE,

WA_FILEDATA1 TYPE IT_AR_FILE ,

I_FILEDATA2 TYPE IT_GLITEM OCCURS 0 WITH HEADER LINE,

WA_FILEDATA2 TYPE IT_GLITEM,

I_FILEDATA3 TYPE IT_GLITEM OCCURS 0 WITH HEADER LINE,

WA_FILEDATA3 TYPE IT_GLITEM .

does the above code work properly.... guide me plz....................right now it is not giving me any syntax error.

SRI

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,029

It will work as long as you don't try to refer to individual fields of those internal tables. Also, if you have unicode checks on, there may some conflicts with the data types.

Another thing I noted is that you are passing a parameter C_PIPE but you are not using it in the subroutine. Are these files pipe-delimited? If so you cannot use it the way you have it now, because when you try to split at pipe, you will have to specify the target fields which you don't have within the subroutine.

Instead, define an internal table that can accommodate data for any of the 3 files as below.

data: begin of itab_file occurs 0,

record(500).

data: end of itab_file.

Read each file into this same internal table and then once the file contents are in this internal table, then outside you can do something like

loop at itab_file.

split itab_file at c_pipe into itab1-field1 itab1-field2 ....... where itab1 is your internal table for the first file.

8 REPLIES 8
Read only

Former Member
0 Likes
1,029

reward points if helpful

Regards

Srikanta Gope

Read only

Former Member
0 Likes
1,029

hi,

See following code :

TABLES: MAKT,T005T,TSKMT,MLAN,TSTL,TSKM, ZERP_EXTRACT_ANR,TVKWZ.

DATA: BEGIN OF I_FINAL OCCURS 0,

*RECID(4),

*I,

MATNR LIKE MARA-MATNR,

I1,

MBRSH LIKE MARA-MBRSH,

I2,

MTART LIKE MARA-MTART,

I3,

WERKS LIKE MARC-WERKS,

I4,

VKORG LIKE MVKE-VKORG,

I5,

VTWEG LIKE MVKE-VTWEG,

END OF I_FINAL.

DATA: BEGIN OF I_FINAL1 OCCURS 0,

MATNR LIKE MARA-MATNR,

I1,

MBRSH LIKE MARA-MBRSH,

I2,

MTART LIKE MARA-MTART,

I3,

WERKS LIKE MARC-WERKS,

I4,

VKORG LIKE MVKE-VKORG,

I5,

VTWEG LIKE MVKE-VTWEG,

I6,

MAKTX LIKE MAKT-MAKTX,

I7,

SPRAS LIKE MAKT-SPRAS,

I8,

MEINS LIKE MARA-MEINS,

I9,

MATKL LIKE MARA-MATKL,

I0,

BISMT LIKE MARA-BISMT,

I11,

SPART LIKE MARA-SPART,

I12,

KTGRM LIKE MVKE-KTGRM,

I13,

MTPOS LIKE MVKE-MTPOS,

I14,

MTPOS_MARA LIKE MARA-MTPOS_MARA,

I15,

AMATKL LIKE MARA-MATKL, "repeated

I15A,

BSPART LIKE MARA-SPART, "repeated

I15B,

CMEINS LIKE MARA-MEINS, "repeated

I15C,

LAND1 LIKE T005T-LAND1,

I16,

TATYP LIKE TSKMT-TATYP,

I17,

DWERK LIKE MVKE-DWERK,

I18,

PRCTR LIKE MARC-PRCTR,

END OF I_FINAL1.

DATA: BEGIN OF I_FINAL2 OCCURS 0,

MATNR LIKE MARA-MATNR,

I1,

MBRSH LIKE MARA-MBRSH,

I2,

MTART LIKE MARA-MTART,

I3,

WERKS LIKE MARC-WERKS,

I4,

VKORG LIKE MVKE-VKORG,

I5,

VTWEG LIKE MVKE-VTWEG,

I6,

TAXKM LIKE TSKMT-TAXKM,

END OF I_FINAL2.

DATA: BEGIN OF I_MARA OCCURS 0,

MATNR LIKE MARA-MATNR,

MBRSH LIKE MARA-MBRSH,

MTART LIKE MARA-MTART,

MEINS LIKE MARA-MEINS,

MATKL LIKE MARA-MATKL,

BISMT LIKE MARA-BISMT,

SPART LIKE MARA-SPART,

MTPOS_MARA LIKE MARA-MTPOS_MARA,

END OF I_MARA.

DATA:BEGIN OF I_MARC OCCURS 0,

MATNR LIKE MARC-MATNR,

WERKS LIKE MARC-WERKS,

PRCTR LIKE MARC-PRCTR,

END OF I_MARC.

DATA: BEGIN OF I_MVKE OCCURS 0,

MATNR LIKE MVKE-MATNR,

VKORG LIKE MVKE-VKORG,

VTWEG LIKE MVKE-VTWEG,

KTGRM LIKE MVKE-KTGRM,

MTPOS LIKE MVKE-MTPOS,

DWERK LIKE MVKE-DWERK,

END OF I_MVKE.

DATA: OBJ_NAME(10) TYPE C VALUE 'OTC_C_15'.

DATA: MSG(100).

DATA: DDROP(3).

DATA HEADER TYPE STRING.

SELECTION-SCREEN SKIP 3.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS: R1 RADIOBUTTON GROUP RG,

R2 RADIOBUTTON GROUP RG,

R3 RADIOBUTTON GROUP RG,

R4 RADIOBUTTON GROUP RG,

R5 RADIOBUTTON GROUP RG DEFAULT 'X',

R6 RADIOBUTTON GROUP RG.

SELECTION-SCREEN END OF BLOCK B1.

DATA: LN TYPE I.

DATA: CNT(20),CNT1(20),CNT2(20).

DATA : DATASET LIKE RLGRAP-FILENAME.

START-OF-SELECTION.

PERFORM GET_DATA.

PERFORM PROCESS_DATA.

PERFORM DOWNLOAD_FILE_APPSERVR.

*&----


*

*& Form GET_DATA

*&----


*

FORM GET_DATA.

SELECT MATNR MBRSH MTART MEINS MATKL BISMT SPART FROM MARA

INTO TABLE I_MARA WHERE LVORM <> 'X' AND ( MTART = 'FSCN' OR

MTART = 'FSTG' OR

MTART = 'OFCN' OR

MTART = 'OFTG' OR

  • mtart = 'ZSRV' OR

MTART = 'LABO' OR

MTART = 'PHYS')

AND MATKL BETWEEN '00000001' AND '00000017'.

*R001 Material types LABO and PHYS r included, ZSRV delted,matkl added

IF NOT I_MARA[] IS INITIAL.

SELECT MATNR VKORG VTWEG KTGRM MTPOS DWERK FROM MVKE INTO TABLE I_MVKE

FOR ALL ENTRIES IN I_MARA

WHERE MATNR = I_MARA-MATNR AND

VKORG NOT IN ('NE01','SC01','SO01','WW01').

*R001 exlusion of sales org from selecting

*R001 to extract plants which are related to sales orgs

*SELECT * INTO corresponding table i_tvkwz

  • FROM tvkwz

  • where

ENDIF.

IF NOT I_MARA[] IS INITIAL.

SELECT MATNR WERKS PRCTR FROM MARC INTO TABLE I_MARC

FOR ALL ENTRIES IN I_MARA

WHERE MATNR = I_MARA-MATNR.

ENDIF.

ENDFORM. " GET_DATA

*&----


*

*& Form PROCESS_DATA

*&----


*

FORM PROCESS_DATA.

LOOP AT I_MARC.

READ TABLE I_MARA WITH KEY MATNR = I_MARC-MATNR.

IF SY-SUBRC = 0.

SELECT SINGLE * FROM MAKT WHERE MATNR = I_MARA-MATNR.

IF SY-SUBRC = 0.

I_FINAL1-MAKTX = MAKT-MAKTX.

I_FINAL1-SPRAS = MAKT-SPRAS.

ENDIF.

I_FINAL2-I1 = 'Ï'.

I_FINAL2-I2 = 'Ï'.

I_FINAL2-I3 = 'Ï'.

I_FINAL2-I4 = 'Ï'.

I_FINAL2-I5 = 'Ï'.

I_FINAL2-I6 = 'Ï'.

  • I_FINAL-RECID = '0010'.

I_FINAL-MATNR = I_MARA-MATNR.

  • I_FINAL1-RECID = '0020'.

I_FINAL1-MATNR = I_MARA-MATNR.

I_FINAL1-MBRSH = I_MARA-MBRSH.

I_FINAL1-MTART = I_MARA-MTART.

I_FINAL-MBRSH = I_MARA-MBRSH.

I_FINAL-MTART = I_MARA-MTART.

I_FINAL2-MBRSH = I_MARA-MBRSH.

I_FINAL2-MTART = I_MARA-MTART.

I_FINAL1-WERKS = I_MARC-WERKS.

I_FINAL-WERKS = I_MARC-WERKS.

I_FINAL2-WERKS = I_MARC-WERKS.

I_FINAL1-PRCTR = I_MARC-PRCTR.

I_FINAL1-MEINS = I_MARA-MEINS.

I_FINAL1-CMEINS = I_MARA-MEINS.

I_FINAL1-MATKL = I_MARA-MATKL.

I_FINAL1-AMATKL = I_MARA-MATKL.

I_FINAL1-BISMT = I_MARA-BISMT.

I_FINAL1-SPART = I_MARA-SPART.

I_FINAL1-BSPART = I_MARA-SPART.

ENDIF.

  • SELECT SINGLE * FROM MLAN WHERE MATNR = I_MARC-MATNR.

  • IF SY-SUBRC = 0.

  • I_FINAL1-LAND1 = MLAN-ALAND.

  • SELECT SINGLE * FROM TSTL WHERE TALND = MLAN-ALAND.

  • IF SY-SUBRC = 0.

  • I_FINAL1-TATYP = TSTL-TATYP.

  • IF NOT MLAN-TAXM1 IS INITIAL.

    • I_FINAL2-RECID = '0030'.

    • I_FINAL2-I = 'Ï'.

  • I_FINAL2-MATNR = I_MARC-MATNR.

  • I_FINAL2-I1 = 'Ï'.

  • I_FINAL2-TAXKM = MLAN-TAXM1 .

  • APPEND I_FINAL2.

  • CLEAR I_FINAL2.

  • ENDIF.

  • IF NOT MLAN-TAXM2 IS INITIAL.

    • I_FINAL2-RECID = '0030'.

    • I_FINAL2-I = 'Ï'.

  • I_FINAL2-MATNR = I_MARC-MATNR.

  • I_FINAL2-I1 = 'Ï'.

  • I_FINAL2-TAXKM = MLAN-TAXM2.

  • APPEND I_FINAL2.

  • CLEAR I_FINAL2.

  • ENDIF.

  • IF NOT MLAN-TAXM3 IS INITIAL.

    • I_FINAL2-RECID = '0030'.

    • I_FINAL2-I = 'Ï'.

  • I_FINAL2-MATNR = I_MARC-MATNR.

  • I_FINAL2-I1 = 'Ï'.

  • I_FINAL2-TAXKM = MLAN-TAXM3 .

  • APPEND I_FINAL2.

  • CLEAR I_FINAL2.

  • ENDIF.

  • IF NOT MLAN-TAXM4 IS INITIAL.

    • I_FINAL2-RECID = '0030'.

    • I_FINAL2-I = 'Ï'.

  • I_FINAL2-MATNR = I_MARC-MATNR.

  • I_FINAL2-I1 = 'Ï'.

  • I_FINAL2-TAXKM = MLAN-TAXM4 .

  • APPEND I_FINAL2.

  • CLEAR I_FINAL2.

  • ENDIF.

  • IF NOT MLAN-TAXM5 IS INITIAL.

    • I_FINAL2-RECID = '0030'.

    • I_FINAL2-I = 'Ï'.

  • I_FINAL2-MATNR = I_MARC-MATNR.

  • I_FINAL2-I1 = 'Ï'.

  • I_FINAL2-TAXKM = MLAN-TAXM5 .

  • APPEND I_FINAL2.

  • CLEAR I_FINAL2.

  • ENDIF.

  • IF NOT MLAN-TAXM6 IS INITIAL.

    • I_FINAL2-RECID = '0030'.

    • I_FINAL2-I = 'Ï'.

  • I_FINAL2-MATNR = I_MARC-MATNR.

  • I_FINAL2-I1 = 'Ï'.

  • I_FINAL2-TAXKM = MLAN-TAXM6.

  • APPEND I_FINAL2.

  • CLEAR I_FINAL2.

  • ENDIF.

  • IF NOT MLAN-TAXM7 IS INITIAL.

    • I_FINAL2-RECID = '0030'.

    • I_FINAL2-I = 'Ï'.

  • I_FINAL2-MATNR = I_MARC-MATNR.

  • I_FINAL2-I1 = 'Ï'.

  • I_FINAL2-TAXKM = MLAN-TAXM7.

  • APPEND I_FINAL2.

  • CLEAR I_FINAL2.

  • ENDIF.

  • IF NOT MLAN-TAXM8 IS INITIAL.

    • I_FINAL2-RECID = '0030'.

    • I_FINAL2-I = 'Ï'.

  • I_FINAL2-MATNR = I_MARC-MATNR.

  • I_FINAL2-I1 = 'Ï'.

  • I_FINAL2-TAXKM = MLAN-TAXM8.

  • APPEND I_FINAL2.

  • CLEAR I_FINAL2.

  • ENDIF.

  • IF NOT MLAN-TAXM9 IS INITIAL.

    • I_FINAL2-RECID = '0030'.

    • I_FINAL2-I = 'Ï'.

  • I_FINAL2-MATNR = I_MARC-MATNR.

  • I_FINAL2-I1 = 'Ï'.

  • I_FINAL2-TAXKM = MLAN-TAXM9 .

  • APPEND I_FINAL2.

  • CLEAR I_FINAL2.

  • ENDIF.

  • ENDIF.

  • ENDIF.

  • I_FINAL1-I = 'Ï'.

I_FINAL1-I0 = 'Ï'.

I_FINAL1-I1 = 'Ï'.

I_FINAL1-I2 = 'Ï'.

I_FINAL1-I3 = 'Ï'.

I_FINAL1-I4 = 'Ï'.

I_FINAL1-I5 = 'Ï'.

I_FINAL1-I6 = 'Ï'.

I_FINAL1-I7 = 'Ï'.

I_FINAL-I1 = 'Ï'.

I_FINAL-I2 = 'Ï'.

I_FINAL-I3 = 'Ï'.

I_FINAL-I4 = 'Ï'.

I_FINAL-I5 = 'Ï'.

I_FINAL1-I8 = 'Ï'.

I_FINAL1-I9 = 'Ï'.

I_FINAL1-I11 = 'Ï'.

I_FINAL1-I12 = 'Ï'.

I_FINAL1-I13 = 'Ï'.

I_FINAL1-I14 = 'Ï'.

I_FINAL1-I15 = 'Ï'.

I_FINAL1-I15A = 'Ï'.

I_FINAL1-I15B = 'Ï'.

I_FINAL1-I15C = 'Ï'.

I_FINAL1-I16 = 'Ï'.

I_FINAL1-I17 = 'Ï'.

  • I_FINAL-I = 'Ï'.

SELECT SINGLE * FROM TVKWZ WHERE WERKS = I_MARC-WERKS

AND VTWEG = 'T1'.

IF SY-SUBRC = 0.

READ TABLE I_MVKE WITH KEY MATNR = I_MARC-MATNR

  • vkorg = i_marc-werks.

VKORG = TVKWZ-VKORG.

IF SY-SUBRC = 0.

I_FINAL1-VKORG = I_MVKE-VKORG.

I_FINAL1-VTWEG = I_MVKE-VTWEG.

I_FINAL-VKORG = I_MVKE-VKORG.

I_FINAL-VTWEG = I_MVKE-VTWEG.

I_FINAL2-VKORG = I_MVKE-VKORG.

I_FINAL2-VTWEG = I_MVKE-VTWEG.

I_FINAL1-KTGRM = I_MVKE-KTGRM.

I_FINAL1-MTPOS = I_MVKE-MTPOS.

I_FINAL1-DWERK = I_MVKE-DWERK.

APPEND I_FINAL.

APPEND I_FINAL1.

*start of Tax clasification data

SELECT SINGLE * FROM MLAN WHERE MATNR = I_MARC-MATNR.

IF SY-SUBRC = 0.

I_FINAL1-LAND1 = MLAN-ALAND.

SELECT SINGLE * FROM TSTL WHERE TALND = MLAN-ALAND.

IF SY-SUBRC = 0.

I_FINAL1-TATYP = TSTL-TATYP.

IF NOT MLAN-TAXM1 IS INITIAL.

  • I_FINAL2-RECID = '0030'.

  • I_FINAL2-I = 'Ï'.

I_FINAL2-MATNR = I_MARC-MATNR.

I_FINAL2-I1 = 'Ï'.

I_FINAL2-TAXKM = MLAN-TAXM1 .

APPEND I_FINAL2.

CLEAR I_FINAL2.

ENDIF.

IF NOT MLAN-TAXM2 IS INITIAL.

  • I_FINAL2-RECID = '0030'.

  • I_FINAL2-I = 'Ï'.

I_FINAL2-MATNR = I_MARC-MATNR.

I_FINAL2-I1 = 'Ï'.

I_FINAL2-TAXKM = MLAN-TAXM2.

APPEND I_FINAL2.

CLEAR I_FINAL2.

ENDIF.

IF NOT MLAN-TAXM3 IS INITIAL.

  • I_FINAL2-RECID = '0030'.

  • I_FINAL2-I = 'Ï'.

I_FINAL2-MATNR = I_MARC-MATNR.

I_FINAL2-I1 = 'Ï'.

I_FINAL2-TAXKM = MLAN-TAXM3 .

APPEND I_FINAL2.

CLEAR I_FINAL2.

ENDIF.

IF NOT MLAN-TAXM4 IS INITIAL.

  • I_FINAL2-RECID = '0030'.

  • I_FINAL2-I = 'Ï'.

I_FINAL2-MATNR = I_MARC-MATNR.

I_FINAL2-I1 = 'Ï'.

I_FINAL2-TAXKM = MLAN-TAXM4 .

APPEND I_FINAL2.

CLEAR I_FINAL2.

ENDIF.

IF NOT MLAN-TAXM5 IS INITIAL.

  • I_FINAL2-RECID = '0030'.

  • I_FINAL2-I = 'Ï'.

I_FINAL2-MATNR = I_MARC-MATNR.

I_FINAL2-I1 = 'Ï'.

I_FINAL2-TAXKM = MLAN-TAXM5 .

APPEND I_FINAL2.

CLEAR I_FINAL2.

ENDIF.

IF NOT MLAN-TAXM6 IS INITIAL.

  • I_FINAL2-RECID = '0030'.

  • I_FINAL2-I = 'Ï'.

I_FINAL2-MATNR = I_MARC-MATNR.

I_FINAL2-I1 = 'Ï'.

I_FINAL2-TAXKM = MLAN-TAXM6.

APPEND I_FINAL2.

CLEAR I_FINAL2.

ENDIF.

IF NOT MLAN-TAXM7 IS INITIAL.

  • I_FINAL2-RECID = '0030'.

  • I_FINAL2-I = 'Ï'.

I_FINAL2-MATNR = I_MARC-MATNR.

I_FINAL2-I1 = 'Ï'.

I_FINAL2-TAXKM = MLAN-TAXM7.

APPEND I_FINAL2.

CLEAR I_FINAL2.

ENDIF.

IF NOT MLAN-TAXM8 IS INITIAL.

  • I_FINAL2-RECID = '0030'.

  • I_FINAL2-I = 'Ï'.

I_FINAL2-MATNR = I_MARC-MATNR.

I_FINAL2-I1 = 'Ï'.

I_FINAL2-TAXKM = MLAN-TAXM8.

APPEND I_FINAL2.

CLEAR I_FINAL2.

ENDIF.

IF NOT MLAN-TAXM9 IS INITIAL.

  • I_FINAL2-RECID = '0030'.

  • I_FINAL2-I = 'Ï'.

I_FINAL2-MATNR = I_MARC-MATNR.

I_FINAL2-I1 = 'Ï'.

I_FINAL2-TAXKM = MLAN-TAXM9 .

APPEND I_FINAL2.

CLEAR I_FINAL2.

ENDIF.

ENDIF.

ENDIF.

*end of tax clasification data

ENDIF.

ENDIF.

ENDLOOP.

SORT I_FINAL.

DELETE ADJACENT DUPLICATES FROM I_FINAL.

SORT I_FINAL2.

DELETE ADJACENT DUPLICATES FROM I_FINAL2.

SORT I_FINAL1.

DELETE ADJACENT DUPLICATES FROM I_FINAL1.

ENDFORM. " PROCESS_DATA

*&----


*

*& Form DOWNLOAD_FILE_APPSERVR

*&----


*

FORM DOWNLOAD_FILE_APPSERVR.

IF R1 = 'X'.

DDROP = 'MC1'.

ELSEIF R2 = 'X'.

DDROP = 'MC2'.

ELSEIF R3 = 'X'.

DDROP = 'MC3'.

ELSEIF R4 = 'X'.

DDROP = 'IM1'.

ELSEIF R5 = 'X'.

DDROP = 'TR1'.

ELSEIF R6 = 'X'.

DDROP = 'PT1'.

ENDIF.

DATASET = '/var/sapgl/migrate/'.

CONCATENATE DATASET DDROP '_' OBJ_NAME '_0010_' SY-DATUM '_' '01' '.DAT'

INTO DATASET.

PERFORM OPEN_DATASET USING DATASET .

TRANSFER 'MATNRÏMBRSHÏMTARTÏWERKSÏVKORGÏVTWEG' TO DATASET.

LOOP AT I_FINAL.

TRANSFER I_FINAL TO DATASET.

IF I_FINAL-MATNR+0(1) CA '0123456789'.

CNT = CNT + I_FINAL-MATNR.

ENDIF.

ENDLOOP.

PERFORM CLOSE_DATASET USING DATASET.

CLEAR DATASET.

DATASET = '/var/sapgl/migrate/'.

CONCATENATE DATASET DDROP '_' OBJ_NAME '_0020_' SY-DATUM '_' '01' '.DAT'

INTO DATASET.

PERFORM OPEN_DATASET USING DATASET .

CONCATENATE TEXT-002 'PRCTR' INTO HEADER.

TRANSFER HEADER TO DATASET.

LOOP AT I_FINAL1 .

TRANSFER I_FINAL1 TO DATASET.

IF I_FINAL1-MATNR+0(1) CA '0123456789'.

CNT1 = CNT1 + I_FINAL1-MATNR.

ENDIF.

ENDLOOP.

PERFORM CLOSE_DATASET USING DATASET.

CLEAR DATASET.

DATASET = '/var/sapgl/migrate/'.

CONCATENATE DATASET DDROP '_' OBJ_NAME '_0030_' SY-DATUM '_' '01' '.DAT'

INTO DATASET.

PERFORM OPEN_DATASET USING DATASET .

TRANSFER 'MATNRÏMBRSHÏMTARTÏWERKSÏVKORGÏVTWEGÏTAXKM' TO DATASET.

LOOP AT I_FINAL2.

TRANSFER I_FINAL2 TO DATASET.

IF I_FINAL2-MATNR+0(1) CA '0123456789'.

CNT2 = CNT2 + I_FINAL2-MATNR.

ENDIF.

ENDLOOP.

PERFORM CLOSE_DATASET USING DATASET.

  • {{{{ " audit & Reconcilation for rec-ID 0010

DESCRIBE TABLE I_FINAL LINES LN.

ZERP_EXTRACT_ANR-OBJECT = 'OTC_C_15'.

ZERP_EXTRACT_ANR-EXT_DATE = SY-DATUM.

ZERP_EXTRACT_ANR-REC_ID = '0010'.

ZERP_EXTRACT_ANR-REC_CNT = LN.

ZERP_EXTRACT_ANR-COLUMN_CNT = '06'.

ZERP_EXTRACT_ANR-HASH = CNT.

ZERP_EXTRACT_ANR-COLUMN_NAME = 'MATNR-Material Number'.

MODIFY ZERP_EXTRACT_ANR FROM ZERP_EXTRACT_ANR.

  • }}}}

  • {{{{ " audit & Reconcilation for rec-ID 0020

CLEAR LN.

DESCRIBE TABLE I_FINAL1 LINES LN.

ZERP_EXTRACT_ANR-OBJECT = 'OTC_C_15'.

ZERP_EXTRACT_ANR-EXT_DATE = SY-DATUM.

ZERP_EXTRACT_ANR-REC_ID = '0020'.

ZERP_EXTRACT_ANR-REC_CNT = LN.

ZERP_EXTRACT_ANR-COLUMN_CNT = '22'.

ZERP_EXTRACT_ANR-HASH = CNT1.

    • zerp_extract_anr-column_name = 'BISMT-Old Material Number'.

ZERP_EXTRACT_ANR-COLUMN_NAME = 'MATNR-Material Number'.

MODIFY ZERP_EXTRACT_ANR FROM ZERP_EXTRACT_ANR.

  • }}}}

  • {{{{ " audit & Reconcilation for rec-ID 0030

CLEAR LN.

DESCRIBE TABLE I_FINAL2 LINES LN.

ZERP_EXTRACT_ANR-OBJECT = 'OTC_C_15'.

ZERP_EXTRACT_ANR-EXT_DATE = SY-DATUM.

ZERP_EXTRACT_ANR-REC_ID = '0030'.

ZERP_EXTRACT_ANR-REC_CNT = LN.

ZERP_EXTRACT_ANR-COLUMN_CNT = '07'.

ZERP_EXTRACT_ANR-HASH = CNT2.

ZERP_EXTRACT_ANR-COLUMN_NAME = 'MATNR-Material Number'.

MODIFY ZERP_EXTRACT_ANR FROM ZERP_EXTRACT_ANR.

  • }}}}

ENDFORM. " DOWNLOAD_FILE_APPSERVR

*&----


*

*& Form OPEN_DATASET

*&----


*

FORM OPEN_DATASET USING P_DATASET.

OPEN DATASET P_DATASET FOR OUTPUT IN TEXT MODE MESSAGE MSG.

IF SY-SUBRC <> 0.

WRITE: / MSG, SY-SUBRC.

STOP.

ENDIF.

ENDFORM. " OPEN_DATASET

*&----


*

*& Form CLOSE_DATASET

*&----


*

FORM CLOSE_DATASET USING P_DATASET.

CLOSE DATASET P_DATASET.

ENDFORM. " CLOSE_DATASET

reward points if helpful

Regards

Srikanta Gope

Read only

0 Likes
1,029

In response to the reply from SRIKANTA, take a look at this program

REPORT Z_SOME_RANDOM_PROGRAM.

START-OF-SELECTION.

WRITE:/ 'Give us the points'.

END-OF-SELECTION.

Read only

Former Member
0 Likes
1,029

Hi Sri,

It should work.. I dont see any problem with that code..

You can test this program by putting some files in the home directory...

Cheer's

Mahesh

Read only

0 Likes
1,029

Mahesh,

What i am wondering is .... i didn't declare the variables anywhere what ever I used in the form subroutine. I can't declare because I have to call the same form for 3 different fiels...

am I in the correct path?

SRI

Read only

Former Member
0 Likes
1,030

It will work as long as you don't try to refer to individual fields of those internal tables. Also, if you have unicode checks on, there may some conflicts with the data types.

Another thing I noted is that you are passing a parameter C_PIPE but you are not using it in the subroutine. Are these files pipe-delimited? If so you cannot use it the way you have it now, because when you try to split at pipe, you will have to specify the target fields which you don't have within the subroutine.

Instead, define an internal table that can accommodate data for any of the 3 files as below.

data: begin of itab_file occurs 0,

record(500).

data: end of itab_file.

Read each file into this same internal table and then once the file contents are in this internal table, then outside you can do something like

loop at itab_file.

split itab_file at c_pipe into itab1-field1 itab1-field2 ....... where itab1 is your internal table for the first file.

Read only

0 Likes
1,029

Ya Srinivas,

It is a pipe delimiter file.

srini what ever you said i didn't get. Can you tell me clearly what do u want me to do . where should i declare that internal table n read the data into it whether it is inside the subroutine or outside....

how about read file and split the file at pipe... can you clearly telll me that plz

SRI

Read only

0 Likes
1,029

Something like this.


DATA: BEGIN OF itab_file OCCURS 0,
        record(500).
DATA: END OF itab_file.

TYPES: BEGIN OF it_ar_file,
         p_date TYPE sydatum,
         p_xblnr TYPE xblnr,
         p_bldat TYPE bldat,
         p_budat TYPE budat,
         p_blart TYPE blart,
         p_awkey TYPE awkey,
         p_kunnr TYPE kunnr,
         p_xref1 TYPE xref1 ,
         p_xref2 TYPE xref2 ,
         p_xref3 TYPE xref3,
         p_wrbtr TYPE wrbtr,
         p_zterm TYPE dzterm,
         p_zuonr TYPE dzuonr,
         p_rstgr TYPE rstgr,
         p_wskto TYPE wskto,
         p_sgtxt TYPE sgtxt,
         p_bukrs TYPE bukrs,
         chkflg TYPE boolean,
END OF it_ar_file.

TYPES: BEGIN OF it_glitem,
         p_date TYPE sydatum ,
         p_kunnr TYPE kunnr,
         p_xblnr TYPE xblnr,
*        P_BLDAT TYPE BLDAT,
*        P_BUDAT TYPE BUDAT,
*        P_BLART TYPE BLART,
*        P_AWKEY TYPE AWKEY,
*        P_KUNNR TYPE KUNNR,
*        P_XREF1 type XREF1 ,
*        P_XREF2 type XREF2 ,
*        P_XREF3 type XREF3,
         p_wrbtr TYPE wrbtr,
*        P_ZTERM TYPE DZTERM,
*        P_ZUONR TYPE DZUONR,
*        P_RSTGR TYPE RSTGR,
*        P_WSKTO TYPE WSKTO,
*        P_SGTXT TYPE SGTXT,
*        P_BUKRS TYPE BUKRS,
         chkflg TYPE boolean,
END OF it_glitem.

DATA: i_filedata1  TYPE it_ar_file OCCURS 0 WITH HEADER LINE,
      wa_filedata1 TYPE it_ar_file ,
      i_filedata2  TYPE it_glitem OCCURS 0 WITH HEADER LINE,
      wa_filedata2 TYPE it_glitem,
      i_filedata3  TYPE it_glitem OCCURS 0 WITH HEADER LINE,
      wa_filedata3 TYPE it_glitem .

PERFORM form_read_data USING v_fname1
                    CHANGING l_subrc.
IF l_subrc = 0.
  LOOP AT itab_file.
    SPLIT itab_file-record AT c_pipe
                         INTO i_filedata1-p_date
                              i_filedata1-p_xblnr
                              i_filedata1-p_bldat
                              i_filedata1-p_budat
                              i_filedata1-p_blart
                              i_filedata1-p_awkey
                              i_filedata1-p_kunnr
                              i_filedata1-p_xref1
                              i_filedata1-p_xref2
                              i_filedata1-p_xref3
                              i_filedata1-p_wrbtr
                              i_filedata1-p_zterm
                              i_filedata1-p_zuonr
                              i_filedata1-p_rstgr
                              i_filedata1-p_wskto
                              i_filedata1-p_sgtxt
                              i_filedata1-p_bukrs
                              i_filedata1-chkflg.
    APPEND i_filedata1.
    CLEAR i_filedata1.
  ENDLOOP.
ENDIF.
PERFORM form_read_data USING v_fname2
                    CHANGING l_subrc.
PERFORM form_read_data USING v_fname3
                    CHANGING l_subrc.

*&---------------------------------------------------------------------*
*& Form FORM_READ_DATA
*&---------------------------------------------------------------------*
* Imports the data into an internal table from the specified
* file on the application server.
*----------------------------------------------------------------------*
* <T> i_filedata Table containing the imported records
* --> src_filename Full name of file containing the source data
* --> l_PIPE Indicator: file PIPE delimited or not
* <-- l_rc System return code
*----------------------------------------------------------------------*
* Usage:
*
* This perform will be called from within the perform
* 'sub_importData'. Explicit call to this perform is not
* recommended.
*----------------------------------------------------------------------*
FORM form_read_data USING s_fname1
                 CHANGING s_rc .
* Ensure the internal table is empty
  REFRESH itab_file.
  CLEAR v_message.

* Open the source file for reading
  OPEN DATASET s_fname1 FOR INPUT IN TEXT MODE
                              ENCODING DEFAULT
                                       MESSAGE v_message.

  IF sy-subrc = 0.
* Read each line in the source file and add it's contents to the
* internal table.
    DO.
      READ DATASET s_fname1 INTO itab_file.
* EOF reached
      IF sy-subrc <> 0.
        EXIT.
      ELSE.
        APPEND itab_file.
      ENDIF.
    ENDDO.

    IF itab_file[] IS NOT INITIAL.
      s_rc = 0.
    ELSE.
      s_rc = 4.
    ENDIF.
  ELSE.
    s_rc = sy-subrc.
  ENDIF.

* Close the source file
  CLOSE DATASET s_fname1.

ENDFORM. " FORM_READ_DATA.