How to Upload Long Text into SAP Using Excel Sheet and SAVE_TEXT Function Module
Many times user may have requirement during uploading the data into SAP as below points.
- Upload the Long Text into SAP Using Excel Sheet (i.e. here I am explaining about a PO Text in MM Screen).
- Long Text Readable within text area no need to use horizontal bar.
Screen Shot # 1
Solution:
- Create a Copy of “ALSM_EXCEL_TO_INTERNAL_TABLE” SAP Standard Function Module
into Custom Function Module “YALSM_EXCEL_TO_INTERNAL_TABLE” .
Screen Shot # 2
Screen Shot # 3
Create a “Z” Copy of “ALSMEX_TABLINE” and Increase the “Value” Field Size i.e. here I am use 2000 character , you can take as per your requirement .
Screen Shot # 4
- Create Custom Upload Program using above Custom Functional Module.
“Data Declaration
TYPES: BEGIN OF TY_ITAB ,
MATNR(18) TYPE C,
LMAKTX(2000) TYPE C,
ROW TYPE I,
TSIZE TYPE I,
END OF TY_ITAB.
“ Data Declarations – Internal Tables
DATA: I_TAB TYPE STANDARD TABLE OF TY_ITAB INITIAL SIZE 0,
IT_EXLOAD LIKE ZALSMEX_TABLINE OCCURS 0 WITH HEADER LINE,
IT_LINES LIKE STANDARD TABLE OF TLINE WITH HEADER LINE,
IT_TEXT_HEADER LIKE STANDARD TABLE OF THEAD WITH HEADER LINE,
WA TYPE TY_ITAB ,
P_ERROR TYPE SY-LISEL ,
LEN TYPE I .
“Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-002.
PARAMETERS:PFILE TYPE RLGRAP-FILENAME OBLIGATORY, “Excel File Name with Path
W_BEGIN TYPE I OBLIGATORY, “Excel Row beginning
W_END TYPE I OBLIGATORY. “Excel End Row
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN.
IF PFILE IS INITIAL.
MESSAGE S368(00) WITH ‘Please input filename’. STOP.
ENDIF.
START-OF-SELECTION.
REFRESH:I_TAB.
PERFORM EXCEL_DATA_INT_TABLE.
PERFORM EXCEL_TO_INT.
PERFORM CONTOL_PARAMETER.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR PFILE.
PERFORM F4_FILENAME.
“ F4 Help getting Excel File Name with Comlete Path
FORM F4_FILENAME .
CALL FUNCTION ‘F4_FILENAME’
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
IMPORTING
FILE_NAME = PFILE .
ENDFORM.
“Read Legacy Data Transfer from Excel using Custom Function Module
FORM EXCEL_DATA_INT_TABLE .
CALL FUNCTION ‘YALSM_EXCEL_TO_INTERNAL_TABLE‘
EXPORTING
FILENAME = PFILE
I_BEGIN_COL = ‘0001’ “Excel Beginning Column
I_BEGIN_ROW = W_BEGIN
I_END_COL = ‘002’ “Excel End Column
I_END_ROW = W_END
TABLES
INTERN = IT_EXLOAD.
ENDFORM. ” EXCEL_DATA_INT_TABLE
“Transfer Excel data into internal table
FORM EXCEL_TO_INT .
LOOP AT IT_EXLOAD .
CASE IT_EXLOAD-COL1.
WHEN ‘0001’.
WA-MATNR = IT_EXLOAD-VALUE. “Material Number Leading with Zero
WHEN ‘0002’.
WA-LMAKTX = IT_EXLOAD-VALUE. “ Material Long Text
ENDCASE.
AT END OF ROW1.
WA-TSIZE = STRLEN( WA-LMAKTX ) . “Finding String Length using STRLEN
WA-ROW = IT_EXLOAD-ROW1 . “Adding Current Row Num into Internal table
APPEND WA TO I_TAB.
CLEAR WA .
ENDAT.
ENDLOOP.
ENDFORM. ” EXCEL_TO_INT
“Maintain Header, Item data and pass into “SAVE_TEXT” to save to Long Text
FORM CONTOL_PARAMETER.
DATA OFF TYPE I VALUE ‘0’.
LOOP AT I_TAB INTO WA.
* Create Header
IT_TEXT_HEADER-TDID = ‘BEST’. “ Text ID for Material Master
IT_TEXT_HEADER-TDSPRAS = SY-LANGU . “ Login Language Key
IT_TEXT_HEADER-TDNAME = WA-MATNR. “Material Number leading with Zero
IT_TEXT_HEADER-TDOBJECT = ‘MATERIAL’. “ Text Object
MOVE WA-TSIZE TO LEN .
LEN = LEN / 53 + 1. “Finding Number of Row’s taken by Long Text
“ Note : Number of Row Required for Long Text Display
= Total length of long text / Number Character’s in one Row + 1
Here I am taken 53 number of character in each row ,
because in Material Master Long Text Area Display 53 Character without using Horizontal Bar . “
DO LEN TIMES .
MOVE ‘*’ TO IT_LINES-TDFORMAT.
MOVE WA-LMAKTX+OFF(53) TO IT_LINES-TDLINE.
SHIFT IT_LINES-TDLINE LEFT DELETING LEADING ‘ ‘.
OFF = OFF + 53 .
APPEND IT_LINES.
CLEAR IT_LINES .
ENDDO.
Using SAVE_TEXT Functional Module Save Long Text to SAP
AT END OF ROW.
CALL FUNCTION ‘SAVE_TEXT’
EXPORTING
CLIENT = SY-MANDT
HEADER = IT_TEXT_HEADER
INSERT = ‘ ‘
SAVEMODE_DIRECT = ‘X’
TABLES
LINES = IT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5.
* Check the Return Code
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY
NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 INTO P_ERROR.
EXIT.
ENDIF.
CLEAR: WA ,LEN , OFF.
REFRESH IT_LINES .
ENDAT.
ENDLOOP.
ENDFORM. ” CONTOL_PARAMETER
- Output
Screen Shot # 13
Screen Shot # 14
Screen Shot # 15
Reference :
Note – 933420 – ALSM_EXCEL_TO_INTERNAL_TABLE
Source Code Available in Wiki : How to Upload Long Text into SAP Using Excel Sheet and SAVE_TEXT Function Module – ABAP Developme…
Regard’s
Smruti
New NetWeaver Information at SAP.com
Very Helpfull