Application Development 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: 

Regarding Text types

0 Kudos

Can anyone give me some example program for text types using

Function module "Read_text"

Regards,

Shanmugaperumal

4 REPLIES 4

Former Member
0 Kudos

refer this thread u get lots of example.

Former Member
0 Kudos

see this code -

REPORT ZEXTRACT_CODE line-size 255

MESSAGE-ID zj.

************************************************************************

  • Report: ZSD_DW_CUST *

----


  • Program title: Report For downloading Customer Master data *

----


  • Author: Amit Tyagi *

  • Date: 09/02/2004 *

  • Change Request : *

****----


  • Processing Details: The report is needed for downloading Customer *

  • Master Data to excel files. The Customer Master *

  • Data includes General data, Company level data, *

  • Sales data, Partner data, Contact person data & *

  • Text data. *

****----


  • Modification History

****----


  • *

  • Date Author Description *

  • *

  • *

----


*

----


  • TABLES

----


TABLES: kna1,

knb1,

  • knb5, "MAA001-

  • knvk, "MAA001-

knvv.

  • knvp, "MAA001-

  • stxh. "MAA001-

----


  • STRUCTURE DECLARATION OF INTERNAL TABLES

----


--


KNA1 table-Basic data--

TYPES: BEGIN OF ty_kna11,

mandt LIKE kna1-mandt,

ktokd LIKE kna1-ktokd, "Customer Account Group

kunnr LIKE kna1-kunnr, "Customer Number 1

name1 LIKE kna1-name1,

"Name1

anred LIKE kna1-anred, "Title

sortl LIKE kna1-sortl, "Sort field

name2 LIKE kna1-name2,

"Name2

name3 LIKE kna1-name3,

"Name3

name4 LIKE kna1-name4,

"Name4

pstlz LIKE kna1-pstlz, "Postal Code

ort01 LIKE kna1-ort01, "City

stras LIKE kna1-stras, "House number and street

land1 LIKE kna1-land1, "Country Key

ort02 LIKE kna1-ort02, "District

regio LIKE kna1-regio, "Region

pfach LIKE kna1-pfach, "PO Box

pstl2 LIKE kna1-pstl2, "P.O. Box Postal Code

lzone LIKE kna1-lzone, "Transportation zone

  • txjcd LIKE kna1-txjcd, "Jurisdiction for Tax

stcd1 LIKE kna1-stcd1, "Tax Number 1

stcd2 LIKE kna1-stcd2, "Tax Number 2

mcod1 LIKE kna1-mcod1, "Search term1

mcod2 LIKE kna1-mcod2, "Search Term2

mcod3 LIKE kna1-mcod3, "Search term3

telf1 LIKE kna1-telf1, "First telephone number

telf2 LIKE kna1-telf2, "Second telephone number

telfx LIKE kna1-telfx, "Fax Number

telx1 LIKE kna1-telx1, "Telex number

telbx LIKE kna1-telbx, "Telebox number

datlt LIKE kna1-datlt, "Data commn line no.

adrnr LIKE kna1-adrnr, "Address

xcpdk LIKE kna1-xcpdk, "Indicator:one-time account?

lifnr LIKE kna1-lifnr, "Account Number of Vendor

stceg LIKE kna1-stceg, "VAT registration number

xzemp LIKE kna1-xzemp, "Ind:alt payer allwd in doc?

niels LIKE kna1-niels, "Nielsen ID

rpmkr LIKE kna1-rpmkr, "Regional market

kukla LIKE kna1-kukla, "Customer classification

umjah LIKE kna1-umjah, "Year of Given Sales

sperr LIKE kna1-sperr, "Central posting block

aufsd LIKE kna1-aufsd, "Central order block

lifsd LIKE kna1-lifsd, "Central delivery block

faksd LIKE kna1-faksd, "Central billing block

loevm LIKE kna1-loevm, "Central Deletion Flag

nodel LIKE kna1-nodel, "Central deletion block

spras LIKE kna1-spras, "Language Key

abrvw LIKE kna1-abrvw, "Usage indicator

END OF ty_kna11.

  • Start of MAA001+

Types: begin of ty_addr,

client like adrc-client,

KUNNR like kna1-kunnr,

ADDRNUMBER Like ADRC-ADDRNUMBER,

DATE_FROM Like ADRC-DATE_FROM,

NATION Like ADRC-NATION,

DATE_TO Like ADRC-DATE_TO,

TITLE Like ADRC-TITLE,

Name1 Like ADRC-Name1,

NAME2 Like ADRC-NAME2,

NAME3 Like ADRC-NAME3,

Name4 Like ADRC-Name4,

SORT1 Like ADRC-SORT1,

SORT2 Like ADRC-SORT2,

BUILDING Like ADRC-BUILDING,

ROOMNUMBER Like ADRC-ROOMNUMBER,

FLOOR Like ADRC-FLOOR,

NAME_CO Like ADRC-NAME_CO,

STR_SUPPL1 Like ADRC-STR_SUPPL1,

STR_SUPPL2 Like ADRC-STR_SUPPL2,

STREET Like ADRC-STREET,

HOUSE_NUM1 Like ADRC-HOUSE_NUM1,

HOUSE_NUM2 Like ADRC-HOUSE_NUM2,

STR_SUPPL3 Like ADRC-STR_SUPPL3,

LOCATION Like ADRC-LOCATION,

CITY2 Like ADRC-CITY2,

HOME_CITY Like ADRC-HOME_CITY,

POST_CODE1 Like ADRC-POST_CODE1,

CITY1 Like ADRC-CITY1,

REGION Like ADRC-REGION,

TIME_ZONE Like ADRC-TIME_ZONE,

PO_BOX Like ADRC-PO_BOX,

PO_BOX_NUM like ADRC-PO_BOX_NUM,

POST_CODE2 Like ADRC-POST_CODE2,

POST_CODE3 Like ADrc-POST_CODE3,

LANGU Like ADRC-LANGU,

TEL_NUMBER Like ADRC-TEL_NUMBER,

TEL_EXTENS Like ADRC-TEL_EXTENS,

FAX_NUMBER Like ADRC-FAX_NUMBER,

FAX_EXTENS Like ADRC-FAX_EXTENS,

  • SMTP_ADDR Like ADRC-SMTP_ADDR,

EXTENSION2 Like ADRC-EXTENSION2,

end of ty_addr.

types tt_addr type standard table of ty_addr.

  • End of MAA001+

TYPES: BEGIN OF ty_kna12.

INCLUDE TYPE ty_kna11.

TYPES: umsa1 LIKE kna1-umsa1, "Annual sales

umsat LIKE kna1-umsat. "Annual sales

types: END OF ty_kna12.

TYPES: BEGIN OF ty_kna1.

INCLUDE TYPE ty_kna11.

TYPES: umsa1(20) TYPE c, "Annual sales

umsat(15) TYPE c, "Annual sales

include type ty_addr. " MAA001+

Types: END OF ty_kna1.

TYPES: tt_kna1 type standard table of ty_kna1.

--


KNB1 table-Customer level data--

TYPES: BEGIN OF ty_knb11,

mandt LIKE knb1-mandt,

bukrs LIKE knb1-bukrs, "Company code

kunnr LIKE knb1-kunnr, "Customer Number 1

akont LIKE knb1-akont, "Reconc Acc in General Ledger

fdgrv LIKE knb1-fdgrv, "Planning group

altkn LIKE knb1-altkn, "Prev Master Rec Number

zuawa LIKE knb1-zuawa, "Key for sorting

blnkz LIKE knb1-blnkz, "Subsidy indicator

datlz LIKE knb1-datlz, "Date of last int cal

vzskz LIKE knb1-vzskz, "Int cal indicator

zindt LIKE knb1-zindt, "Key date of last int cal

zinrt LIKE knb1-zinrt, "Interest cal freq in months

zterm LIKE knb1-zterm, "Terms of payment key

zwels LIKE knb1-zwels, "List of the Payment Methods

xverr LIKE knb1-xverr, "Indicator:bet cust and vendor

xzver LIKE knb1-xzver, "Indicator: Rec Payment hist

togru LIKE knb1-togru, "Tolerance group

remit LIKE knb1-remit, "Next payee

lockb LIKE knb1-lockb, "Key of the Lockbox

zamib LIKE knb1-zamib, "Payment notice to acc dept

zamiv LIKE knb1-zamiv, "payment notice to sales dep

xausz LIKE knb1-xausz, "Indicator for periodic acc stm

busab LIKE knb1-busab, "Accounting clerk

kverm LIKE knb1-kverm, "Memo

sperr LIKE knb1-sperr, "Posting block for comp code

loevm LIKE knb1-loevm, "Deletion Flag for Master rec

nodel LIKE knb1-nodel, "Deletion bock for master rec

tlfxs LIKE knb1-tlfxs, "Accounting clerk's fax no

END OF ty_knb11.

TYPES: BEGIN OF ty_knb12.

INCLUDE TYPE ty_knb11.

TYPES: webtr LIKE knb1-webtr, "Bill of exchange limit

kultg LIKE knb1-kultg, "Probable check pay time

vlibb LIKE knb1-vlibb, "Amount Insured

vrszl LIKE knb1-vrszl, "Insurance lead months

vrspr LIKE knb1-vrspr, "Deductible percentage

END OF ty_knb12.

TYPES: BEGIN OF ty_knb1.

INCLUDE TYPE ty_knb11.

TYPES: webtr(20) TYPE c, "Bill of exchange limit

kultg(5) TYPE c, "Probable check pay time

vlibb(20) TYPE c, "Amount Insured

vrszl(5) TYPE c, "Insurance lead months

vrspr(5) TYPE c, "Deductible percentage

END OF ty_knb1.

TYPES: tt_knb1 type standard table of ty_knb1.

--


KNVV table-Sales level data--

TYPES: BEGIN OF ty_knvv1,

mandt LIKE knvv-mandt,

vkorg LIKE knvv-vkorg, "Sales organisation

kunnr LIKE knvv-kunnr, "Customer number

vtweg LIKE knvv-vtweg, "Distribution Channel

spart LIKE knvv-spart, "Division

versg LIKE knvv-versg, "Customer statistics grp

kdgrp LIKE knvv-kdgrp, "Customer group

bzirk LIKE knvv-bzirk, "Sales district

kalks LIKE knvv-kalks, "Pricing procedure

konda LIKE knvv-konda, "Price group (customer)

pltyp LIKE knvv-pltyp, "Price list type

waers LIKE knvv-waers, "Currency

eikto LIKE knvv-eikto, "Shipper's Acc No

awahr LIKE knvv-awahr, "Order prob of the item

begru LIKE knvv-begru, "Authorization Group

klabc LIKE knvv-klabc, "Customer classification

vkgrp LIKE knvv-vkgrp, "Sales group

vkbur LIKE knvv-vkbur, "Sales office

podkz LIKE knvv-podkz, "Relevant for POD

vsbed LIKE knvv-vsbed, "Shipping conditions

vwerk LIKE knvv-vwerk, "Delivering Plant

  • antlf LIKE knvv-antlf, "Delivering Plant (Own or ext)

autlf LIKE knvv-autlf, "Complete delivery defined

  • uebto LIKE knvv-uebto, "Overdelivery tolerance limit

  • untto LIKE knvv-untto, "Underdelivery tolerance limit

kztlf LIKE knvv-kztlf, "Partial delivery at item level

lprio LIKE knvv-lprio, "Delivery Priority

kzazu LIKE knvv-kzazu, "Order combination indicator

ktgrd LIKE knvv-ktgrd, "Account assignment group

zterm LIKE knvv-zterm, "Terms of payment

inco1 LIKE knvv-inco1, "Incoterms (part 1)

inco2 LIKE knvv-inco2, "Incoterms (part 2)

aufsd LIKE knvv-aufsd, "Customer order block

lifsd LIKE knvv-lifsd, "Customer delivery block

faksd LIKE knvv-faksd, "Billing block for customer

loevm LIKE knvv-loevm, "Deletion flag for customer

kvgr1 LIKE knvv-kvgr1, "Customer group 1

kabss LIKE knvv-kabss, "Customer payment guarantee

  • kkber LIKE knvv-kkber, "Credit control area

chspl LIKE knvv-chspl, "Batch split allowed

  • kvawt LIKE knvv-kvawt, "Value limit for cost estimate

kvgr5 LIKE knvv-kvgr5, "Customer group 5

boidt LIKE knvv-boidt, "Start of validity

prat3 LIKE knvv-prat3, "ID for product attribute

END OF ty_knvv1.

TYPES: BEGIN OF ty_knvv2.

INCLUDE TYPE ty_knvv1.

TYPES: antlf LIKE knvv-antlf, "Max No of Partial Deliveries

uebto LIKE knvv-uebto, "Overdelivery tolerance limit

untto LIKE knvv-untto, "Underdelivery tolerance limit

kkber LIKE knvv-kkber, "Credit control area

kvawt LIKE knvv-kvawt, "Value limit for cost estimate

END OF ty_knvv2.

TYPES: BEGIN OF ty_knvv.

INCLUDE TYPE ty_knvv1.

TYPES: antlf TYPE c, "Max No of Partial Deliveries

uebto(10) TYPE c, "Overdelivery tolerance limit

untto(10) TYPE c, "Underdelivery tolerance limit

kkber(5) TYPE c, "Credit control area

kvawt(20) TYPE c, "Value limit for cost estimate

END OF ty_knvv.

TYPES: tt_knvv type standard table of ty_knvv.

--


KNVP table-Partner level data--

TYPES: BEGIN OF ty_knvp,

mandt LIKE knvp-mandt,

defpa LIKE knvp-defpa, "Default partner

knref LIKE knvp-knref, "Customer description

parvw LIKE knvp-parvw, "Partner function

kunnr LIKE knvp-kunnr,

"RF02D

lifnr LIKE knvp-lifnr, "Account number of vendor

pernr LIKE knvp-pernr, "Personnel number

parza LIKE knvp-parza, "Partner counter

kunn2 LIKE knvp-kunn2, "Customer no of busines partner

vkorg LIKE knvp-vkorg, "Sales organization

vtweg LIKE knvp-vtweg, "Distribution channel

spart LIKE knvp-spart, "Division

END OF ty_knvp.

types: tt_knvp type standard table of ty_knvp.

--


KNVK table-Contact person level data--

TYPES: BEGIN OF ty_knvk,

mandt LIKE knvk-mandt,

abtnr LIKE knvk-abtnr, "Contact person

name1 LIKE knvk-name1, "Name 1 of the customer

namev LIKE knvk-namev, "First name

pafkt LIKE knvk-pafkt, "Contact person function

kunnr LIKE knvk-kunnr, "Customer number

parnr LIKE knvk-parnr,

"RF02D

abtpa LIKE knvk-abtpa, "Contact person'sdepartment

telf1 LIKE knvk-telf1, "First telephone number

anred LIKE knvk-anred, "Form of address

parla LIKE knvk-parla, "Partner language

duefl LIKE knvk-duefl, "Status of Data Transfer

loevm LIKE knvk-loevm, "Central Deletion Flag

adrnp LIKE knvk-adrnp, "Home address

prsnr LIKE knvk-prsnr, "Person number

sortl LIKE knvk-sortl, "Sort field

kzherk LIKE knvk-kzherk, "indicator for origin of CP

END OF ty_knvk.

TYPES: tt_knvk type standard table of ty_knvk.

--


STXH table-Textdata--

TYPES: BEGIN OF ty_stxh,

mandt LIKE stxh-mandt,

  • tdobject LIKE stxh-tdobject,

  • tdname LIKE stxh-tdname,

tdid LIKE stxh-tdid,

  • tdspras LIKE stxh-tdspras,

END OF ty_stxh.

TYPES: BEGIN OF ty_text,

mandt type kna1-mandt,

tdid type stxh-tdid,

kunnr type kna1-kunnr,

tline(2000),

END OF ty_text.

----


  • DATA DECLARATION OF INTERNAL TABLES

----


--


KNA1 table-Basic data--

DATA: gt_kna12 TYPE TABLE OF ty_kna12,

gs_kna12 LIKE LINE OF gt_kna12,

gt_kna1 TYPE TABLE OF ty_kna1,

gs_kna1 LIKE LINE OF gt_kna1.

data: gt_addr type table of ty_addr. " MAA001+

data: gs_addr like line of gt_addr. " MAA001+

--


KNB1 table-Customer level data--

DATA: gt_knb12 TYPE TABLE OF ty_knb12,

gs_knb12 LIKE LINE OF gt_knb12,

gt_knb1 TYPE TABLE OF ty_knb1,

gs_knb1 LIKE LINE OF gt_knb1.

--


KNVV table-Sales level data--

DATA: gt_knvv2 TYPE TABLE OF ty_knvv2,

gs_knvv2 LIKE LINE OF gt_knvv2,

gt_knvv TYPE TABLE OF ty_knvv,

gs_knvv LIKE LINE OF gt_knvv.

--


KNVP table-Partner level data--

DATA: gt_knvp TYPE TABLE OF ty_knvp,

gs_knvp LIKE LINE OF gt_knvp.

--


KNVK table-Contact person level data--

DATA: gt_knvk TYPE TABLE OF ty_knvk,

gs_knvk LIKE LINE OF gt_knvk.

--


STXH table- Text data--

DATA: gt_stxh TYPE TABLE OF ty_stxh,

gs_stxh LIKE LINE OF gt_stxh,

gt_text TYPE STANDARD TABLE OF ty_text,

gs_text LIKE LINE OF gt_text,

gv_name LIKE stxh-tdname,

gv_str(350).

DATA: gt_local LIKE tline OCCURS 0,

gs_local LIKE LINE OF gt_local.

CONSTANTS:

gv_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.

RANGES: r_kunnr for kna1-kunnr.

----


  • SELECTION SCREEN

----


--


Radio Buttons--

SELECTION-SCREEN BEGIN OF BLOCK block_rad WITH FRAME TITLE text-001.

PARAMETERS: r_phy RADIOBUTTON GROUP gp1 DEFAULT 'X' USER-COMMAND rad1,

r_loc RADIOBUTTON GROUP gp1.

*SKIP. " MAA001-

selection-screen skip. " MAA001+

SELECTION-SCREEN END OF BLOCK block_rad.

--


Selection Options--

SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-002.

select-options: s_kunnr FOR kna1-kunnr, "Customer

s_bukrs FOR knb1-bukrs, "Company Code

S_VKORG FOR KNVV-VKORG. "SALES ORG

SELECT-OPTIONS: s_ktokd FOR kna1-ktokd, "Account Group

s_erdat FOR kna1-erdat.

*SKIP. " MAA001-

selection-screen skip.

SELECTION-SCREEN END OF BLOCK block1.

--


Filenames--

SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-002.

PARAMETERS: p_file1 TYPE dxfile-filename,

p_file2 TYPE dxfile-filename,

p_file3 TYPE dxfile-filename,

p_file4 TYPE dxfile-filename,

p_file5 TYPE dxfile-filename,

p_file6 TYPE dxfile-filename,

p_file7 type dxfile-filename. " MAA001+

*SKIP. " MAA001-

selection-screen skip. " MAA001+

SELECTION-SCREEN END OF BLOCK block2.

--


Data declaration of filetypes--

DATA: gv_phy_file1 TYPE filename-fileintern,

gv_phy_file2 TYPE filename-fileintern,

gv_phy_file3 TYPE filename-fileintern,

gv_phy_file4 TYPE filename-fileintern,

gv_phy_file5 TYPE filename-fileintern,

gv_phy_file6 TYPE filename-fileintern,

gv_loc_file1 TYPE rlgrap-filename,

gv_loc_file2 TYPE rlgrap-filename,

gv_loc_file3 TYPE rlgrap-filename,

gv_loc_file4 TYPE rlgrap-filename,

gv_loc_file5 TYPE rlgrap-filename,

gv_loc_file6 TYPE rlgrap-filename.

data: gv_loc_file7 type rlgrap-filename. " MAA001+

AT SELECTION-SCREEN ON block BLOCK1.

  • Start of MAA001+

*Select single * from kna1

*where kunnr IN s_kunnr

  • and ktokd IN s_ktokd

  • and erdat IN s_erdat.

*

  • IF sy-subrc <> 0.

  • MESSAGE e037.

  • ELSE.

  • SELECT SINGLE * from knb1

  • where bukrs IN s_bukrs.

  • IF sy-subrc <> 0.

  • MESSAGE e037.

  • ENDIF.

  • ENDIF.

  • End of MAA001+

*AT SELECTION-SCREEN ON s_ktokd.

  • SELECT single * FROM kna1 WHERE ktokd IN s_ktokd.

  • IF sy-subrc <> 0.

  • MESSAGE e037.

  • ENDIF.

*

*AT SELECTION-SCREEN ON s_erdat.

  • SELECT single * FROM kna1 WHERE erdat IN s_erdat.

  • IF sy-subrc <> 0.

  • MESSAGE e037.

  • ENDIF.

AT SELECTION-SCREEN.

  • Check for radio-button selection

IF sy-ucomm = 'RAD1'.

CLEAR: p_file1,

p_file2,

p_file3,

p_file4,

p_file5,

p_file6,

p_file7. " MAA001+

  • EXIT. "hnk-

ELSE. "hnk+

*hnk+

  • Check for blank entry in filename.

PERFORM check_filename_initial.

*hnk+

ENDIF.

--


Selection Screen Validations--

*hnk-

    • Check for blank entry in filename.

  • PERFORM check_filename_initial.

*hnk-

  • Check for valid path of filename.

IF r_phy = 'X'.

PERFORM check_file.

ENDIF.

IF r_loc = 'X'.

IF NOT P_FILE1 IS INITIAL.

PERFORM CHECK_FILE_LOC USING P_FILE1

CHANGING GV_LOC_FILE1.

ENDIF.

IF NOT P_FILE2 IS INITIAL.

PERFORM CHECK_FILE_LOC USING P_FILE2

CHANGING GV_LOC_FILE2.

ENDIF.

IF NOT P_FILE3 IS INITIAL.

PERFORM CHECK_FILE_LOC USING P_FILE3

CHANGING GV_LOC_FILE3.

ENDIF.

IF NOT P_FILE4 IS INITIAL.

PERFORM CHECK_FILE_LOC USING P_FILE4

CHANGING GV_LOC_FILE4.

ENDIF.

IF NOT P_FILE5 IS INITIAL.

PERFORM CHECK_FILE_LOC USING P_FILE5

CHANGING GV_LOC_FILE5.

ENDIF.

IF NOT P_FILE6 IS INITIAL.

PERFORM CHECK_FILE_LOC USING P_FILE6

CHANGING GV_LOC_FILE6.

ENDIF.

IF NOT P_FILE7 IS INITIAL. "MAA001+

PERFORM CHECK_FILE_LOC USING P_FILE7 "MAA001+

CHANGING GV_LOC_FILE7. "MAA001+

ENDIF. "MAA001+

ENDIF.

  • Start of MAA001+

if not p_file1 is initial and

p_file7 is initial.

message e999 with 'Enter Customer Address Download file name.'.

endif.

if p_file1 is initial and

not p_file7 is initial.

message e999 with 'Enter Customer Basic Data download file name.'.

endif.

  • end of MAA001+

START-OF-SELECTION.

--


General Data--

PERFORM basic_data changing gt_kna1.

PERFORM comp_data using gt_kna1 changing gt_knb1.

PERFORM sales_data using gt_kna1 changing gt_knvv.

perform partner_data using gt_kna1 changing gt_knvp.

perform contact_data using gt_kna1 changing gt_knvk.

perform address_data using gt_kna1 changing gt_addr. " MAA001+

--


Text Data--

IF NOT p_file6 IS INITIAL.

PERFORM text_data.

ENDIF.

--


Download Data--

IF r_phy = 'X'.

PERFORM physical_download.

ELSEIF r_loc = 'X'.

PERFORM local_download.

ENDIF.

--


Statistics Of Data Downloads--

PERFORM get_statistics.

&----


*& Form f4_help_for_local_file

&----


  • text

----


  • <--P_P_FNAM4 text

----


FORM f4_help_for_local_file CHANGING ev_fnam.

DATA:

lt_file_table TYPE filetable,

ls_file_table LIKE LINE OF lt_file_table,

l_rc TYPE i,

lv_pcdsn LIKE cffile-filename.

REFRESH lt_file_table.

CLEAR ls_file_table.

CALL METHOD cl_gui_frontend_services=>file_open_dialog

CHANGING

file_table = lt_file_table

rc = l_rc.

READ TABLE lt_file_table INTO ls_file_table INDEX 1.

lv_pcdsn = ls_file_table-filename.

MOVE lv_pcdsn TO ev_fnam.

ENDFORM. " f4_help_for_local_file

&----


*& Form check_filename_initial

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM check_filename_initial.

IF p_file1 IS INITIAL AND

p_file2 IS INITIAL AND

p_file3 IS INITIAL AND

p_file4 IS INITIAL AND

p_file5 IS INITIAL AND

p_file6 IS INITIAL.

MESSAGE e034.

ENDIF.

ENDFORM. " check_filename_initial

&----


*& Form check_file

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM check_file.

*HNK-

  • define to_check_file.

  • WRITE &1 TO &2.

*

  • OPEN DATASET &2 IN TEXT MODE FOR OUTPUT ENCODING DEFAULT.

  • IF sy-subrc <> 0.

  • MESSAGE e028 WITH &2.

  • ENDIF.

  • END-OF-DEFINITION.

*

  • IF NOT p_file1 IS INITIAL.

*--


Validate General File--

  • to_check_file p_file1

  • gv_phy_file1.

  • ENDIF.

  • IF NOT p_file2 IS INITIAL.

*--


Validate Company File--

  • to_check_file p_file2

  • gv_phy_file2.

  • ENDIF.

  • IF NOT p_file3 IS INITIAL.

*--


Validate Sales File--

  • to_check_file p_file3

  • gv_phy_file3.

  • ENDIF.

  • IF NOT p_file4 IS INITIAL.

*--


Validate Partner File--

  • to_check_file p_file4

  • gv_phy_file4.

  • ENDIF.

  • IF NOT p_file5 IS INITIAL.

*--


Validate Contact File--

  • to_check_file p_file5

  • gv_phy_file5.

  • ENDIF.

  • IF NOT p_file6 IS INITIAL.

*--


Validate Text File--

  • to_check_file p_file6

  • gv_phy_file6.

  • ENDIF.

*HNK-

ENDFORM. " check_file

**&----


*

**& Form check_file_loc

**&----


*

    • text

**----


*

    • --> p1 text

    • <-- p2 text

**----


*

*FORM check_file_loc.

*

  • DATA: lv_f1(200) TYPE c,

  • lv_f2(200) TYPE c,

  • lv_offset TYPE c VALUE ' ',

  • lv_len(5) TYPE p,

  • lv_return TYPE i.

*

  • define local_check.

  • WRITE &1 TO &2.

*

  • SPLIT &1 AT '.' INTO lv_f1 lv_f2.

*

  • lv_len = strlen( lv_f1 ) - 1.

*

  • WHILE lv_offset <> '\'.

  • lv_offset = lv_f1+lv_len(1).

  • lv_f1+lv_len(1) = ' '.

  • lv_len = lv_len - 1.

  • ENDWHILE.

*

  • CALL FUNCTION 'WS_QUERY'

  • EXPORTING

  • filename = lv_f1

  • query = 'DE'

  • IMPORTING

  • return = lv_return

  • EXCEPTIONS

  • inv_query = 1

  • no_batch = 2

  • frontend_error = 3

  • OTHERS = 4.

  • IF lv_return <> 1.

  • MESSAGE e050 WITH lv_f1.

  • ENDIF.

  • clear: lv_f1,

  • lv_f2,

  • lv_offset,

  • lv_len,

  • lv_return.

*

  • end-of-definition.

*

*--


Validate General File--

  • local_check p_file1

  • gv_loc_file1.

*

*--


Validate Company File--

  • local_check p_file2

  • gv_loc_file2.

*

*--


Validate Sales File--

  • local_check p_file3

  • gv_loc_file3.

*

*--


Validate Partner File--

  • local_check p_file4

  • gv_loc_file4.

*

*--


Validate Contact File--

  • local_check p_file5

  • gv_loc_file5.

*

*--


Validate Text File--

  • local_check p_file6

  • gv_loc_file6.

*

*ENDFORM. " check_file_loc

&----


*& Form text_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM text_data.

data: gs_text like line of gt_text,

lv_tdname like stxh-tdname.

SELECT distinct "tdname

mandt tdid

FROM stxh INTO CORRESPONDING FIELDS OF TABLE gt_stxh WHERE tdobject =

'KNA1' AND

tdid IN ('0001','0002','0003','0004','0005','0006','0007','0008',

'0009','0010','0011','0044','Y001',

'Y003','Y004').

  • CHECK NOT gt_stxh[] IS INITIAL.

LOOP AT gt_kna1 into gs_kna1.

LOOP AT gt_stxh INTO gs_stxh.

  • call function 'CONVERSION_EXIT_ALPHA_INPUT'

  • exporting

  • input = gs_stxh-tdname

  • importing

  • output = gv_name.

*

move gs_kna1-kunnr to lv_tdname.

CALL FUNCTION 'READ_TEXT'

EXPORTING

  • client = sy-mandt

id = gs_stxh-tdid

language = 'E'

name = lv_tdname

object = 'KNA1'

TABLES

lines = gt_local

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 <> 0.

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

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

CONTINUE.

ENDIF.

LOOP AT gt_local INTO gs_local.

CONCATENATE gv_str gs_local-tdline INTO gv_str SEPARATED BY ' '.

CLEAR gs_local.

ENDLOOP.

gs_text-mandt = gs_stxh-mandt.

gs_text-tdid = gs_stxh-tdid.

gs_text-kunnr = gs_kna1-kunnr.

gs_text-tline = gv_str.

append gs_text to gt_text.

CLEAR gv_str.

ENDLOOP.

ENDLOOP.

ENDFORM. " text_data

&----


*& Form local_download

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM local_download .

DEFINE download_to_local.

if not &1 is initial.

if not &2 is initial.

call function 'WS_DOWNLOAD'

EXPORTING

filename = &2

filetype = 'ASC'

TABLES

data_tab = &3

EXCEPTIONS

file_open_error = 1

file_write_error = 2

invalid_filesize = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

others = 10.

if sy-subrc <> 0.

message e028 with &2.

endif.

endif.

endif.

END-OF-DEFINITION.

--


Download Basic Data--

download_to_local gt_kna1[]

p_file1

gt_kna1.

--


Download Company Data--

download_to_local gt_knb1[]

p_file2

gt_knb1.

--


Download Sales Data--

download_to_local gt_knvv[]

p_file3

gt_knvv.

--


Download Partner Data--

download_to_local gt_knvp[]

p_file4

gt_knvp.

--


Download Contact Person Data--

download_to_local gt_knvk[]

p_file5

gt_knvk.

--


Download Text Data--

download_to_local gt_text[]

p_file6

gt_text.

  • Start of MAA001+

--


Download Address Data--

download_to_local gt_addr[]

p_file7

gt_addr.

  • End of MAA001+

.

ENDFORM. "local_download

&----


*& Form physical_download

&----


  • --> p1 text

  • <-- p2 text

----


----


FORM physical_download.

data lv_str(2100) type c. "HNK+

--


Download Basic Data--

IF NOT p_file1 IS INITIAL.

OPEN DATASET p_file1 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc <> 0.

MESSAGE e020(zj) WITH 'Basicdata'.

ELSE.

*HNK+

IF gt_kna1[] IS INITIAL.

message i020(zj) with 'Basicdata' into gv_str.

transfer gv_str to p_file1.

clear gv_str.

ENDIF.

*HNK+

LOOP AT gt_kna1 INTO gs_kna1.

  • IF NOT gt_kna1[] IS INITIAL. MAA001-

CONCATENATE gs_kna1-mandt " MAA001+

gs_kna1-ktokd gs_kna1-kunnr gs_kna1-name1

gs_kna1-anred gs_kna1-sortl gs_kna1-name2

gs_kna1-name3 gs_kna1-name4 gs_kna1-pstlz

gs_kna1-ort01 gs_kna1-stras gs_kna1-land1

gs_kna1-ort02 gs_kna1-regio gs_kna1-pfach

gs_kna1-pstl2 gs_kna1-lzone "gs_kna1-txjcd

gs_kna1-stcd1 gs_kna1-stcd2 gs_kna1-mcod1

gs_kna1-mcod2 gs_kna1-mcod3 gs_kna1-telf1

gs_kna1-telf2 gs_kna1-telfx gs_kna1-telx1

gs_kna1-telbx gs_kna1-datlt gs_kna1-adrnr

gs_kna1-xcpdk gs_kna1-lifnr gs_kna1-stceg

gs_kna1-xzemp gs_kna1-niels " MAA001+

gs_kna1-rpmkr gs_kna1-kukla gs_kna1-umjah

gs_kna1-sperr gs_kna1-aufsd

  • gs_kna1-umsa1 gs_kna1-sperr gs_kna1-aufsd

gs_kna1-lifsd gs_kna1-faksd gs_kna1-loevm

gs_kna1-nodel gs_kna1-spras

gs_kna1-abrvw gs_kna1-umsa1 " MAA001+

gs_kna1-umsat

  • gs_kna1-abrvw " MAA001-

  • gs_kna1-xzemp gs_kna1-niels " MAA001-

INTO gv_str SEPARATED BY gv_tab.

TRANSFER gv_str TO p_file1.

IF sy-subrc <> 0.

MESSAGE e021(zj) WITH 'Basicdata'.

ENDIF.

clear gv_str. "HNK+

  • Code commented Start of MAA001-

  • ELSE.

  • MESSAGE e020(zj) WITH 'Basicdata'.

  • ENDIF.

  • Code commented End of MAA001-

ENDLOOP.

CLOSE DATASET p_file1.

ENDIF.

ENDIF.

  • Start of MAA001+

if not p_file7 is initial.

open dataset p_file7 for output in text mode encoding default.

if sy-subrc <> 0.

refresh gt_addr.

else.

if gt_addr[] is initial.

move 'No address data found' to gv_str.

transfer gv_str to p_file7.

clear gv_str.

endif.

loop at gt_addr into gs_addr.

concatenate gs_addr-client

gs_addr-KUNNR gs_addr-ADDRNUMBER

gs_addr-DATE_FROM "gs_addr-DATE_FROM

gs_addr-NATION gs_addr-DATE_TO

gs_addr-TITLE gs_addr-Name1

gs_addr-NAME2 gs_addr-NAME3

gs_addr-Name4 gs_addr-SORT1

gs_addr-SORT2 gs_addr-BUILDING

gs_addr-ROOMNUMBER gs_addr-FLOOR

gs_addr-NAME_CO gs_addr-STR_SUPPL1

gs_addr-STR_SUPPL2 gs_addr-STREET

gs_addr-HOUSE_NUM1 gs_addr-HOUSE_NUM2

gs_addr-STR_SUPPL3 gs_addr-LOCATION

gs_addr-CITY2 gs_addr-HOME_CITY

gs_addr-POST_CODE1 gs_addr-CITY1

gs_addr-REGION gs_addr-TIME_ZONE

gs_addr-PO_BOX gs_addr-PO_BOX_NUM

gs_addr-POST_CODE2 gs_addr-POST_CODE3

gs_addr-LANGU gs_addr-TEL_NUMBER

gs_addr-TEL_EXTENS gs_addr-FAX_NUMBER

gs_addr-FAX_EXTENS gs_addr-EXTENSION2

INTO gv_str SEPARATED BY gv_tab.

TRANSFER gv_str TO p_file7.

if sy-subrc ne 0.

exit.

endif.

endloop.

CLOSE DATASET p_file7.

endif.

endif.

  • End of MAA001+

--


Download Company Data--

IF NOT p_file2 IS INITIAL.

OPEN DATASET p_file2 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc <> 0.

MESSAGE e020(zj) WITH 'Company Level Data'.

ELSE.

IF NOT gt_knb1[] IS INITIAL.

*HNK+

MESSAGE e020(zj) WITH 'Company Level Data' into gv_str.

transfer gv_str to p_file2.

clear gv_str.

ENDIF.

*HNK+

LOOP AT gt_knb1 INTO gs_knb1.

CONCATENATE gs_knb1-mandt

gs_knb1-bukrs gs_knb1-kunnr gs_knb1-akont

gs_knb1-fdgrv gs_knb1-altkn gs_knb1-zuawa

gs_knb1-blnkz gs_knb1-datlz gs_knb1-vzskz

gs_knb1-zindt gs_knb1-zinrt gs_knb1-zterm

gs_knb1-zwels gs_knb1-xverr gs_knb1-xzver

gs_knb1-togru gs_knb1-remit gs_knb1-lockb

gs_knb1-zamib gs_knb1-zamiv gs_knb1-xausz

gs_knb1-busab gs_knb1-kverm gs_knb1-sperr

gs_knb1-loevm gs_knb1-nodel gs_knb1-tlfxs

gs_knb1-webtr gs_knb1-kultg gs_knb1-vlibb

gs_knb1-vrszl gs_knb1-vrspr

INTO gv_str SEPARATED BY gv_tab.

TRANSFER gv_str TO p_file2.

IF sy-subrc <> 0.

MESSAGE e021(zj) WITH 'Company Level Data'.

ENDIF.

clear gv_str. "HNK+

ENDLOOP.

  • ENDIF. "HNK-

CLOSE DATASET p_file2.

ENDIF.

ENDIF.

--


Download Sales Data--

IF NOT p_file3 IS INITIAL.

OPEN DATASET p_file3 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc <> 0.

MESSAGE e020(zj) WITH 'Sales Level Data'.

ELSE.

IF NOT gt_knvv[] IS INITIAL.

*HNK+

MESSAGE e020(zj) WITH 'Sales Level Data' into gv_str.

transfer gv_str to p_file3.

clear gv_str.

ENDIF.

*HNK+

LOOP AT gt_knvv INTO gs_knvv.

CONCATENATE gs_knvv-mandt

gs_knvv-vkorg gs_knvv-kunnr gs_knvv-vtweg

gs_knvv-spart gs_knvv-versg gs_knvv-kdgrp

gs_knvv-bzirk gs_knvv-kalks gs_knvv-konda

gs_knvv-pltyp gs_knvv-waers gs_knvv-eikto

gs_knvv-awahr gs_knvv-begru gs_knvv-klabc

gs_knvv-vkgrp gs_knvv-vkbur gs_knvv-podkz

gs_knvv-vsbed gs_knvv-vwerk gs_knvv-autlf

gs_knvv-kztlf gs_knvv-lprio gs_knvv-kzazu

gs_knvv-ktgrd gs_knvv-zterm gs_knvv-inco1

gs_knvv-inco2 gs_knvv-aufsd gs_knvv-lifsd

gs_knvv-faksd gs_knvv-loevm gs_knvv-kvgr1

gs_knvv-kabss gs_knvv-chspl gs_knvv-kvgr5

gs_knvv-boidt gs_knvv-prat3 gs_knvv-antlf

gs_knvv-uebto gs_knvv-untto gs_knvv-kkber

gs_knvv-kvawt

INTO gv_str SEPARATED BY gv_tab.

TRANSFER gv_str TO p_file3.

IF sy-subrc <> 0.

MESSAGE e021(zj) WITH 'Sales Level Data'.

ENDIF.

clear gv_str. "HNK+

ENDLOOP.

  • ENDIF. "HNK-

CLOSE DATASET p_file3.

ENDIF.

ENDIF.

--


Download Partner Data--

IF NOT p_file4 IS INITIAL.

OPEN DATASET p_file4 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc <> 0.

MESSAGE e020(zj) WITH 'Partner Function Data'.

ELSE.

IF NOT gt_knvp[] IS INITIAL.

*HNK+

MESSAGE e020(zj) WITH 'Partner Function Data' into gv_str.

transfer gv_str to p_file4.

clear gv_str.

ENDIF.

*HNK+

LOOP AT gt_knvp INTO gs_knvp.

CONCATENATE gs_knvp-mandt

gs_knvp-defpa gs_knvp-knref gs_knvp-parvw

gs_knvp-kunnr gs_knvp-lifnr gs_knvp-pernr

gs_knvp-parza gs_knvp-kunn2 gs_knvp-vkorg

gs_knvp-vtweg gs_knvp-spart

INTO gv_str SEPARATED BY gv_tab.

TRANSFER gv_str TO p_file4.

IF sy-subrc <> 0.

MESSAGE e021(zj) WITH 'Partner Function Data'.

ENDIF.

clear gv_str. "HNK+

ENDLOOP.

  • ENDIF.

CLOSE DATASET p_file4.

ENDIF.

ENDIF.

--


Download Contact Person Data--

IF NOT p_file5 IS INITIAL.

OPEN DATASET p_file5 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc <> 0.

MESSAGE e020(zj) WITH 'Contact Person Data'.

ELSE.

IF NOT gt_knvk[] IS INITIAL.

*HNK+

MESSAGE e020(zj) WITH 'Contact Person Data' into gv_str.

transfer gv_str to p_file5.

clear gv_str.

ENDIF.

*HNK+

LOOP AT gt_knvk INTO gs_knvk.

CONCATENATE gs_knvk-mandt

gs_knvk-abtnr gs_knvk-name1 gs_knvk-namev

gs_knvk-pafkt gs_knvk-kunnr gs_knvk-parnr

gs_knvk-abtpa gs_knvk-telf1 gs_knvk-anred

gs_knvk-parla gs_knvk-duefl gs_knvk-loevm

gs_knvk-adrnp gs_knvk-prsnr gs_knvk-sortl

gs_knvk-kzherk

INTO gv_str SEPARATED BY gv_tab.

TRANSFER gv_str TO p_file5.

IF sy-subrc <> 0.

MESSAGE e021(zj) WITH 'Contact Person Data'.

ENDIF.

clear gv_str. "HNK+

ENDLOOP.

  • ENDIF. "HNK-

CLOSE DATASET p_file5.

ENDIF.

ENDIF.

--


Download Text Data--

IF NOT p_file6 IS INITIAL.

OPEN DATASET p_file6 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc <> 0.

MESSAGE e020(zj) WITH 'Text Data'.

ELSE.

IF NOT gt_text[] IS INITIAL.

*HNK+

MESSAGE e020(zj) WITH 'Text Data' into gv_str.

transfer gv_str to p_file6.

clear gv_str.

ENDIF.

*HNK+

LOOP AT gt_text INTO gs_text.

CONCATENATE gs_text-mandt gs_text-tdid

gs_text-kunnr gs_text-tline

INTO lv_str SEPARATED BY gv_tab.

TRANSFER lv_str TO p_file6.

IF sy-subrc <> 0.

MESSAGE e021(zj) WITH 'Text Data'.

ENDIF.

clear gv_str. "HNK+

ENDLOOP.

  • ENDIF. "HNK-

CLOSE DATASET p_file6.

ENDIF.

ENDIF.

ENDFORM. " physical_download

&----


*& Form get_statistics

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_statistics.

DATA: lv_linecnt TYPE i.

SKIP.

WRITE: /10 sy-vline,

10 sy-uline(85),

95 sy-vline.

write: /10 sy-vline,

11(84) 'Record Count' centered color col_group ,

95 sy-vline.

WRITE: /10 sy-vline,

10 sy-uline(85),

95 sy-vline.

IF NOT p_file1 IS INITIAL. " and not s_kunnr[] is initial.

DESCRIBE TABLE gt_kna1 LINES lv_linecnt.

WRITE: /10 sy-vline ,

15 'The number of Customer Master Basicdata Records is : ' ,

80 lv_linecnt ,

95 sy-vline.

CLEAR lv_linecnt.

ENDIF.

IF NOT p_file2 IS INITIAL. " and not s_bukrs[] is initial.

DESCRIBE TABLE gt_knb1 LINES lv_linecnt.

WRITE: /10 sy-vline ,

15 'The number of Customer Master Company Records is : ' ,

80 lv_linecnt ,

95 sy-vline.

CLEAR lv_linecnt.

ENDIF.

IF NOT p_file3 IS INITIAL. " and not s_vkorg[] is initial.

DESCRIBE TABLE gt_knvv LINES lv_linecnt.

WRITE: /10 sy-vline ,

15 'The number of Customer Master Sales Records is : ' ,

80 lv_linecnt ,

95 sy-vline.

CLEAR lv_linecnt.

ENDIF.

IF NOT p_file4 IS INITIAL. "and not gt_knvp[] is initial.

DESCRIBE TABLE gt_knvp LINES lv_linecnt.

WRITE: /10 sy-vline ,

15 'The number of Customer Master Partner Records is : ' ,

80 lv_linecnt ,

95 sy-vline.

CLEAR lv_linecnt.

ENDIF.

IF NOT p_file5 IS INITIAL. "and not gt_knvk[] is initial.

DESCRIBE TABLE gt_knvk LINES lv_linecnt.

WRITE: /10 sy-vline ,

15 'The number of Customer Master Contacts Records is : ' ,

80 lv_linecnt ,

95 sy-vline.

CLEAR lv_linecnt.

ENDIF.

IF NOT p_file6 IS INITIAL. "and not gt_text[] is initial.

DESCRIBE TABLE gt_text LINES lv_linecnt.

WRITE: /10 sy-vline ,

15 'The number of Customer Master Text Records is : ' ,

80 lv_linecnt ,

95 sy-vline.

CLEAR lv_linecnt.

ENDIF.

  • Start of MAA001+

if not p_file7 is initial. " and not gt_addr[] is initial.

describe table gt_addr lines lv_linecnt.

WRITE: /10 sy-vline ,

15 'The number of Customer Master Address Data Records is : ' ,

80 lv_linecnt ,

95 sy-vline.

CLEAR lv_linecnt.

endif.

  • End of MAA001+

  • Start of Drara+

write: /10 sy-vline,

10 sy-uline(85),

95 sy-vline.

skip.

  • End of Drara+

  • WRITE: /10 sy-vline, " MAA001-

  • 10 sy-uline(85), " MAA001-

  • 95 sy-vline. " MAA001-

  • SKIP. " MAA001-

  • Start of MAA001+

skip.

write: /10 sy-vline,

10 sy-uline(135),

145 sy-vline.

write: /10 sy-vline,

11(134) 'Download Filename(s)' centered color col_group ,

145 sy-vline.

write: /10 sy-vline,

10 sy-uline(135),

145 sy-vline.

if not p_file1 is initial and not gt_kna1[] is initial.

write: /10 sy-vline ,

15 'The Filename of Customer Master General Records : ' ,

70 p_file1,

145 sy-vline.

endif.

if not p_file2 is initial and not gt_knb1[] is initial.

write: /10 sy-vline ,

15 'The Filename of Customer Master Company Data : ' ,

70 p_file2,

145 sy-vline.

endif.

if not p_file3 is initial and not gt_knvv[] is initial.

write: /10 sy-vline ,

15 'The Filename of Customer Master Sales Data : ' ,

70 p_file3,

145 sy-vline.

endif.

if not p_file4 is initial and not gt_knvp[] is initial.

write: /10 sy-vline ,

15 'The Filename of Customer Master Partner Data : ' ,

70 p_file4,

145 sy-vline.

endif.

if not p_file5 is initial and not gt_knvk[] is initial.

write: /10 sy-vline ,

15 'The Filename of Customer Master Contact person Data : ' ,

70 p_file5,

145 sy-vline.

endif.

if not p_file6 is initial and not gt_text[] is initial.

write: /10 sy-vline ,

15 'The Filename of Customer Master Text Data : ' ,

70 p_file6,

145 sy-vline.

endif.

if not p_file7 is initial and not gt_addr[] is initial.

write: /10 sy-vline ,

15 'The Filename of Customer Master Address Data : ' ,

70 p_file7,

145 sy-vline.

endif.

  • End of MAA001+

  • Start of Drara+

write: /10 sy-vline,

10 sy-uline(135),

145 sy-vline.

skip.

  • End of Drara+

ENDFORM. " get_statistics

&----


*& Form basic_data

&----


  • text

----


  • <--P_GT_KNA12 text

----


FORM basic_data CHANGING ET_KNA1 type tt_kna1.

SELECT mandt ktokd kunnr name1 anred sortl name2

name3 name4 pstlz ort01 stras land1

ort02 regio pfach pstl2 lzone "txjcd

stcd1 stcd2 mcod1 mcod2 mcod3 telf1

telf2 telfx telx1 telbx datlt adrnr

xcpdk lifnr stceg rpmkr kukla umjah

umsa1 sperr aufsd lifsd faksd loevm

nodel spras umsat abrvw xzemp niels

FROM kna1 INTO CORRESPONDING FIELDS OF TABLE gt_kna12

where kunnr In s_kunnr

and ktokd in s_ktokd

and erdat in s_erdat

and loevm NE 'X'.

IF sy-subrc <> 0.

  • MESSAGE e037(zj).

ELSE.

LOOP AT gt_kna12 INTO gs_kna12.

MOVE-CORRESPONDING gs_kna12 TO gs_kna1.

APPEND gs_kna1 TO et_kna1.

clear gs_kna1.

ENDLOOP.

free gt_kna12[].

ENDIF.

ENDFORM. " basic_data

&----


*& Form comp_data

&----


  • text

----


  • -->P_GT_KNA1 text

  • <--P_GT_KNB1 text

----


FORM comp_data USING IT_KNA1 type tt_kna1

CHANGING ET_KNB1 type tt_knb1.

  • CHECK NOT p_file2 IS INITIAL. "hnk-

  • check NOT it_kna1 is initial. " MAA001- Correct

check not it_kna1[] is initial. " MAA001+ But for safety

SELECT mandt bukrs kunnr akont fdgrv altkn zuawa

blnkz datlz vzskz zindt zinrt zterm

zwels xverr xzver togru webtr kultg

remit lockb zamib zamiv xausz busab

kverm sperr loevm nodel vlibb vrszl

vrspr tlfxs

FROM knb1 INTO CORRESPONDING FIELDS OF TABLE gt_knb12

for all entries in it_kna1

WHERE kunnr = it_kna1-kunnr

and bukrs in s_bukrs

and loevm ne 'X'. "MAA001+

IF sy-subrc <> 0.

  • MESSAGE e037(zj).

if NOT s_bukrs[] is initial.

refresh gt_kna1[].

endif.

ELSE.

LOOP AT gt_knb12 INTO gs_knb12.

MOVE-CORRESPONDING gs_knb12 TO gs_knb1.

APPEND gs_knb1 TO et_knb1.

*hnk+

r_kunnr-sign = 'I'.

r_kunnr-option = 'EQ'.

r_kunnr-low = gs_knb1-kunnr.

append r_kunnr.

*hnk+

clear gs_knb1.

ENDLOOP.

if NOT s_bukrs[] is initial.

delete gt_kna1 where NOT kunnr IN r_KUNNR. "hnk+

endif.

free: gt_knb12[].

REFRESH R_KUNNR.

clear r_kunnr.

ENDIF.

ENDFORM. " comp_data

&----


*& Form sales_data

&----


  • text

----


  • -->P_GT_KNA1 text

  • <--P_GT_KNVV text

----


FORM sales_data USING IT_KNA1 type tt_kna1

CHANGING ET_KNVV type tt_knvv.

  • CHECK NOT p_file3 IS INITIAL. "HNK-

  • check NOT it_kna1 is initial. " MAA001- Correct

check not it_kna1[] is initial. " MAA001+ But for safety

SELECT mandt vkorg kunnr vtweg spart versg kdgrp

bzirk kalks konda pltyp waers eikto

awahr begru klabc vkgrp vkbur podkz

vsbed vwerk antlf autlf uebto untto

kztlf lprio kzazu ktgrd zterm inco1

inco2 aufsd lifsd faksd loevm kvgr1

kabss kkber chspl kvawt kvgr5 boidt

prat3

FROM knvv INTO CORRESPONDING FIELDS OF TABLE gt_knvv2

for all entries in it_kna1

WHERE kunnr = it_kna1-kunnr

AND VKORG in S_VKORG

and loevm ne 'X'. " MAA001+

IF sy-subrc <> 0.

if NOT S_VKORG[] is initial.

refresh gt_kna1[].

endif.

  • MESSAGE e037(zj).

ELSE.

LOOP AT gt_knvv2 INTO gs_knvv2.

MOVE-CORRESPONDING gs_knvv2 TO gs_knvv.

APPEND gs_knvv TO et_knvv.

*hnk+

r_kunnr-sign = 'I'.

r_kunnr-option = 'EQ'.

r_kunnr-low = gs_knvv-kunnr.

append r_kunnr.

*hnk+

clear gs_knvv.

ENDLOOP.

if NOT s_vkorg IS initial.

delete gt_kna1 where NOT kunnr IN r_KUNNR. "hnk+

endif.

free gt_knvv2[].

free R_KUNNR[].

ENDIF.

ENDFORM. " sales_data

&----


*& Form partner_data

&----


  • text

----


  • -->P_GT_KNA1 text

  • <--P_GT_KNVP text

----


FORM partner_data USING IT_KNA1 type tt_kna1

CHANGING ET_KNVP type tt_knvp.

CHECK NOT p_file4 IS INITIAL.

  • check NOT it_kna1 is initial. " MAA001- Correct

check not it_kna1[] is initial. " MAA001+ But for safety

SELECT mandt defpa knref parvw kunnr lifnr spart

knref pernr vtweg parza kunn2 vkorg

FROM knvp INTO CORRESPONDING FIELDS OF TABLE et_knvp

for all entries in it_kna1

WHERE kunnr = it_kna1-kunnr

and vkorg IN s_vkorg.

ENDFORM. " partner_data

&----


*& Form contact_data

&----


  • text

----


  • -->P_GT_KNA1 text

  • <--P_GT_KNVK text

----


FORM contact_data USING IT_KNA1 type tt_kna1

CHANGING ET_KNVK type tt_knvk.

CHECK NOT p_file5 IS INITIAL. "hnk-

  • check NOT it_kna1 is initial. " MAA001- Correct

check not it_kna1[] is initial. " MAA001+ But for safety

SELECT mandt abtnr name1 namev pafkt kunnr parnr

abtpa telf1 anred parla duefl loevm

adrnp prsnr sortl kzherk

FROM knvk INTO CORRESPONDING FIELDS OF TABLE et_knvk

for all entries in it_kna1

WHERE kunnr = it_kna1-kunnr.

ENDFORM. " contact_data

&----


*& Form check_file_loc

&----


  • text

----


  • -->P_P_DW_BAS text

  • <--P_GV_LOC_FILE1 text

----


FORM CHECK_FILE_LOC USING LV_FILENAME LIKE P_FILE1

CHANGING LV_LOC_FILE LIKE GV_LOC_FILE1.

DATA: LV_F1(200) TYPE C,

LV_F2(200) TYPE C,

LV_OFFSET TYPE C VALUE ' ',

LV_LEN(5) TYPE P,

LV_RETURN TYPE I.

WRITE LV_FILENAME TO LV_LOC_FILE.

SPLIT LV_FILENAME AT '.' INTO LV_F1 LV_F2.

SEARCH LV_FILENAME FOR '\'.

IF SY-SUBRC <> 0.

  • MESSAGE E050 WITH LV_F1. " MAA001-

MESSAGE E061 WITH LV_F1. " MAA001+

ENDIF.

LV_LEN = STRLEN( LV_F1 ) - 1.

WHILE LV_OFFSET <> '\'.

LV_OFFSET = LV_F1+LV_LEN(1).

LV_F1+LV_LEN(1) = ' '.

LV_LEN = LV_LEN - 1.

ENDWHILE.

CALL FUNCTION 'WS_QUERY'

EXPORTING

FILENAME = LV_F1

QUERY = 'DE'

IMPORTING

RETURN = LV_RETURN

EXCEPTIONS

INV_QUERY = 1

NO_BATCH = 2

FRONTEND_ERROR = 3

OTHERS = 4.

IF LV_RETURN <> 1.

MESSAGE E050 WITH LV_F1.

ENDIF.

ENDFORM. " check_file_loc

&----


*& Form address_data

&----


  • text

----


  • -->P_GT_KNA1 text

  • <--P_GT_ADDR text

----


FORM address_data USING in_it_KNA1 type tt_kna1

CHANGING out_it_addr type tt_addr.

data: l_str_kna1 type ty_kna1.

data: l_str_addr type ty_addr.

data: lit_addr type tt_addr.

data: l_tabix type sy-tabix.

check not in_it_kna1[] is initial.

select client ADDRNUMBER DATE_FROM NATION

DATE_TO TITLE Name1

NAME2 NAME3 Name4

SORT1 SORT2 BUILDING

ROOMNUMBER FLOOR NAME_CO

STR_SUPPL1 STR_SUPPL2 STREET

HOUSE_NUM1 HOUSE_NUM2 STR_SUPPL3

LOCATION CITY2 HOME_CITY

POST_CODE1 CITY1 REGION

TIME_ZONE PO_BOX PO_BOX_NUM

POST_CODE2 POST_CODE3 LANGU

TEL_NUMBER TEL_EXTENS FAX_NUMBER

FAX_EXTENS EXTENSION2

from adrc

INTO CORRESPONDING FIELDS OF TABLE out_it_addr

for all entries in In_it_kna1

WHERE ADDRNUMBER = in_it_kna1-adrnr

and date_to ge sy-datum.

check sy-subrc eq 0.

sort out_it_addr by client addrnumber date_from nation.

delete adjacent duplicates from out_it_addr

comparing client addrnumber date_from nation.

loop at in_it_kna1 into l_str_kna1.

read table out_it_addr into l_str_addr

with key

addrnumber = l_str_kna1-adrnr.

check sy-subrc eq 0.

l_tabix = sy-tabix.

loop at out_it_addr into l_str_addr

from l_tabix.

if l_str_addr-addrnumber = l_str_kna1-adrnr.

l_str_addr-kunnr = l_str_kna1-kunnr.

append l_str_addr to lit_addr.

else.

exit.

endif.

endloop.

endloop.

out_it_addr[] = lit_addr[].

endform. "address_data

Message was edited by:

Amit Tyagi

Former Member
0 Kudos

HI ,

Check this simple program.


REPORT ZTESTMAS.

* test the function READ_TEXT to extract long text from P.O./Material  *
*  jcs 9/12/96                                                         *

DATA:   TESTFLD  LIKE THEAD,
        LI LIKE TLINE-TDLINE.

 DATA:  BEGIN OF LINESX OCCURS 0.
         INCLUDE STRUCTURE TLINE.
 DATA:  END OF LINESX.

CALL FUNCTION 'READ_TEXT'
     EXPORTING
          CLIENT                  = SY-MANDT
          ID                      = 'F01 '
          LANGUAGE                = SY-LANGU
          NAME                    = '4500000222' " PO NUMBER
          OBJECT                  = 'EKKO'

     IMPORTING
          HEADER                  = TESTFLD
     TABLES
         LINES                   = LINESX
     EXCEPTIONS
          ID                      = 1
          LANGUAGE                = 2
          NAME                    = 3
          NOT_FOUND               = 4
          OBJECT                  = 5
          REFERENCE_CHECK         = 6
          WRONG_ACCESS_TO_ARCHIVE = 7
          OTHERS                  = 8.
          BREAK-POINT.

LOOP AT LINESX.
WRITE: / LINESX-TDLINE.
ENDLOOP.

Regards,

Raghav

Former Member
0 Kudos

Hi Shanmuga,

Normally, READ_TEXT will be used to retrieve text, for instance, PO Text, Item Text, etc, following is a sample on how you use it:

CALL FUNCTION 'READ_TEXT'

EXPORTING

  • CLIENT = SY-MANDT

id = 'F01'

language = 'E'

name = lv_ebeln

object = 'EKKO'

  • ARCHIVE_HANDLE = 0

  • LOCAL_CAT = ' '

  • IMPORTING

  • HEADER =

TABLES

lines = itab_tline

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8

.

Cheers,

Patrick