12-24-2008 3:18 AM
I am using function read_text to retrieve the material sales order text, but I got some problem while I pass the parameter, Actually, the parameter name is material + sales org + division, and the material should be 18 characters, but when I retrieve the data from mara, the material will be trim. So, how to formatting the parameter. Thanks!
The correct parameter: 'MAT0001 CO0100'
My parameter: 'MAT0001CO0100'
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = '0001'
LANGUAGE = 'E'
NAME = TNAME
OBJECT = 'MVKE'
ARCHIVE_HANDLE = 0
IMPORTING
HEADER = HTEXT
TABLES
LINES = LTEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
12-24-2008 3:25 AM
Hi
try like this
concatenate matnr0(18) vkorg19(4) spart+24(4) into v_text
Regards
Shiva
12-24-2008 3:25 AM
Hi
try like this
concatenate matnr0(18) vkorg19(4) spart+24(4) into v_text
Regards
Shiva
12-24-2008 3:37 AM
use concatenate :
concatenate material salseorg separated by SPACE.
Sandeep
12-24-2008 5:02 AM
Hi,
check this code, this program extracts material master sales text (MM03 ).
check the logic in bold letters.
TABLES:MVKE.
DATA:BEGIN OF GI_MVKE OCCURS 0,
MATNR LIKE MARA-MATNR,
VKORG LIKE MVKE-VKORG,
VTWEG LIKE MVKE-VTWEG,
END OF GI_MVKE.
DATA:BEGIN OF GI_FINAL OCCURS 0,
MATNR LIKE MARA-MATNR,
VKORG LIKE MVKE-VKORG,
VTWEG LIKE MVKE-VTWEG,
SO_TEXT(2500),
END OF GI_FINAL.
DATA : NAME1 LIKE THEAD-TDNAME,
ID LIKE THEAD-TDID VALUE '0001',
LANGUAGE LIKE THEAD-TDSPRAS VALUE 'E',
OBJECT LIKE THEAD-TDOBJECT VALUE 'MVKE'.
DATA LI_LINE LIKE TLINE OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF FIELDNAMES OCCURS 0,
FIELD(32),
END OF FIELDNAMES.
DATA FILE TYPE STRING.
************************SELECTION SCREEN**************************
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN: SKIP.
SELECT-OPTIONS : P_MATNR FOR MVKE-MATNR .
SELECT-OPTIONS : P_VKORG FOR MVKE-VKORG .
SELECT-OPTIONS : P_VTWEG FOR MVKE-VTWEG .
SELECTION-SCREEN: SKIP.
PARAMETER : PFNAME LIKE RLGRAP-FILENAME OBLIGATORY .
SELECTION-SCREEN: SKIP.
SELECTION-SCREEN : END OF BLOCK B1.
*********************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR PFNAME.
PERFORM SEARCH USING PFNAME.
START-OF-SELECTION.
PERFORM FETCH_DATA.
PERFORM DOWNLOAD TABLES GI_FINAL FIELDNAMES USING PFNAME.
----
FORM fetch_data *
----
........ *
----
FORM FETCH_DATA.
SELECT MATNR
VKORG
VTWEG
FROM MVKE
INTO TABLE GI_MVKE
WHERE MATNR IN P_MATNR
AND VKORG IN P_VKORG
AND VTWEG IN P_VTWEG
AND LVORM NE 'X'.
DATA : NAME1 TYPE RSTXT-TDNAME.
DATA : NAME TYPE RSTXT-TDNAME.
DATA : CNT TYPE I.
DATA CHAR(23).
SORT GI_MVKE BY MATNR VKORG VTWEG.
DELETE ADJACENT DUPLICATES FROM GI_MVKE COMPARING MATNR VKORG VTWEG.
CNT = 0.
****Process the Data
LOOP AT GI_MVKE.
CNT = CNT + 1.
IF CNT = 100.
CALL FUNCTION 'PROGRESS_INDICATOR'
EXPORTING
I_TEXT = 'PROCESSING THE LOOP'.
CLEAR CNT.
ENDIF.
PERFORM CONVERSION USING GI_MVKE-MATNR
CHANGING GI_MVKE-MATNR.
PERFORM CONVERSION USING GI_MVKE-VKORG
CHANGING GI_MVKE-VKORG.
PERFORM CONVERSION USING GI_MVKE-VTWEG
CHANGING GI_MVKE-VTWEG.
NAME1 = GI_MVKE-MATNR.
NAME1+18 = GI_MVKE-VKORG.
CONCATENATE NAME1 GI_MVKE-VTWEG INTO NAME1.
TRANSLATE NAME1 TO UPPER CASE.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = ID
LANGUAGE = LANGUAGE
NAME = NAME1
OBJECT = OBJECT
TABLES
LINES = LI_LINE
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.
LOOP AT LI_LINE.
GI_FINAL-SO_TEXT = LI_LINE-TDLINE.
MOVE:GI_MVKE-MATNR TO GI_FINAL-MATNR,
GI_MVKE-VKORG TO GI_FINAL-VKORG,
GI_MVKE-VTWEG TO GI_FINAL-VTWEG.
APPEND GI_FINAL.
CLEAR GI_FINAL.
ENDLOOP.
ENDIF.
ENDLOOP.
****Download the File
************************************************************************
********************END OF COMPLETE EXTRACTION************************
************************************************************************
ENDFORM. " col_header
----
FORM CONVERSION *
----
........ *
----
--> P_INPUT *
--> P_OUTPUT *
----
FORM CONVERSION USING P_INPUT
CHANGING P_OUTPUT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = P_INPUT
IMPORTING
OUTPUT = P_OUTPUT.
ENDFORM. "CONVERSION
----
FORM HEADER *
----
........ *
----
FORM HEADER.
FIELDNAMES-FIELD = 'Material Number'.
APPEND FIELDNAMES.
CLEAR FIELDNAMES.
FIELDNAMES-FIELD = 'Sales Org'.
APPEND FIELDNAMES.
CLEAR FIELDNAMES.
FIELDNAMES-FIELD = 'Dist CHN'.
APPEND FIELDNAMES.
CLEAR FIELDNAMES.
FIELDNAMES-FIELD = 'SO Text'.
APPEND FIELDNAMES.
CLEAR FIELDNAMES.
ENDFORM. "HEADER
----
FORM DOWNLOAD *
----
........ *
----
--> T_TABLE *
--> FIELDNAMES *
--> FNAME *
----
FORM DOWNLOAD TABLES T_TABLE FIELDNAMES USING FNAME .
IF NOT GI_FINAL[] IS INITIAL.
SORT GI_FINAL BY MATNR VKORG VTWEG.
PERFORM HEADER.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
BIN_FILESIZE = ' '
CODEPAGE = ' '
FILENAME = FNAME
FILETYPE = 'DAT'
MODE = ' '
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
COL_SELECT = ' '
COL_SELECTMASK = ' '
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = T_TABLE[]
FIELDNAMES = FIELDNAMES[]
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.
WRITE:/10 'DATA DOWNLOADED SUCCESSFULLY'.
ENDIF.
ENDIF.
ENDFORM. " DOWNLOAD
----
FORM SEARCH *
----
........ *
----
--> V_FILE *
----
FORM SEARCH USING V_FILE.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
STATIC = 'X'
CHANGING
FILE_NAME = V_FILE.
ENDFORM. "SEARCH
Regards
Siva Prasad
12-24-2008 5:14 AM
hi,
check the sample code,
declare a internal table with actual field length & tname.
it-matnr = 'MAT0001'
it_n1 = 'CO0100'.
tname = it.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = '0001'
LANGUAGE = 'E'
NAME = TNAME
OBJECT = 'MVKE'
it may work.
regards,
sathis
12-24-2008 5:14 AM
Hi,
You want the 18 characters of your material number you have to use FM 'conversion_exit_alpha_input' and use concatenate for which you donot want space and concatenate the others with space as shown below.
concatenate 'MAT' '0001' into a.
concatenate 'CO' '0100' into b.
concatenate 'a' 'b' into x with space.
12-24-2008 5:15 AM
Hi,
You want the 18 characters of your material number you have to use FM 'conversion_exit_alpha_input' and use concatenate for which you donot want space and concatenate the others with space as shown below.
concatenate 'MAT' '0001' into a.
concatenate 'CO' '0100' into b.
concatenate 'a' 'b' into x with space.
12-24-2008 5:22 AM
Hi,
Use translate.
Example:
data: str(20) type c.
str = 'abc-xyz'.
TRANSLATE STR USING '- '.
write str.
12-24-2008 5:28 AM
12-24-2008 5:55 AM
Hi,
Use FM conversion_exit_matn1_input to get 18 chars length for Material Number.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = v_matnr
IMPORTING
output = v_matnr.
concatenate v_matnr salesorg distchn into x with space.
regards,
Siva.
12-24-2008 6:29 AM
Hi try any one of these
Concatenate matnr vkorg spart into v_total separated by space.
OR
concatenate matnr0(18) vkorg19(4) spart+24(4) into v_total.
thanks
KAZA
12-24-2008 7:02 AM
hi
just see this sample code: you can understand..
data: lv_name like thead-tdname,
lv_line2 like tline occurs 0 with header line.
loop at lt_mvke.
concatenate
lt_mvke-matnr
lt_mvke-vkorg
lt_mvke-vtweg
into lv_name.
call function 'READ_TEXT'
exporting
client = sy-mandt
id = '0001'
language = sy-langu
name = lv_name
object = 'MVKE'
tables
lines = lv_line2
exceptions
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
others = 8.
if sy-subrc eq 0.
delete lv_line2 where tdline eq space.
read table lv_line2 index 1.
if sy-subrc = 0.
move lv_line2-tdline to lt_mvke-tdline.
endif.
endif.
modify lt_mvke.
endloop.
ThankQ,
GSANA