- REPORT zkk.
- *----------------------------------------------------------------------*
- * CLASS bi_class DEFINITION
- *----------------------------------------------------------------------*
- *
- *----------------------------------------------------------------------*
- CLASS bi_class DEFINITION.
- PUBLIC SECTION.
- DATA: bi_tab TYPE STANDARD TABLE OF bdcdata,
- bi_err TYPE STANDARD TABLE OF bdcmsgcoll,
- bi_mod(1),
- bi_upd(1).
- METHODS: constructor IMPORTING p_MODE TYPE ANY OPTIONAL
- P_updATE TYPE ANY OPTIONAL,
- _clear,
- _add IMPORTING value(p_1) TYPE any
- p_2 TYPE any
- p_3 TYPE any,
- _call IMPORTING p_1 TYPE any,
- _error.
- PRIVATE SECTION.
- DATA: bi_wa_err TYPE bdcmsgcoll,
- bi_wa_tab TYPE bdcdata,
- bi_tt TYPE STANDARD TABLE OF tline,
- bi_wa_tt TYPE tline,
- bi_tout TYPE STANDARD TABLE OF char255,
- bi_wa_tout type char255.
- ENDCLASS. "bi_class DEFINITION
- *----------------------------------------------------------------------*
- * CLASS bi_class IMPLEMENTATION
- *----------------------------------------------------------------------*
- *
- *----------------------------------------------------------------------*
- CLASS bi_class IMPLEMENTATION.
- METHOD constructor.
- IF NOT p_MODE IS INITIAL. ME->BI_MOD = p_MODE. ELSE. me->bi_mod = 'N'. ENDIF.
- IF NOT p_UPDATE IS INITIAL. ME->BI_MOD = p_UPDATE. ELSE. me->bi_mod = 'S'. ENDIF.
- ENDMETHOD. "constructor
- METHOD _clear.
- CLEAR: bi_tab, bi_err, bi_tt, bi_tout.
- REFRESH: bi_tab, bi_err, bi_tt, bi_tout.
- ENDMETHOD. "bi_clear
- METHOD _add.
- CLEAR bi_wa_tab.
- IF NOT p_1 IS INITIAL.
- bi_wa_tab-program = p_2.
- bi_wa_tab-dynpro = p_3.
- bi_wa_tab-dynbegin = 'X'.
- IF p_1 NE 'X'.
- APPEND bi_wa_tab TO bi_tab.
- CLEAR bi_wa_tab.
- bi_wa_tab-fnam = 'BDC_OKCODE'.
- bi_wa_tab-fval = p_1.
- ENDIF.
- ELSE.
- bi_wa_tab-fnam = p_2.
- bi_wa_tab-fval = p_3.
- ENDIF.
- APPEND bi_wa_tab TO bi_tab.
- ENDMETHOD. "bi_add
- METHOD _call.
- CALL TRANSACTION p_1 USING bi_tab MODE bi_mod UPDATE bi_upd
- MESSAGES INTO bi_err.
- ENDMETHOD. "bi_call
- METHOD _error.
- FIELD-SYMBOLS <bi_fs> TYPE bdc_vtext1.
- REFRESH bi_tt.
- DESCRIBE TABLE bi_err LINES sy-pexpi.
- CHECK sy-pexpi GT 0.
- SORT bi_err.
- DELETE ADJACENT DUPLICATES FROM bi_err.
- * Se suprimen los mensajes de tipo 'S' num: 402:"Campo tranf. a visu" y
- * num: 432:"Sistema ha ejecutado c.
- DELETE bi_err WHERE msgtyp = 'S'
- AND ( msgnr = '402' OR msgnr = '432'
- OR msgnr = '000' ).
- LOOP AT bi_err INTO bi_wa_err.
- CLEAR sy-lisel.
- SELECT SINGLE text INTO sy-lisel FROM t100
- WHERE sprsl = sy-langu AND
- arbgb = bi_wa_err-msgid AND
- msgnr = bi_wa_err-msgnr.
- IF sy-subrc = 0 AND NOT sy-lisel IS INITIAL.
- * d_len = strlen( bi_err-msgv1 ).
- CLEAR sy-pexpi.
- TRANSLATE sy-lisel USING ' ~'.
- SPLIT sy-lisel AT '&' INTO TABLE bi_tout.
- CLEAR sy-lisel.
- LOOP AT bi_tout INTO bi_wa_tout.
- CHECK NOT bi_wa_tout IS INITIAL.
- ADD 1 TO sy-pexpi.
- IF sy-pexpi < 5.
- CONCATENATE 'bi_err-msgv' sy-pexpi INTO sy-repi2.
- ASSIGN (sy-repi2) TO <bi_fs>.
- ENDIF.
- CONCATENATE sy-lisel bi_wa_tout <bi_fs> INTO sy-lisel.
- CONDENSE sy-lisel NO-GAPS.
- ENDLOOP.
- TRANSLATE sy-lisel USING '~ '.
- bi_wa_tt-tdline = sy-lisel.
- APPEND bi_wa_tt TO bi_tt.
- ENDIF.
- ENDLOOP.
- DESCRIBE TABLE bi_tt LINES sy-pexpi.
- CHECK sy-pexpi > 0.
- * Si contiene errores.se muestran en una ventana.
- CALL FUNCTION 'COPO_POPUP_TO_DISPLAY_TEXTLIST'
- EXPORTING
- task = 'DISPLAY'
- titel = 'Errores en transaccion'
- TABLES
- text_table = bi_tt.
- ENDMETHOD. "bi_error
- ENDCLASS. "bi_class IMPLEMENTATION
- END-OF-SELECTION.
- DATA: my_bi TYPE REF TO bi_class.
- CREATE OBJECT my_bi.
- my_bi->_clear( ).
- my_bi->bi_mod = 'A'.
- my_bi->_add( EXPORTING p_1 = 'X' p_2 = 'SAPLWBABAP' p_3 = '0100').
- my_bi->_add( EXPORTING p_1 = 'X' p_2 = 'SAPLWBABAP' p_3 = '0100').
- my_bi->_add( EXPORTING p_1 = ' ' p_2 = 'BDC_OKCODE' p_3 = '=BACK').
- my_bi->_call('SE38').
Última modificación de la página el 04 November 2015 a las 15h04
Powered by
PmWiki