12-21-2006 7:28 AM
Can anyone give me some example program for text types using
Function module "Read_text"
Regards,
Shanmugaperumal
12-21-2006 7:30 AM
12-21-2006 7:32 AM
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
----
--
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.
--
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.
--
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.
--
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.
--
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.
--
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
----
--
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+
--
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.
--
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.
--
DATA: gt_knvp TYPE TABLE OF ty_knvp,
gs_knvp LIKE LINE OF gt_knvp.
--
DATA: gt_knvk TYPE TABLE OF ty_knvk,
gs_knvk LIKE LINE OF gt_knvk.
--
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
----
--
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-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.
--
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: 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.
--
*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.
--
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+
--
IF NOT p_file6 IS INITIAL.
PERFORM text_data.
ENDIF.
--
IF r_phy = 'X'.
PERFORM physical_download.
ELSEIF r_loc = 'X'.
PERFORM local_download.
ENDIF.
--
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.
*--
to_check_file p_file1
gv_phy_file1.
ENDIF.
IF NOT p_file2 IS INITIAL.
*--
to_check_file p_file2
gv_phy_file2.
ENDIF.
IF NOT p_file3 IS INITIAL.
*--
to_check_file p_file3
gv_phy_file3.
ENDIF.
IF NOT p_file4 IS INITIAL.
*--
to_check_file p_file4
gv_phy_file4.
ENDIF.
IF NOT p_file5 IS INITIAL.
*--
to_check_file p_file5
gv_phy_file5.
ENDIF.
IF NOT p_file6 IS INITIAL.
*--
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.
*
*--
local_check p_file1
gv_loc_file1.
*
*--
local_check p_file2
gv_loc_file2.
*
*--
local_check p_file3
gv_loc_file3.
*
*--
local_check p_file4
gv_loc_file4.
*
*--
local_check p_file5
gv_loc_file5.
*
*--
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_to_local gt_kna1[]
p_file1
gt_kna1.
--
download_to_local gt_knb1[]
p_file2
gt_knb1.
--
download_to_local gt_knvv[]
p_file3
gt_knvv.
--
download_to_local gt_knvp[]
p_file4
gt_knvp.
--
download_to_local gt_knvk[]
p_file5
gt_knvk.
--
download_to_local gt_text[]
p_file6
gt_text.
Start of MAA001+
--
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+
--
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+
--
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.
--
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.
--
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.
--
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.
--
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
12-21-2006 7:34 AM
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
12-21-2006 7:34 AM
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