Code: Alles auswählen.
SET PARAMETER ID 'ANR' FIELD ld_AUFNR.
CALL TRANSACTION 'CO27'. "AND SKIP FIRST SCREEN.
Code: Alles auswählen.
SUBMIT PPIOM000
AND RETURN
WITH S_AUFNR-LOW EQ ld_AUFNR
WITH P_PROFID = 000005.
Code: Alles auswählen.
SUBMIT ppiom000
WITH s_aufnr = AUFNR
WITH p_profid = 000005
AND RETURN.
Code: Alles auswählen.
class call_tan Definition.
public section.
TYPES: tty_bcdata TYPE TABLE OF bdcdata.
* Dynprofeld setzen
CLASS-METHODS set_df
IMPORTING i_fnam TYPE any " Feldname Batch-Input
i_fval TYPE any " Feldwert
CHANGING ct_bdcdata TYPE tty_bcdata. " Tabelle zur Übergabe an call transaction
* Kopf Transaktionsaufruf setzen
CLASS-METHODS st_head
IMPORTING i_pro TYPE any " Programmname
i_dynpro TYPE any " Dynpro-Nummer
CHANGING ct_bdcdata TYPE tty_bcdata." Tabelle zur Übergabe an call transaction
* Transaktion aufrufen
CLASS-METHODS cl_tan
IMPORTING i_tcode TYPE tcode " Transaktionscode
i_defsize TYPE ctu_params-defsize " Mögliche Werte: A: mit Anzeige Bildschirmbilder, E: Anzeige, nur falls Fehler, N: Verarbeitung ohne Anzeige, P: mit Debugging
it_bdc TYPE tty_bcdata " Tabelle zur Übergabe an call transaction
EXPORTING e_messtab TYPE bdcmsgcoll " Meldungen
EXCEPTIONS no_aut " keine Berechtigung
err_tan " Fehler Transaktion
ok. " alles ok :-)
endclass.
class call_tan implementation.
METHOD set_df.
* Dynprofeld setzen
DATA: len TYPE i,
typ(1) TYPE c,
conv_exit TYPE tfdir-funcname,
mengc(30) TYPE c,
l_bcd TYPE bdcdata.
l_bcd-fnam = i_fnam.
DESCRIBE FIELD i_fval EDIT MASK conv_exit
OUTPUT-LENGTH len
TYPE typ.
IF conv_exit <> space.
WRITE i_fval TO l_bcd-fval(len) USING EDIT MASK conv_exit.
ELSE.
CASE typ.
WHEN 's'.
* 2-Byte Int mit Vorz
WRITE i_fval TO l_bcd-fval(len).
WHEN 'D'.
* "WHEN 'P'.mit unit
* " Achtung dazu fehlt unit_feld:
* " falls typen von DB ausgelesen werden die referenz steht mit drin
* " referenz in eigener seqeuenz suchen und feld nehmen
* " oder
* " mit unit-feld übergeben
IF NOT i_fval IS INITIAL.
WRITE i_fval TO l_bcd-fval(len).
ENDIF.
WHEN 'P'.
* ohne unit !
WRITE i_fval TO mengc(len).
l_bcd-fval = mengc.
WHEN OTHERS.
l_bcd-fval = i_fval.
ENDCASE.
ENDIF.
APPEND l_bcd TO ct_bdcdata.
ENDMETHOD.
METHOD cl_tan.
DATA: lines TYPE i,
opt TYPE ctu_params,
gt_messtab TYPE TABLE OF bdcmsgcoll.
*check authority
CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
tcode = i_tcode
EXCEPTIONS
ok = 0
not_ok = 1
OTHERS = 2.
IF sy-subrc <> 0.
RAISE no_aut.
ENDIF.
opt-updmode = 'S'.
opt-defsize = i_defsize.
opt-dismode = 'E'.
* Aufruf Transaktion
CALL TRANSACTION i_tcode USING it_bdc
OPTIONS FROM opt
MESSAGES INTO gt_messtab.
* Pruefen Fehlermeldung
DESCRIBE TABLE gt_messtab LINES lines.
READ TABLE gt_messtab INDEX lines INTO e_messtab.
IF e_messtab-msgtyp = 'E' OR e_messtab-msgtyp = 'A'.
RAISE err_tan.
ENDIF.
RAISE ok.
ENDMETHOD.
METHOD st_head.
* Kopf Transaktionsaufruf setzen
FIELD-SYMBOLS: <bc> TYPE bdcdata.
APPEND INITIAL LINE TO ct_bdcdata ASSIGNING <bc>.
<bc>-program = i_pro.
<bc>-dynpro = i_dynpro.
<bc>-dynbegin = 'X'.
ENDMETHOD.
endclass.