屏幕变式相关表格:
SHDSVCI/SHDSVTXCI:屏幕变式/屏幕变式文本
SHDTVSVCIU:事务变化和屏幕变式分配关系/Client Specific.
Shdtvsvu: 事务变化和屏幕变式分配关系/All client
SHDSVFVCI:屏幕变式和字段输入关系表
(1).SE16:SHDSVCI输入程序SAPLFSKB(即MIRO总帐屏幕程序)找出所有总帐屏幕
(2).SE16: SHDTVSVCIU/Shdtvsvu在SCVARIANT字段输入屏幕变式名找到事务变式。
找出事务变式和屏幕变式后,就可以删除。
屏幕变式设置相关Tcode:
SHD0/ OLMRLIST:设置Tcode屏幕变式
解决方法:使用SHD0删除错误的屏幕变式,删除屏幕变式时首先删除事务变式,然后再删除屏幕变式,将错误的屏幕变式删除后,MIRO的总帐屏幕就正常了。
CALL FUNCTION 'RS_HDSYS_SET_SC_VARIANT'
REPORT Zdelvar.
data zShdtvsvu like Shdtvsvu .
parameter I_SCV like SHDSVCI-SCVARIANT.
delete from SHDSVCI
where SCVARIANT = I_SCV .
delete from SHDTVSVCIU
where SCVARIANT = I_SCV .
delete from SHDSVFVCI
where SCVARIANT = I_SCV .
select single * into zShdtvsvu from Shdtvsvu
where SCVARIANT = I_SCV .
zShdtvsvu-MANDT = '800'.
delete Shdtvsvu client specified from zShdtvsvu .
Saving the selection variant during the program (saving the settings)
Saving the selection variant during the program (saving the settings)
Selection table as a variant:
So after example in a report for mass updates an extensive selection was made to be narrowing before or after this selection process as a variant be stored for later restore them.
Code:
*Variante
DATA:
seltab TYPE TABLE OF rsparams WITH HEADER LINE,
g_repid LIKE sy-repid.
d_text TYPE TABLE OF varit WITH HEADER LINE,
d_varid LIKE varid,
d_variant LIKE rsvar-variant. " 14 Char
g_repid = sy-repid.
* Selektionstabelle einlesen
REFRESH seltab.
CLEAR seltab.
* Selektionen lesen und merken
CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
EXPORTING
curr_report = g_repid
TABLES
selection_table = seltab.
PERFORM selektionstabelle_sichern.
*---------------------------------------------------------------------*
* Form selektionstabelle_sichern
*---------------------------------------------------------------------*
FORM selektionstabelle_sichern.
* Variantennamen bilden
CONCATENATE 'ZU'
sy-datum+2(6) sy-uzeit INTO d_variant. " max 14
* Variantentabelle füllen
MOVE:
g_repid TO d_varid-report,
d_variant TO d_varid-variant,
'F' TO d_varid-transport,
'A' TO d_varid-environmnt,
'X' TO d_varid-protected,
'1' TO d_varid-version,
sy-uname TO d_varid-ename,
sy-datum TO d_varid-edat,
sy-uzeit TO d_varid-etime,
sy-langu TO d_varid-mlangu.
* '20' to d_varid-xflag1,
* '00' to d_varid-xflag2.
*Beschreibungstext füllen
MOVE: sy-langu TO d_text-langu,
g_repid TO d_text-report,
d_variant TO d_text-variant.
CONCATENATE sy-uname sy-datum sy-uzeit
INTO d_text-vtext SEPARATED BY space.
APPEND d_text.
* Variante anlegen.
CALL FUNCTION 'RS_CREATE_VARIANT'
EXPORTING
curr_report = g_repid
curr_variant = d_variant
vari_desc = d_varid
TABLES
vari_contents = seltab
vari_text = d_text
* VSCREENS =
EXCEPTIONS
illegal_report_or_variant = 1
illegal_variantname = 2
not_authorized = 3
not_executed = 4
report_not_existent = 5
report_not_supplied = 6
variant_exists = 7
variant_locked = 8
OTHERS = 9.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " selektionstabelle_sichern