Situation:
Our outputs have some background colors for important fields to have better visibility. This works fine for the normal printout. But, when send a SmartForm Output as a FAX, output comes with a BLACK background wherever we have the background color. And this makes the output unreadable (BLACK font with BLACK background).
Possible ways to handle the problem:
Don't send a FAX: This is not feasible, as some customers would like to have there forms as FAX
Create a clone of the existing forms and remove the background color and call them whenever we have to send as FAX: This doesn't make sense because this will lead to more maintenance; change to the primary form leads the change to the clone form.
Find out some way to remove the background color dynamically: This seems to be the best choice, but next question is how to do it.
Solution:
I had debugged the SmartForm function modules over and over to get the point where it sets the background color, borders etc to the output and what I found, there is only main internal table, with deep structure, which handles everything to generate the layout for the output.
I have started with creating a test Smartform. I created some tables lines with background colors. Than I made a coding node in the SmartForm and tried to change the internal table, which holds the entire layout related information, with help of field-symbols to remove the background color and BINGO - I got the background color removed.
With Background Color :
Without Background Color:
SmartForm:
Download the uploadable .XML Save this file as ZTEST_NP_DYN_BGCOL.XML. To Upload, go to tcode SMARTFORMS and upload this file from Utilities > Upload Form.
The Main logic which handles the dyanmic coloring is inside the Smartform under window DUMMY.
<? xml version="1.0" encoding="utf-8" ?>
-
<
sf:SMARTFORM
xmlns:sf
="
urn:sap-com:SmartForms:2000:internal-structure
"
xmlns
="
urn:sap-com:sdixml-ifr:2000
"
sf:language
="
EN
" >
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
CAPTION
>
New Form
</
CAPTION
>
<
MASTERLANG
>
E
</
MASTERLANG
>
<
LANGVECTOR
>
*
</
LANGVECTOR
>
<
DEVCLASS
>
$TMP
</
DEVCLASS
>
<
VERSION
>
00001
</
VERSION
>
<
FIRSTUSER
>
NPATEL
</
FIRSTUSER
>
<
FIRSTDATE
>
2007-08-07
</
FIRSTDATE
>
<
FIRSTTIME
>
16:40:57
</
FIRSTTIME
>
<
LASTUSER
>
NPATEL
</
LASTUSER
>
<
LASTDATE
>
2008-05-29
</
LASTDATE
>
<
LASTTIME
>
13:39:48
</
LASTTIME
>
</
HEADER
>
<
NAME
>
DOCUMENT_OUTPUT_INFO
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
SSFCRESPD
</
TYPENAME
>
<
BYVALUE
>
X
</
BYVALUE
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
JOB_OUTPUT_INFO
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
SSFCRESCL
</
TYPENAME
>
<
BYVALUE
>
X
</
BYVALUE
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
JOB_OUTPUT_OPTIONS
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
SSFCRESOP
</
TYPENAME
>
<
BYVALUE
>
X
</
BYVALUE
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
ARCHIVE_INDEX
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
TOA_DARA
</
TYPENAME
>
<
OPTIONAL
>
X
</
OPTIONAL
>
<
BYVALUE
>
X
</
BYVALUE
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
ARCHIVE_INDEX_TAB
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
TSFDARA
</
TYPENAME
>
<
OPTIONAL
>
X
</
OPTIONAL
>
<
BYVALUE
>
X
</
BYVALUE
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
ARCHIVE_PARAMETERS
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
ARC_PARAMS
</
TYPENAME
>
<
OPTIONAL
>
X
</
OPTIONAL
>
<
BYVALUE
>
X
</
BYVALUE
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
CONTROL_PARAMETERS
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
SSFCTRLOP
</
TYPENAME
>
<
OPTIONAL
>
X
</
OPTIONAL
>
<
BYVALUE
>
X
</
BYVALUE
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
MAIL_APPL_OBJ
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
SWOTOBJID
</
TYPENAME
>
<
OPTIONAL
>
X
</
OPTIONAL
>
<
BYVALUE
>
X
</
BYVALUE
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
MAIL_RECIPIENT
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
SWOTOBJID
</
TYPENAME
>
<
OPTIONAL
>
X
</
OPTIONAL
>
<
BYVALUE
>
X
</
BYVALUE
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
MAIL_SENDER
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
SWOTOBJID
</
TYPENAME
>
<
OPTIONAL
>
X
</
OPTIONAL
>
<
BYVALUE
>
X
</
BYVALUE
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
OUTPUT_OPTIONS
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
SSFCOMPOP
</
TYPENAME
>
<
OPTIONAL
>
X
</
OPTIONAL
>
<
BYVALUE
>
X
</
BYVALUE
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
USER_SETTINGS
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
TDBOOL
</
TYPENAME
>
<
OPTIONAL
>
X
</
OPTIONAL
>
<
BYVALUE
>
X
</
BYVALUE
>
<
DEFAULTVAL
>
'X'
</
DEFAULTVAL
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
NO_ITEM
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
I
</
TYPENAME
>
</
item
>
<
NAME
>
I_DYN_BG
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
C
</
TYPENAME
>
</
item
>
<
NAME
>
FORMATTING_ERROR
</
NAME
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
INTERNAL_ERROR
</
NAME
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
SEND_ERROR
</
NAME
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
<
NAME
>
USER_CANCELED
</
NAME
>
<
STANDARD
>
X
</
STANDARD
>
</
item
>
</
INTERFACE
>
<
item
>
types: begin of ty_tab,
</
item
>
<
item
>
abcde like sy-abcde,
</
item
>
<
item
>
end of ty_tab.
</
item
>
<
item
>
types: t_Tab type table of ty_tab.
</
item
>
</
GTYPES
>
<
TYPING
>
TYPE TABLE OF
</
TYPING
>
<
TYPENAME
>
TY_TAB
</
TYPENAME
>
</
item
>
<
NAME
>
WA_ITAB
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
TY_TAB
</
TYPENAME
>
</
item
>
<
NAME
>
W_NO_ITEM
</
NAME
>
<
TYPING
>
TYPE
</
TYPING
>
<
TYPENAME
>
I
</
TYPENAME
>
</
item
>
</
GDATA
>
<
OPD
>
W_NO_ITEM
</
OPD
>
</
item
>
</
GPLIST
>
<
item
>
* Fill the test internal table
</
item
>
<
item
>
perform fill_Table tables itab
</
item
>
<
item
>
using no_item
</
item
>
<
item
>
changing w_no_item.
</
item
>
</
GCODING
>
<
item
>
*&---------------------------------------------------------------------*
</
item
>
<
item
>
*& Form FILL_TABLE
</
item
>
<
item
>
*&---------------------------------------------------------------------*
</
item
>
<
item
>
* text
</
item
>
<
item
>
*----------------------------------------------------------------------*
</
item
>
<
item
>
* -->I_TAB text
</
item
>
<
item
>
* -->I_NO text
</
item
>
<
item
>
* <--E_NO text
</
item
>
<
item
>
*----------------------------------------------------------------------*
</
item
>
<
item
>
FORM FILL_TABLE TABLES I_TAB TYPE T_TAB
</
item
>
<
item
>
USING I_NO TYPE I
</
item
>
<
item
>
CHANGING E_NO TYPE I.
</
item
>
<
item
>
E_NO = I_NO.
</
item
>
<
item
>
* if input is less than 5 than make it 5
</
item
>
<
item
>
IF E_NO < 5.
</
item
>
<
item
>
E_NO = 5.
</
item
>
<
item
>
ENDIF.
</
item
>
<
item
>
* fill the table
</
item
>
<
item
>
DO E_NO TIMES.
</
item
>
<
item
>
I_TAB-ABCDE = SY-ABCDE.
</
item
>
<
item
>
APPEND I_TAB.
</
item
>
<
item
>
CLEAR I_TAB.
</
item
>
<
item
>
ENDDO.
</
item
>
<
item
>
ENDFORM. "fill_Table
</
item
>
</
FCODING
>
<
PAGEFORMAT
>
DINA4
</
PAGEFORMAT
>
<
STDSTYLE
>
SYSTEM
</
STDSTYLE
>
<
NODETYPE
>
RP
</
NODETYPE
>
<
NODETYPE
>
PA
</
NODETYPE
>
<
INAME
>
FIRST
</
INAME
>
</
NAME
>
<
CAPTION
>
First Page
</
CAPTION
>
<
INAME
>
FIRST
</
INAME
>
</
NEXTPAGE
>
<
NUMB_MODE
>
I
</
NUMB_MODE
>
<
NUMB_TYPE
>
A
</
NUMB_TYPE
>
<
PAGEORTN
>
P
</
PAGEORTN
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
PA
</
OBJTYPE
>
<
INAME
>
FIRST
</
INAME
>
<
CAPTION
>
First Page
</
CAPTION
>
</
item
>
</
T_CAPTION
>
<
INAME
>
%GRAPHIC1
</
INAME
>
</
NAME
>
<
CAPTION
>
Background Picture
</
CAPTION
>
<
BTYPE
>
BCOL
</
BTYPE
>
</
GKEYBDS
>
<
APPMODE
>
B
</
APPMODE
>
<
RELMODE
>
S
</
RELMODE
>
<
ALIGNMENT
>
L
</
ALIGNMENT
>
<
U_MARGIN
>
CM
</
U_MARGIN
>
<
ALIGN_H
>
C
</
ALIGN_H
>
<
MARGINH
>
0.00
</
MARGINH
>
<
ALIGN_V
>
C
</
ALIGN_V
>
<
MARGINV
>
0.00
</
MARGINV
>
<
PRINTOUT
>
X
</
PRINTOUT
>
</
BGR_EXT
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
GR
</
OBJTYPE
>
<
INAME
>
%GRAPHIC1
</
INAME
>
<
CAPTION
>
Background Picture
</
CAPTION
>
</
item
>
</
T_CAPTION
>
</
sf:GRAPHIC
>
</
sf:BACKGROUND
>
</
sf:PAGE
>
</
sf:OBJ
>
<
NODETYPE
>
WI
</
NODETYPE
>
-
<
sf:WINDOW ID
="
2800
" >
<
INAME
>
DUMMY
</
INAME
>
</
NAME
>
<
CAPTION
>
Dummy window
</
CAPTION
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
WI
</
OBJTYPE
>
<
INAME
>
DUMMY
</
INAME
>
<
CAPTION
>
Dummy window
</
CAPTION
>
</
item
>
</
T_CAPTION
>
-
<
sf:NODE ID
="
2824
" >
<
NODETYPE
>
RC
</
NODETYPE
>
<
NODETYPE
>
CO
</
NODETYPE
>
<
INAME
>
CHANGE_BG_COLOR
</
INAME
>
</
NAME
>
<
CAPTION
>
Change Background Color
</
CAPTION
>
<
item
>
* In line type TYPE1 under the MAIN_TABLE, we have two columns.
</
item
>
<
item
>
* Column 1 with RED background and border
</
item
>
<
item
>
* Column 2 with no background color and BLUE border
</
item
>
<
item
>
* This piece of code will remove the RED Background color when the total
</
item
>
<
item
>
* number of entry will greater than 5.
</
item
>
<
item
>
FIELD-SYMBOLS: <F_TAB> TYPE TSFTABDEF. " Table - Actual SF definitions
</
item
>
<
item
>
DATA: L_TABDEF TYPE SSFTABDEF, " Work Area for the Table
</
item
>
<
item
>
T_LTYPES TYPE TSFLTYPE, " Table - Line types
</
item
>
<
item
>
L_LTYPES TYPE SSFLTYPE, " Work Area for the table
</
item
>
<
item
>
T_COLINFO TYPE TSFCOLINFO, " Table - Columns
</
item
>
<
item
>
L_COLINFO TYPE SSFCOLINFO, " Work area for the table
</
item
>
<
item
>
T_BORDER TYPE TSFCTABA, " Tables - Borders
</
item
>
<
item
>
L_BORDER TYPE SSFCTABA. " Work Area for the border
</
item
>
<
item
>
* Assign the table definition to the table field symbol
</
item
>
<
item
>
* Assiging by '(Program)Tablename' will give as the actual table
</
item
>
<
item
>
* which contains the defination of the Smartform. We will change
</
item
>
<
item
>
* respective table background color.
</
item
>
<
item
>
ASSIGN ('(SAPLSTXBC)TABDEFS') TO <F_TAB>.
</
item
>
<
item
>
* Table definition table
</
item
>
<
item
>
LOOP AT <F_TAB> INTO L_TABDEF.
</
item
>
<
item
>
* Table line Types
</
item
>
<
item
>
* Line type TYPE1 from the table MAIN_TABLE
</
item
>
<
item
>
LOOP AT L_TABDEF-TLTYPE INTO L_LTYPES.
</
item
>
<
item
>
* Coloum information
</
item
>
<
item
>
* Column1 (cell) of the TYPE1
</
item
>
<
item
>
LOOP AT L_LTYPES-TCOLINFO INTO L_COLINFO.
</
item
>
<
item
>
* Borders
</
item
>
<
item
>
* Background color and borders for that cell
</
item
>
<
item
>
LOOP AT L_COLINFO-BORDERS INTO L_BORDER.
</
item
>
<
item
>
* Clearing the color parameters for the cell
</
item
>
<
item
>
CLEAR: L_BORDER-INTENSITY, " Intensity
</
item
>
<
item
>
L_BORDER-FILLCOLOR-RED, " Red
</
item
>
<
item
>
L_BORDER-FILLCOLOR-USED, " Color Used
</
item
>
<
item
>
L_BORDER-CFILLCOLOR-COLOR, " Red color in Hexa
</
item
>
<
item
>
L_BORDER-CFILLCOLOR-XRED. " Color used in Hexa
</
item
>
<
item
>
MODIFY L_COLINFO-BORDERS FROM L_BORDER.
</
item
>
<
item
>
ENDLOOP.
</
item
>
<
item
>
MODIFY L_LTYPES-TCOLINFO FROM L_COLINFO.
</
item
>
<
item
>
ENDLOOP.
</
item
>
<
item
>
MODIFY L_TABDEF-TLTYPE FROM L_LTYPES.
</
item
>
<
item
>
ENDLOOP.
</
item
>
<
item
>
MODIFY <F_TAB> FROM L_TABDEF.
</
item
>
<
item
>
ENDLOOP.
</
item
>
</
CODE
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
CO
</
OBJTYPE
>
<
INAME
>
CHANGE_BG_COLOR
</
INAME
>
<
CAPTION
>
Change Background Color
</
CAPTION
>
</
item
>
</
T_CAPTION
>
</
sf:CODE
>
</
sf:OBJ
>
<
INAME
>
%CONDITION3
</
INAME
>
</
NAME
>
<
CAPTION
>
New Alternative 3
</
CAPTION
>
<
OP1
>
I_DYN_BG
</
OP1
>
<
ICON
>
@20/QSelect: Equal to@
</
ICON
>
</
item
>
</
COND
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
CD
</
OBJTYPE
>
<
INAME
>
%CONDITION3
</
INAME
>
<
CAPTION
>
New Alternative 3
</
CAPTION
>
</
item
>
</
T_CAPTION
>
</
sf:CONDITION
>
</
sf:COND
>
</
sf:NODE
>
</
sf:item
>
</
sf:SUCC
>
</
sf:NODE
>
</
sf:PROC_CTRL
>
</
sf:WINDOW
>
</
sf:OBJ
>
<
INAME
>
%OUTATTRIB2
</
INAME
>
</
NAME
>
<
U_WFRAME
>
PT
</
U_WFRAME
>
<
U_WBOXV
>
CM
</
U_WBOXV
>
<
U_WBOXH
>
CM
</
U_WBOXH
>
<
U_WLEFT
>
CM
</
U_WLEFT
>
<
WWIDTH
>
2.00
</
WWIDTH
>
<
U_WWIDTH
>
CM
</
U_WWIDTH
>
<
U_WTOP
>
CM
</
U_WTOP
>
<
WHEIGHT
>
2.00
</
WHEIGHT
>
<
U_WHEIGHT
>
CM
</
U_WHEIGHT
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
LEFTATTR
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
TOPATTR
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
RIGHTATTR
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
BOTTOMATTR
>
</
BORDER
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
OA
</
OBJTYPE
>
<
INAME
>
%OUTATTRIB2
</
INAME
>
</
item
>
</
T_CAPTION
>
</
sf:OUTATTR
>
</
sf:OUTATTR
>
</
sf:NODE
>
</
sf:item
>
<
NODETYPE
>
WI
</
NODETYPE
>
-
<
sf:WINDOW ID
="
3121
" >
<
INAME
>
MAIN
</
INAME
>
</
NAME
>
<
CAPTION
>
Main Window
</
CAPTION
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
WI
</
OBJTYPE
>
<
INAME
>
MAIN
</
INAME
>
<
CAPTION
>
Main Window
</
CAPTION
>
</
item
>
</
T_CAPTION
>
-
<
sf:NODE ID
="
3145
" >
<
NODETYPE
>
RC
</
NODETYPE
>
<
NODETYPE
>
SE
</
NODETYPE
>
<
INAME
>
MAIN_TABLE
</
INAME
>
</
NAME
>
<
CAPTION
>
New Table 1
</
CAPTION
>
<
SECTTYPE
>
C
</
SECTTYPE
>
<
DATATYPE
>
L
</
DATATYPE
>
<
TABNAME
>
ITAB
</
TABNAME
>
<
TABHTYPE
>
I
</
TABHTYPE
>
<
TABHEADER
>
WA_ITAB
</
TABHEADER
>
<
OTABTYPE
>
D
</
OTABTYPE
>
<
OTABHEADER
>
A
</
OTABHEADER
>
<
OTABFOOTER
>
A
</
OTABFOOTER
>
<
FHEIGHT
>
1.00
</
FHEIGHT
>
<
U_FHEIGHT
>
CM
</
U_FHEIGHT
>
<
PATTNUM
>
0000
</
PATTNUM
>
<
FRAME
>
0.00
</
FRAME
>
<
U_FRAME
>
PT
</
U_FRAME
>
</
PATTERN
>
<
USEBORDER
>
X
</
USEBORDER
>
<
WIDTH
>
14.00
</
WIDTH
>
<
U_WIDTH
>
CM
</
U_WIDTH
>
<
APPMODE
>
L
</
APPMODE
>
<
U_LEFT
>
CM
</
U_LEFT
>
<
DEFAULTVAL
>
X
</
DEFAULTVAL
>
<
SHADING
>
000
</
SHADING
>
</
item
>
</
DYNLINES
>
<
COLUMNNR
>
001
</
COLUMNNR
>
<
CWIDTH
>
7.00
</
CWIDTH
>
<
U_CWIDTH
>
CM
</
U_CWIDTH
>
<
SHADING
>
000
</
SHADING
>
<
INTENSITY
>
100
</
INTENSITY
>
<
LLEFT
>
0.00
</
LLEFT
>
<
LLEFT_U
>
MM
</
LLEFT_U
>
<
LTOP_U
>
MM
</
LTOP_U
>
<
LRIGHT
>
15.00
</
LRIGHT
>
<
LRIGHT_U
>
TW
</
LRIGHT_U
>
<
LBOTTOM
>
0.00
</
LBOTTOM
>
<
LBOTTOM_U
>
MM
</
LBOTTOM_U
>
</
item
>
</
BORDERS
>
</
item
>
<
COLUMNNR
>
002
</
COLUMNNR
>
<
CWIDTH
>
7.00
</
CWIDTH
>
<
U_CWIDTH
>
CM
</
U_CWIDTH
>
<
SHADING
>
000
</
SHADING
>
<
INTENSITY
>
000
</
INTENSITY
>
<
LLEFT
>
15.00
</
LLEFT
>
<
LLEFT_U
>
TW
</
LLEFT_U
>
<
LTOP_U
>
TW
</
LTOP_U
>
<
LRIGHT
>
15.00
</
LRIGHT
>
<
LRIGHT_U
>
TW
</
LRIGHT_U
>
<
LBOTTOM
>
15.00
</
LBOTTOM
>
<
LBOTTOM_U
>
TW
</
LBOTTOM_U
>
</
item
>
</
BORDERS
>
</
item
>
</
CELLS
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
SE
</
OBJTYPE
>
<
INAME
>
MAIN_TABLE
</
INAME
>
<
CAPTION
>
New Table 1
</
CAPTION
>
</
item
>
</
T_CAPTION
>
</
sf:SECTION
>
</
sf:OBJ
>
<
NODETYPE
>
EV
</
NODETYPE
>
<
INAME
>
%EVENT1
</
INAME
>
</
NAME
>
<
CAPTION
>
Header
</
CAPTION
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
EV
</
OBJTYPE
>
<
INAME
>
%EVENT1
</
INAME
>
<
CAPTION
>
Header
</
CAPTION
>
</
item
>
</
T_CAPTION
>
</
sf:EVENT
>
</
sf:OBJ
>
</
sf:NODE
>
</
sf:item
>
<
NODETYPE
>
EV
</
NODETYPE
>
<
INAME
>
%EVENT2
</
INAME
>
</
NAME
>
<
CAPTION
>
Main Area
</
CAPTION
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
EV
</
OBJTYPE
>
<
INAME
>
%EVENT2
</
INAME
>
<
CAPTION
>
Main Area
</
CAPTION
>
</
item
>
</
T_CAPTION
>
</
sf:EVENT
>
</
sf:OBJ
>
<
NODETYPE
>
SE
</
NODETYPE
>
<
INAME
>
MAIN_ROW
</
INAME
>
</
NAME
>
<
CAPTION
>
New Line 1
</
CAPTION
>
<
SECTTYPE
>
R
</
SECTTYPE
>
<
U_FHEIGHT
>
CM
</
U_FHEIGHT
>
<
PATTNUM
>
0000
</
PATTNUM
>
<
FRAME
>
0.00
</
FRAME
>
<
U_FRAME
>
PT
</
U_FRAME
>
</
PATTERN
>
<
U_WIDTH
>
CM
</
U_WIDTH
>
<
U_LEFT
>
CM
</
U_LEFT
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
SE
</
OBJTYPE
>
<
INAME
>
MAIN_ROW
</
INAME
>
<
CAPTION
>
New Line 1
</
CAPTION
>
</
item
>
</
T_CAPTION
>
</
sf:SECTION
>
</
sf:OBJ
>
<
INAME
>
%OUTATTRIB3
</
INAME
>
</
NAME
>
<
T_LINETYPE
>
TYPE1
</
T_LINETYPE
>
<
U_WFRAME
>
PT
</
U_WFRAME
>
<
U_WBOXV
>
CM
</
U_WBOXV
>
<
U_WBOXH
>
CM
</
U_WBOXH
>
<
U_WLEFT
>
CM
</
U_WLEFT
>
<
U_WWIDTH
>
CM
</
U_WWIDTH
>
<
U_WTOP
>
CM
</
U_WTOP
>
<
U_WHEIGHT
>
CM
</
U_WHEIGHT
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
LEFTATTR
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
TOPATTR
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
RIGHTATTR
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
BOTTOMATTR
>
</
BORDER
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
OA
</
OBJTYPE
>
<
INAME
>
%OUTATTRIB3
</
INAME
>
</
item
>
</
T_CAPTION
>
</
sf:OUTATTR
>
</
sf:OUTATTR
>
<
NODETYPE
>
SE
</
NODETYPE
>
<
INAME
>
V_ABCDE
</
INAME
>
</
NAME
>
<
CAPTION
>
New Column 1
</
CAPTION
>
<
SECTTYPE
>
E
</
SECTTYPE
>
<
U_FHEIGHT
>
CM
</
U_FHEIGHT
>
<
PATTNUM
>
0000
</
PATTNUM
>
<
FRAME
>
0.00
</
FRAME
>
<
U_FRAME
>
PT
</
U_FRAME
>
</
PATTERN
>
<
U_WIDTH
>
CM
</
U_WIDTH
>
<
U_LEFT
>
CM
</
U_LEFT
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
SE
</
OBJTYPE
>
<
INAME
>
V_ABCDE
</
INAME
>
<
CAPTION
>
New Column 1
</
CAPTION
>
</
item
>
</
T_CAPTION
>
</
sf:SECTION
>
</
sf:OBJ
>
<
INAME
>
%OUTATTRIB4
</
INAME
>
</
NAME
>
<
U_WFRAME
>
PT
</
U_WFRAME
>
<
U_WBOXV
>
CM
</
U_WBOXV
>
<
U_WBOXH
>
CM
</
U_WBOXH
>
<
U_WLEFT
>
CM
</
U_WLEFT
>
<
U_WWIDTH
>
CM
</
U_WWIDTH
>
<
U_WTOP
>
CM
</
U_WTOP
>
<
U_WHEIGHT
>
CM
</
U_WHEIGHT
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
LEFTATTR
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
TOPATTR
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
RIGHTATTR
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
BOTTOMATTR
>
</
BORDER
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
OA
</
OBJTYPE
>
<
INAME
>
%OUTATTRIB4
</
INAME
>
</
item
>
</
T_CAPTION
>
</
sf:OUTATTR
>
</
sf:OUTATTR
>
<
NODETYPE
>
TI
</
NODETYPE
>
<
INAME
>
T_ABCDE
</
INAME
>
</
NAME
>
<
CAPTION
>
New Text
</
CAPTION
>
<
NOLANGUAGE
>
X
</
NOLANGUAGE
>
<
APPMODE
>
P
</
APPMODE
>
<
TDFORMAT
>
*
</
TDFORMAT
>
<
TDLINE
>
&wa_itab-abcde&
</
TDLINE
>
</
item
>
</
TEXT
>
<
STYLE_NAME
>
SYSTEM
</
STYLE_NAME
>
<
ENABLED
>
F
</
ENABLED
>
</
TEXT_AREA
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
TI
</
OBJTYPE
>
<
INAME
>
T_ABCDE
</
INAME
>
<
CAPTION
>
New Text
</
CAPTION
>
</
item
>
</
T_CAPTION
>
</
sf:TEXT
>
</
sf:OBJ
>
</
sf:NODE
>
</
sf:item
>
</
sf:SUCC
>
</
sf:NODE
>
</
sf:item
>
<
NODETYPE
>
SE
</
NODETYPE
>
<
INAME
>
T_TEST
</
INAME
>
</
NAME
>
<
CAPTION
>
New Column 2
</
CAPTION
>
<
SECTTYPE
>
E
</
SECTTYPE
>
<
U_FHEIGHT
>
CM
</
U_FHEIGHT
>
<
PATTNUM
>
0000
</
PATTNUM
>
<
FRAME
>
0.00
</
FRAME
>
<
U_FRAME
>
PT
</
U_FRAME
>
</
PATTERN
>
<
U_WIDTH
>
CM
</
U_WIDTH
>
<
U_LEFT
>
CM
</
U_LEFT
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
SE
</
OBJTYPE
>
<
INAME
>
T_TEST
</
INAME
>
<
CAPTION
>
New Column 2
</
CAPTION
>
</
item
>
</
T_CAPTION
>
</
sf:SECTION
>
</
sf:OBJ
>
<
INAME
>
%OUTATTRIB5
</
INAME
>
</
NAME
>
<
U_WFRAME
>
PT
</
U_WFRAME
>
<
U_WBOXV
>
CM
</
U_WBOXV
>
<
U_WBOXH
>
CM
</
U_WBOXH
>
<
U_WLEFT
>
CM
</
U_WLEFT
>
<
U_WWIDTH
>
CM
</
U_WWIDTH
>
<
U_WTOP
>
CM
</
U_WTOP
>
<
U_WHEIGHT
>
CM
</
U_WHEIGHT
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
LEFTATTR
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
TOPATTR
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
RIGHTATTR
>
<
THICKNESS
>
0.00
</
THICKNESS
>
<
THICKNESSU
>
PT
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
BOTTOMATTR
>
</
BORDER
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
OA
</
OBJTYPE
>
<
INAME
>
%OUTATTRIB5
</
INAME
>
</
item
>
</
T_CAPTION
>
</
sf:OUTATTR
>
</
sf:OUTATTR
>
<
NODETYPE
>
TI
</
NODETYPE
>
<
INAME
>
V_TEST
</
INAME
>
</
NAME
>
<
CAPTION
>
New Text 1
</
CAPTION
>
<
APPMODE
>
P
</
APPMODE
>
<
TDFORMAT
>
*
</
TDFORMAT
>
<
TDLINE
>
Test
</
TDLINE
>
</
item
>
</
TEXT
>
<
STYLE_NAME
>
SYSTEM
</
STYLE_NAME
>
<
ENABLED
>
F
</
ENABLED
>
</
TEXT_AREA
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
TI
</
OBJTYPE
>
<
INAME
>
V_TEST
</
INAME
>
<
CAPTION
>
New Text 1
</
CAPTION
>
</
item
>
</
T_CAPTION
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
INAME
>
V_TEST
</
INAME
>
<
LINENR
>
000001
</
LINENR
>
<
TDFORMAT
>
*
</
TDFORMAT
>
<
TDLINE
>
Test
</
TDLINE
>
</
item
>
</
T_TEXT
>
</
sf:TEXT
>
</
sf:OBJ
>
</
sf:NODE
>
</
sf:item
>
</
sf:SUCC
>
</
sf:NODE
>
</
sf:item
>
</
sf:SUCC
>
</
sf:NODE
>
</
sf:item
>
</
sf:SUCC
>
</
sf:NODE
>
</
sf:item
>
<
NODETYPE
>
EV
</
NODETYPE
>
<
INAME
>
%EVENT3
</
INAME
>
</
NAME
>
<
CAPTION
>
Footer
</
CAPTION
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
EV
</
OBJTYPE
>
<
INAME
>
%EVENT3
</
INAME
>
<
CAPTION
>
Footer
</
CAPTION
>
</
item
>
</
T_CAPTION
>
</
sf:EVENT
>
</
sf:OBJ
>
</
sf:NODE
>
</
sf:item
>
</
sf:SUCC
>
</
sf:NODE
>
</
sf:item
>
</
sf:SUCC
>
</
sf:NODE
>
</
sf:PROC_CTRL
>
</
sf:WINDOW
>
</
sf:OBJ
>
<
INAME
>
%OUTATTRIB1
</
INAME
>
</
NAME
>
<
CAPTION
>
New Display Option
</
CAPTION
>
<
U_WFRAME
>
PT
</
U_WFRAME
>
<
U_WBOXV
>
CM
</
U_WBOXV
>
<
U_WBOXH
>
CM
</
U_WBOXH
>
<
WLEFT
>
2.00
</
WLEFT
>
<
U_WLEFT
>
CM
</
U_WLEFT
>
<
WWIDTH
>
14.00
</
WWIDTH
>
<
U_WWIDTH
>
CM
</
U_WWIDTH
>
<
U_WTOP
>
CM
</
U_WTOP
>
<
WHEIGHT
>
15.00
</
WHEIGHT
>
<
U_WHEIGHT
>
CM
</
U_WHEIGHT
>
<
THICKNESS
>
15.00
</
THICKNESS
>
<
THICKNESSU
>
TW
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
LEFTATTR
>
<
THICKNESS
>
15.00
</
THICKNESS
>
<
THICKNESSU
>
TW
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
TOPATTR
>
<
THICKNESS
>
15.00
</
THICKNESS
>
<
THICKNESSU
>
TW
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
RIGHTATTR
>
<
THICKNESS
>
15.00
</
THICKNESS
>
<
THICKNESSU
>
TW
</
THICKNESSU
>
<
DISTANCE
>
0.00
</
DISTANCE
>
<
DISTANCEU
>
CM
</
DISTANCEU
>
</
BOTTOMATTR
>
</
BORDER
>
<
FORMNAME
>
ZTEST_NP_DYN_BGCOL
</
FORMNAME
>
<
OBJTYPE
>
OA
</
OBJTYPE
>
<
INAME
>
%OUTATTRIB1
</
INAME
>
<
CAPTION
>
New Display Option
</
CAPTION
>
</
item
>
</
T_CAPTION
>
</
sf:OUTATTR
>
</
sf:OUTATTR
>
</
sf:NODE
>
</
sf:item
>
</
sf:SUCC
>
</
sf:NODE
>
</
sf:item
>
</
sf:SUCC
>
</
sf:NODE
>
</
sf:PAGETREE
>
</
sf:item
>
</
sf:VARHEADER
>
</
sf:SMARTFORM
>
Driver Program
This is the driver program for SmartForm:
*&---------------------------------------------------------------------* *& Report ZTEST_NP_SF_DYN *& *&---------------------------------------------------------------------* *& Test Program to test the dynamic background color in the *& Smartforms *&---------------------------------------------------------------------* REPORT ZTEST_NP_SF_DYN. DATA: W_FM_NAME TYPE RS38L_FNAM. * Selection Screen SELECTION-SCREEN: BEGIN OF BLOCK BLK1 WITH FRAME. SELECTION-SCREEN: BEGIN OF LINE, COMMENT 1(20) L_SF_NM, POSITION 35. PARAMETERS: P_SF_NM TYPE TDSFNAME DEFAULT 'ZTEST_NP_DYN_BGCOL'. SELECTION-SCREEN: END OF LINE. SELECTION-SCREEN: BEGIN OF LINE, COMMENT 1(20) L_ITEM, POSITION 35. PARAMETERS: P_ITEM TYPE I DEFAULT 5. SELECTION-SCREEN: END OF LINE. SELECTION-SCREEN: BEGIN OF LINE. PARAMETERS: P_BG_COL AS CHECKBOX. SELECTION-SCREEN: COMMENT 3(35) L_BG, END OF LINE. SELECTION-SCREEN: END OF BLOCK BLK1. * Initialization INITIALIZATION. L_SF_NM = 'Smartform Name'. L_ITEM = 'Number of Item'. L_BG = 'With Background Color'. * Start of Selection START-OF-SELECTION. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING FORMNAME = P_SF_NM IMPORTING FM_NAME = W_FM_NAME EXCEPTIONS NO_FORM = 1 NO_FUNCTION_MODULE = 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. CALL FUNCTION W_FM_NAME EXPORTING NO_ITEM = P_ITEM I_DYN_BG = P_BG_COL EXCEPTIONS FORMATTING_ERROR = 1 INTERNAL_ERROR = 2 SEND_ERROR = 3 USER_CANCELED = 4 OTHERS = 5. IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
How to run this program:
Note: I have tried this on ECC 5.0.
source :https://www.sdn.sap.com/irj/sdn/wiki?path=/display/Snippets/Dynamic+Background+Colors+in+SmartForms