***INCLUDE ZBDCINCL .
* Version 0004                         Date: 20-Aug-2004
TABLES: T100.

*ATA: BEGIN OF BDCDATA OCCURS 1.
*       INCLUDE STRUCTURE BDCDATA.
*ATA: END   OF BDCDATA.

*     Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE.

*     messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

*     message texts
DATA: NODATA VALUE '/'.          "nodata

*-Display mode
DATA: CTUMODE LIKE CTU_PARAMS-DISMODE VALUE 'E'.
*             A: show all dynpros (default) 'A'
*             E: show dynpro on error only  'E'
*             N: do not display dynpro      'N'

*-Update mode
DATA: CUPDATE LIKE CTU_PARAMS-UPDMODE VALUE 'L'.
*             S: synchronously              'S'
*             A: asynchronously             'A'
*             L: local                      'L'

DATA: V_DATE1(10),                          "Start date as string
      V_DATE2 LIKE V_DATE1,                 "End   date as string
      V_DATUM LIKE SY-DATUM.

*-----------------------------------------------------------------------
FORM BDC_DYNPRO USING PROGRAM DYNPRO.       "Start new screen
  CLEAR BDCDATA.
  BDCDATA-PROGRAM  =  PROGRAM.
  BDCDATA-DYNPRO   =  DYNPRO.
  BDCDATA-DYNBEGIN = 'X'.
  APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
*-----------------------------------------------------------------------
FORM BDC_FIELD USING FNAM FVAL.             "Insert field
  IF FVAL <> NODATA.
    CLEAR BDCDATA.
    BDCDATA-FNAM = FNAM.
    BDCDATA-FVAL = FVAL.
    APPEND BDCDATA.
  ENDIF.
ENDFORM. "BDC_FIELD
*-----------------------------------------------------------------------
FORM BDC_CALL_TRANSACTION USING TCODE.      "Start new transaction
  DATA: L_MSTRING(480).
  REFRESH MESSTAB.
  CALL TRANSACTION TCODE USING         BDCDATA
                         MODE          CTUMODE
                         UPDATE        CUPDATE
                         MESSAGES INTO MESSTAB.
  LOOP AT MESSTAB.
    SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
                              AND   ARBGB = MESSTAB-MSGID
                              AND   MSGNR = MESSTAB-MSGNR.
    IF SY-SUBRC = 0.
      L_MSTRING = T100-TEXT.
      IF L_MSTRING CS '&1'.
        REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
        REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
        REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
        REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
      ELSE.
        REPLACE '&'  WITH MESSTAB-MSGV1 INTO L_MSTRING.
        REPLACE '&'  WITH MESSTAB-MSGV2 INTO L_MSTRING.
        REPLACE '&'  WITH MESSTAB-MSGV3 INTO L_MSTRING.
        REPLACE '&'  WITH MESSTAB-MSGV4 INTO L_MSTRING.
      ENDIF.
      CONDENSE L_MSTRING.
      WRITE: / MESSTAB-MSGTYP, L_MSTRING(250).
    ELSE.
      WRITE: / MESSTAB.
    ENDIF.
  ENDLOOP.
  SKIP.
ENDFORM. "BDC_CALL_TRANSACTION
*-----------------------------------------------------------------------
FORM RUN USING VALUE(V_TCODE) LIKE SY-TCODE.
  CALL TRANSACTION V_TCODE USING BDCDATA MODE CTUMODE.
ENDFORM. "RUN
*-----------------------------------------------------------------------
DEFINE DYN.
  PERFORM BDC_DYNPRO USING &1 &2.
END-OF-DEFINITION. "DYN
*-----------------------------------------------------------------------
DEFINE FLD.
  PERFORM BDC_FIELD  USING &1 &2.
END-OF-DEFINITION. "FLD
*-----------------------------------------------------------------------
DEFINE TRA.
  PERFORM RUN        USING &1.
END-OF-DEFINITION. "TRA
*-----------------------------------------------------------------------
