Application Development 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: 

Character mode or byte mode error.

pawan_rai
Participant
0 Kudos

Hi Experts,

In my smartforms I wanted to read the long text as well as short text from tcode Qs41. So i used Read_text fm to get my job done. In the header section of the long text the text name was concatenated as client, catalog, codegruppe,language. So i merged this all objects using concatenate statement as per my requirement...Problem occured when a particular long text maintained had a text name not merged i mean client,catalog,codegruppe where merged but there was a gap in between codegrp and language.I found that it was because codegruppe has length 8 and the name of the codegruppe was less than that.

To rectify that i used 'respecting blanks' statement in concatenate but it is showing error character mode or byte mode.

Any help would be appreciated....

Regards,

Pawan

12 REPLIES 12

Former Member
0 Kudos

Try...

CONCATENATE LV_FLD1 LV_FLD2 into LV_FLDS RESPECTING BLANKS IN CHARACTER MODE.

Former Member
0 Kudos

Hi Pawan,

first pass those fields to string fields and then use the concate with respective blanks.

take out the operations on string(char like) fields only...

0 Kudos

Thanks soumyaprakash for your reply i tried using your solution but it didn't worked out. It is showing same error.

Anyways thanks for the help.

Regards,

Pawan.

0 Kudos

Hello Pawan,

Can you paste your exact code and the actual error message?

Also note you can CONCATENATE on C,N,D,T,STRING data objects when using RESPECTING BLANKS!

BR,

Suhas

0 Kudos

Hi Suhas,

TABLES : v_qpac_kat, mapl.

&----


  • Types Begin with TY_

&----


TYPES : BEGIN OF ty_header,

matnr TYPE mara-matnr,

mtart TYPE mara-mtart,

maktx TYPE makt-maktx,

addrnumber TYPE adrc-addrnumber,

name1 TYPE adrc-name1,

city1 TYPE adrc-city1,

post_code1 TYPE adrc-post_code1,

street TYPE adrc-street,

house_num1 TYPE adrc-house_num1,

datuv TYPE plko-datuv,

aedat TYPE plko-datuv,

valid_from TYPE plko-datuv,

plnal(2) TYPE c,

prev_ctnr(2) TYPE c,

***********************************************

str_suppl TYPE adrc-str_suppl1,

plnnr_alt TYPE plko-plnnr_alt,

werks TYPE mapl-werks,

END OF ty_header.

TYPES : BEGIN OF ty_plmk,

merknr TYPE plmk-merknr, "insp id

plnkn TYPE plmk-plnkn,

verwmerkm TYPE plmk-verwmerkm,

qpmk_zaehl TYPE plmk-qpmk_zaehl,

qpmk_ref TYPE plmk-qpmk_ref,

mkversion TYPE plmk-mkversion, "version

kurztext TYPE plmk-kurztext, "shorttext

masseinhsw TYPE plmk-masseinhsw, "unit of meas

sollwert TYPE plmk-sollwert, "Target value

toleranzun TYPE plmk-toleranzun, "lower limit

toleranzob TYPE plmk-toleranzob, "upper limit

auswmenge1 TYPE plmk-auswmenge1, "assigned code

steuerkz TYPE plmk-steuerkz ,

vornr TYPE plpo-vornr,

END OF ty_plmk.

TYPES : BEGIN OF ty_qpac,

werks TYPE qpac-werks,

katalogart TYPE qpac-katalogart,

auswahlmge TYPE qpac-auswahlmge,

codegruppe TYPE qpac-codegruppe,

code TYPE qpac-code,

versionam TYPE qpac-versionam,

END OF ty_qpac.

TYPES : BEGIN OF ty_name,

client TYPE mandt,

cat TYPE qkttab,

code_grp TYPE qcodegrp,

code TYPE qcode,

ver TYPE qversnr,

lang,

str1(20) TYPE c,

client1(3) TYPE c,

cat1(1) TYPE c,

codegrp(8) TYPE c,

lang1(1) TYPE c,

END OF ty_name.

TYPES : BEGIN OF ty_head,

tdname TYPE stxh-tdname,

END OF ty_head.

TYPES : BEGIN OF ty_t001,

bukrs TYPE t001-bukrs,

adrnr TYPE t001-adrnr,

END OF ty_t001.

TYPES : BEGIN OF ty_adrc1,

addrnumber TYPE adrc-addrnumber,

str_suppl1 TYPE adrc-str_suppl1,

str_suppl2 TYPE adrc-str_suppl2,

END OF ty_adrc1.

TYPES : BEGIN OF ty_output,

vornr TYPE plpo-vornr,

sr_no(5) TYPE c,

test TYPE qtxt_cha,

specification(132) TYPE c,

text_name TYPE tdobname,

flag(1) TYPE c,

text_name1 TYPE tdobname,

text1 TYPE tline-tdline,

codegruppe TYPE qpct-codegruppe,

text TYPE thead-tdname,

  • text1 type tline-tdline,

ltextv TYPE qpgt-ltextv,

END OF ty_output.

TYPES : BEGIN OF ty_qpgt,

katalogart TYPE qpct-katalogart,

codegruppe TYPE qpct-codegruppe,

kurztext TYPE qpgt-kurztext,

ltextv TYPE qpgt-ltextv,

END OF ty_qpgt.

&----


  • Data Begin with it_

&----


DATA : it_mapl TYPE TABLE OF ty_mapl WITH HEADER LINE,

it_plpo TYPE TABLE OF ty_plpo,

it_plko TYPE TABLE OF ty_plko,

it_qpmk TYPE TABLE OF ty_qpmk,

it_qpac TYPE TABLE OF ty_qpac,

it_output1 TYPE TABLE OF ty_output,

it_output TYPE TABLE OF ty_output,

it_plmk TYPE TABLE OF ty_plmk,

it_auswmenge1 TYPE STANDARD TABLE OF ty_auswmenge1,

it_name TYPE STANDARD TABLE OF ty_head,

it_qpgt TYPE STANDARD TABLE OF ty_qpgt.

&----


  • work area begin with wa_

&----


DATA : wa_mapl LIKE LINE OF it_mapl,

wa_mapl1 LIKE LINE OF it_mapl,

wa_plpo LIKE LINE OF it_plpo,

wa_plko LIKE LINE OF it_plko,

wa_qpmk LIKE LINE OF it_qpmk,

wa_qpac LIKE LINE OF it_qpac,

wa_output LIKE LINE OF it_output,

wa_plmk LIKE LINE OF it_plmk,

wa_mara TYPE ty_mara,

wa_makt TYPE ty_makt,

wa_header TYPE ty_header,

wa_t001 TYPE ty_t001,

wa_adrc TYPE ty_adrc,

wa_adrc1 TYPE ty_adrc1,

wa_auswmenge LIKE LINE OF it_auswmenge1,

wa_name LIKE LINE OF it_name,

wa_qpgt LIKE LINE OF it_qpgt.

&----


  • data begin with w_

&----


DATA : string1(20) TYPE c,

string2(20) TYPE c,

string3(20) TYPE c,

string4(20) TYPE c,

string5(20) TYPE c,

string6(20) TYPE c,

string7(20) TYPE c,

string8(20) TYPE c,

string9(20) TYPE c,

string10(20) TYPE c,

string11(20) TYPE c,

string12(20) TYPE c.

DATA : w_count TYPE sy-tabix,

w_name TYPE ty_name,

w_thead TYPE thead-tdname,

w_name1 TYPE ty_name,

w_thead1 TYPE thead-tdname,

w_auswmenge1 TYPE plmk-auswmenge1,

w_index TYPE i,

w_lower TYPE p DECIMALS 3,

w_upper TYPE p DECIMALS 3,

w_target TYPE p DECIMALS 2,

w_lowerf TYPE f,

w_upperf TYPE f,

w_targetf TYPE f,

w_spec TYPE i,

w_res TYPE i,

w_flag1(1) TYPE c,

tolgrenze(40) TYPE c,

w_lowerc TYPE string,

w_upperc TYPE string,

w_targetc TYPE string,

w_less(40) TYPE c,

w_counter TYPE i VALUE '1',

w_tarf TYPE p DECIMALS 3,

w_bukrs TYPE t001k-bukrs,

w_shrt_txt(10),

w_flag2(1) TYPE c.

TYPES : BEGIN OF ty_tq30,

art TYPE tq30-art, "Inspection Type

pplverw TYPE tq30-art, "Tax List Usage

END OF ty_tq30.

&----


  • Parameters

&----


SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME.

PARAMETERS : pr_mt_no TYPE mapl-matnr OBLIGATORY,

pr_wer TYPE mapl-werks OBLIGATORY,

  • Add inspection type as selection criteria

p_art TYPE tq30-art DEFAULT '01' OBLIGATORY.

SELECTION-SCREEN END OF BLOCK a.

&----


  • Initialisation

&----


INITIALIZATION.

&----


  • AT SELECTION-SCREEN

&----


AT SELECTION-SCREEN.

PERFORM f0001-matrial_check.

&----


  • start of selection

&----


START-OF-SELECTION.

PERFORM f001-fetchdata.

PERFORM f002-process.

PERFORM f003-display.

END-OF-SELECTION.

0 Kudos

the part of the code which gives problem.

w_name-client = sy-mandt.
            w_name-cat = '1'.
            w_name-code_grp = wa_qpac-codegruppe.
            w_name-code = wa_qpac-code.
            w_name-ver = wa_qpac-versionam.
            w_name-lang = 'E'.
            MOVE w_name TO w_thead.
            wa_output-text_name = w_name .


            IF ( wa_output-ltextv = 'X' ).

              w_name1-client = sy-mandt.
*               w_name1-client = '600'.
              w_name1-cat = '1'.
              w_name1-code_grp = wa_qpac-codegruppe.
*            w_name1-ver = wa_qpac-versionam.
              w_name1-lang = 'E'.


**              w_name1-client2 = w_name1-client.
**              w_name1-cat2 = w_name1-cat.
**              w_name1-codegrp2 = w_name1-code_grp.
**              w_name1-lang2 = w_name1-lang.


*            if ( w_name1-ver ne '' ).
*              CONCATENATE w_name1-client w_name1-cat w_name1-code_grp  w_name1-lang  INTO w_name1-str1." IN CHARACTER MODE   "SEPARATED BY SPACE.
***              CONCATENATE  client2 cat2 codegrp2 lang2 INTO str2 in character mode  respecting blanks.
 **             concatenate w_name1-str1 w_name1-lang1 into w_name1-str1 respecting blanks. error point 
              MOVE w_name1-str1 TO w_thead1.
              wa_output-text_name1 = w_name1-str1.

*            else.
*            MOVE w_name1-STR1 TO w_thead1.
*            wa_output-text_name1 = w_name1-STR1.
*endif.


****            *****************************

              DATA: txline TYPE TABLE OF tline WITH HEADER LINE,
                    wa_txline TYPE tline.

              DATA: text TYPE thead-tdname.
              text =  wa_output-text_name1.

              CALL FUNCTION 'READ_TEXT'
                EXPORTING
                 client                        = sy-mandt
                  id                            = 'QPGT'
                  language                      = 'E'
                  name                          = text
                  object                        = 'QKATALOG'
*   ARCHIVE_HANDLE                = 0
*   LOCAL_CAT                     = ' '
* IMPORTING
*   HEADER                        =
                TABLES
                  lines                         = txline
               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.
              ENDIF.

              LOOP AT txline INTO wa_txline.

                wa_output-text1 = wa_txline-tdline.

*modify table it_output from wa_output.

              ENDLOOP.
***********************************************************







            ELSE.
              wa_output-test = wa_qpgt-kurztext.

            ENDIF.



            APPEND wa_output TO it_output.
*            sort
            CLEAR wa_output.
          ENDLOOP.


        ENDIF.
      ENDIF.
    ENDIF.

  ENDLOOP.




*  LOOP AT IT_OUTPUT INTO WA_OUTPUT.
* IF ( WA_OUTPUT-LTEXTV = 'X' ).
*
*            w_name1-client = sy-mandt.
*            w_name1-cat = '1'.
*            w_name1-code_grp = wa_qpAC-codegruppe.
*            w_name1-lang = 'E'.
*            CONCATENATE w_name1-CLIENT w_name1-CAT w_name1-CODE_GRP w_name1-LANG INTO W_NAME1-STR1.
*            MOVE w_name1-STR1 TO w_thead1.
*            wa_output-text_name1 = w_name1-STR1.
*
* .
* ENDIF.
*  MODIFY  it_OUTPUT FROM wa_OUTPUT TRANSPORTING LTEXTV.
*
*  ENDLOOP.

  DELETE ADJACENT DUPLICATES FROM it_output COMPARING sr_no test .

Error message ".", "IN BYTE MODE", "SEPARATED BY ...", or "IN CHARACTER MODE"

expected after "W_NAME1-STR1".

error point i have mentioned. when uncommented.

regards,

Pawan.

0 Kudos

You don't have to mention the addition "IN CHARACTER MODE" explicitly.

Anyway looking at your code it looks like some syntax error. Which version of SAP are you using? Check if "RESPECTING BLANKS" addition is valid in your R3 release.

BR,

Suhas

0 Kudos

Hi suhas,

We are using sap version 6.0 and it supports respecting blanks keyword.

The code has syntax errors when i use respecting blanks otherwise it works fine.

Any other suggestion you can give would be appreciated.

Regards,

Pawan.

0 Kudos

Hello,

I'm on Release 7.0 & i'm not getting any syntax error.

concatenate w_name1-str1 w_name1-lang1 into w_name1-str1 respecting blanks

Why are you concatenating the results of w_name1-str1 into the same field when you're using RESPECTING BLANKS? In this case the CONCATENATE will give SY-SUBRC = 4 always! (Read the documentation on CONCATENATE to know why)

BR,

Suhas

0 Kudos

Hi Suhas,

That error was Probably during pasting it is actually.

CONCATENATE w_name1-client w_name1-cat w_name1-code_grp w_name1-lang  INTO w_name1-str1 respecting blanks.

check in your version whether it gives error or not ....

Regards,

Pawan.

0 Kudos

Hello,

RESPECTING BLANKS addition is valid from Release 7.0 & not from Release 6.10.

Check this documentation:[http://help.sap.com/abapdocu_702/en/abennews-70-regex.htm#!ABAP_MODIFICATION_5@5@]. Alternatively you can do an F1 on the keyword an check if it is valid.

BR,

Suhas

0 Kudos

hi Suhas,

Thanks for the reply .You are right the problem is with version.

Client is not even using 6.0 it is 5.0 ...Thanks once again for your help.

Regards,

Pawan.