使用事务码做凭证时都会走BTE的逻辑,但使用BAPI_ACC_DOCUMENT_POST做凭证时,发现并不会走原先的BTE,处理办法:
需另写逻辑,使用PROCESS BTE事件:RWBAPI01,函数:SAMPLE_INTERFACE_RWBAPI01。
相关Note:487722 – Using EXTENSION1 for accounting BAPIs
注意:调用bapi时必须给参数EXTENSION1赋值
使用事务码做凭证时都会走BTE的逻辑,但使用BAPI_ACC_DOCUMENT_POST做凭证时,发现并不会走原先的BTE,处理办法:
需另写逻辑,使用PROCESS BTE事件:RWBAPI01,函数:SAMPLE_INTERFACE_RWBAPI01。
相关Note:487722 – Using EXTENSION1 for accounting BAPIs
注意:调用bapi时必须给参数EXTENSION1赋值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
REPORT YTEST_SARIEL. TYPE-POOLS:ABAP, SLIS. DATA: BEGIN OF GT_LIST OCCURS 0, SEL TYPE CHAR4, VAL TYPE I, END OF GT_LIST. DATA: GO_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. *&---------------------------------------------------------------------* *& CLASS LCL_EVENT_RECEIVER DEFINITION *&---------------------------------------------------------------------* CLASS LCL_EVENT_RECEIVER DEFINITION. PUBLIC SECTION. CLASS-METHODS: HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO. ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION *&---------------------------------------------------------------------* *& CLASS LCL_EVENT_RECEIVER DEFINITION *&---------------------------------------------------------------------* CLASS LCL_EVENT_RECEIVER IMPLEMENTATION. METHOD HOTSPOT_CLICK. DATA: LS_LIST LIKE GT_LIST. CLEAR LS_LIST. READ TABLE GT_LIST INTO LS_LIST INDEX E_ROW_ID. IF GT_LIST-SEL NE '@TB@'. LS_LIST-SEL = '@SR@'. MODIFY GT_LIST FROM LS_LIST TRANSPORTING SEL WHERE SEL NE '@SR@'. LS_LIST-SEL = '@TB@'. MODIFY GT_LIST FROM LS_LIST INDEX E_ROW_ID TRANSPORTING SEL . ENDIF. PERFORM FRM_REF_ALV. ENDMETHOD. "HANDLE_ONF4 ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATION *&---------------------------------------------------------------------* *& START-OF-SELECTION *&---------------------------------------------------------------------* START-OF-SELECTION. PERFORM FRM_GET_DATA. PERFORM FRM_DSP_DATA. *&---------------------------------------------------------------------* *& Form FRM_GET_DATA *&---------------------------------------------------------------------* FORM FRM_GET_DATA . DO 10 TIMES. IF SY-INDEX = 1. GT_LIST-SEL = '@TB@'. ELSE. GT_LIST-SEL = '@SR@'. ENDIF. GT_LIST-VAL = SY-INDEX. APPEND GT_LIST. ENDDO. ENDFORM. " FRM_GET_DATA *&---------------------------------------------------------------------* *& Form FRM_DSP_DATA *&---------------------------------------------------------------------* FORM FRM_DSP_DATA . DATA: LS_LAYO TYPE LVC_S_LAYO, LT_FCAT TYPE LVC_T_FCAT, LS_FCAT TYPE LVC_S_FCAT, LT_EVENT TYPE SLIS_T_EVENT, LS_EVENT TYPE SLIS_ALV_EVENT. LS_LAYO-ZEBRA = ABAP_TRUE. LS_LAYO-CWIDTH_OPT = ABAP_TRUE. LS_FCAT-FIELDNAME = 'SEL'. LS_FCAT-HOTSPOT = 'X'. LS_FCAT-SCRTEXT_L = LS_FCAT-SCRTEXT_M = LS_FCAT-SCRTEXT_S = '选择'. APPEND LS_FCAT TO LT_FCAT. CLEAR LS_FCAT. LS_FCAT-FIELDNAME = 'VAL'. LS_FCAT-SCRTEXT_L = LS_FCAT-SCRTEXT_M = LS_FCAT-SCRTEXT_S = '值'. APPEND LS_FCAT TO LT_FCAT. CLEAR LS_FCAT. LS_EVENT-NAME = SLIS_EV_CALLER_EXIT_AT_START. LS_EVENT-FORM = SLIS_EV_CALLER_EXIT_AT_START. APPEND LS_EVENT TO LT_EVENT. * 显示alv列表 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING I_CALLBACK_PROGRAM = SY-REPID IS_LAYOUT_LVC = LS_LAYO IT_FIELDCAT_LVC = LT_FCAT I_SAVE = 'A' IT_EVENTS = LT_EVENT TABLES T_OUTTAB = GT_LIST EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. 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. " FRM_DSP_DATA *&---------------------------------------------------------------------* *& Form CALLER_EXIT *&---------------------------------------------------------------------* FORM CALLER_EXIT USING U_EXIT TYPE SLIS_DATA_CALLER_EXIT. DATA: LS_F4 TYPE LVC_S_F4, LT_F4 TYPE LVC_T_F4. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING E_GRID = GO_ALV_GRID. * 设置回车事件 CALL METHOD GO_ALV_GRID->REGISTER_EDIT_EVENT EXPORTING I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER EXCEPTIONS ERROR = 1 OTHERS = 2. * 设置光标焦点移开被修改单元格后触发事件 CALL METHOD GO_ALV_GRID->REGISTER_EDIT_EVENT EXPORTING I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED EXCEPTIONS ERROR = 1 OTHERS = 2. SET HANDLER LCL_EVENT_RECEIVER=>HOTSPOT_CLICK FOR GO_ALV_GRID. ENDFORM. "CALLER_EXIT *&---------------------------------------------------------------------* *& Form FRM_REF_ALV *&---------------------------------------------------------------------* FORM FRM_REF_ALV . DATA LS_STBL TYPE LVC_S_STBL. LS_STBL-ROW = ABAP_TRUE. LS_STBL-COL = ABAP_TRUE. CALL METHOD GO_ALV_GRID->REFRESH_TABLE_DISPLAY EXPORTING IS_STABLE = LS_STBL. ENDFORM. " FRM_REF_ALV |
Method ProjectDefinitionPI:
BAPI Method
BAPI_BUS2001_CREATE ProjectDefinitionPI.CreateSingle
BAPI_BUS2001_CHANGE ProjectDefinitionPI.Change
BAPI_BUS2001_DELETE ProjectDefinitionPI.Delete
BAPI_BUS2001_SET_STATUS ProjectDefinitionPI.SetStatus
Method WBSPI:
BAPI Method
BAPI_BUS2054_CREATE_MULTI WBSPI.CreateMultiple
BAPI_BUS2054_CHANGE_MULTI WBSPI.ChangeMultiple
BAPI_BUS2054_DELETE_MULTI WBSPI.DeleteMultiple
BAPI_BUS2001_SET_STATUS WBSPI.SetStatus
Method NetworkPI
BAPI Method
BAPI_BUS2002_CREATE NetworkPI.CreateFromData
BAPI_BUS2002_CHANGE NetworkPI.Change
BAPI_BUS2002_DELETE NetworkPI.Delete
BAPI_BUS2002_ACT_CREATE_MULTI NetworkPI.ActCreateMultiple
BAPI_BUS2002_ACT_CHANGE_MULTI NetworkPI.ActChangeMultiple
BAPI_BUS2002_ACT_DELETE_MULTI NetworkPI.ActDeleteMultiple
BAPI_BUS2002_ACTELEM_CREATE_M NetworkPI.ActElemCreateMultiple
BAPI_BUS2002_ACTELEM_CHANGE_M NetworkPI.ActElemChangeMultiple
BAPI_BUS2002_ACTELEM_DELETE_M NetworkPI.ActElemDeleteMultiple
BAPI_BUS2002_SET_STATUS NetworkPI.SetStatus
One or more of the above individual BAPIs can be called within a LUW.
You finish the current LUW by calling the BAPIs “BAPI_PS_PRECOMMIT ” and “BAPI_TRANSACTION_COMMIT”, in that order.
5NZI | Number range maintenance: RP_IRCERT |
Number range maintenance: RP_IRCERT | |
ABNV | Number range maint: FIAA-BELNR |
Number range maint: FIAA-BELNR | |
AO11 | Assign number range |
分配编号范围 | |
AS08 | Number Ranges:Asset Number |
号码范围:资产号码 | |
BDCP | Number range maintenance: ALE_CP |
编号范围维护: ALE_CP | |
BG00 | Number Range Maintenance: BGMK_NR |
编码范围维护:BGMK_NR | |
BMVN | Number Range Maintenance: DI_JOBID |
编号范围维护: DI_JOBID | |
BUCF | BP Cust: Number Ranges |
BP 消费者: 编号范围 | |
CFNA | Maintain PRT number range: FHM_CRFH |
维护PRT编号范围: FHM_CRFH | |
CMTCUS22 | Maintain number range for CM product |
维护 CM 产品的号码范围 | |
CMTCUS32 | Maintain number range for CM folder |
维护 CM 文件夹的号码范围 | |
CMTCUS42 | Maintain number ranges for Baseline |
维护起点的号码范围 | |
FBN1 | Accounting Document Number Ranges |
科目凭证号码范围 | |
FNS1 | Collateral number range |
附属编号区间 | |
FOV0 | Rental agreement number range |
租用协议编号范围 | |
FOW0 | Real Estate application number range |
不动产应用的数据范围 | |
IN20 | Object link number ranges |
对象连接号码范围 | |
IP22 | Maintain number range: OBJK_NR |
维护编号范围:OBJK_NR | |
KEN2 | Maint. number ranges: CO-PA planning |
维护号吗范围: CO-PA计划 | |
OGS9 | Generate ADP number ranges |
生成 ADP 编号范围 | |
OHX3 | Maintain number ranges for 3PR |
维护 3PR 的编号范围 | |
OIL5 | Equipment number ranges |
设备编号范围 | |
OION | Order number ranges |
订单编号范围 | |
OMH6 | Number Ranges for Purch. Documents |
采购凭证的号码范围 | |
QCCN | QM standard number ranges |
质量管理标准码范围 | |
QS29 | Maintain characteristic number range |
维护特性编号范围 | |
QS39 | Maintain method number range |
编号范围维护方式 | |
VB(1 | Rebate number ranges |
回扣号范围 | |
VN07 | Maintain number range for shipments |
维护装运的编号范围 | |
WC64 | Catalog code number ranges |
类别代码编号范围 | |
WTNR | w/tax certificate number range |
w/tax certificate number range |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
FORM FRM_GET_CONDS USING VALUE(U_KSCHL) TYPE KONP-KSCHL. DATA: LS_T685 TYPE T685, LT_T682I TYPE WCB_T682I_STAB, LS_T682I TYPE T682I, LT_FIELD TYPE WCB_FIELDINFOS_STAB, LS_FIELD TYPE WCB_FIELDINFOS, LV_COND TYPE STRING, LV_FIELD TYPE STRING, LV_TABNAME TYPE TABNAME. CALL FUNCTION 'WCB_READ_T685_FOR_KSCHL' EXPORTING I_KAPPL = 'M' I_KSCHL = U_KSCHL IMPORTING E_T685 = LS_T685. CHECK LS_T685-KOZGF IS NOT INITIAL. CALL FUNCTION 'WCB_GET_T682I_FOR_KOZGF' EXPORTING I_KAPPL = 'M' I_KOZGF = LS_T685-KOZGF IMPORTING ET_T682I = LT_T682I. LOOP AT LT_T682I INTO LS_T682I. CLEAR: LV_TABNAME, LV_FIELD, LV_COND. LV_TABNAME = 'A' && LS_T682I-KOTABNR. CALL FUNCTION 'WCB_GET_FIELDINFOS' EXPORTING I_TABNAME = LV_TABNAME IMPORTING ET_FIELDINFOS = LT_FIELD EXCEPTIONS NOT_FOUND = 1 OTHERS = 2. LOOP AT LT_FIELD INTO LS_FIELD. IF LV_FIELD IS INITIAL. LV_FIELD = LS_FIELD-FIELDNAME. ELSE. LV_FIELD = LV_FIELD && ` ` && LS_FIELD-FIELDNAME. ENDIF. CASE LS_FIELD-FIELDNAME. WHEN 'EKORG'. LV_COND = LV_COND && '$' && ` ` && 'EKORG EQ P_EKORG' && ` `. WHEN 'LIFNR'. LV_COND = LV_COND && '$' && ` ` && 'LIFNR IN S_LIFNR' && ` `. WHEN 'MATNR'. LV_COND = LV_COND && '$' && ` ` && 'MATNR IN S_MATNR' && ` `. WHEN 'VKORG'. LV_COND = LV_COND && '$' && ` ` && 'VKORG IN S_VKORG' && ` `. WHEN 'VTWEG'. LV_COND = LV_COND && '$' && ` ` && 'VTWEG IN S_VTWEG' && ` `. WHEN 'KBSTAT'. LV_COND = LV_COND && '$' && ` ` && 'KBSTAT IN S_KBSTAT' && ` `. WHEN OTHERS. ENDCASE. CLEAR LS_FIELD. ENDLOOP. SHIFT LV_COND LEFT DELETING LEADING: '$', SPACE. REPLACE ALL OCCURRENCES OF '$' IN LV_COND WITH 'AND'. * 取得条件记录 IF GT_LIST IS INITIAL. TRY. SELECT (LV_FIELD) INTO CORRESPONDING FIELDS OF TABLE GT_LIST FROM (LV_TABNAME) WHERE KAPPL EQ 'M' AND KSCHL EQ U_KSCHL AND DATBI GE P_DATAB AND DATAB LE P_DATAB AND (LV_COND). CATCH CX_SY_SQL_ERROR. ENDTRY. ELSE. TRY. SELECT (LV_FIELD) APPENDING CORRESPONDING FIELDS OF TABLE GT_LIST FROM (LV_TABNAME) WHERE KAPPL EQ 'M' AND KSCHL EQ U_KSCHL AND DATBI GE P_DATAB AND DATAB LE P_DATAB AND (LV_COND). CATCH CX_SY_SQL_ERROR. ENDTRY. ENDIF. GS_LIST-KOTABNR = LS_T682I-KOTABNR. MODIFY GT_LIST FROM GS_LIST TRANSPORTING KOTABNR WHERE KOTABNR IS INITIAL. ENDLOOP. SELECT * INTO TABLE GT_KONP FROM KONP FOR ALL ENTRIES IN GT_LIST WHERE KNUMH EQ GT_LIST-KNUMH. ENDFORM. " FRM_GET_CONDS |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
REPORT zhistory. PARAMETERS: name TYPE usr02-bname OBLIGATORY, fro TYPE sy-datum OBLIGATORY DEFAULT sy-datum, to_ TYPE sy-datum OBLIGATORY DEFAULT sy-datum. CONSTANTS: c_name TYPE trdir-name VALUE 'Name', c_date TYPE trdir-udat VALUE 'Date'. AT SELECTION-SCREEN. IF fro > to_. WRITE: / 'Invalid date period.' COLOR COL_NEGATIVE. RETURN. ENDIF. START-OF-SELECTION. DATA: lt_record TYPE STANDARD TABLE OF trdir. SELECT name udat INTO CORRESPONDING FIELDS OF TABLE lt_record FROM trdir WHERE unam = name AND udat BETWEEN fro AND to_. "udat >= fro and udat < = to_. IF sy-subrc <> 0. WRITE: / 'No record found at given date period.' COLOR COL_NEGATIVE. RETURN. ENDIF. SORT lt_record BY udat DESCENDING. WRITE: 10 c_name, 80 c_date. LOOP AT lt_record INTO DATA(ls_data). WRITE: / ls_data-name UNDER c_name COLOR COL_POSITIVE, ls_data-udat UNDER c_date COLOR COL_TOTAL. HIDE ls_data-name. ENDLOOP. AT LINE-SELECTION. DATA: bdcdata_tab TYPE TABLE OF bdcdata, opt TYPE ctu_params, bdcdata_line TYPE bdcdata. bdcdata_line-program = 'SAPLWBABAP'. bdcdata_line-dynpro = '0100'. bdcdata_line-dynbegin = 'X'. APPEND bdcdata_line TO bdcdata_tab. CLEAR: bdcdata_line. bdcdata_line-fnam = 'BDC_CURSOR'. bdcdata_line-fval = 'RS38M-PROGRAMM'. APPEND bdcdata_line TO bdcdata_tab. CLEAR: bdcdata_line. bdcdata_line-fnam = 'BDC_OKCODE'. bdcdata_line-fval = '=SHOP'. APPEND bdcdata_line TO bdcdata_tab. CLEAR: bdcdata_line. bdcdata_line-fnam = 'RS38M-PROGRAMM'. bdcdata_line-fval = ls_data-name. APPEND bdcdata_line TO bdcdata_tab. opt-dismode = 'E'. opt-defsize = 'X'. CALL TRANSACTION 'SE38' USING bdcdata_tab OPTIONS FROM opt. CLEAR: bdcdata_tab. |
执行report,输入要查询的日期和user,
工具会按照使用次数从高到低列出输入日期所在的月份内所有该user 曾经使用过的tcode 和report list:
REPORT zusertcode.
PARAMETER: month TYPE dats DEFAULT sy-datum OBLIGATORY,
user type usr02-bname OBLIGATORY DEFAULT sy-uname.
TYPES: BEGIN OF zusertcode,
operation type char30,
type type char10,
count TYPE swncshcnt,
END OF zusertcode.
TYPES: tt_zusertcode TYPE STANDARD TABLE OF zusertcode WITH KEY operation type.
DATA: lt_usertcode TYPE swnc_t_aggusertcode,
wa_usertcode TYPE swncaggusertcode,
wa TYPE zusertcode,
t_ut TYPE tt_zusertcode,
ls_result TYPE zusertcode,
lt_result TYPE tt_zusertcode.
CONSTANTS: cv_tcode TYPE char30 VALUE ‘Tcode’,
cv_report TYPE char30 VALUE ‘Report’,
cv_count TYPE char5 value ‘Count’.
START-OF-SELECTION.
* Set date to the first day of the month
“month+6(2) = ’01’.
CALL FUNCTION ‘SWNC_COLLECTOR_GET_AGGREGATES’
EXPORTING
component = ‘TOTAL’
periodtype = ‘M’
periodstrt = month
TABLES
usertcode = lt_usertcode
EXCEPTIONS
no_data_found = 1
OTHERS = 2.
DELETE lt_usertcode WHERE tasktype <> ’01’.
LOOP AT lt_usertcode ASSIGNING FIELD-SYMBOL(<user>) WHERE account = user.
CLEAR: ls_result.
ls_result-operation = <user>-entry_id.
ls_result-type = <user>-entry_id+72.
ls_result-count = <user>-count.
COLLECT ls_result INTO lt_result.
ENDLOOP.
SORT lt_result BY count DESCENDING.
WRITE: 10 cv_tcode, 20 cv_report, 60 cv_count COLOR COL_NEGATIVE.
LOOP AT lt_result ASSIGNING FIELD-SYMBOL(<result>).
IF <result>-type = ‘T’.
WRITE: / <result>-operation COLOR COL_TOTAL UNDER cv_tcode,
<result>-count COLOR COL_POSITIVE UNDER cv_count.
ELSE.
WRITE: / <result>-operation COLOR COL_GROUP UNDER cv_report,
<result>-count COLOR COL_POSITIVE UNDER cv_count.
ENDIF.
ENDLOOP.
POPUP_GET_VALUES_DB_CHECKED