Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member

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



83 Comments