Gratis · código abierto (MIT)

ABAP Toolkit

Las clases que acabas escribiendo en cada proyecto, ya escritas, documentadas y con ejemplos. Un paquete para ABAP Cloud y otro para ECC y S/4HANA on-premise. Descárgalas, instálalas con abapGit y úsalas donde quieras, también en tu empresa.

Descargar Qué incluye

zcl_abk_mail=>new( )->from( `noreply@empresa.com` )
                     ->to( `compras@empresa.com` )
                     ->subject( |Pedido { lv_ebeln } aprobado| )
                     ->html_body( lv_html )
                     ->attach( iv_content   = lv_pdf
                               iv_filename  = `pedido.pdf`
                               iv_mime_type = `application/pdf` )
                     ->send( ).

Descargas

Cada ZIP se importa con abapGit (New Offline > importar ZIP) en el paquete que elijas.

Paquete ABAP Cloud

12 objetos + plantilla RAP. BTP, S/4HANA Cloud y clean core.

Descargar ZIP

Paquete clásico

8 objetos. ECC 6.0 (7.40+) y S/4HANA on-premise.

Descargar ZIP

Todo junto

Los dos paquetes con la documentación.

Descargar ZIP

Plantilla RAP

BO gestionado con draft: 9 ficheros con marcadores y un ejemplo.

Descargar ZIP

Qué incluye

Cada clase lleva en la cabecera para qué sirve, los requisitos previos y un ejemplo que se puede copiar.

Paquete ABAP Cloud solo APIs liberadas

ZCL_ABK_LOGApplication log con CL_BALI en tres líneas, asociado al job si se ejecuta en fondo
ZCL_ABK_MAILEmail con interfaz encadenada, HTML, CC, BCC y adjuntos
ZCL_ABK_HTTPCliente REST por URL, destino de BTP o communication arrangement
ZCL_ABK_JSONJSON con /UI2/CL_JSON con las opciones correctas y lectura por ruta
ZCL_ABK_XLSXLeer y escribir Excel (XLSX) con XCO
ZCL_ABK_APPJOB_TEMPLATEPlantilla de Application Job con parámetros y log
ZCX_ABK_RAP_MESSAGEMensajes para REPORTED con severidad
ZCL_ABK_CONTEXTFecha, hora, usuario y zona horaria sin campos sy-
ZCL_ABK_NUMBER_RANGERangos de números en lugar de MAX + 1
ZCL_ABK_STRINGEmail, ALPHA, acentos, CSV con comillas, días laborables. 11 tests unitarios
ZCL_ABK_ITABPatrones de GROUP BY, REDUCE y rangos, ejecutable con F9
ZCL_ABK_SQL_TEST_DEMOPlantilla de tests con dobles de tabla y de vista CDS
Plantilla RAP9 ficheros de un BO gestionado con draft

Paquete ABAP clásico ECC 6.0 (7.40+) y S/4HANA

ZCL_ABK_SALVALV en una llamada: funciones, textos, totales, hotspot, variantes
ZCL_ABK_BAPIBAPIRET2: COMMIT AND WAIT solo si no hay errores, si no ROLLBACK
ZCL_ABK_FILECSV del PC y del servidor, a tabla interna y de vuelta
ZCL_ABK_EXCEL_UPLOADSubir un XLSX del PC a una tabla interna sin Excel instalado
ZCL_ABK_LONGTEXTTextos largos (READ_TEXT / SAVE_TEXT) como string
ZCL_ABK_JOBLanzar un report Z en fondo con variante o parámetros
ZCL_ABK_BALSLG1 con textos, mensajes, BAPIRET2 y excepciones encadenadas
ZABK_R_CARGA_CSVReport de ejemplo que combina todo: fichero, validación, BAPI, log y ALV
Todo el código pasa CleanCore Check sin errores ni avisos y está escrito sin FORM, sin cabeceras de tabla y sin SELECT dentro de bucles.
El código no se ha activado todavía en un sistema SAP. Si tu versión pide algún ajuste (un nombre de parámetro, un tipo), suele ser cosa de minutos. Pruébalo en desarrollo antes de transportarlo.

Ejemplo: log de aplicación en ABAP Cloud

Sin la clase, guardar un log con CL_BALI_LOG son unas quince líneas con tres clases distintas y un TRY por cada mensaje. Con la clase:

DATA(lo_log) = zcl_abk_log=>create( iv_object      = 'ZABK_LOG'
                                    iv_subobject   = 'IMPORT'
                                    iv_external_id = |Fichero { lv_name }| ).

lo_log->info( |Leídas { lines( lt_rows ) } filas| ).

LOOP AT lt_rows INTO DATA(ls_row) WHERE supplier IS INITIAL.
  lo_log->error( |Fila { sy-tabix }: proveedor vacío| ).
ENDLOOP.

lo_log->save( ).

Ejemplo: BAPI con control de errores

El error más habitual con BAPIs es hacer COMMIT aunque RETURN traiga un error. La clase decide por ti:

CALL FUNCTION 'BAPI_PO_CHANGE'
  EXPORTING purchaseorder = lv_ebeln
  TABLES    return        = lt_return
            poitem        = lt_item
            poitemx       = lt_itemx.

DATA(lo_result) = zcl_abk_bapi=>finish( lt_return ).

IF lo_result->is_ok( ).
  MESSAGE s001(zmm) WITH lv_ebeln.
ELSE.
  lo_log->add_bapiret2( lo_result->errors( ) ).
ENDIF.

Instalación con abapGit

  1. Crea un paquete local o transportable (por ejemplo ZABK_CLOUD).
  2. En abapGit (ADT en ABAP Cloud, report ZABAPGIT on-premise) elige New Offline, asigna el paquete e importa el ZIP.
  3. Pulsa Pull y activa los objetos.
  4. Crea los requisitos de las clases que vayas a usar (objeto de log, clase de mensajes, rango de números...). Están en la cabecera de cada clase.

Si prefieres no usar abapGit, abre el ZIP y copia cada fichero .abap en una clase con el mismo nombre.