SAP_ABAP_Report
- 格式:ppt
- 大小:357.50 KB
- 文档页数:12


描述OBJECTCLAS對象物料主数据变更查询(MM03)MATERIAL采购信息记录变更查询(ME1L)INFOSATZ采购申请(PR)BANF采购订单变更查询(PO)EINKBELEG销售凭证(含合同、订单等)VERKBELEG客户DEBI供应商KRED信⽤(FD32)KLIMCDHDR -抬头表OBJECTCLAS对象类OBJECTID对象值CHANGENR⽂档更改编号CHANGE_IND U 更新I 插⼊E 删除 (单字段⽂档) D 删除J 插⼊ (单字段⽂档)SAP-ABAP批量查询SAP标准⽇志(更改历史記錄)常⽤對象名:如何查找对象1.对象表:TCDOBTCDOBT(SE11,根據表查詢對象)/SCDO(根據對象查詢表)2.⽤单号,编码模糊查询3.限定时间与⽤户进⾏测试批量查询标准⽇志⽅法⼀:事务代码(SE38):RSSCD100 / (RC1CD100\RSSCD1TS)⽅法⼆:后台表(SE11):CDHDR 和 CDPOSCDPOS-项⽬表OBJECTCLAS对象类OBJECTID对象值CHANGENR⽂档更改编号TABNAME表名TABKEY已更改的表记录码FNAME字段名CHNGIND修改类型 (U, I, E, D)TEXT_CASE标识:X=⽂本更改UNIT_OLD更改⽂档,参照的单位UNIT_NEW更改⽂档,参照的单位CUKY_OLD更改⽂档,参照货币CUKY_NEW更改⽂档,参照货币VALUE_NEW更改字段的新内容VALUE_OLD更改字段的新内容*&---------------------------------------------------------------------**& Report ZCDHDR_CDPOS*&*&---------------------------------------------------------------------**&*& 标准程序:RSSCD100*&---------------------------------------------------------------------*REPORT zcdhdr_cdpos NO STANDARD PAGE HEADING .TYPE-POOLS: slis.TABLES: cdhdr,cdred,tcdob.DATA: fldct TYPE slis_t_fieldcat_alv,slayt TYPE slis_layout_alv ,varnt LIKE disvariant,repid LIKE sy-repid .DATA: itab TYPE TABLE OF cdred WITH HEADER LINE.DATA: it_cdhdr TYPE TABLE OF cdhdr WITH HEADER LINE.DATA: it_cdred TYPE TABLE OF cdred WITH HEADER LINE.SELECT-OPTIONS :s_clas FOR tcdob-object OBLIGATORY ,s_objtid FOR cdhdr-objectid,s_usrnam FOR cdhdr-username ,s_udate FOR cdhdr-udate DEFAULT sy-datum,s_time FOR cdhdr-utime,s_tcode FOR cdhdr-tcode,s_tab FOR cdred-tabname,s_fname FOR cdred-fname,s_tabkey FOR cdred-tabkey .AT SELECTION-SCREEN OUTPUT.%_s_clas_%_app_%-text = '对象类'.%_s_objtid_%_app_%-text = '对象值'.%_s_usrnam_%_app_%-text = '⽤户名'.%_s_udate_%_app_%-text = '⽇期'.%_s_time_%_app_%-text = '时间'.%_s_tcode_%_app_%-text = '事务码'.%_s_tab_%_app_%-text = '修改的表名'.%_s_fname_%_app_%-text = '字段名'.%_s_tabkey_%_app_%-text = 'KEY值'.START-OF-SELECTION.PERFORM getdata.PERFORM outdata.*&---------------------------------------------------------------------**& Form getdata*&---------------------------------------------------------------------* FORM getdata.CLEAR: itab,itab[],it_cdhdr,it_cdhdr[].SELECT * INTO TABLE it_cdhdrFROM cdhdrWHERE objectclas IN s_clas ANDobjectid IN s_objtid ANDusername IN s_usrnam ANDudate IN s_udate ANDutime IN s_time ANDtcode IN s_tcode .LOOP AT it_cdhdr.CLEAR: it_cdred,it_cdred[].CALL FUNCTION'CHANGEDOCUMENT_READ'EXPORTINGchangenumber = it_cdhdr-changenrobjectclass = it_cdhdr-objectclasobjectid = it_cdhdr-objectidTABLESeditpos = it_cdredEXCEPTIONSno_position_found = 1wrong_access_to_archive = 2time_zone_conversion_error = 3OTHERS = 4.IF sy-subrc = 0.LOOP AT it_cdred WHERE fname IN s_fname AND tabname IN s_tab ANDtabkey IN s_tabkey .APPEND it_cdred TO itab.ENDLOOP.ENDIF.ENDLOOP.ENDFORM. "getdata*&---------------------------------------------------------------------**& Form outdata*&---------------------------------------------------------------------* FORM outdata.DATA lines(10).slayt-colwidth_optimize = 'X'.slayt-zebra = 'X'.slayt-detail_initial_lines = 'X'. "&ETA 空单元格也显⽰ repid = sy-repid.CALL FUNCTION'REUSE_ALV_GRID_DISPLAY' EXPORTINGi_callback_program = repidi_structure_name = 'CDRED'i_save = 'A'is_layout = slayti_callback_user_command = 'USER_COMMAND' TABLESt_outtab = itabEXCEPTIONSprogram_error = 1OTHERS = 2.ENDFORM. "outdata*&--------------------------------------------------------------------**& Form user_command*&--------------------------------------------------------------------* FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfld TYPE slis_selfield.CASE r_ucomm.WHEN '&IC1'.READ TABLE itab INDEX rs_selfld-tabindex.CHECK sy-subrc = 0.WHEN 'REFRESH'.PERFORM getdata.ENDCASE.rs_selfld-row_stable = 'X'.rs_selfld-col_stable = 'X'.rs_selfld-refresh = 'X'.ENDFORM. "user_command*&--------------------------------------------------------------------**& Form set_status*&--------------------------------------------------------------------* FORM set_status USING rt_extab TYPE slis_t_extab. SET PF-STATUS'STANDARD' EXCLUDING rt_extab . ENDFORM. "set_statusZCDHDR_CDPOS。
一,什么是ABAP:定义:ABAP=Advanced business application programSAP最初开发ABAP/4语言仅为内部使用,为应用程序员提供优化的工作环境。
经过不断的改进和修改以满足商业领域的需要。
现在, ABAP/4 已成为SAP开发所有自己的应用程序的仅有工具。
ABAP/4 是第四代支持结构化程序设计的语言。
它合并了所有通常的控制结构和模块化概念。
同时,它还支持面向对象的程序设计方法,这就为ABAP的应用开发开拓了更广阔的空间。
而且,它还可以实现和其他编程语言的合成,如VB,JAVA,C/C++等。
二, ABAP的一些特性:1. ABAP包括:2. ABAP/4 支持商业数据类型和操作。
您可以用特殊日期和时间字段进行计算。
系统会自动执行必需的类型转换。
3. ABAP/4 包含一个叫 Open SQL 的SQL子集。
用 Open SQL,您可以读取和访问数据库表,与所用的数据库系统无关4. ABAP/4 允许您定义和调用子程序。
也可以调用其他程序的子程序。
参数能够以各种方式从子程序传递或传递到子程序。
5. ABAP/4 包含一种特殊子程序,叫做功能模块。
您可以在中央库中创建和维护功能模块。
在调用程序和子程序之间功能模块有一个明确定义的数据接口。
它们能够以调用程序的独立模式进行分别测试。
6. ABAP/4 报表程序用于分析数据库表中的数据。
这种分析的结果可以显示在屏幕上或发送到打印机上。
逻辑数据库支持报表程序。
7. ABAP/4将对话程序组织为包含对话模块的模块池。
每个动态程序(由一个屏幕及其流逻辑组成的“动态程序”)都基于一个ABAP/4 对话程序。
流逻辑包含对 ABAP/4对话模块的调用。
三,和ABAP相关联的SAP BASIS结构:SAP R/3系统是一个典型的三层架构系统,包括:表现层(Presentation Layer):这是SAP用户和R/3系统交流的接口,用户在这一层对SAP系统进行操作。
注意:本程序只能用于方便查看和导出透明表、表结构的结构。
在使用的时候,只需要输入表名或结构名即可,其他不用输入。
REPORT: z_test1.TABLES:tadir,trdirt,tstc,dd03l,dd02l,dd04l,dd02t,dd03t,dd04t. DATA: BEGIN OF ytadir OCCURS 0.INCLUDE STRUCTURE tadir.INCLUDE STRUCTURE trdirt.DATA: END OF ytadir.DATA:prog(72) TYPE c OCCURS 0 WITH HEADER LINE.*表结构DATA:BEGIN OF tab OCCURS 0.INCLUDE STRUCTURE dd03l.DATA:text(40).DATA:END OF tab.DATA:BEGIN OF t1 OCCURS 0,tabname LIKE dd02l-tabname,ddtext LIKE dd02t-ddtext,END OF t1.DATA:BEGIN OF itab OCCURS 0,field(15), "字段key(6), "关键字elment(15), "字段类型type(10), "数据类型leng(8) , "长度decimals(8) , "小数chk(10), "表检查can(10), "参考表cfi(10), "参考字段text(40), "字段描述END OF itab.DATA wa_itab LIKE LINE OF itab.DATA: yyname(150).DATA: tt(500) OCCURS 0 WITH HEADER LINE.DATA: rn(72).DATA: f_dir TYPE string.DATA:fields(40),lin TYPE i,val(30),rep(40).SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.PARAMETERS:dow AS CHECKBOX. "是否下载PARAMETERS:p_dir TYPE localfile DEFAULT 'D:\SAP开发程序'. "下载路径PARAMETERS:stype(6) DEFAULT 'TXT'.PARAMETERS:r1 RADIOBUTTON GROUP r ,r2 RADIOBUTTON GROUP r DEFAULT 'X'.SELECTION-SCREEN END OF BLOCK blk1.SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME.SELECT-OPTIONS:author FOR tadir-author. "开发人SELECT-OPTIONS:devclass FOR tadir-devclass. "开发类SELECT-OPTIONS:obj FOR tadir-obj_name . "下载程序名称SELECT-OPTIONS:tabname FOR dd02l-tabname . "下载表名称SELECTION-SCREEN END OF BLOCK blk2.INITIALIZATION .START-OF-SELECTION .IF r1 = 'X'.PERFORM get_data.ENDIF.IF r2 = 'X'.IF tabname IS INITIAL.MESSAGE i000(znyj13) WITH '请输入要下载的表名!'.ELSE.PERFORM get_table_data.ENDIF.ENDIF.AT LINE-SELECTION.CLEAR: fields, lin.GET CURSOR FIELD fields LINE lin VALUE val.lin = lin - 1.IF lin >= 1.READ TABLE ytadir INDEX lin.IF sy-subrc = 0.CLEAR rep.CLEAR prog.rep = ytadir-obj_name.READ REPORT rep INTO prog.EDITOR-CALL FOR prog.* SET PARAMETER ID 'RID' FIELD REP.* CALL TRANSACTION 'SE38' AND SKIP FIRST SCREEN.ENDIF.ENDIF.END-OF-SELECTION.*---------------------------------------------------------------------** FORM GET_DATA **---------------------------------------------------------------------** ........ **---------------------------------------------------------------------*FORM get_data.SELECT * INTO CORRESPONDING FIELDS OF TABLE ytadirFROM tadirINNER JOIN trdirt ON tadir~obj_name = trdirt~nameWHERE object = 'PROG'AND obj_name IN objAND devclass IN devclassAND author IN author.SORT ytadir BY obj_name.WRITE:/ '开发类','开发人','程序名称','程序标题'.LOOP AT ytadir.IF dow = 'X'.REFRESH tt.rn = ytadir-obj_name.READ REPORT rn INTO tt.CONCATENATE p_dir ytadir-author '_' ytadir-obj_name'_' ytadir-text '.' stypeINTO yyname.CALL FUNCTION 'WS_DOWNLOAD'EXPORTINGfilename = yynamefiletype = 'ASC'TABLESdata_tab = tt.IF sy-subrc = 0.WRITE:/1(10) ytadir-devclass,(8) ytadir-author,(15) ytadir-obj_name,(40) ytadir-text.FORMAT COLOR 5.WRITE: '已下载'.FORMAT COLOR OFF.ELSE.WRITE:/ ytadir-devclass,ytadir-author,ytadir-obj_name,ytadir-text.FORMAT COLOR 4.WRITE: '无法下载'.FORMAT COLOR OFF.ENDIF.ELSE.WRITE:/ ytadir-devclass,ytadir-author,ytadir-obj_name,ytadir-te xt.ENDIF.ENDLOOP.ENDFORM. "GET_DATA*---------------------------------------------------------------------** FORM GET_TABLE_DATA **---------------------------------------------------------------------** ........ **---------------------------------------------------------------------*FORM get_table_data.SELECT DISTINCT * INTO CORRESPONDING FIELDS OF TABLE t1FROM dd02t WHERE tabname IN tabnameAND ddlanguage EQ '1'.SELECT * INTO CORRESPONDING FIELDS OF TABLE tab FROM dd03l AS a WHERE a~tabname IN tabname.SORT tab BY tabname position.* uline.* write:/ sy-vline, at 2(10) '字段名',* sy-vline,at 14(10)'关键字',* sy-vline,at 26(10) '数据元素',* sy-vline,at 38(10) '数据类型',* sy-vline,at 50(10)'长度',* sy-vline,at 62(10)'小数',* sy-vline,at 74(10)'表检查',* sy-vline,at 86(10)'参考表',* sy-vline,at 98(10)'参考字段',* sy-vline,at 110(30)'字段描述',* at 142 sy-vline.* uline.LOOP AT t1.REFRESH itab.CLEAR yyname.IF dow = 'X'.itab-field = '字段名'.itab-key = '关键字'.itab-elment = '数据元素'.itab-type = '数据类型'.itab-leng = '长度'.itab-decimals = '小数'.itab-text = '字段描述'.itab-chk = '表检查'.itab-can = '参考表'.itab-cfi = '参考字段'.APPEND itab.CLEAR itab.ENDIF.CONCATENATE t1-tabname '_' t1-ddtext '的表结构如下:'INTO yyname.FORMAT COLOR 3.* WRITE:/ yyname.FORMAT COLOR OFF.LOOP AT tab WHERE tabname = t1-tabname.itab-field = tab-fieldname.itab-key = tab-keyflag.itab-elment = tab-rollname.itab-type = tab-datatype.itab-leng = tab-leng.itab-chk = tab-checktable.itab-can = tab-reftable.itab-cfi = tab-reffield.itab-decimals = tab-decimals.IF tab-rollname NE space.SELECT SINGLE * FROM dd04t WHERE rollname = tab-rollnameAND ddlanguage = '1'.IF sy-subrc = 0.itab-text = dd04t-ddtext.ELSE.CLEAR itab-text.ENDIF.ELSE.SELECT SINGLE * FROM dd03t WHERE tabname = tab-tabnameAND ddlanguage = '1'AND fieldname = tab-fieldname.IF sy-subrc = 0.itab-text = dd03t-ddtext.ELSE.CLEAR itab-text.ENDIF.ENDIF.APPEND itab.* write: /* sy-vline,at 2(10) itab-field,* sy-vline,at 14(10) itab-key,* sy-vline,at 26(10) itab-elment,* sy-vline,at 38(10) itab-type,* sy-vline,at 50(10) itab-leng,* sy-vline,at 62(10) itab-decimals,* sy-vline,at 74(10) itab-chk,* sy-vline,at 86(10) itab-can,* sy-vline,at 98(10) itab-cfi,* sy-vline,at 110(30) itab-text,* at 142 sy-vline.* clear itab.* uline.ENDLOOP.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTING* I_INTERFACE_CHECK = ' '* I_BYPASSING_BUFFER =* I_BUFFER_ACTIVE =* I_CALLBACK_PROGRAM = ' '* I_CALLBACK_PF_STATUS_SET = ' '* I_CALLBACK_USER_COMMAND = ' '* I_CALLBACK_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_END_OF_LIST = ' 'i_structure_name = 'ZTEST_ITAB' * I_BACKGROUND_ID = ' '* I_GRID_TITLE =* I_GRID_SETTINGS =* IS_LAYOUT_LVC =* IT_FIELDCAT_LVC =* IT_EXCLUDING =* IT_SPECIAL_GROUPS_LVC =* IT_SORT_LVC =* IT_FILTER_LVC =* IT_HYPERLINK =* IS_SEL_HIDE =* I_DEFAULT = 'X'* I_SAVE = ' '* IS_VARIANT =* IT_EVENTS =* IT_EVENT_EXIT =* IS_PRINT_LVC =* IS_REPREP_ID_LVC =* I_SCREEN_START_COLUMN = 0* I_SCREEN_START_LINE = 0* I_SCREEN_END_COLUMN = 0* I_SCREEN_END_LINE = 0* I_HTML_HEIGHT_TOP =* I_HTML_HEIGHT_END =* IT_ALV_GRAPHICS =* IT_EXCEPT_QINFO_LVC =* IR_SALV_FULLSCREEN_ADAPTER =* IMPORTING* E_EXIT_CAUSED_BY_CALLER =* ES_EXIT_CAUSED_BY_USER =TABLESt_outtab = itab.* EXCEPTIONS* PROGRAM_ERROR = 1* OTHERS = 2.IF sy-subrc <> 0.* Implement suitable error handling hereENDIF.IF dow = 'X'.CONCATENATE p_dir t1-tabname '_' t1-ddtext '.' stypeINTO yyname.CALL FUNCTION 'WS_DOWNLOAD'EXPORTINGfilename = yynamefiletype = 'ASC'TABLESdata_tab = itab.ELSE.ENDIF.ENDLOOP.ENDFORM. "GET_TABLE_DATA*&---------------------------------------------------------------------**& Form checkdir*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->DIR text* -->RET text*----------------------------------------------------------------------*FORM checkdir USING dir TYPE localfile CHANGING ret TYPE c.CALL FUNCTION 'WS_QUERY'EXPORTINGfilename = dirquery = 'DE'IMPORTINGreturn = retEXCEPTIONSinv_query = 1no_batch = 2frontend_error = 3OTHERS = 4.ENDFORM. "checkdir。