2009 Feb 25 5:44 AM
Hi
In my report Im calling a screen with Image. I have different images uploaded using SE78. But everytime same image is comming, not different. If I click on different ouput image the workarea is changing (WTAB-IMAGE) but the same image is comming. The code is below. I am unable to trace the bug. Please help.
REPORT ZKD_PIC_ON_SCREEN.
TYPES : BEGIN OF TTAB,
IMAGE TYPE CHAR70,
END OF TTAB.
DATA : ITAB TYPE STANDARD TABLE OF TTAB,
WTAB LIKE LINE OF ITAB.
START-OF-SELECTION.
" all image are different
WTAB-IMAGE = 'AERDE04-C'.
APPEND WTAB TO ITAB.
WTAB-IMAGE = 'AETDF07-C'.
APPEND WTAB TO ITAB.
WTAB-IMAGE = 'XPFTD01-C'.
APPEND WTAB TO ITAB.
WTAB-IMAGE = 'XPFTF02-C'.
APPEND WTAB TO ITAB.
LOOP AT ITAB INTO WTAB .
WRITE AT : /2 WTAB-IMAGE.
HIDE WTAB-IMAGE.
ENDLOOP.
AT LINE-SELECTION.
IF WTAB-IMAGE IS NOT INITIAL.
CALL SCREEN 700 STARTING AT 10 10 .
" created a Custom control name PICTURE_CONTAINER
ENDIF.
*&---------------------------------------------------------------------*
*& Module STATUS_0700 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0700 OUTPUT.
SET PF-STATUS '700'.
* SET TITLEBAR 'xxx'.
DATA: W_LINES TYPE I.
TYPES PICT_LINE(256) TYPE C.
DATA :
CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
EDITOR TYPE REF TO CL_GUI_TEXTEDIT,
PICTURE TYPE REF TO CL_GUI_PICTURE,
PICT_TAB TYPE TABLE OF PICT_LINE,
URL(255) TYPE C.
DATA: GRAPHIC_URL(255).
DATA: BEGIN OF GRAPHIC_TABLE OCCURS 0,
LINE(255) TYPE X,
END OF GRAPHIC_TABLE.
DATA: L_GRAPHIC_CONV TYPE I.
DATA: L_GRAPHIC_OFFS TYPE I.
DATA: GRAPHIC_SIZE TYPE I.
DATA: L_GRAPHIC_XSTR TYPE XSTRING.
.
CALL METHOD CL_GUI_CFW=>FLUSH.
CREATE OBJECT:
CONTAINER EXPORTING CONTAINER_NAME = 'PICTURE_CONTAINER',
PICTURE EXPORTING PARENT = CONTAINER.
CALL METHOD CL_SSF_XSF_UTILITIES=>GET_BDS_GRAPHIC_AS_BMP
EXPORTING
P_OBJECT = 'GRAPHICS'
P_NAME = WTAB-IMAGE " It is changeing but Image is not changing
P_ID = 'BMAP'
P_BTYPE = 'BCOL'
RECEIVING
P_BMP = L_GRAPHIC_XSTR
* EXCEPTIONS
* NOT_FOUND = 1
* INTERNAL_ERROR = 2
* others = 3
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
GRAPHIC_SIZE = XSTRLEN( L_GRAPHIC_XSTR ).
L_GRAPHIC_CONV = GRAPHIC_SIZE.
L_GRAPHIC_OFFS = 0.
WHILE L_GRAPHIC_CONV > 255.
GRAPHIC_TABLE-LINE = L_GRAPHIC_XSTR+L_GRAPHIC_OFFS(255).
APPEND GRAPHIC_TABLE.
L_GRAPHIC_OFFS = L_GRAPHIC_OFFS + 255.
L_GRAPHIC_CONV = L_GRAPHIC_CONV - 255.
ENDWHILE.
GRAPHIC_TABLE-LINE = L_GRAPHIC_XSTR+L_GRAPHIC_OFFS(L_GRAPHIC_CONV).
APPEND GRAPHIC_TABLE.
CALL FUNCTION 'DP_CREATE_URL'
EXPORTING
TYPE = 'IMAGE'
SUBTYPE = 'X-UNKNOWN'
SIZE = GRAPHIC_SIZE
LIFETIME = 'T'
TABLES
DATA = GRAPHIC_TABLE
CHANGING
URL = URL.
CALL METHOD PICTURE->LOAD_PICTURE_FROM_URL
EXPORTING
URL = URL.
CALL METHOD PICTURE->SET_DISPLAY_MODE
EXPORTING
DISPLAY_MODE = PICTURE->DISPLAY_MODE_FIT_CENTER.
CLEAR : L_GRAPHIC_XSTR, URL, CONTAINER.
ENDMODULE. " STATUS_0700 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0700 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0700 INPUT.
DATA : OK_CODE LIKE SY-UCOMM.
CASE OK_CODE .
WHEN 'OK'.
CLEAR OK_CODE .
LEAVE TO SCREEN 0.
WHEN 'CANC'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0700 INPUT
Edited by: KaushiK©Datta on Feb 25, 2009 11:24 AM
2009 Feb 25 9:09 AM
2009 Feb 25 10:19 AM
Thanks Ruiz ,
I will b oblized if u explain where to call and how to call that method? Any other solution?
2009 Feb 25 1:55 PM
2009 Feb 25 1:03 PM
2022 Aug 25 12:24 AM
2022 Oct 27 8:42 AM
Solved for me by using
The problem was in GRAPHIC_TABLE & GRAPHIC_SIZE