Autor Tema: INCLUDE para Batch Input  (Leído 10276 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado oscar

  • Administrador
  • Usuario Sr.
  • *****
  • Mensajes: 112
    • Ver Perfil
INCLUDE para Batch Input
« en: 09 de Julio de 2007, 06:37:23 pm »
Este Include esta formado por los siguientes FORM:

  - abrir_sesion_BI
  - rellenar_dynpro
  - insertar_transaccion_BI
  - cerrar_sesion_BI


Código: [Seleccionar]

*-----------------------------------------------------------------------
*                    FORM abrir_sesion_BI
*-----------------------------------------------------------------------
* Esta función abre la sesión de batch input. Si la sesión de batch
*input se ha ejecutado incorrectamente avisa al programa principal.
*-----------------------------------------------------------------------
* --> i_bdctab : Tabla de tipo bdcdata donde se almacena el contenido
*                 del batch input.
* --> p_sesion: Nombre de la sesión de batch input.
* --> p_fechin: Fecha a partir de la cual se puede procesar el b. input.
*     por ejemplo: '19980603' equivale a bloquear hasta el 03/06/1998.
* <-- p_return: Devuelve un valor (sy_subrc) tal que notifica si la
*     función se ha ejecutado correctamente (caso de valer 0).
*-----------------------------------------------------------------------
FORM ABRIR_SESION_BI USING P_SESION TYPE C P_FECHIN TYPE D CHANGING
                            VALUE(P_RETURN) TYPE I.

  DATA: D_BATCHIN TYPE I.
  CALL FUNCTION 'BDC_OPEN_GROUP'
       EXPORTING
            CLIENT              = SY-MANDT
            GROUP               = P_SESION
            USER                = SY-UNAME
            HOLDDATE            = P_FECHIN
            KEEP                = 'X'
       EXCEPTIONS
            CLIENT_INVALID      = 1
            DESTINATION_INVALID = 2
            GROUP_INVALID       = 3
            GROUP_IS_LOCKED     = 4
            HOLDDATE_INVALID    = 5
            INTERNAL_ERROR      = 6
            QUEUE_ERROR         = 7
            RUNNING             = 8
            SYSTEM_LOCK_ERROR   = 9
            USER_INVALID        = 10
            OTHERS              = 11.

  IF SY-SUBRC = 0.
     D_BATCHIN = 1.
  ENDIF.
  P_RETURN = SY-SUBRC.

ENDFORM.

*----------------------------------------------------------------------
*                          FORM rellenar_dynpro
*----------------------------------------------------------------------
*Esta función pretende facilitar la tarea del programador para rellenar
*los campos de la tabla interna de tipo BDCDATA.
*-----------------------------------------------------------------------
* --> i_bdctab: Tabla de tipo bdcdata donde se almecena el contenido del
*              batch input.
* --> p_valor1: Corresponderá la valor del campo Start de la tabla
*     interna. Puede tomar los siguientes valores 'X' o ' '.
* --> p_valor2: Puede indicar dos conceptos distintos dependiendo del
*     valor que haya tomado p_valor1:
*         p_valor1 ='X' => p_valor2 = Campo program de la tabla BDC_TAB
*         p_valor1 =' ' => p_valor2 = campo Field name de BDC_TAB
* --> p_valor3: Puede inidicar dos valores distintos dependiendo del
*     valor que haya tomado p_valor1:
*         p_valor1 ='X' => p_valor3 = Screen de la tabla BDC_TAB
*         p_valor1 =' ' => p_valor3 = Field Value de la tabla BDC_TAB
*-----------------------------------------------------------------------
FORM RELLENAR_DYNPRO TABLES I_BDCTAB STRUCTURE BDCDATA USING P_VALOR1
            TYPE C P_VALOR2 TYPE C P_VALOR3 TYPE C.

  CLEAR I_BDCTAB.
  IF P_VALOR1 EQ 'X'.
    MOVE: P_VALOR2 TO I_BDCTAB-PROGRAM,
          P_VALOR3 TO I_BDCTAB-DYNPRO,
          P_VALOR1 TO I_BDCTAB-DYNBEGIN.
  ELSE.
    MOVE: P_VALOR2 TO I_BDCTAB-FNAM,
          P_VALOR3 TO I_BDCTAB-FVAL.
  ENDIF.
  APPEND I_BDCTAB.

ENDFORM.

*-----------------------------------------------------------------------
*                      FORM insertar_transacción_BI
*-----------------------------------------------------------------------
* Esta función transfiere los datos de la tabla BDC_TAB al fichero de
* cola, para poder ser más tarde procesado.
*-----------------------------------------------------------------------
* --> i_bdctab: Tabla de tipo bdcdata donde se almacena el contenido del
*              batch input.
* --> p_codigo: Indicar el código de transacción para el que se ha gene-
*     rado la sesión de batch input.
* <-- p_return: Devuelve el valor de sy-subrc.
*-----------------------------------------------------------------------
FORM INSERTAR_TRANSACCION_BI TABLES I_BDCTAB STRUCTURE BDCDATA USING
                    P_CODIGO TYPE C CHANGING VALUE(P_RETURN) TYPE I.

  CALL FUNCTION 'BDC_INSERT'
       EXPORTING
            TCODE     = P_CODIGO
       TABLES
            DYNPROTAB = I_BDCTAB
       EXCEPTIONS
            INTERNAL_ERROR   = 1
            NOT_OPEN         = 2
            QUEUE_ERROR      = 3
            TCODE_INVALID    = 4
            PRINTING_INVALID = 5
            POSTING_INVALID  = 6
            OTHERS           = 7.

  P_RETURN = SY-SUBRC.
  REFRESH I_BDCTAB.

ENDFORM.

*-----------------------------------------------------------------------
*                         FORM cerrar_sesion_BI
*-----------------------------------------------------------------------
* Cierra la sesión de batch input.
*-----------------------------------------------------------------------
* --> i_bdctab: Tabla de tipo bdcdata donde se almacena el contenido del
*               batch input.
* <--p_return: Devuelve el parámetro sy-subrc.
*----------------------------------------------------------------------
FORM CERRAR_SESION_BI TABLES I_BDCTAB STRUCTURE BDCDATA USING
                      P_RETURN TYPE I.
  CALL FUNCTION 'BDC_CLOSE_GROUP'
       EXCEPTIONS
            NOT_OPEN    = 1
            QUEUE_ERROR = 2
            OTHERS      = 3.

  P_RETURN = SY-SUBRC.
  FREE I_BDCTAB.

ENDFORM.