Output display

Hi Friends,
I have one query regarding my output.
Suppose i have multiple entries in my internal table itab.
Now i wanted to display internal table via screen 0101 as a scrollable output.
will u tell me how to do this??
If coding is there it will be appriciated.
Thanks in advance.

Hi
Check out the code using table control.
Go to se51 editor and drag the table control and give name for that as tabctrl (Which u r referring in the program).
Tables VBAK.
Data Itab like VBAK occurs 0 with header line.
Controls tabctrl type tableview using screen 1000.
Data fill type i.
&----&      Module  Assign_data  OUTPUT
&----       text
MODULE Assign_data OUTPUT.
move itab to vbak.
ENDMODULE.                 " Assign_data  OUTPUT
&----&      Module  USER_COMMAND_1000  INPUT
&----       text
MODULE USER_COMMAND_1000 INPUT.
  case sy-ucomm.
    when 'EXIT'.
     set screen 0.
  endcase.
ENDMODULE.                 " USER_COMMAND_1000  INPUT
&----&      Module  STATUS_1000  OUTPUT
&----       text
MODULE STATUS_1000 OUTPUT.
SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR 'xxx'.
Select * from vbak into table itab.
describe table itab lines fill.
tabctrl-lines = fill.
ENDMODULE.                 " STATUS_1000  OUTPUT
Logic to be written in screen logic
PROCESS BEFORE OUTPUT.
MODULE STATUS_1000.
loop at itab with control tabctrl cursor tabctrl-top_line.
  Module Assign_data.
endloop.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_1000.
loop at itab.
endloop.
Hope this code will help u
Regards
Haritha

Similar Messages

  • Help on output Display

    Help on output Display
    Thanks in Advance
    ID ROUTE STRT_NAME BEGIN_DESCRIPTION END_DESCRIPTION OVERLAP BEG_MP END_MP Hierarchy
    100899 CR ELM AVE EXT FUERA BUSH RD ELM AVE 1551 0 0.46 3
    100899 CR ELM AVE ELM AVE RT 910A 1551 0.46 0.95 3
    100899 CR ELM AVE ELM AVE DELMAR BYPASS 1551 0.46 0.83 3
    100290 NY32 ELM AVE EXT RT 910A FEURA BUSH RD ELM AVE 1551 16.85 17.31 1
    100290 NY32 ELM AVE ELM AVE DELMAR BYPASS 1551 17.31 17.68 1
    My output will be Based on Hierarchy Max valuewhich is "3"
    ID = Hierarchy Max value 3 =(100899)
    ROUTE = Hierarchy Min Value which is "NY32"
    STRT NAME = Hierarchy Max value (3) and Min of Beg_MP of Hierarchy Max value(3) = ELM AVE EXT
    Begin Description = Hierarchy Max value (3) and Min of Beg_MP (0) of Hierarchy Max value(3) = FUERA BUSH RD
    End_description =Hierarchy Max value (3) and Max of Beg_MP (0.95) of Hierarchy Max value(3) = RT 910A
    Beg_MP = Hierarchy Max value (3) and Min of Beg_MP (0) of Hierarchy Max value(3) =0
    end_mp = Hierarchy Max value (3) and Max of Beg_MP (0.95) of Hierarchy Max value(3) = 0.95
    ID ROUTE STRT_NAME BEGIN_DESCRIPTION END_DESCRIPTION BEG_MP END_MP
    100899 NY32 ELM AVE EXT FUERA BUSH RD RT 910A 0 0.95

    CREATE TABLE TABLE_query(ID NUMBER,ROUTE VARCHAR2(30),STR_NAME VARCHAR2(30), BEGIN_DESCRIPTION VARCHAR2(300),END_DESCRIPTION VARCHAR2(300),BEG_MP NUMBER,END_MP NUMBER,HIERARCHY NUMBER,overlap number);
    INSERT INTO TABLE_query(ID ,ROUTE,STR_NAME, BEGIN_DESCRIPTION,END_DESCRIPTION,BEG_MP,END_MP ,HIERARCHY,overlap)
    values(100899,'CR','ELM AVE EXT','FUERA BUSH RD','ELM AVE',0,0.46,3,1551);
    INSERT INTO TABLE_query(ID ,ROUTE,STR_NAME, BEGIN_DESCRIPTION,END_DESCRIPTION,BEG_MP,END_MP ,HIERARCHY,overlap)
    values(100899,'CR','ELM AVE','ELM AVE','DELMAR BYPASS',0.46,0.95,3,1551);
    INSERT INTO TABLE_query(ID ,ROUTE,STR_NAME, BEGIN_DESCRIPTION,END_DESCRIPTION,BEG_MP,END_MP ,HIERARCHY,overlap)
    values(100899,'CR','ELM AVE','ELM AVE','DELMAR BYPASS',0.46,0.83,3,1551);
    INSERT INTO TABLE_query(ID ,ROUTE,STR_NAME, BEGIN_DESCRIPTION,END_DESCRIPTION,BEG_MP,END_MP ,HIERARCHY,overlap)
    values(100290,'NY32','ELM AVE EXT','RT 910A FEURA BUSH RD','ELM AVE',16.85,17.31,1,1551);
    INSERT INTO TABLE_query(ID ,ROUTE,STR_NAME, BEGIN_DESCRIPTION,END_DESCRIPTION,BEG_MP,END_MP ,HIERARCHY,overlap)
    values(100290,'NY32','ELM AVE','ELM AVE','DELMAR BYPASS',17.31,17.68,1,1551);
    ID     ROUTE     STR_NAME     BEGIN_DESCRIPTION     END_DESCRIPTION     BEG_MP     END_MP     HIERARCHY     OVERLAP
    100899     CR     ELM AVE EXT     FUERA BUSH RD     ELM AVE     0     0.46     3     1551
    100899     CR     ELM AVE     ELM AVE     DELMAR BYPASS     0.46     0.95     3     1551
    100899     CR     ELM AVE     ELM AVE     DELMAR BYPASS     0.46     0.83     3     1551
    100290     NY32     ELM AVE EXT     RT 910A FEURA BUSH RD     ELM AVE     16.85     17.31     1     1551
    100290     NY32     ELM AVE     ELM AVE     DELMAR BYPASS     17.31     17.68     1     1551
    My output will be Based on Hierarchy Max valuewhich is "3"                         
    ID = Hierarchy Max value 3 =(100899)                                        
    ROUTE = Hierarchy Min Value which is "NY32"                                        
    STRT NAME = Hierarchy Max value (3) and Min of Beg_MP of Hierarchy Max value(3) = ELM AVE EXT                                        
    Begin Description = Hierarchy Max value (3) and Min of Beg_MP (0) of Hierarchy Max value(3) = FUERA BUSH RD                                        
    End_description =Hierarchy Max value (3) and Max of Beg_MP (0.95) of Hierarchy Max value(3) = DELMAR BYPASS                                        
    Beg_MP = Hierarchy Max value (3) and Min of Beg_MP (0) of Hierarchy Max value(3) =0                                        
    end_mp = Hierarchy Max value (3) and Max of Beg_MP (0.95) of Hierarchy Max value(3) = 0.95                                        
    ID     ROUTE     STRT_NAME     BEGIN_DESCRIPTION     END_DESCRIPTION     BEG_MP     END_MP          
    100899     NY32     ELM AVE EXT     FUERA BUSH RD     DELMAR BYPASS     0     0.95          
    I figured out how to get id,beg_mp and end_mp
    Can anyone help me getting the rest of data coumns please
    --route,str_name,begin_description,end_description,beg_mp,end_mp,hierarchy,
    select distinct max(id) keep (dense_rank last order by hierarchy) over (partition by overlap) ,
    min(beg_mp) keep (dense_rank last order by hierarchy) over (partition by overlap) beg_mp,
         max(end_mp) keep (dense_rank last order by hierarchy) over (partition by overlap) end_mp                              
    from table_query

  • WBS element field to Depreciation Simulation Report  output display

    Hi SAP Experts,
    We need to Add the WBS element field to Depreciation Simulation Report  output display (S_ALR_87012936)
    Could please give your valuable inputs
    Thanks
    Hari Pothula

    HI Javed,
    We have capitalized with WBS element but not displaying in simulation report.
    All configurations done in in ACSET and activation Account assignment objects
    Thanks
    Hari

  • How to redirect the output display on Ultra 5 box.

    Hello,
    Good day to you.
    I have issues with redirecting display output to my console server (which is configured with cyclades switch) on a newly installed solaris 10, Ultra 5 box.
    I could access the output display on the monitor when I connect it directly to the serial port. But I also have my parallel port connected to cyclades switch which is primarily being used for accessing multiple servers thro' one single console server.
    When I try to access my ultra 5 box thro' console server, the display not getting redirected over there..I did checked the port from cyclades switch front, it did work well with other machines.
    Looks like some work needs to be done at Ultra 5 box level so that the parallel port can send output signals to the respective port on cyclades switch and consequently to the console server.
    Any thoughts ??
    Thanks.

    Hi,
    Good day to you.
    Apologize for quoting "Parallel" port. It is a in-built 25pin serial connector placed next to regular 15 pin serial port.
    Just to make a point here, this 25 pin serial connector has an external converter attached with other side having RJ45 jack.
    CAT5 cable connected between switch port to this RJ45 jack.
    I did tested this converter with another machine and could able to access the display on my console server. So it seems to be the connectivity from serial port to switch port works fine.
    Adding to that, this ultra 5 box with the current connectivity set up was working fine until I rebuild this machine. I was very well accessing this box thro my console server. There was no changes done except rebuilding the operating system.
    I think some work needs to be done at the ultra 5 box level to get this 25pin serial connector to act.
    Thanks.

  • Problem In report output display when i run in the background

    Hi,
    In a classical report i am printing around 17 fields  the width of the report out put is around 800 characters.
    If i run  the report in the  fore ground it running perfectly. But the thing is when i give large selection is it GETTING ' TIMED OUT ' as it is running more than an Hour.
    so i wanted to run it in the back ground to avoid TIME OUT problems.
    But when i run in the backgroud   i am not getting  full  out put in the SPOOL request(SIZE of the report output may causing the problem) .
    Pls come up with some solutions
    Thanks in advance

    Try increasing the spool length..
    Refer this link for doing so.
    Spool List output display > 255 char when the rpt is run in Background
    Thanks
    mahesh

  • For output display report is final_internal table or structure in wd ABAP?

    Hi all,
    for output display report is final_internal table or structure in wd ABAP?
    in wd java output display report -.> CALLING rfc and that RFC OUTPUT table
    finally in internal table is assigned to STRUCTURE .Same procdure?
    Thanks,
    RAMA

    Dear Madhu,
    thanks for guidence!
    its showing popup tht this BADI ( ME_CHANGE_OUTTAB_CUS ) is only use for "SAP Internal  use".
    Regards,
    Praphull

  • Bold font in report output display

    Dear All,
    Will any one let me know how to set BOLD font in the report output display?
    Thanks,
    Ranjan

    <b>u cannot use this in 4.7</b>
    REPORT ZFONT NO STANDARD PAGE HEADING LINE-SIZE 80 LINE-COUNT 65.
    Start of print-control
    NEW-PAGE PRINT ON.
    PRINT-CONTROL FUNCTION 'SF000'.
    WRITE: / 'This is CPI 20'.
    SKIP.
    PRINT-CONTROL FUNCTION 'SF020'.
    WRITE: / 'This is CPI 6'.
    SKIP.
    PRINT-CONTROL FUNCTION 'SF008'.
    WRITE: / 'This is CPI 12'.
    Depending on your SAP printer device, this may also work
    PRINT-CONTROL FONT 1 LPI 6.
    you can try to change font and LPI numbers
    WRITE: / 'font 1 lpi 6'.
    PRINT-CONTROL FONT 2 LPI 6.
    WRITE: / 'font 2 lpi 6'.
    PRINT-CONTROL FONT 3 LPI 6.
    WRITE: / 'font 3 lpi 6'.
    End of print-control
    NEW-PAGE PRINT OFF.
    *--- End of Program

  • Delete modify in itab output display

    hi,
    i am create a query for delete data from database table by using an internal table i am delete data from DB table but a problem are come as in output display
    i am showing  the
    NUMBER OF ENTRIES ARE DELETE FROM TABLE: 2
    NUMBER OF ENTRIES ARE REMAIN IN TABLE AFTER DELETEION:
    seletion screen contains 
    SELECT-OPTIONS: s_ordid FOR zapolp22-ordid,   "APO order id
                                s_matnr FOR zapolp22-matnr,   "Material Number
                     s_locto FOR zapolp22-locto.   "APO Destination location
    PARAMETERS: p_days TYPE i. "Number of days
    the problem are as:
    if i am given only P-days parameter value 3
    than it works as fine
    showing output right as 2 rows are deleted
    and 8 rows are remains in table
    if i given all fields fill up in selection screen
    as s_ordid----->4516 to 4517
        s_matnr---->85503 to 85505
       s_locto------> m100 to m101
    p_days----> 2
    then i get output display as
    number of entries  are deleted   2
    number of entries are remain in table  0.
    but the 2 rows are deleted from DB table and 8 rows are remain in table but it not show the 8 rows on display screen it shows zero.
    my code is as:
    DATA:  lv_count  TYPE i,
           lv_count1 TYPE i.
    DATA: lv_date TYPE sy-datum.
    SELECT mandt
           ordid
           schedid
           matnr
           locto
           lfmng
           lfdat
           locfr
           rqmng
           rqdat AS lv_date
           prckz
           blkstk
           oppdelqty
           zzapologmod
           zzflagurgent
           zzapottype
           zzndays_l_time
    FROM zapolp22 INTO TABLE lt_output
    WHERE ordid IN s_ordid  AND
           matnr IN s_matnr  AND
           locto IN s_locto.
    SORT lt_output[] BY rqdat.
    >Number OF Days to be Counted
    lv_date = sy-datum - p_days.
    LOOP AT lt_output.
      IF lt_output-rqdat LT lv_date.
        MOVE-CORRESPONDING lt_output TO lt_delete.
        APPEND lt_delete.
        lv_count = lv_count + 1.
      ELSE.
        lv_count1 = lv_count1 + 1.
      ENDIF.
    endloop.
    DELETE FROM zapolp22  WHERE rqdat LT lv_date AND
                                ordid IN s_ordid AND
                                matnr IN s_matnr AND
                                locto IN s_locto.
    IF sy-subrc = 0.
      WRITE:/25 'Number of entries deleted            :', lv_count.
      WRITE:/25 'Number of entries remaining          :', lv_count1.
    ELSEIF sy-subrc NE 0.
      WRITE:/ 'No data are selected for delete'.
    ENDIF.
    Tell me where in this code i do mistake.
    Thanks jayant.

    I don't know the contents of the table, but if you increase the number of restrictions in the SELECT statement, it will probably have lesser entries.
    Now, you are not really counting the total number of rows left in the table, but the total number of rows in the table that match the criterion.
    Basically, the first time (with lesser options) 10 rows are put into internal table, and 2 are deleted. So 8 are left.
    In the second time, only 4 rows are getting selected, of which 2 are deleted, and 2 are left in the internal table NOT in the database table. In the database table, more rows are left (because they never got selected into the itab)
    But if you want to count the total number of rows left in the DB, its better to count the number of rows in the end of the program with:
    SELECT COUNT(*) FROM dbtab INTO lv_integer.
    This can be pretty slow if the table is huge.

  • Re : ALV Output Display

    hi
    i'm doing an ALV Report. In the output  i'm double clicking on the Document field using user-command
    it is taking me to a particular Transaction and my requirement is if i change any field for ex : Description
    in that transaction and come back again to the output display the Changed Description should appear
    when i refresh the Output.how to get it?
    Regards

    1. create one icon on allication toolbar which is REFRESH icon, and give some function for it.
    2. write the code like:
        CASE SY_UCOMM.
          when 'FCODE'.
              refresh itab.
              perform get_data.
              perform_displaydata.
    it is nothing but u need to put the same code which u used earlier to show the data in output gaian after clicking on function code.
    Regards,
    Rajesh.

  • Download List output displayed

    Hi Friends,
    I want to donwload the list output displayed from the Report program with the exisitng formatting structure (displayed).
    1)From SAP menu we can click on System –> List –> Save –> Local file to download the file locally.
    2) I want to obtain same functionality as mentioned in point 1 through a button on tool bar.
    I dont want to prepare any internal table locally with the same data that is displayed on the screen, in the same formatting structure and Download, which is similar to a local download functionality.
    Please let me know ur suggestions.
    Regards,
    Lavanya.

    Then you have to  display your  O/p in the ALV   display  ...
    so that you can achive  your requirement  ..Because the ALV has the similar icon for downloading to pc  ..etc
    by Normal reporting  you cannot get this Option  .in the Application tool bar  .  one  is there as you menioned
    From SAP menu we can click on System –> List –> Save –> Local file to download the file locally.
    because   by pacing the  icon in  the Apllication bar it will not   call the  path ..etc.  you have to  do the coding  ...instead of that ALV is  best .
    But  in the ALV   it is there  in the standard  ALV  GRID    with   Downlaod icon , summation,scroldown ,sorting (A/D) ,etc...
    reward  points  if it is usefull ..
    Girish

  • Output display in alv

    Hi,
    i create a programm use alv but a problem occurs
    in my output display there is a quantity field KONV-KBETR
    o/p come as 100,00 (COMMA)
    but i want it come as 100.00 it come in decimal
    plz give me a solution for this.
    Thanks,
    ajay

    >
    ajay kumar wrote:
    > plz give me codes notation for this i am not use user settings.
    >
    > thanks
    > ajay
    Why not with User Settings?
    Else Press F1 on replace all occurances  and code.

  • After Effects warning: couldn't set Quicktime video output display mode

    After Effects warning: couldn't set Quicktime video output display mode
    I'm getting this error when exporting video from after effects. I also get it when the program starts up. I'm using Windows XP. Cannot find anything about a fix anywhere. Does anyone know how to fix this?

    Thanks for your reply. I profess ignorance regarding the GDI only mode and have no idea how to access that. Can you give me a little more info on that?
    I am using an ATI Radeon HD 3850. I have two monitors on that card, Monitor one is a Trinitron HP 1130 CRT.(set to 1280x1024 16bit) The other is DVI wide screen Ilo 26 inch monitor. (1024x768 at 32 bit)
    I have a BlackMagic Design DECKLINK standard definition broadcast card which outputs component video to a sony broadcast Beta deck. 480ix720 standard video.
    The machine has a gigabyte motherboard. Intel Core 2 quad cpu 2.66 ghz
    2.50 gb ram reported (4gigs installed)
    These hasn't been a major issue as I can still output AVI uncompressed but it is annoying.
    John

  • Spool List output display 255 chars

    Hi,
    I am execuing the my report in back groung.The oupt list has more than 255 chars.
    could u please let me know how Spool List output display > 255 char when the rpt is run in back ground.
    regards,
    Rayeez.

    Hello,
    Try using the printer formatting as X_65_255.
    Please check this [link|Report is truncating in background; for details.
    BR,
    Suhas

  • Strange behaviour in alv output display for a date column!

    hi friends,
    my alv output list display contains a column for budat (posting date), if this field has no value, then it displays a blank cell (space) in the output in my user login...but when the same report is run in another user login, even though the value of the column is null, it displays 00000000 (8 zeroes) rather than displaying a blank cell...i have set the field catalog property NO_ZERO = 'X'; is this property has anything to do with authorization to achieve its funcionality? am not sure...this is strange, as it is the same report, same field catalog that is being used..need some inputs on this
    thanks in advance
    Sathish

    There are 2 solutions for an adhoc solution you can change the field to a char10 field, this will solve your immediate problem of the 0 display. For a permanent solution you can check the user profile setting for the date for you as well as the concerned user. 
    Hope That Helps
    Anirban M.

  • Issue in output display in report,,

    hi,
    i have a report where i display a decimal value similar to other values, but this one is not displayed. I traced till the write statement and i do have the correct value in the variable. But this is just not displayed. what could be the issue. find below the code snippet.
    WRITE :/5 'Mat',15 'Mat',50 'Caliper',60'Grade', 105 'Delv Qty',117 'EA' .      WRITE :/5 'Number',15 'Description'.
    WRITE :/5   t_pick_view-matnr,
                  15  t_pick_view-arktx,
                  50  t_pick_view-caliper,
                  60  t_pick_view-grade,
                  105 t_pick_view-ea_qty,                      "#EC *
                  117 t_pick_view-ea_unit.                     "#EC *
    here the value in  t_pick_view-ea_qty is available (7.0000) but not displayed on the report output. One thing I noticed is that the next value ea_unit (it has value ROLLS) is displayed but is displayed with a zero after that like 'ROLLS 0'. Seems the ea_qty value gets partially hidden (it is 7.0000). what cud be wrong ?
    thks

    Hi Vijay,
    data definitions are all fine, as i said, i am able to see the value in the variable during debugging, but the write statement does not write it correctly on the page !!
    now i found out another thing but still the issue is unresolved.
    I commented the statement to display the next value , i.e. ea_unit (whose value is ROLLS) and now i am able to see the ea_qty displayed as 7.000.
    It seems 7.000 is displayed, but then the next value overwites that location with ROLLS and bcos 7.000 is already displayed there, I get ROLLS 0.
    But this is crazy as the display column positions are different for both but then why the first value 7.000 displayed under the second column ??
    so now i changed the display position to 103 (instead of 105 )and i can see 7 popping up (7 from 7.000 )!!! any idea whats hapening ?? i hope u understood my explanation..

  • Spool List output display 255 char when the rpt is run in Background

    Hi Friends,
    I tried executing a program in Background.. The report output has more than 64 columns ( more than 255 char ) ..
    Iam using "REUSE_ALV_GRID_DISPLAY" for displaying the list.
    My Problem:
    1. The spool list is truncated after 255 characters when i run in background.
    2. Th output in Spool List is coming in 2 rows ... not very clear ... becoz of that the grid lines are not getting displayed.
    3. I ve not used any Standard - line size for dislaying ..
    4. In foreground i am able to display all the 64 columns... Y not in Background......
    5. My Printer setting is ..X_255 .... only ...
    Requirement:
    1. What should i do to increase the spool list display to more than 255 characters
    2. Or how to save the background run reports output to an excel sheet as how we 'll take the from the foreground.
    Expecting your answers,
    Thanks in Advance...
    Cheers,
    R.Kripa .........
    Enjoy ABAPing ..........
    new upcoming Abaper ....

    Hello Kripa,
    You need to perform two actions.
    1. set an appropriate format for the printer you are using. As explained from the previous messages you go to: SPAD -> output devives (type the printer you are using) -> from the menu ..-> goto -> device type -> formats. In there create a new format like Z_65_650
    or Z_65_xxxx where xxxx could be up to 1065. This is the length of your report.
    When you give your report in background, do not forget to choose the new format you created.
    2. After the spool request is created, you take its number and use it ar a parameter in the following report.
    Please copy and paste it in a new program, maybe called ZRSPOSHOWSPOOLLIST.
    It should work then.
    roxani
    Display spool list > 255 columns
    This is a SAP utility report to allow display of
    spool request lists with line size more than 255 characters in
    releases 4.6B and 4.6C (4.6D kernel must be used)
    REPORT ZRSPOSHOWLIST LINE-SIZE 80.
    PARAMETERS: RQIDENT LIKE TSP01-RQIDENT,
    FIRSTL TYPE I DEFAULT 0,
    LASTL TYPE I DEFAULT 0.
    global data from LSPOXTOP
    DATA: RC(10) TYPE C,
    ERRMSG(100) TYPE C,
    STATUS LIKE SY-SUBRC,
    DSN_TYPE(8) TYPE C.
    DATA: BEGIN OF DATA_SET_LINE,
    DATA_LENGTH(5),
    PRECOL(1),
    DATA_LINE(1000),
    DATA_LINE(5000), "MODAB
    END OF DATA_SET_LINE,
    DATA_SET_LENGTH(5) TYPE C.
    TABLES: TSP01, TST05, TSPOPTIONS.
    DATA: TEMSE_NAME LIKE TST01-DNAME,
    TEMSE_CLIENT LIKE TST01-DCLIENT,
    TEMSE_HANDLE LIKE RSTSTYPE-HANDLE,
    TEMSE_PART LIKE TST01-DPART,
    TEMSE_OBJTYP LIKE TST01-DTYPE,
    TEMSE_RECTYP LIKE RSTSTYPE-RECTYP,
    TEMSE_CHARCO LIKE TST01-DCHARCOD.
    DATA: IS_OTF.
    global data from LSPOCTOP
    DATA: BEGIN OF SPOC
    , escape
    , prtctrl
    , FIRST_BYTES(4) " collection of the first bytes of the
    " escape sequences, which I am searching for.
    , PRTCTRL_START_LENGTH TYPE I
    , PRTCTRL_TOTAL_LENGTH TYPE I
    , PRTCTRL_START(10)
    , SYMBOL_LOW_START(10)
    , SYMBOL_HGH_START(10)
    , SYMBOL_START_LENGTH TYPE I
    , ICON_START(10)
    , ICON_START_LENGTH TYPE I
    , ICON_SEL TYPE I VALUE 1
    , FRAME_START(10)
    , FRAME_START_LENGTH TYPE I
    , END OF SPOC.
    FIELD-SYMBOLS: <SPOC_PRTCTRL> TYPE C
    , <SPOC_FRAME> TYPE C
    , <SPOC_ICON> TYPE C
    , <SPOC_SYMBOL_LOW> TYPE C
    , <SPOC_SYMBOL_HGH> TYPE C
    copied from RSPO_DISPLAY_ABAP_SPOOLJOB
    DATA: BUFFER LIKE DATA_SET_LINE OCCURS 1000.
    TABLES: TSP02L.
    SELECT SINGLE * FROM TSP01 WHERE RQIDENT = RQIDENT.
    IF SY-SUBRC <> 0.
    WRITE: / 'Spool request does not exist:'(001), RQIDENT.
    EXIT.
    ENDIF.
    CALL FUNCTION 'RSPO_CHECK_JOB_PERMISSION'
    EXPORTING
    ACCESS = 'DISP'
    SPOOLREQ = TSP01
    EXCEPTIONS
    NO_PERMISSION = 1
    OTHERS = 2.
    IF SY-SUBRC <> 0.
    WRITE: / 'No authorization to display'(002).
    EXIT.
    ENDIF.
    PERFORM READ_DATA TABLES BUFFER
    USING TSP01 FIRSTL LASTL.
    IF SY-SUBRC <> 0.
    WRITE: / 'Error reading spoolo request'(003).
    EXIT.
    ENDIF.
    IF IS_OTF = 'X'.
    WRITE: / 'This spool request is not an ABAP list'(004).
    EXIT.
    ENDIF.
    PERFORM DISPLAY_DATA TABLES BUFFER USING TSP01-RQPAPER TSP01-RQIDENT.
    FORM GET_SPOOL_LINE.
    DO.
    IF TEMSE_RECTYP+1(1) = 'Y'.
    CALL 'C_RSTS_READ'
    ID 'HANDLE' FIELD TEMSE_HANDLE
    ID 'BUFF' FIELD DATA_SET_LINE
    ID 'BUFFLG' FIELD 1006
    ID 'BUFFLG' FIELD 5006 "MODAB
    ID 'ALLINE' FIELD 'X'
    ID 'BINARY' FIELD ' '
    ID 'SHOWLG' FIELD 'X'
    ID 'RC' FIELD RC
    ID 'ERRMSG' FIELD ERRMSG.
    STATUS = SY-SUBRC.
    ELSE.
    CALL 'C_RSTS_READ'
    ID 'HANDLE' FIELD TEMSE_HANDLE
    ID 'BUFF' FIELD DATA_SET_LINE+1
    ID 'BUFFLG' FIELD 1005
    ID 'BUFFLG' FIELD 5005 "MODAB
    ID 'ALLINE' FIELD 'X'
    ID 'BINARY' FIELD ' '
    ID 'SHOWLG' FIELD 'X'
    ID 'RC' FIELD RC
    ID 'ERRMSG' FIELD ERRMSG.
    STATUS = SY-SUBRC.
    DATA_SET_LINE(5) = DATA_SET_LINE+1(5).
    DATA_SET_LINE-PRECOL = ' '.
    ADD 1 TO DATA_SET_LINE-DATA_LENGTH.
    ENDIF.
    STATUS = SY-SUBRC.
    IF STATUS <> 6. " EOF, error condition, or got data
    EXIT.
    ENDIF.
    end of this part, try to open next part
    ADD 1 TO TEMSE_PART.
    CALL 'C_RSTS_CLOSE'
    ID 'HANDLE' FIELD TEMSE_HANDLE
    ID 'RC' FIELD RC
    ID 'ERRMSG' FIELD ERRMSG.
    STATUS = SY-SUBRC.
    IF STATUS = 0.
    CALL FUNCTION 'RSTS_GET_ATTRIBUTES'
    EXPORTING
    AUTHORITY = 'SP01'
    CLIENT = TEMSE_CLIENT "hjl
    NAME = TEMSE_NAME
    PART = TEMSE_PART
    IMPORTING
    CHARCO = TEMSE_CHARCO
    CREATER =
    CREDATE =
    DELDATE =
    MAX_CREDATE =
    MAX_DELDATE =
    NON_UNIQ =
    NOOF_PARTS =
    RECTYP = TEMSE_RECTYP
    SIZE =
    STOTYP =
    type =
    OBJTYPE = TEMSE_OBJTYP
    EXCEPTIONS
    FB_ERROR = 1
    FB_RSTS_OTHER = 2
    NO_OBJECT = 3
    NO_PERMISSION = 4
    OTHERS = 5.
    STATUS = SY-SUBRC.
    ENDIF.
    IF STATUS = 0.
    CALL 'C_RSTS_OPEN_READ'
    ID 'HANDLE' FIELD TEMSE_HANDLE
    ID 'CLIENT' FIELD TEMSE_CLIENT "hjl
    ID 'NAME' FIELD TEMSE_NAME
    ID 'PART' FIELD TEMSE_PART
    ID 'TYPE' FIELD TEMSE_OBJTYP
    ID 'CONV' FIELD ' '
    ID 'ALLINE' FIELD 'X'
    ID 'BINARY' FIELD ' '
    ID 'RECTYP' FIELD TEMSE_RECTYP
    ID 'CHARCO' FIELD TEMSE_CHARCO
    ID 'PROM' FIELD 'I'
    ID 'RC' FIELD RC
    ID 'ERRMSG' FIELD ERRMSG.
    STATUS = SY-SUBRC.
    ENDIF.
    ENDDO.
    IF STATUS = 4.
    STATUS = 12. "EOF
    ENDIF.
    IF STATUS = 8.
    STATUS = 40. "Line too long
    ENDIF.
    DATA_SET_LENGTH = DATA_SET_LINE-DATA_LENGTH.
    ENDFORM.
    FORM READ_DATA TABLES BUFFER
    USING TSP01 LIKE TSP01 VALUE(FIRST) TYPE I
    VALUE(LAST) TYPE I.
    DATA: LINES TYPE I.
    REFRESH BUFFER.
    CLEAR IS_OTF.
    TEMSE_CLIENT = TSP01-RQCLIENT.
    TEMSE_NAME = TSP01-RQO1NAME.
    TEMSE_PART = 1.
    CALL FUNCTION 'RSTS_GET_ATTRIBUTES'
    EXPORTING
    AUTHORITY = 'SP01'
    CLIENT = TEMSE_CLIENT
    NAME = TEMSE_NAME
    PART = TEMSE_PART
    IMPORTING
    CHARCO = TEMSE_CHARCO
    CREATER =
    CREDATE =
    DELDATE =
    MAX_CREDATE =
    MAX_DELDATE =
    NON_UNIQ =
    NOOF_PARTS =
    RECTYP = TEMSE_RECTYP
    SIZE =
    STOTYP =
    type =
    OBJTYPE = TEMSE_OBJTYP
    EXCEPTIONS
    FB_ERROR = 1
    FB_RSTS_OTHER = 2
    NO_OBJECT = 3
    NO_PERMISSION = 4
    OTHERS = 5.
    IF SY-SUBRC = 0.
    IF TEMSE_OBJTYP(3) = 'OTF'.
    IS_OTF = 'X'.
    ENDIF.
    ELSE.
    EXIT.
    ENDIF.
    CLEAR TEMSE_HANDLE.
    CALL 'C_RSTS_OPEN_READ'
    ID 'HANDLE' FIELD TEMSE_HANDLE
    ID 'CLIENT' FIELD TEMSE_CLIENT "hjl
    ID 'NAME' FIELD TEMSE_NAME
    ID 'PART' FIELD TEMSE_PART
    ID 'TYPE' FIELD TEMSE_OBJTYP
    ID 'CONV' FIELD ' '
    ID 'ALLINE' FIELD 'X'
    ID 'BINARY' FIELD ' '
    ID 'RECTYP' FIELD TEMSE_RECTYP
    ID 'CHARCO' FIELD TEMSE_CHARCO
    ID 'PROM' FIELD 'I'
    ID 'RC' FIELD RC
    ID 'ERRMSG' FIELD ERRMSG.
    STATUS = SY-SUBRC.
    IF STATUS = 0.
    DO.
    PERFORM GET_SPOOL_LINE.
    IF STATUS <> 0 AND STATUS <> 40 AND STATUS <> 12.
    PERFORM CLOSE_JOB.
    EXIT.
    ENDIF.
    IF STATUS <> 12. " 12 = End
    IF NOT ( DATA_SET_LENGTH IS INITIAL ).
    DATA_SET_LINE-DATA_LENGTH = DATA_SET_LENGTH - 1.
    ENDIF.
    ADD 1 TO LINES.
    IF LINES >= FIRST.
    APPEND DATA_SET_LINE TO BUFFER.
    ENDIF.
    IF ( NOT LAST IS INITIAL ) AND ( LINES >= LAST ).
    EXIT.
    ENDIF.
    ELSE.
    IF LINES = 0.
    PERFORM CLOSE_JOB.
    EXIT.
    ENDIF.
    IF LINES < FIRST .
    PERFORM CLOSE_JOB.
    EXIT.
    ENDIF.
    EXIT.
    ENDIF.
    ENDDO.
    PERFORM CLOSE_JOB.
    ENDIF.
    ENDFORM.
    FORM CLOSE_JOB *
    FORM CLOSE_JOB.
    IF STATUS <> 0 AND STATUS <> 12.
    CALL 'C_RSTS_CLOSE'
    ID 'HANDLE' FIELD TEMSE_HANDLE
    ID 'RC' FIELD RC
    ID 'ERRMSG' FIELD ERRMSG.
    MESSAGE E112(PO) WITH STATUS RC ERRMSG RAISING READ_ERROR.
    ENDIF.
    CALL 'C_RSTS_CLOSE'
    ID 'HANDLE' FIELD TEMSE_HANDLE
    ID 'RC' FIELD RC
    ID 'ERRMSG' FIELD ERRMSG.
    STATUS = SY-SUBRC.
    IF STATUS <> 0.
    MESSAGE E112(PO) WITH STATUS RC ERRMSG RAISING READ_ERROR.
    ENDIF.
    ENDFORM.
    FORM DISPLAY_DATA TABLES BUFFER USING RQPAPER LIKE TSP01-RQPAPER
    RQID LIKE TSP01-RQIDENT.
    DATA: LINE_LENGTH TYPE I, GCOL TYPE I, GLINES TYPE I,
    LINE_LENGTH2 LIKE RSTSTYPE-LINELENGTH,
    V, V2.
    CALL FUNCTION 'RSPO_SPOOLDATA_WRITE_INIT'.
    PERFORM SPOOLDATA_WRITE_INIT. "MODAB
    select single * from tspoptions where spoption = 'REALWIDTH'.
    if sy-subrc = 0.
    V = 'X'.
    endif.
    select single * from tspoptions where spoption = 'REALHEIGHT'.
    if sy-subrc = 0.
    V2 = 'X'.
    endif.
    IF NOT V IS INITIAL OR NOT V2 IS INITIAL.
    GCOL = 0.
    GLINES = 0.
    SELECT SINGLE * FROM TSP02L WHERE PJIDENT = RQID
    AND PJNUMMER = 0.
    IF SY-SUBRC = 0.
    GCOL = TSP02L-COLUMNS.
    GLINES = TSP02L-LINES.
    ELSE.
    CALL FUNCTION 'RSPO_GET_SIZE_OF_LAYOUT'
    EXPORTING
    LAYOUT = RQPAPER
    IMPORTING
    ANSWER =
    COLUMNS = GCOL
    LINES = GLINES
    PFORMAT =
    ENDIF.
    ENDIF.
    IF GCOL < 80 OR V IS INITIAL.
    GCOL = 255.
    ENDIF.
    IF GLINES < 5 OR V2 IS INITIAL.
    GLINES = 0.
    ENDIF.
    IF GCOL >= 1024. "MODAB
    GCOL = 1023.
    ENDIF.
    NEW-PAGE NO-HEADING NO-TITLE LINE-SIZE GCOL
    LINE-COUNT GLINES. " make a wide list
    SET BLANK LINES ON.
    LOOP AT BUFFER.
    DATA_SET_LINE = BUFFER.
    IF DATA_SET_LINE-PRECOL = 'P'.
    IF DATA_SET_LINE(1) = ' '. " Echter Vorschub ?"
    NEW-PAGE.
    ENDIF.
    CONTINUE.
    ENDIF.
    Zeilenlange berechnen, falls unbekannt.
    IF DATA_SET_LINE-DATA_LENGTH IS INITIAL.
    LINE_LENGTH = STRLEN( DATA_SET_LINE-DATA_LINE ).
    ELSE.
    LINE_LENGTH = DATA_SET_LINE-DATA_LENGTH.
    ENDIF.
    IF LINE_LENGTH > 0.
    LINE_LENGTH2 = LINE_LENGTH.
    PERFORM SPOOLDATA_WRITE USING DATA_SET_LINE-DATA_LINE "MODAB
    LINE_LENGTH2
    1.
    ELSE.
    " Leerzeile
    SKIP.
    ENDIF.
    ENDLOOP.
    ENDFORM.
    copied from RSPO_SPOOLDATA_WRITE
    FORM SPOOLDATA_WRITE USING VALUE(SPOOL_DATA)
    VALUE(DATA_LENGTH) LIKE RSTSTYPE-LINELENGTH
    VALUE(START_POS) LIKE SY-COLNO.
    function globals
    DATA: LPOS LIKE SY-COLNO
    , REST_LEN TYPE I
    , AREA_LEN TYPE I
    , NEXT_HOT TYPE I " offset of next special character
    , COLS TYPE I " columns used by special character
    , BYTES TYPE I " bytes used by special character
    , HOT2
    , HOT3
    , HOT4
    , HOT5
    , HOT6
    , HOT7
    , BEGIN OF ESCAPE_TRICK
    , X1(1) TYPE X
    , END OF ESCAPE_TRICK
    , THE_PRTCTRL(5) TYPE C
    Because of a problem within the ABAP listprocessing, I shall
    never output the same icon side by side with the same color
    and without a gap.
    As I don't know the data, I will use two different variables
    alternatively.
    , ICON_ID1 LIKE ICONS-L4
    , ICON_ID2 LIKE ICONS-L4.
    FIELD-SYMBOLS: <LDATA>
    , <PLAIN_TEXT>
    , <PRTCTRL>
    , <HOT_PRTCTRL>
    , <HOT_FRAME>
    , <HOT_ICON>
    , <HOT_SYMBOL>
    IF START_POS < 2.
    write at / ' ' no-gap.
    NEW-LINE.
    LPOS = 1.
    ELSE.
    LPOS = START_POS.
    ENDIF.
    REST_LEN = STRLEN( SPOOL_DATA ).
    DESCRIBE FIELD SPOOL_DATA LENGTH AREA_LEN.
    IF DATA_LENGTH = 0.
    " fine.
    ELSEIF DATA_LENGTH <= AREA_LEN.
    REST_LEN = DATA_LENGTH.
    ELSE.
    WRITE: / 'Fehler beim Decodieren der Listendaten'(005).
    STOP.
    ENDIF.
    CHECK REST_LEN > 0.
    ASSIGN SPOOL_DATA(REST_LEN) TO <LDATA>.
    WHILE <LDATA> CA SPOC-FIRST_BYTES.
    NEXT_HOT = SY-FDPOS.
    IF NEXT_HOT > 0.
    ASSIGN <LDATA>(NEXT_HOT) TO <PLAIN_TEXT>.
    MODAB
    PERFORM WRITE_BIGFIELD USING <PLAIN_TEXT>
    NEXT_HOT
    LPOS.
    WRITE AT LPOS <PLAIN_TEXT> NO-GAP.
    ADD NEXT_HOT TO LPOS.
    SUBTRACT NEXT_HOT FROM REST_LEN.
    ASSIGN <LDATA>+NEXT_HOT(REST_LEN) TO <LDATA>.
    ENDIF.
    IF REST_LEN >= SPOC-PRTCTRL_START_LENGTH.
    ASSIGN <LDATA>(SPOC-PRTCTRL_START_LENGTH) TO <HOT_PRTCTRL>.
    ELSE.
    ASSIGN 'too_short' TO <HOT_PRTCTRL>.
    ENDIF.
    IF REST_LEN >= SPOC-FRAME_START_LENGTH.
    ASSIGN <LDATA>(SPOC-FRAME_START_LENGTH) TO <HOT_FRAME>.
    ELSE.
    ASSIGN 'too_short' TO <HOT_FRAME>.
    ENDIF.
    IF REST_LEN >= SPOC-ICON_START_LENGTH.
    ASSIGN <LDATA>(SPOC-ICON_START_LENGTH) TO <HOT_ICON>.
    ELSE.
    ASSIGN 'too_short' TO <HOT_ICON>.
    ENDIF.
    IF REST_LEN >= SPOC-SYMBOL_START_LENGTH.
    ASSIGN <LDATA>(SPOC-SYMBOL_START_LENGTH) TO <HOT_SYMBOL>.
    ELSE.
    ASSIGN 'too_short' TO <HOT_SYMBOL>.
    ENDIF.
    IF REST_LEN > 1.
    HOT2 = <LDATA>+1(1).
    IF REST_LEN > 2.
    HOT3 = <LDATA>+2(1).
    IF REST_LEN > 3.
    HOT4 = <LDATA>+3(1).
    ELSE.
    HOT4 = '?'.
    ENDIF.
    ELSE.
    HOT3 = '?'.
    ENDIF.
    ELSE.
    HOT2 = '?'.
    ENDIF.
    IF <HOT_FRAME> = <SPOC_FRAME>.
    COLS = 1. " in most cases.
    BYTES = 2. " in most cases.
    CASE HOT2.
    WHEN '0'. WRITE AT LPOS HOT2 AS LINE NO-GAP.
    WHEN '1'. WRITE AT LPOS HOT2 AS LINE NO-GAP.
    WHEN '2'. WRITE AT LPOS HOT2 AS LINE NO-GAP.
    WHEN '3'. WRITE AT LPOS HOT2 AS LINE NO-GAP.
    WHEN '4'. WRITE AT LPOS HOT2 AS LINE NO-GAP.
    WHEN '5'. WRITE AT LPOS HOT2 AS LINE NO-GAP.
    WHEN '6'. WRITE AT LPOS HOT2 AS LINE NO-GAP.
    WHEN '7'. WRITE AT LPOS HOT2 AS LINE NO-GAP.
    WHEN '8'. WRITE AT LPOS HOT2 AS LINE NO-GAP.
    WHEN '9'. WRITE AT LPOS HOT2 AS LINE NO-GAP.
    WHEN ':'. WRITE AT LPOS HOT2 AS LINE NO-GAP.
    WHEN ';'. " box_drawings_light_left
    WRITE AT LPOS '4' AS LINE NO-GAP.
    WHEN '<'. " box_drawings_light_up
    WRITE AT LPOS '5' AS LINE NO-GAP.
    WHEN '='. " box_drawings_light_right
    WRITE AT LPOS '4' AS LINE NO-GAP.
    WHEN '>'. " box_drawings_light_down
    WRITE AT LPOS '5' AS LINE NO-GAP.
    WHEN '?'. " drawings_checkbox_off
    WRITE AT LPOS ' ' AS CHECKBOX INPUT OFF NO-GAP.
    WHEN '@'. " drawings_checkbox_on
    WRITE AT LPOS 'X' AS CHECKBOX INPUT OFF NO-GAP.
    WHEN OTHERS.
    BYTES = 0.
    ENDCASE.
    ENDIF.
    IF <HOT_SYMBOL> = <SPOC_SYMBOL_LOW>.
    ESCAPE_TRICK = HOT3.
    SUBTRACT 32 FROM ESCAPE_TRICK-X1.
    IF HOT4 = SPACE.
    WRITE AT LPOS(2) ESCAPE_TRICK AS SYMBOL NO-GAP.
    COLS = 2.
    BYTES = 4.
    ELSE.
    WRITE AT LPOS(1) ESCAPE_TRICK AS SYMBOL NO-GAP.
    BYTES = 3.
    ENDIF.
    ENDIF.
    IF <HOT_SYMBOL> = <SPOC_SYMBOL_HGH>.
    ESCAPE_TRICK = HOT3.
    ADD 32 TO ESCAPE_TRICK-X1.
    IF HOT4 = SPACE.
    WRITE AT LPOS(2) ESCAPE_TRICK AS SYMBOL NO-GAP.
    COLS = 2.
    BYTES = 4.
    ELSE.
    WRITE AT LPOS(1) ESCAPE_TRICK AS SYMBOL NO-GAP.
    BYTES = 3.
    ENDIF.
    ENDIF.
    IF <HOT_ICON> = <SPOC_ICON>.
    IF SPOC-ICON_SEL >< 1.
    SPOC-ICON_SEL = 1.
    ICON_ID1 = '@00@'.
    ICON_ID1+1(1) = HOT3.
    ICON_ID1+2(1) = HOT4.
    ELSE.
    SPOC-ICON_SEL = 2.
    ICON_ID2 = '@00@'.
    ICON_ID2+1(1) = HOT3.
    ICON_ID2+2(1) = HOT4.
    ENDIF.
    IF REST_LEN > 4.
    HOT5 = <LDATA>+4(1).
    IF REST_LEN > 5.
    HOT6 = <LDATA>+5(1).
    IF REST_LEN > 6.
    HOT7 = <LDATA>+6(1).
    ELSE.
    HOT7 = '?'.
    ENDIF.
    ELSE.
    HOT6 = '?'.
    ENDIF.
    ELSE.
    HOT5 = '?'.
    ENDIF.
    IF HOT5 = SPACE.
    IF HOT6 = SPACE.
    IF HOT7 = SPACE.
    IF SPOC-ICON_SEL = 1.
    WRITE AT LPOS(4) ICON_ID1 AS ICON.
    write at lpos icon_id1 as icon no-gap.
    ELSE.
    WRITE AT LPOS(4) ICON_ID2 AS ICON.
    write at lpos icon_id2 as icon no-gap.
    ENDIF.
    COLS = 4.
    BYTES = 7.
    ELSE.
    IF SPOC-ICON_SEL = 1.
    WRITE AT LPOS(3) ICON_ID1 AS ICON.
    write at lpos icon_id1 as icon no-gap.
    ELSE.
    WRITE AT LPOS(3) ICON_ID2 AS ICON.
    write at lpos icon_id2 as icon no-gap.
    ENDIF.
    COLS = 3.
    BYTES = 6.
    ENDIF.
    ELSE.
    IF SPOC-ICON_SEL = 1.
    WRITE AT LPOS(2) ICON_ID1 AS ICON.
    write at lpos icon_id1 as icon no-gap.
    ELSE.
    WRITE AT LPOS(2) ICON_ID2 AS ICON.
    write at lpos icon_id2 as icon no-gap.
    ENDIF.
    COLS = 2.
    BYTES = 5.
    ENDIF.
    ELSE.
    "rite at lpos(1) icon_id as icon.
    WRITE AT LPOS(1) '#' NO-GAP. " Not enough space for any icon.
    COLS = 1.
    BYTES = 4.
    ENDIF.
    ENDIF.
    IF <HOT_PRTCTRL> = <SPOC_PRTCTRL>.
    COLS = 0. " in most cases.
    BYTES = 6. " in most cases.
    IF REST_LEN >= SPOC-PRTCTRL_TOTAL_LENGTH.
    THE_PRTCTRL = <LDATA>+SPOC-PRTCTRL_START_LENGTH(5).
    IF THE_PRTCTRL = 'SABLD'.
    FORMAT INTENSIFIED ON.
    "no 3.0 'SAULN'.
    "no 3.0 FORMAT UNDERSCORED ON.
    ELSEIF THE_PRTCTRL = 'SAOFF'.
    FORMAT INTENSIFIED OFF.
    "no 3.0 FORMAT UNDERSCORED OFF.
    ELSEIF THE_PRTCTRL(3) = 'COL'.
    CASE THE_PRTCTRL+3(1).
    WHEN '0'.
    FORMAT COLOR OFF.
    WHEN '1'.
    FORMAT COLOR 1.
    WHEN '2'.
    FORMAT COLOR 2.
    WHEN '3'.
    FORMAT COLOR 3.
    WHEN '4'.
    FORMAT COLOR 4.
    WHEN '5'.
    FORMAT COLOR 5.
    WHEN '6'.
    FORMAT COLOR 6.
    WHEN '7'.
    FORMAT COLOR 7.
    ENDCASE.
    CASE THE_PRTCTRL+4(1).
    WHEN 'N'.
    FORMAT INTENSIFIED OFF INVERSE OFF.
    WHEN 'H'.
    FORMAT INTENSIFIED ON INVERSE OFF.
    WHEN 'V'.
    FORMAT INTENSIFIED ON INVERSE ON.
    ENDCASE.
    ENDIF. "printcontrol
    ELSE. "??
    ENDIF.
    ENDIF.
    IF BYTES = 0.
    BYTES = 1.
    WRITE AT LPOS(1) '#'.
    COLS = 1.
    ENDIF.
    ADD COLS TO LPOS.
    SUBTRACT BYTES FROM REST_LEN.
    IF REST_LEN > 0.
    ASSIGN <LDATA>+BYTES(REST_LEN) TO <LDATA>.
    ELSE.
    EXIT.
    ENDIF.
    ENDWHILE.
    MODAB
    IF REST_LEN > 0.
    ASSIGN <LDATA>(REST_LEN) TO <PLAIN_TEXT>.
    PERFORM WRITE_BIGFIELD USING <PLAIN_TEXT>
    REST_LEN
    LPOS.
    ENDIF.
    ENDFORM.
    FORM WRITE_BIGFIELD USING VALUE(FIELD) TYPE C
    VALUE(LEN)
    VALUE(POS).
    FIELD-SYMBOLS <P>.
    DATA: CHUNK TYPE I.
    WHILE LEN > 0.
    IF LEN > 255.
    CHUNK = 255.
    ELSE.
    CHUNK = LEN.
    ENDIF.
    WRITE AT POS FIELD(CHUNK) NO-GAP.
    ADD CHUNK TO POS.
    LEN = LEN - CHUNK.
    IF LEN > 0.
    FIELD = FIELD+CHUNK.
    ENDIF.
    ENDWHILE.
    ENDFORM.
    FORM SPOOLDATA_WRITE_INIT.
    DATA: BEGIN OF ESCAPE_TRICK
    , X1(1) TYPE X
    , END OF ESCAPE_TRICK
    FIELD-SYMBOLS: <LDATA>
    , <PLAIN_TEXT>
    , <PRTCTRL>
    ESCAPE_TRICK-X1 = '1C'.
    SPOC-PRTCTRL_START = ESCAPE_TRICK.
    SPOC-PRTCTRL_START_LENGTH = 1.
    SPOC-PRTCTRL_TOTAL_LENGTH = SPOC-PRTCTRL_START_LENGTH + 5.
    ASSIGN SPOC-PRTCTRL_START(SPOC-PRTCTRL_START_LENGTH) TO <SPOC_PRTCTRL>.
    ESCAPE_TRICK-X1 = '1B'.
    SPOC-FRAME_START = ESCAPE_TRICK.
    SPOC-FRAME_START_LENGTH = 1.
    ASSIGN SPOC-FRAME_START(SPOC-FRAME_START_LENGTH) TO <SPOC_FRAME>.
    ESCAPE_TRICK-X1 = '1B'.
    SPOC-ICON_START = ESCAPE_TRICK.
    SPOC-ICON_START+1 = ','.
    SPOC-ICON_START_LENGTH = 2.
    ASSIGN SPOC-ICON_START(SPOC-ICON_START_LENGTH) TO <SPOC_ICON>.
    ESCAPE_TRICK-X1 = '1B'.
    SPOC-SYMBOL_LOW_START = ESCAPE_TRICK.
    SPOC-SYMBOL_LOW_START+1 = '('.
    SPOC-SYMBOL_HGH_START = ESCAPE_TRICK.
    SPOC-SYMBOL_HGH_START+1 = ')'.
    SPOC-SYMBOL_START_LENGTH = 2.
    ASSIGN SPOC-SYMBOL_LOW_START(SPOC-SYMBOL_START_LENGTH)
    TO <SPOC_SYMBOL_LOW>.
    ASSIGN SPOC-SYMBOL_HGH_START(SPOC-SYMBOL_START_LENGTH)
    TO <SPOC_SYMBOL_HGH>.
    SPOC-FIRST_BYTES+0(1) = SPOC-PRTCTRL_START(1).
    SPOC-FIRST_BYTES+1(1) = SPOC-FRAME_START(1).
    SPOC-FIRST_BYTES+2(1) = SPOC-ICON_START(1).
    SPOC-FIRST_BYTES+3(1) = SPOC-SYMBOL_LOW_START(1).
    ENDFORM.

Maybe you are looking for

  • Vkoa GL changes during in process sale order

    Dear sapient As per our client requirement GL account  in VKOA  for KOFK(Make to order scenario) needs to be changed. I would like know the impact of GL account determination on open sale order ,partial sale order, because system has already derived

  • After macbook air and macbook pro backup on tc wifi is very slow

    I have been great with my macbook air and the time capsule. Everything was working perfect til I just got a macbook pro, I just did a backup and now the wifi is down to 0.02mbps. The weird issue: if I turn off the pro, the wifi goes back to 6mbps. An

  • WenDynpro练习出错

    前几天好不容易安装完了SAP NW 7.01 ABAP TRIAL Version.今天在上面做一个WebDynpro的例子程序,开始都很顺利,就是到了最后IE浏览的时候出错了. 网页页面信息如下: Service cannot be reached What has happened? URL http://sapnw:8000/sap/bc/webdynpro/sap/z_tutorial1 call was terminated because the corresponding serv

  • My iMovie is missing from Applications.

    Hey there! My iMovie is missing from my Applications. I have tried to find it using spotlight and all that comes up are the iMovie files, not the application itself. I went into my purchases in the Mac App Store and it says that iMovie is installed o

  • "project appears to be damaged and cannot be opened" message

    What is causing my recent projects to not re-open? And what causes this "project appears to be damaged and cannot be opened" issue?