DATA: G_MESSAGE(200).
PERFORM FILL_BDCDATA.
CALL TRANSACTION 'FI01' USING G_BDCDATA
MODE 'N'.
* of course it is nicer with a message itab,
but this example
* should also demostrate the use of system
variables.
SELECT SINGLE * FROM T100 WHERE
SPRSL = 'E'
AND ARBGB = SY-MSGID
AND MSGNR = SY-MSGNO.
G_MESSAGE = T100-TEXT.
PERFORM REPLACE_PARAMETERS USING
SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4
CHANGING G_MESSAGE.
WRITE: / 'System variables:'.
SKIP.
WRITE: / '
Sy-msgty:', SY-MSGTY.
WRITE: / '
Sy-msgid:', SY-MSGID.
WRITE: / '
Sy-msgno:', SY-MSGNO.
WRITE: / '
Sy-msgv1:', SY-MSGV1.
WRITE: / '
Sy-msgv2:', SY-MSGV2.
WRITE: / '
Sy-msgv3:', SY-MSGV3.
WRITE: / '
Sy-msgv4:', SY-MSGV4.
SKIP.
WRITE: / 'The transaction was called with
a wrong country code.'.
WRITE: / 'The error message should be either
that or that you have'.
WRITE: / ' no authorisation to execute
the transaction'.
SKIP.
WRITE: / 'Message:'.
SKIP.
WRITE: / SY-MSGTY,
G_MESSAGE.
*---------------------------------------------------------------------*
* Build
up the BDC-table
*
*---------------------------------------------------------------------*
FORM FILL_BDCDATA.
REFRESH G_BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPMF02B'
'0100'.
PERFORM BDC_FIELD USING 'BNKA-BANKS'
'ZZZ'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'QQQQQ'.
ENDFORM.
*---------------------------------------------------------------------*
* FORM
BDC_DYNPRO
*
*---------------------------------------------------------------------*
* Batchinput:
Start new Dynpro
*
*---------------------------------------------------------------------*
FORM BDC_DYNPRO USING P_PROGRAM P_DYNPRO.
CLEAR G_BDCDATA.
G_BDCDATA-PROGRAM = P_PROGRAM.
G_BDCDATA-DYNPRO = P_DYNPRO.
G_BDCDATA-DYNBEGIN = 'X'.
APPEND G_BDCDATA.
ENDFORM.
" BDC_DYNPRO
*---------------------------------------------------------------------*
* FORM
BDC_FIELD
*
*---------------------------------------------------------------------*
* Batchinput:
Feld hinzufugen
*
*---------------------------------------------------------------------*
FORM BDC_FIELD USING P_FNAM P_FVAL.
CLEAR G_BDCDATA.
G_BDCDATA-FNAM = P_FNAM.
G_BDCDATA-FVAL = P_FVAL.
APPEND G_BDCDATA.
ENDFORM.
" BDC_FIELD
*---------------------------------------------------------------------*
* FORM
REPLACE_PARAMETERS
*
*---------------------------------------------------------------------*
* ........
*
*---------------------------------------------------------------------*
* --> P_PAR_1
*
* --> P_PAR_2
*
* --> P_PAR_3
*
* --> P_PAR_4
*
* --> P_MESSAGE
*
*---------------------------------------------------------------------*
FORM REPLACE_PARAMETERS USING
P_PAR_1
P_PAR_2
P_PAR_3
P_PAR_4
CHANGING P_MESSAGE.
* erst mal pruefen, ob numerierte Parameter
verwendet wurden
DO.
REPLACE '&1' WITH P_PAR_1
INTO P_MESSAGE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ENDDO.
DO.
REPLACE '&2' WITH P_PAR_2
INTO P_MESSAGE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ENDDO.
DO.
REPLACE '&3' WITH P_PAR_3
INTO P_MESSAGE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ENDDO.
DO.
REPLACE '&4' WITH P_PAR_4
INTO P_MESSAGE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ENDDO.
* falls keine numerierten Parameter vorh.,
ersetzen wie gehabt
REPLACE '&' WITH P_PAR_1 INTO P_MESSAGE.
CONDENSE P_MESSAGE.
IF SY-SUBRC EQ 0.
REPLACE '&' WITH P_PAR_2
INTO P_MESSAGE.
CONDENSE P_MESSAGE.
IF SY-SUBRC EQ 0.
REPLACE '&'
WITH P_PAR_3 INTO P_MESSAGE.
CONDENSE P_MESSAGE.
IF SY-SUBRC
EQ 0.
REPLACE '&' WITH P_PAR_4 INTO P_MESSAGE.
CONDENSE P_MESSAGE.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
"replace_parameters