ABAP技巧代码汇总.docx

上传人:b****5 文档编号:28821707 上传时间:2023-07-20 格式:DOCX 页数:72 大小:79.02KB
下载 相关 举报
ABAP技巧代码汇总.docx_第1页
第1页 / 共72页
ABAP技巧代码汇总.docx_第2页
第2页 / 共72页
ABAP技巧代码汇总.docx_第3页
第3页 / 共72页
ABAP技巧代码汇总.docx_第4页
第4页 / 共72页
ABAP技巧代码汇总.docx_第5页
第5页 / 共72页
点击查看更多>>
下载资源
资源描述

ABAP技巧代码汇总.docx

《ABAP技巧代码汇总.docx》由会员分享,可在线阅读,更多相关《ABAP技巧代码汇总.docx(72页珍藏版)》请在冰豆网上搜索。

ABAP技巧代码汇总.docx

ABAP技巧代码汇总

都是从网上找到的编程技巧,汇总在一起。

1、ABAPCHECKBOX和LISTBOX使用指南

1.什么是checkbox:

就是一个复选框,可以用like或者type来定义,为1个字符型变量。

它是parameter的一个选项,parameterxxxascheckbox就可以在选择屏幕上显示一个复选框。

2.什么是listbox:

就是一个下拉列表,你可以在这个列表中选择一条记录进行某种操作。

也是parameter的一个选项,parameterxxxaslistbox就可以在选择屏幕上显示一个下拉列表。

3.如何使用:

下面我们用一个程序来说明这两者的使用方法。

REPORTZ_TEXT

TYPE-POOLS:

VRM. “存放combobox内容的typepool

DATA:

NAMETYPEVRM_ID,       “listbox的名称

     LISTTYPEVRM_VALUES,   “listbox的值

     VALUELIKELINEOFLIST.“listbox的结构

*定义checkbox,指定command,为了能够响应选择屏幕中值的改变

PARAMETERS:

P_CB1TYPECASCHECKBOXDEFAULT‘X’USER-COMMANDCHECK,

           P_CB2TYPECASCHECKBOXDEFAULT‘X’USER-COMMANDCHECK.

*定义listbox,必须指定visiblelength

PARAMETERS:

P_LIST1(10)TYPECASLISTBOX

                                 VISIBLELENGTH15,

           P_LIST2(20)TYPEC   ASLISTBOX

                                 VISIBLELENGTH25.

*开始执行

ATSELECTION-SCREENOUTPUT.

*–〉选择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′.

   APPENDVALUETOLIST.

   VALUE-KEY=’33′.

   VALUE-TEXT=’33′.

   APPENDVALUETOLIST.

*—〉调用函数显示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=”.

   REFRESHLIST.

   VALUE-KEY=‘AAAAAAAAAAAAAAAAAAAA’.

   VALUE-TEXT=‘AAAAAAAAAAAAAAAAAAAA’.

   APPENDVALUETOLIST.

   VALUE-KEY=‘BBBBBBBBBBBBBBBBBBBB’.

   VALUE-TEXT=‘BBBBBBBBBBBBBBBBBBBB’.

   APPENDVALUETOLIST.

   VALUE-KEY=‘CCCCCCCCCCCCCCCCCCCC’.

   VALUE-TEXT=‘CCCCCCCCCCCCCCCCCCCC’.

   APPENDVALUETOLIST.

   APPENDVALUETOLIST.

   CALLFUNCTION‘VRM_SET_VALUES’

     EXPORTING

       ID    =‘P_LIST2′

       VALUES=LIST.

*—〉清空listbox1的值

   CLEARP_LIST1.

   LOOPATSCREEN.

     IFSCREEN-NAME=‘P_LIST1′.

       SCREEN-INPUT=0.

       MODIFYSCREEN.

     ENDIF.

   ENDLOOP.

*–〉都没有选择,都清空且不能输入

 ELSEIFP_CB1=”ANDP_CB2=”.

   CLEAR:

P_LIST1,P_LIST2.

   LOOPATSCREEN.

     IFSCREEN-NAME=‘P_LIST1′.

       SCREEN-INPUT=0.

       MODIFYSCREEN.

     ENDIF.

   ENDLOOP.

   LOOPATSCREEN.

     IFSCREEN-NAME=‘P_LIST2′.

       SCREEN-INPUT=0.

       MODIFYSCREEN.

     ENDIF.

   ENDLOOP.

*–〉都选,执行

 ELSEIFP_CB1=‘X’ANDP_CB2=‘X’.

   REFRESHLIST.

   VALUE-KEY=’11′.

   VALUE-TEXT=’11′.

   APPENDVALUETOLIST.

   VALUE-KEY=’22′.

   VALUE-TEXT=’22′.

   APPENDVALUETOLIST.

   VALUE-KEY=’33′.

   VALUE-TEXT=’33′.

   APPENDVALUETOLIST.

   CALLFUNCTION‘VRM_SET_VALUES’

     EXPORTING

       ID    =‘P_LIST1′

       VALUES=LIST.

   REFRESHLIST.

   VALUE-KEY=‘AAAAAAAAAAAAAAAAAAAA’.

   VALUE-TEXT=‘AAAAAAAAAAAAAAAAAAAA’.

   APPENDVALUETOLIST.

   VALUE-KEY=‘BBBBBBBBBBBBBBBBBBBB’.

   VALUE-TEXT=‘BBBBBBBBBBBBBBBBBBBB’.

   APPENDVALUETOLIST.

   VALUE-KEY=‘CCCCCCCCCCCCCCCCCCCC’.

   VALUE-TEXT=‘CCCCCCCCCCCCCCCCCCCC’.

   APPENDVALUETOLIST.

   CALLFUNCTION‘VRM_SET_VALUES’

     EXPORTING

       ID    =‘P_LIST2′

       VALUES=LIST.

 ENDIF.

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.

DATA:

itab2LIKEitab1OCCURS0WITHHEADERLINE.

DATA:

str1TYPEstring,

str2TYPEstring.

APPEND'1'TOitab1.

APPEND'2'TOitab1.

str1='sssssssssss'.

***如果是同名的对象,可以这么写:

EXPORTitab1TOMEMORYID'M1'.

FREEitab1.

IMPORTitab1FROMMEMORYID'M1'.

LOOPATitab1.

WRITE/itab1-ff.

ENDLOOP.

***如果不是同名的对象,需要加上一个对象名

EXPORTa=itab1b=str1TOMEMORYID'M2'.

IMPORTa=itab2b=str2FROMMEMORYID'M2'.

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

REPOSRCR3STATEEQ'I'

存放变式的表VARI这是一张数据簇表。

4、ABAP生成ZIP压缩文件的代码

data:

iziptypereftocl_abap_zip,

conttypexstring,

xzip_filetypexstring,

binary_tabtypestandardtableofx255.

data:

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

exporting

name='ITAB.TXT'

content=cont.

callmethodizip->save

receiving

zip=xzip_file.

callfunction'SCMS_XSTRING_TO_BINARY'

exporting

buffer=xzip_file

tables

binary_tab=binary_tab.

callfunction'GUI_DOWNLOAD'

exporting

filename='C:

\sf.zip'

filetype='BIN'

tables

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

DATA:

  mstr_print_parmsLIKEpri_params,

  mc_valid

(1)    TYPEc,

  mi_bytecount    TYPEi,

  mi_length      TYPEi,

  mi_rqident    LIKEtsp01-rqident.

*--INTERNALTABLES

DATA:

  mtab_pdf  LIKEtlineOCCURS0WITHHEADERLINE,

  mc_filenameLIKErlgrap-filename.

*--SELECTIONSCREEN

PARAMETERS:

  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'

  EXPORTING

    copies            ='1'

    new_list_id        ='X'

    no_dialog          ='X'

    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

  CALLFUNCTION'CONVERT_ABAPSPOOLJOB_2_PDF'

  EXPORTING

    src_spoolid          =mi_rqident

    no_dialog          =space

    dst_device          =mstr_print_parms-pdest

  IMPORTING

    pdf_bytecount        =mi_bytecount

  TABLES

    pdf              =mtab_pdf

  EXCEPTIONS

    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

    OTHERS            =12.

data:

lftypestring.

lf=mc_filename.

CALLFUNCTION'GUI_DOWNLOAD'

  EXPORTING

*  BIN_FILESIZE              =

  filename                =lf

  FILETYPE                ='BIN'

*  APPEND                  =''

*  WRITE_FIELD_SEPARATOR        =''

*  HEADER                  ='00'

*  TRUNC_TRAILING_BLANKS        =''

*  WRITE_LF                ='X'

*  COL_SELECT              =''

*  COL_SELECT_MASK            =''

*  DAT_MODE                =''

*  CONFIRM_OVERWRITE          =''

*  NO_AUTH_CHECK            =''

*  CODEPAGE                =''

*  IGNORE_CERR              =ABAP_TRUE

*  REPLACEMENT              ='#'

*  WRITE_BOM                ='

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1