从实例学SAPABAP编程19章代码5章范文.docx
- 文档编号:23088961
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:17
- 大小:33.23KB
从实例学SAPABAP编程19章代码5章范文.docx
《从实例学SAPABAP编程19章代码5章范文.docx》由会员分享,可在线阅读,更多相关《从实例学SAPABAP编程19章代码5章范文.docx(17页珍藏版)》请在冰豆网上搜索。
从实例学SAPABAP编程19章代码5章范文
插入内表行:
DATA:
BEGINOFman,
name(20)TYPEc,
highTYPEpDECIMALS2,
weightTYPEpDECIMALS2,ENDOFman.
DATA:
man1LIKETABLEOFman.
man-name='张参'.
man-high='1.68'.man-weight=120.
INSERTmanINTOTABLEman1.
man-name='刘志'.
man-high='1.78'.man-weight=160.
INSERTmanINTOTABLEman1.
LOOPATman1INTOman.
WRITE:
/man-name,man-high,man-weight.ENDLOOP.
ULINE.
man-name='钱华'.
man-high='2.22'.man-weight=220.
INSERTmanINTOman1INDEX3.
LOOPATman1INTOman.
WRITE:
/man-name,man-high,man-weight.ENDLOOP.
读放文件
DATA:
BEGINOFman,
name(20)TYPEc,
highTYPEpDECIMALS2,
weightTYPEpDECIMALS2,ENDOFman.
DATA:
man1LIKETABLEOFman.
*name='c:
\temp\testa.txt'.
*typa='dat'.
CALLFUNCTION'UPLOAD'
gui_refuse_filetransfer=6OTHERS=7.
IFsy-subrc<>0.
*messageidsy-msgidtypesy-msgtynumbersy-msgno
*withsy-msgv1sy-msgv2sy-msgv3sy-msgv4.ENDIF.
LOOPATman1INTOman.
WRITE:
/man-name,man-high,man-weight.ENDLOOP.
格式化输出
DATAwaLIKEspfli.
WRITE:
/.
WRITE:
10航班承运人’,40'航班连接’,60'国家代码’,80'起飞城市',100'起飞机场
SELECT*INTOwaFROMspfli.
WRITE:
/wa-carridUNDER'航班承运人',wa-connidUNDER'航班连接',wa-countryfrUNDER'国家代码',wa-cityfromUNDER'起飞城市',wa-airpfromUNDER'起飞机场'.
ENDSELECT.
内表排序
DATA:
BEGINOFman,name(20)TYPEc,highTYPEpDECIMALS2,
weightTYPEpDECIMALS2,ENDOFman.
DATA:
man1LIKEhashedTABLEOFmanwithuniquekeyname.
man-name='张参'.man-high='1.68'.man-weight=120.
INSERTmanINTOTABLEman1.
man-name='刘志'.man-high='1.78'.man-weight=160.
INSERTmanINTOTABLEman1.
man-name='钱华'.man-high='2.22'.man-weight=220.
INSERTmanINTOtableman1.
LOOPATman1INTOman.
WRITE:
/man-name,man-high,man-weight.ENDLOOP.
ULINE.
sortman1ascendingbyweightdescending.skip.
uline.
LOOPATman1INTOman.
WRITE:
/man-name,man-high,man-weight.ENDLOOP.
内部数据存有文档DATA:
BEGINOFman,name(20)TYPEc,highTYPEpDECIMALS2,weightTYPEpDECIMALS2,
ENDOFman.
DATA:
man1LIKETABLEOFman.
DATA:
nameTYPErlgrap-filename,typaTYPErlgrap-filetype.
man-name='张参'.man-high='1.68'.
man-weight=120.
INSERTmanINTOTABLEman1.
man-name='刘志'.man-high='1.78'.man-weight=160.
INSERTmanINTOTABLEman1.
man-name='钱华'.
man-high='2.22'.man-weight=220.
INSERTmanINTOman1INDEX2.
name='c:
\temp\testa.txt'.typa='dat'.
CALLFUNCTION'download'
='testa'
=name
=typa
='文件测试
=man1
=1
=2
EXPORTINGcodepagefilenamefiletypeitem
TABLESdata_tab
EXCEPTIONSinvalid_filesizeinvalid_table_width
invalid_type=3no_batch=4
unknown_error=5
gui_refuse_filetransfer
=6
OTHERS=7.
IFsy-subrc
<>0.
*messageidsy-msgidtypesy-msgtynumbersy-msgno
*withsy-msgv1sy-msgv2sy-msgv3sy-msgv4.ENDIF.
消息
REPORTyth_helloworld.
DATA:
msg1(20)TYPEcVALU测试'.DATA:
msg2(20)TYPEcVALUE'ABAP'.
DATA:
msg3(20)TYPEcVALU消息!
'.
MESSAGEi006(ymess)WITHmsg1msg2msg3.
data:
BEGINOFman,name(30)TYPEc,highTYPEpDECIMALS2,
weightTYPEpDECIMALS2,ENDOFman.
FIELD-SYMBOLS
DATAman1LIKEman.
man-name='雨荷'.man-high='1.78'.man-weight=140.
ASSIGNmanTO
WRITE:
/
DATA:
msg1(20)TYPEcVALU测试'.
DATA:
msg2(20)TYPEcVALUE'ABAP'.
DATA:
msg3(20)TYPEcVALU消息!
'.
MESSAGEi001(00)WITHmsg1msg2msg3.
DATA:
c1
(2)TYPEc,c2
(2)TYPEc,c3
(2)TYPEc,c4
(2)TYPEc,c5(20)TYPEcVALUE'91*12*23*',c9
(2)TYPEc.
c9='*'.
WRITE:
/.
WRITEc5.
SPLITc5ATc9INTOc1c2c3c4.
WRITE:
/c1,c2,c3,c4.
DATA:
msg1(20)TYPEcVALU测试'.
DATA:
msg2(20)TYPEcVALUE'ABAP'.
DATA:
msg3(20)TYPEcVALU消息!
'.
MESSAGEi001(00)WITHmsg1msg2msg3.
DATA:
BEGINOFman,name(20)TYPEc,highTYPEpDECIMALS2,weightTYPEpDECIMALS2,
ENDOFman.
DATA:
man1LIKETABLEOFmanWITHHEADERLINE,man2LIKETABLEOFman.
man-name='张参'.
man-high='1.68'.man-weight=120.
APPENDmanTOman1.
man-name='刘志'.man-high='1.78'.man-weight=160.
APPENDmanTOman1.
MOVEman1[]TOman2.
WRITE:
/man-name,man-high,man-weight.
LOOPATman1.
write:
/man1-name,man1-high,man1-weight.
ENDLOOP.
直接读取文件
DATA:
BEGINOFman,
name(20)TYPEc,highTYPEpDECIMALS2,
weightTYPEpDECIMALS2,
ENDOFman.
DATA:
man1LIKETABLEOFman.
CALLFUNCTION'WS_UPLOAD'
='test'
='c:
\temp\testa.txt'
='dat'
EXPORTINGcodepagefilenamefiletype
TABLESdata_tab=man1
EXCEPTIONSinvalid_filesize=1invalid_table_width=2invalid_type=3
no_batch=4
unknown_error=5
gui_refuse_filetransfer=6OTHERS=7.
IFsy-subrc<>0.
*messageidsy-msgidtypesy-msgtynumbersy-msgno*withsy-msgv1sy-msgv2sy-msgv3sy-msgv4.ENDIF.
LOOPATman1INTOman.
WRITE:
/man-name,man-high,man-weight.ENDLOOP.
字符串替换
DATA:
str1(10)TYPEcVALUE'AABBCCDDEE'.WRITE/'接着的字符串将被替换.'.
WRITEAT14(10)str1.
读取数据表
*定义工作区
DATAa_spfliTYPEspfli.
*定义内表,请注意有Headerline
DATAta_spfliTYPETABLEOFspfliWITHHEADERLINE.*分隔线
ULINE.
WRITE/'使用工作区'.
ULINE.
*将数据表逐行转移至工作区,只读前5行SELECT*INTOCORRESPONDINGFIELDSOFa_spfliFROMspfliUPTO5ROWS.
WRITE:
/a_spfli-connid,a_spfli-carrid,a_spfli-cityfrom,a_spfli-cityto.
ENDSELECT.
ULINE.
WRITE/'使用内表'.
ULINE.
SELECT*INTOCORRESPONDINGFIELDSOF
TABLEta_spfliFROMspfliUPTO5ROWS.*从数据表读数据至内表,直接从内表输出
*如果TA_SPFL没有定义Headerline,会出错
LOOPATta_spfli.
WRITE:
/a_spfli-connid,a_spfli-carrid,a_spfli-cityfrom,a_spfli-cityto.
ENDLOOP.
ULINE.
WRITE/'将内表数据转移至工作区'.
ULINE.
LOOPATta_spfliINTOa_spfli.
WRITE:
/a_spfli-connid,a_spfli-carrid,a_spfli-cityfrom,a_spfli-cityto.
ENDLOOP.
内连接和外连接
*定义结构
DATA:
BEGINOFarcd,
carridTYPEspfli-carrid,
connidTYPEspfli-connid,
fldateTYPEsflight-fldate,
ENDOFarcd.
*工作区
DATAarcd1LIKEarcd.
*关联数据表,读取前10条记录,写入工作区,并输出
SELECTspfli~carridspfli~connidsflight~fldateINTOarcd1FROMspfliINNERJOINsflightONspfli~carrid=sflight~carridANDspfli~connid=sflight~connidUPTO10ROWS.
WRITE:
/arcd1-carrid,arcd1-connid,arcd1-fldate.
ENDSELECT.
使用packagesize读取数据
*定义内表,请注意有Headerline
DATAwa_spfliTYPETABLEOFspfliWITHHEADERLINE.
*分隔线
ULINE.
*以每次读取5条记录,直到读取所有数据
SELECT*INTOTABLEwa_spfliFROMspfliPACKAGESIZE5.*输出内表记录
LOOPATwa_spfli.
WRITE:
/wa_spfli-connid,wa_spfli-carrid,wa_spfli-cityfrom,wa_spfli-cityto.
ENDLOOP.
*输出5条记录后输出一条横线
ULINE.
ENDSELECT.
交互式列表
START-OF-SELECTION.
WRITE:
初如列表,sy-lsind=',sy-lsind.
ATLINE-SELECTION.
IFsy-lsind=1.
WRITE:
第'二列表,sy-lsind=',sy-lsind.
ENDIF.
列表颜色
*数据库表spfli相关
TABLESspfli.
SKIP.
*输出表头,背景灰蓝
FORMATCOLORCOL_HEADING.
ULINEAT/(91).
WRITE:
/sy-vline,(15)'航线承运人',sy-vline,(15)'航班连接',sy-vline,(15)'国家代码',sy-vline,(15)'起飞城市',sy-vline,(15)'起飞机场',sy-vline.
ULINEAT/(91).
FORMATCOLOROFF.
*输出内容,输出关键值为‘LH'为红色
SELECT*FROMspfli.
IFspfli-carrid='LH'.
FORMATCOLORCOL_NEGATIVE.
ELSE.
FORMATCOLOROFF.
ENDIF.
WRITE:
/sy-vline,(15)spfli-carrid,sy-vline,(15)spfli-connid,sy-vline,(15)spfli-countryto,sy-vline,(15)spfli-cityfrom,sy-vline,(15)spfli-airpfrom,sy-vline.
ULINEAT/(91).ENDSELECT.
输出热点start-of-selection.
write'请按'.
formathotspotoncolor5inverseon.
write'热点'.
formathotspotoffcoloroff.atline-selection.
write'welcome!
'.
为列表定义工具条和菜单START-OF-SELECTION.
*设置已使用的状态条
SETPF-STATUS'STA1'.
WRITE:
测试工具条按钮'.
ATUSER-COMMAND.*当单击按钮时输出
CASEsy-ucomm.
WHEN'OWNSEL'.WRITE:
'已选择!
'.
ENDCASE.
在弹出式窗口中显示列表START-OF-SELECTION.
*设置已使用的状态条
SETPF-STATUS'STA1'.
WRITE:
测试工具条按钮'.
ATUSER-COMMAND.*当单击按钮时输出
CASEsy-ucomm.
WHEN'OWNSEL'.
IFsy-lsind=1.
SETPF-STATUS'STA6'.*定义子窗口并输出
WINDOWSTARTINGAT1010ENDINGAT3020.
WRITE在'子窗口输出!
'.WRITE:
'请注意!
'.
ENDIF.
ENDCASE.
隐藏字段技术
*数据库表spfli相关TABLES:
spfli,sflight.
START-OF-SELECTION.
SKIP.
*输出
ULINEAT/(91).
WRITE:
/sy-vline,(15)'航线承运人',sy-vline,(15)'航班连接',sy-vline,(15)'国家代码',sy-vline,(15)'起飞城市',sy-vline,(15)'起飞机场',sy-vline.
ULINEAT/(91).
*输出
SELECT*FROMspfli.
WRITE:
/sy-vline,(15)spfli-carrid,sy-vline,
(15)spfli-connid,sy-vline,
(15)spfli-countryto,sy-vline,
(15)spfli-cityfrom,sy-vline,
(15)spfli-airpfrom,sy-vline.
*隐藏关键字
HIDE:
spfli-carrid,spfli-connid.
ULINEAT/(91).
ENDSELECT.
ATLINE-SELECTION.*只输出第一页
IFsy-lsind=1.*根据隐藏字段读取并打印从表SELECT*FROMsflight
WHEREcarrid=spfli-carridANDconnid=spfli-connid.
WRITE:
/sflight-carrid,sy-vline,sflight-connid,sy-vline,sflight-fldate,sy-vline,sflight-price.
ENDSELECT.
ENDIF.
使用hide技术从列表读取行
*数据库表spfli相关TABLES:
spfli.DATA:
sela
(1)TYPEc,num1TYPEi.
START-OF-SELECTION.
SKIP.
*输出
ULINEAT/(95).
WRITE:
/sy-vline,'',sy-vline,(15)'航线承运人',sy-vline,(15)'航班连接',sy-vline,(15)'国家代码',sy-vline,(15)'起飞城市',sy-vline,(15)'起飞机场',sy-vline.
ULINEAT/(95).
*输出
SELECT*FROMspfli.
WRITE:
/sy-vline,selaASCHECKBOX,sy-vline,(15)spfli-carrid,sy-vline,(15)spfli-connid,sy-vline,(15)spfli-countryto,sy-vline,(15)spfli-cityfrom,sy-vline,
(15)spfli-airpfrom,sy-vline.
*隐藏关键字
HIDE:
spfli-carrid,spfli-connid,spfli-countryto,spfli-cityfrom,spfli-airpfrom.
ULINEAT/(95).
*隐藏选择框,使表格行不会选择
HIDEsela.
ENDSELECT.
END-OF-SELECTION.
num1=sy-lsind-1.
ATLINE-SELECTION.
*只输出第一页
IFsy-lsind=1.
DOnum1TIMES.
*读取行
READLINEsy-indexFIELDVALUEsela.
*如果checked,输出隐含字段
IFsela='X'.
WRITE:
/spfli-carrid,spfli-connid,spfli-countryto,
spfli-cityfrom,spfli-airpfrom.
ENDIF.
ENDDO.
ENDIF.
DATA:
c1
(2)TYPEc,c2
(2)TYPEc,c3
(2)TYPEc,c4
(2)TYPEc,c5(20)TYPEc,c9
(2)TYPEc.
c1='AB'.
c2='CD'.
c3='EF'.
c4='GH'.
c9='+'.
CONCATENATEc1c2c3c4INTOc5.WRITEc5.
CONCATENATEc1c2c3c4INTOc5SEPARATEDBYc9.WRITE/c5.
WRITE/text-001.
WRITE/text-002.
WRITE/text-003.WRITE/.
ULINE.
DATA:
BEGINOFline,numTYPEi,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实例 SAPABAP 编程 19 代码 范文