Application Development and Automation 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: 
Read only

SAVE_TEXT

Former Member
0 Likes
1,222

Hello experts,

I am uploading the data for the open AR line items. In this I have to upload the long text data also. I am planning to use SAVE_TEXT fm for this...

can anyone guide me how to use this fm ... any sample code would be really appreciated.

How to make the loops through the header data, line items and when to call the above fm to pass all the variable can anyone give some idea plzzzzzz

SRI

5 REPLIES 5
Read only

gopi_narendra
Active Contributor
0 Likes
1,032
*&---------------------------------------------------------------------*
*&      Form  LONG_TEXT_SVCITEM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form LONG_TEXT_SVCITEM .

  if not IT_RFQSVC_200[] is initial.
    read table IT_RFQSVC_200 into IS_RFQSVC_200 with key CHK = 'X'.
    if SY-SUBRC = 0.

      concatenate IS_RFQSVC_200-RFQ_NO IS_RFQSVC_200-SER_NO IS_RFQSVC_200-RFQ_LN
                  IS_RFQSVC-SVC_NO IS_RFQSVC-SVC_LN into TD_NAME.

      TDOBJECT = 'ZES_RFQ'.
      TDNAME   = TD_NAME.
      TDID     = 'Z01'.
      TDSPRAS  = SY-LANGU.

      call function 'SELECT_TEXT'
        exporting
          ID         = TDID
          LANGUAGE   = SY-LANGU
          NAME       = TDNAME
          OBJECT     = TDOBJECT
        importing
          ENTRIES    = TFILL
        tables
          SELECTIONS = SELECTION.

      if TFILL = 0.
        call function 'INIT_TEXT'
          exporting
            ID       = TDID
            LANGUAGE = SY-LANGU
            NAME     = TDNAME
            OBJECT   = TDOBJECT
          importing
            HEADER   = HEADER
          tables
            LINES    = LINES
          exceptions
            ID       = 1
            LANGUAGE = 2
            NAME     = 3
            OBJECT   = 4.
*        if SY-SUBRC = 3.
*        endif.
      else.
        call function 'READ_TEXT'
          exporting
            ID              = TDID
            LANGUAGE        = SY-LANGU
            NAME            = TDNAME
            OBJECT          = TDOBJECT
          importing
            HEADER          = HEADER
          tables
            LINES           = LINES
          exceptions
            ID              = 1
            LANGUAGE        = 2
            NAME            = 3
            NOT_FOUND       = 4
            OBJECT          = 5
            REFERENCE_CHECK = 6.

      endif.
      call function 'EDIT_TEXT'
        exporting
          HEADER = HEADER
          SAVE   = 'X'
        tables
          LINES  = LINES.

      call function 'SAVE_TEXT'
        exporting
          HEADER          = HEADER
          SAVEMODE_DIRECT = 'X'
        tables
          LINES           = LINES.
*          endif.
    else.
      message W138(ZSM) with 'Please check one item'.
    endif.
  else.
    message W138(ZSM) with 'No Items available'.
  endif.

  loop at IT_RFQSVC_200 into IS_RFQSVC_200.
    IS_RFQSVC_200-CHK = ' '.
    modify IT_RFQSVC_200 from IS_RFQSVC_200.
    clear : IS_RFQSVC_200.
  endloop.
endform.                    " LONG_TEXT_SVCITEM

Regards

Gopi

Read only

0 Likes
1,032

Gopi,

what is the use of all these function modules other than save_text....

like select_text init_text..., can u tell me the functionality clearly... is it necessary to use those while i am uploading the long text data.....

Read only

0 Likes
1,032

Sri,

Do not use other than SAVE_TEXT,afetr save_TEXt use committ_text FM.

Other FM's what Gopi mentioned related to some other FM :

READ_TEXT - it will read the text from database.

DELETE_TEXT - it will delete the text in database like this each one will have diffrent functionality.

Thanks

Seshu

Read only

0 Likes
1,032

In my case i am using all these FM's to check if there is an existing LongText , If so am editing the text if not i am creating a text and at last, i am using the FM SAVE_TEXT.

Reward for all useful answers

Regards

Gopi

Read only

Former Member
0 Likes
1,032

Check the below program :

use COMIIT_TEXT FM after SAVE_TEXT FM

report ZMPPC016

no standard page heading

line-size 120.

  • Constants

constants : c_r type c value 'R', " PLNTY Value

C_X TYPE C VALUE 'X', " Value for dynbegin.

c_tcode like tstc-tcode value 'CA22', " Transaction code

c_mode(1) type c value 'A', " BDC Mode

c_tdformat type tline-tdformat value '*',"Tag column

c_tdid type thead-tdid value 'PLPO', " Text ID

c_tdform type thead-tdform value 'SYSTEM'." Form name

  • Variables

data : v_date like sy-datum, " date

v_date1(4) type c,

v_date2(2) type c,

v_date3(2) type c,

TNAME LIKE THEAD-TDNAME,

v_mandt(3) type c,

v_matnr(18) type c,

flag type c.

  • Internal table for file

data : begin of t_file occurs 0,

matnr(18) type c, " Material Number

werks(4) type c, " Plant

vornr(4) type c, " Operation Number

tseq(3) type n, " Line number in the long text

text1(70) type c, " Long text

plnal(2) type n, " Group counter

end of t_file.

data : begin of t_text occurs 0,

matnr(18) type c, " Material Number

werks(4) type c, " Plant

plnal(2) type n, " Group counter

vornr(4) type c, " Operation Number

tseq(3) type n, " Line number in the long text

text1(70) type c, " Long text

end of t_text.

  • Internal table for MAPl

data : begin of t_mapl occurs 0,

plnnr like mapl-plnnr,

end of t_mapl.

  • Internal Table for PLAS and PLPO Table

data : begin of t_plpo occurs 0,

mandt like plpo-mandt,

plnty like plpo-plnty,

plnnr like plpo-plnnr,

plnkn like plpo-plnkn,

zaehl like plpo-zaehl,

end of t_plpo.

data t_long like tline occurs 0 with header line.

  • Work area for t_text Internal table

data : wa_text like t_text.

data: t_header like thead. " long text

  • Internal table for BDCDATA Structure

data : begin of itab_bdc_tab occurs 0.

include structure bdcdata.

data : end of itab_bdc_tab.

  • Selection-screen

selection-screen : begin of block blk with frame .

parameter : P_file like rlgrap-filename obligatory.

selection-screen : end of block blk.

initialization.

p_file = 'C:\My Documents\InputFile.txt'.

at selection-screen on value-request for p_file.

  • F4 value for file

perform file_get.

start-of-selection.

  • Get file data into Internal Table.

perform get_data.

sort t_text by matnr werks vornr plnal tseq.

  • Save the long text into CA22 Transaction

perform load_data.

top-of-page.

CALL FUNCTION 'Z_HEADER'

  • EXPORTING

  • FLEX_TEXT1 =

  • FLEX_TEXT2 =

  • FLEX_TEXT3 =

.

skip 1.

&----


*& Form file_get

&----


  • F4 Value for file

----


FORM file_get.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

DEF_PATH = 'C:\Temp\'

MASK = ',.,..'

MODE = 'O'

TITLE = 'Select File'(007)

IMPORTING

FILENAME = P_file

EXCEPTIONS

INV_WINSYS = 1

NO_BATCH = 2

SELECTION_CANCEL = 3

SELECTION_ERROR = 4

OTHERS = 5.

ENDFORM. " file_get

&----


*& Form get_data

&----


  • Get file data into Internal Table.

----


FORM get_data.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = p_file

FILETYPE = 'DAT'

TABLES

DATA_TAB = t_file

EXCEPTIONS

CONVERSION_ERROR = 1

FILE_OPEN_ERROR = 2

FILE_READ_ERROR = 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 eq 0.

sort t_file by matnr werks plnal vornr tseq.

delete t_file where matnr = ''.

loop at t_file.

  • Get the material number from tables ZMSMI_FERR_RAW,

  • ZMSMI_SNAP_RAW and ZMSMI_SIMP_RAW

perform get_matnr.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = t_file-vornr

IMPORTING

OUTPUT = t_file-vornr.

move : t_file-matnr to t_text-matnr,

t_file-werks to t_text-werks,

t_file-vornr to t_text-vornr,

t_file-tseq to t_text-tseq,

t_file-text1 to t_text-text1,

t_file-plnal to t_text-plnal.

append t_text.

clear t_text.

endloop.

else.

WRITE: / 'Error reading input file'.

stop.

endif.

ENDFORM. " get_data

&----


*& Form call_bdc

&----


  • BDC Script for CA22 Transaction

----


FORM call_bdc.

  • Screen 1010

perform bdc_screen using 'SAPLCPDI' '1010'.

perform bdc_field using 'BDC_OKCODE' '=VOUE'.

perform bdc_field using 'RC27M-MATNR' SPACE.

perform bdc_field using 'RC27M-WERKS' SPACE.

perform bdc_field using 'RC271-VBELN' SPACE.

perform bdc_field using 'RC271-POSNR' SPACE.

perform bdc_field using 'RC271-PLNNR' T_PLPO-PLNNR.

perform bdc_field using 'RC271-AENNR' SPACE.

clear : v_date,

v_date1,

v_date2,

v_date3.

v_date1 = sy-datum+0(4).

v_date2 = sy-datum+4(2).

v_date3 = sy-datum+6(2).

concatenate v_date2 v_date3 v_date1 into v_date.

perform bdc_field using 'RC271-STTAG' v_date .

perform bdc_field using 'RC271-REVLV' SPACE.

perform bdc_field using 'RC271-WERKS' SPACE.

perform bdc_field using 'RC271-PLNAL' WA_TEXT-PLNAL.

perform bdc_field using 'RC271-STATU' SPACE.

perform bdc_field using 'RC271-VAGRP' SPACE.

perform bdc_field using 'RC271-PROFIDNETZ' SPACE.

  • Screen 5400

perform bdc_screen using 'SAPLCPDI' '5400'.

perform bdc_field using 'BDC_OKCODE' '=OSEA'.

  • Screen 1010

perform bdc_screen using 'SAPLCP02' '1010'.

perform bdc_field using 'BDC_OKCODE' '=ENT1'.

perform bdc_field using 'RC27H-VORNR' WA_TEXT-VORNR.

  • Screen 5400

perform bdc_screen using 'SAPLCPDI' '5400'.

perform bdc_field using 'BDC_OKCODE' '=LTXT'.

perform bdc_field using 'RC27X-FLG_SEL(01)' C_X.

  • Screen 1100

perform bdc_screen using 'SAPLSTXX' '1100'.

perform bdc_field using 'BDC_OKCODE' '=XEIN'.

  • Screen 0999

perform bdc_screen using 'SAPLWB_CUSTOMIZING' '0999'.

perform bdc_field using 'BDC_OKCODE' '=CONT'.

PERFORM BDC_FIELD USING 'RSEUMOD-GRA_EDITOR' SPACE.

  • Screen 1100

perform bdc_screen using 'SAPLSTXX' '1100'.

perform bdc_field using 'BDC_CURSOR' 'RSTXT-TXPARGRAPH'.

perform bdc_field using 'BDC_OKCODE' '=TXBA'.

perform bdc_field using 'RSTXT-TXPARGRAPH(03)' '*'.

perform bdc_field using 'RSTXT-TXLINE(03)'

'*****'.

  • Screen 5400

perform bdc_screen using 'SAPLCPDI' '5400'.

perform bdc_field using 'BDC_OKCODE' '=BU'.

call transaction c_tcode

using itab_bdc_tab mode 'N'

update 'S'.

refresh itab_bdc_tab.

if sy-subrc eq 0 and sy-msgty ne 'E'.

v_mandt = t_plpo-mandt.

CONCATENATE v_mandt

t_plpo-plnty

t_plpo-plnnr

t_plpo-plnkn

t_plpo-zaehl into tname.

commit work.

CALL FUNCTION 'DELETE_TEXT'

EXPORTING

CLIENT = SY-MANDT

ID = c_tdid

LANGUAGE = 'E'

NAME = TNAME

OBJECT = 'ROUTING'

SAVEMODE_DIRECT = 'X'

  • TEXTMEMORY_ONLY = ' '

  • LOCAL_CAT = ' '

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2

.

if sy-subrc ne 0.

write:/3 wa_text-matnr,24 wa_text-werks,

30 t_mapl-plnnr,44 wa_text-plnal,48 wa_text-vornr,

60 ' -',

67 'Error Deleting Existing Long Text'.

endif.

else.

write:/3 wa_text-matnr,24 wa_text-werks,

30 t_mapl-plnnr,44 wa_text-plnal,48 wa_text-vornr,

60 ' -',

67 'Error Executing BDC'.

endif.

ENDFORM. " call_bdc

&----


*& Form bdc_screen

&----


  • BDC Script for Screen fields

----


  • -->P_PROG Program name

  • -->P_SCRN Screen Number

----


FORM bdc_screen USING p_prog

p_scrn.

clear itab_bdc_tab.

itab_bdc_tab-program = p_prog.

itab_bdc_tab-dynpro = p_scrn.

itab_bdc_tab-dynbegin = c_x.

append itab_bdc_tab.

ENDFORM. " bdc_screen

&----


*& Form bdc_field

&----


  • BDC Script for Screen fileds

----


  • -->P_NAM Field name

  • -->P_VAL Field value

----


FORM bdc_field USING p_nam

p_val.

clear itab_bdc_tab.

itab_bdc_tab-fnam = p_nam.

itab_bdc_tab-fval = p_val.

append itab_bdc_tab.

ENDFORM. " bdc_screen

&----


*& Form load_data

&----


  • Save the long text into CA22 Transaction

----


FORM load_data.

loop at t_text.

move t_text to wa_text.

at new vornr.

  • Read the data in MAPL Table

select single plnnr from mapl into t_mapl-plnnr

where matnr = wa_text-matnr

and werks = wa_text-werks

and plnty = c_r

and loekz = space.

if sy-subrc eq 0.

  • Read the data from PLAS and PLPO Table

select SINGLE a~mandt

a~plnty

a~plnnr

a~plnkn

a~zaehl into t_plpo

from plpo as a inner join plas as b on aplnty = bplnty

and aplnnr = bplnnr

and aplnkn = bplnkn

where b~plnty = c_r

and b~plnnr = t_mapl-plnnr

and b~plnal = wa_text-plnal

and b~loekz = space

and a~vornr = wa_text-vornr

and a~loekz = space.

if sy-subrc eq 0.

perform call_bdc.

else.

flag = 'X'.

write:/3 wa_text-matnr,24 wa_text-werks,

30 t_mapl-plnnr,44 wa_text-plnal,48 wa_text-vornr,

60 ' -',

67 'Matching routing group\Operation not found'.

continue.

endif.

else.

flag = 'X'.

write:/3 wa_text-matnr,24 wa_text-werks,

40 ' -',

45 'Material Does not Exists or Material',

82 'not Available in MAPL Table'.

continue.

endif.

endat.

if flag ne 'X'.

t_long-tdline = wa_text-text1.

t_long-tdformat = c_tdformat.

append t_long.

endif.

at end of vornr.

if flag ne 'X'.

v_mandt = t_plpo-mandt.

CONCATENATE v_mandt

t_plpo-plnty

t_plpo-plnnr

t_plpo-plnkn

t_plpo-zaehl into tname.

T_HEADer-TDOBJECT = 'ROUTING'.

t_HEADer-TDNAME = tname.

T_HEADer-TDID = c_tdid.

t_header-tdform = c_tdform.

T_HEADer-TDSPRAS = 'E'.

  • Save the text

CALL FUNCTION 'SAVE_TEXT'

EXPORTING

CLIENT = SY-MANDT

HEADER = t_header

SAVEMODE_DIRECT = 'X'

  • OWNER_SPECIFIED = ' '

  • LOCAL_CAT = ' '

  • IMPORTING

  • FUNCTION =

  • NEWHEADER =

TABLES

LINES = t_long

EXCEPTIONS

ID = 1

LANGUAGE = 2

NAME = 3

OBJECT = 4

OTHERS = 5

.

if sy-subrc eq 0.

CALL FUNCTION 'COMMIT_TEXT'

EXPORTING

OBJECT = t_header-TDOBJECT

NAME = t_header-TDNAME

ID = t_header-TDID

LANGUAGE = t_header-TDSPRAS.

write:/3 wa_text-matnr,24 wa_text-werks,

30 t_mapl-plnnr,44 wa_text-plnal,48 wa_text-vornr,

60 ' -',

67 'Long Text Loaded Successfully'.

else.

write:/3 wa_text-matnr,24 wa_text-werks,

30 t_mapl-plnnr,44 wa_text-plnal,48 wa_text-vornr,

60 ' -',

67 'Error Uploading Long Text'.

endif.

refresh t_long.

else.

write:/3 wa_text-matnr, 24 wa_text-werks,

45 'Long text not uploaded'.

clear flag.

endif.

endat.

endloop.

ENDFORM. " load_data

&----


*& Form get_matnr

&----


  • Get the material number from tables ZMSMI_FERR_RAW,

----


FORM get_matnr.

clear v_matnr.

case t_file-werks.

when '0101'.

select single cmatnr from zmsmi_simp_raw

into v_matnr where matnr = t_file-matnr.

  • if sy-subrc eq 0.

if not v_matnr is initial.

clear t_file-matnr.

t_file-matnr = v_matnr.

endif.

when '0103'.

select single cmatnr from zmsmi_ferr_raw

into v_matnr where matnr = t_file-matnr.

  • if sy-subrc eq 0.

if not v_matnr is initial.

clear t_file-matnr.

t_file-matnr = v_matnr.

endif.

when '0102' or '0110' or '0111' or '0112' or '0113'

or '0114' or '0115' or '0116' or '0117'.

select single cmatnr from zmsmi_snap_raw

into v_matnr where matnr = t_file-matnr.

  • if sy-subrc eq 0.

if not v_matnr is initial.

clear t_file-matnr.

t_file-matnr = v_matnr.

endif.

endcase.

ENDFORM. " get_matnr