ABAP技巧代码汇总Word文档下载推荐.docx
《ABAP技巧代码汇总Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ABAP技巧代码汇总Word文档下载推荐.docx(72页珍藏版)》请在冰点文库上搜索。
![ABAP技巧代码汇总Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-4/28/0fd61d7b-dc5c-409f-b9a8-25367237c26e/0fd61d7b-dc5c-409f-b9a8-25367237c26e1.gif)
*–〉选择1而没有选择2
IFP_CB1=‘X’ANDP_CB2=”.
*—〉向listbox里面添加值
REFRESHLIST.
VALUE-KEY=’11′.
“这个就是变量P_LIST的值
VALUE-TEXT=’11′.
“这个是text
APPENDVALUETOLIST.
VALUE-KEY=’22′.
VALUE-TEXT=’22′.
VALUE-KEY=’33′.
VALUE-TEXT=’33′.
*—〉调用函数显示listbox里面的值
CALLFUNCTION‘VRM_SET_VALUES’
EXPORTING
ID
=‘P_LIST1′
VALUES=LIST.
*—〉把第二个listbox的值清空,并且不能输入
CLEARP_LIST2.
LOOPATSCREEN.
IFSCREEN-NAME=‘P_LIST2′.
SCREEN-INPUT=0.
MODIFYSCREEN.
ENDIF.
ENDLOOP.
*–〉选择2,没有选择1,同上
ELSEIFP_CB2=‘X’ANDP_CB1=”.
VALUE-KEY=‘AAAAAAAAAAAAAAAAAAAA’.
VALUE-TEXT=‘AAAAAAAAAAAAAAAAAAAA’.
VALUE-KEY=‘BBBBBBBBBBBBBBBBBBBB’.
VALUE-TEXT=‘BBBBBBBBBBBBBBBBBBBB’.
VALUE-KEY=‘CCCCCCCCCCCCCCCCCCCC’.
VALUE-TEXT=‘CCCCCCCCCCCCCCCCCCCC’.
=‘P_LIST2′
*—〉清空listbox1的值
CLEARP_LIST1.
IFSCREEN-NAME=‘P_LIST1′.
*–〉都没有选择,都清空且不能输入
ELSEIFP_CB1=”ANDP_CB2=”.
CLEAR:
P_LIST1,P_LIST2.
*–〉都选,执行
ELSEIFP_CB1=‘X’ANDP_CB2=‘X’.
VALUE-KEY=’11′.
VALUE-TEXT=’11′.
START-OF-SELECTION.
*–〉输出到第二屏幕看看
WRITE:
P_LIST1,/P_LIST2.
2、ABAPmemory中的Export和Import
可以用于SUBMIT方式调用其他ABAP程序后,数据只能通过某个透明表暂存,在由主程序查询透明表取得结果的情况,
这样做的好处是不用在通过透明表转数据了,先把子程序中的数据EXPORT到一块命名的内存空间,然后在主程序里
IMPORT命名的内存空间的值到内表中。
。
REPORTz_barry_export_import.
DATA:
BEGINOFitab1OCCURS0,
ff(10),
ENDOFitab1.
itab2LIKEitab1OCCURS0WITHHEADERLINE.
str1TYPEstring,
str2TYPEstring.
APPEND'
1'
TOitab1.
2'
str1='
sssssssssss'
.
***如果是同名的对象,可以这么写:
EXPORTitab1TOMEMORYID'
M1'
FREEitab1.
IMPORTitab1FROMMEMORYID'
LOOPATitab1.
WRITE/itab1-ff.
ENDLOOP.
***如果不是同名的对象,需要加上一个对象名
EXPORTa=itab1b=str1TOMEMORYID'
M2'
IMPORTa=itab2b=str2FROMMEMORYID'
LOOPATitab2.
WRITE/itab2-ff.
ENDLOOP.WRITE/str2.
3、ABAP获得程序的激活次数或者传输次数的方法
REPOSRC:
ReportSourceCode
DATASUMTYPEI.
PARAMETERSP_NAMETYPESTRING.
SELECTCOUNT(*)
FROME070
INNERJOINE071ONE071~TRKORR=E070~TRKORR
INTOSUM
WHEREE071~OBJ_NAME=P_NAME
ANDE071~LOCKFLAG<
>
'
'
ANDE070~TRSTATUS='
R'
REPOSRC这个表很有意思,它包含任何一个程序的激活次数,即字段VERN(版本)
其中的字段R3STATE如果是A则表明是激活的版本。
如果是I表明是被修改的状态,如果最新的版本没有被激活,则会出现R3STATE字段有A和I的两
组数据。
其中I为最新的保存数据的记录,VERN记录修改的次数。
R3STATE字段为A的则是记录前一次被激活的版本数据,VERN对应的版本号。
表REPOSRC对应一个视图这个视图是PROGDIR.
使用这个视图对我们的控制会更有帮助,其中这个视图标签SELECITONSCONDITIONS中进行限制如下:
TABLEFIELDNAME操作COMPARISONVALUEAND/OR
REPOSRCR3STATEEQ'
A'
OR
I'
存放变式的表VARI这是一张数据簇表。
4、ABAP生成ZIP压缩文件的代码
data:
iziptypereftocl_abap_zip,
conttypexstring,
xzip_filetypexstring,
binary_tabtypestandardtableofx255.
itabtypestandardtableofsdokcntasc.
start-of-selection.
do20times.
append'
ABAP开发'
toitab.
enddo.
callfunction'
SCMS_TEXT_TO_XSTRING'
exporting
mimetype='
text/html;
charset=gb2312'
importing
buffer=cont
tables
text_tab=itab
exceptions
failed=1
others=2.
createobjectizip.
callmethodizip->
add
name='
ITAB.TXT'
content=cont.
save
receiving
zip=xzip_file.
SCMS_XSTRING_TO_BINARY'
buffer=xzip_file
binary_tab=binary_tab.
GUI_DOWNLOAD'
filename='
C:
\sf.zip'
filetype='
BIN'
data_tab=binary_tab.
5、ABAP程序打印SpoolRequest到PDF
其实打印到pdf完全不需要程序,只要你装了pdf打印生成软件,打印的时候选择pdf也就行了。
本文的程序非我所做,不过也不知道从哪里拿到的了。
在不经意间看到了,于是在机器上测试下,发现有些地方需要更正。
改好了,测试好了,放上来分享给大家。
程序源代码如下:
*&
------------------------------------------------------------------*
Report
ZBOB_R2PDF
------------------------------------------------------------------*
REPORT
zbob_r2pdf.
*--Enhancements:
onlyallowtoberunwithvariant.
Thencalled
*--programwillbetransparenttousers
*--TABLES
TABLES:
tsp01.
*--STRUCTURES
mstr_print_parmsLIKEpri_params,
mc_valid
(1)
TYPEc,
mi_bytecount
TYPEi,
mi_length
TYPEi,
mi_rqident
LIKEtsp01-rqident.
*--INTERNALTABLES
mtab_pdf
LIKEtlineOCCURS0WITHHEADERLINE,
mc_filenameLIKErlgrap-filename.
*--SELECTIONSCREEN
p_repidLIKEsy-repid,"
Reporttoexecute
p_linszLIKEsy-linszDEFAULT132,"
Linesize
p_paartLIKEsy-paartDEFAULT'
X_65_132'
.
"
PaperFormat
START-OF-SELECTION.
CONCATENATE'
d:
\'
p_repid
.pdf'
INTOmc_filename.
*--SetupthePrintParmaters
CALLFUNCTION'
GET_PRINT_PARAMETERS'
copies
='
new_list_id
X'
no_dialog
user
=sy-uname
IMPORTING
out_parameters
=mstr_print_parms
valid
=mc_valid
EXCEPTIONS
archive_info_not_found=1
invalid_print_params
=2
invalid_archive_params=3
OTHERS
=4.
*--Makesurethataprinterdestinationhasbeensetup
*--IfthisisnotdonethePDFfunctionmoduleABENDS
IFmstr_print_parms-pdest=space.
mstr_print_parms-pdest='
LOCL'
ENDIF.
*--Explicitlysetlinewidth,andoutputformatsothat
*--thePDFconversioncomesoutOK
mstr_print_parms-linsz=p_linsz.
mstr_print_parms-paart=p_paart.
SUBMIT(p_repid)TOSAP-SPOOLWITHOUTSPOOLDYNPRO
SPOOLPARAMETERSmstr_print_parms
VIASELECTION-SCREEN
ANDRETURN.
*--Findoutwhatthespoolnumberisthatwasjustcreated
PERFORMget_spool_numberUSINGsy-repid
sy-uname
CHANGINGmi_rqident.
*--ConvertSpooltoPDF
CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid
=mi_rqident
=space
dst_device
=mstr_print_parms-pdest
pdf_bytecount
=mi_bytecount
TABLES
pdf
=mtab_pdf
err_no_abap_spooljob
=1
err_no_spooljob
=2
err_no_permission
=3
err_conv_not_possible
=4
err_bad_destdevice
=5
user_cancelled
=6
err_spoolerror
=7
err_temseerror
=8
err_btcjob_open_failed
=9
err_btcjob_submit_failed=10
err_btcjob_close_failed
=11
=12.
lftypestring.
lf=mc_filename.
EXPORTING
*
BIN_FILESIZE
=
filename
=lf
FILETYPE
APPEND
WRITE_FIELD_SEPARATOR
HEADER
00'
TRUNC_TRAILING_BLANKS
WRITE_LF
COL_SELECT
='
COL_SELECT_MASK
DAT_MODE
CONFIRM_OVERWRITE
NO_AUTH_CHECK
CODEPAGE
IGNORE_CERR
=ABAP_TRUE
REPLACEMENT
#'
WRITE_BOM