Batch Input with ‘Call Transaction’ – Sample ABAP program Code

Requirement:

Choose a transaction and write a Batch Input program with ‘Call Transaction’. Do not use the Message tab feature of ‘Call Transaction’. In this case the last error message will be at the SY-MSG* system fields. Recreate the complete error message from table T100! (This example is also used by the demonstration of SY-MSG* system  fields)

Solution:

REPORT ZSYSTEM LINE-SIZE 255.
TABLES: T100.
* Batch-input data
DATA: BEGIN OF G_BDCDATA OCCURS 100.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF G_BDCDATA.

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

Author : Bence Toth

Related SAP Tutorials & References
  1. ABAP program for Mass Purchase Order History DisplayThis is a customized ABAP report for mass Purchase Order history display instead of checking...
  2. Source Code for create subscreen in your ABAP Program* Source Code for create subscreen in your ABAP Program * * This report will...
  3. Source Code of ABAP Program to Browse a file on the application serverSource Code of ABAP Program to Browse a file on the application serverREPORT ZBROWSE MESSAGE-ID...
  4. ABAP Program for MB1B Call TransactionA sample ABAP program to understand how to use MB1B call transaction in ABAP.REPORT YMBIE096...
  5. ABAP Program for Execute Unix command from within SAPThis source code is an ABAP Program for Execute Unix command from within SAP REPORT...
  6. ABAP Program for Lock All UsersThis program (un)locks all the users in a client, except for the current user, and...
  7. ABAP Program for Search Layout sets for given StringSample ABAP program to show how to search in Layout sets for a given string.REPORT...
  8. ABAP program to load a database table from a UNIX fileRequirement: Write a program to load a database table from a UNIX file. ABAP Source...
  9. Useful standard Reports used in SAP Financial AccountingThis documentation covers the details of Useful standard Reports used in SAP Financial AccountingGENERAL LEDGERInformation...
  10. ABAP Program to Upload table using new function GUI_UPLOADSample ABAP Program to learn how to Upload table using new function GUI_UPLOAD in ABAP...
Google: Facebook:

Submit your tip or response