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.
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.
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_LOG | Application log con CL_BALI en tres líneas, asociado al job si se ejecuta en fondo |
ZCL_ABK_MAIL | Email con interfaz encadenada, HTML, CC, BCC y adjuntos |
ZCL_ABK_HTTP | Cliente REST por URL, destino de BTP o communication arrangement |
ZCL_ABK_JSON | JSON con /UI2/CL_JSON con las opciones correctas y lectura por ruta |
ZCL_ABK_XLSX | Leer y escribir Excel (XLSX) con XCO |
ZCL_ABK_APPJOB_TEMPLATE | Plantilla de Application Job con parámetros y log |
ZCX_ABK_RAP_MESSAGE | Mensajes para REPORTED con severidad |
ZCL_ABK_CONTEXT | Fecha, hora, usuario y zona horaria sin campos sy- |
ZCL_ABK_NUMBER_RANGE | Rangos de números en lugar de MAX + 1 |
ZCL_ABK_STRING | Email, ALPHA, acentos, CSV con comillas, días laborables. 11 tests unitarios |
ZCL_ABK_ITAB | Patrones de GROUP BY, REDUCE y rangos, ejecutable con F9 |
ZCL_ABK_SQL_TEST_DEMO | Plantilla de tests con dobles de tabla y de vista CDS |
| Plantilla RAP | 9 ficheros de un BO gestionado con draft |
Paquete ABAP clásico ECC 6.0 (7.40+) y S/4HANA
ZCL_ABK_SALV | ALV en una llamada: funciones, textos, totales, hotspot, variantes |
ZCL_ABK_BAPI | BAPIRET2: COMMIT AND WAIT solo si no hay errores, si no ROLLBACK |
ZCL_ABK_FILE | CSV del PC y del servidor, a tabla interna y de vuelta |
ZCL_ABK_EXCEL_UPLOAD | Subir un XLSX del PC a una tabla interna sin Excel instalado |
ZCL_ABK_LONGTEXT | Textos largos (READ_TEXT / SAVE_TEXT) como string |
ZCL_ABK_JOB | Lanzar un report Z en fondo con variante o parámetros |
ZCL_ABK_BAL | SLG1 con textos, mensajes, BAPIRET2 y excepciones encadenadas |
ZABK_R_CARGA_CSV | Report de ejemplo que combina todo: fichero, validación, BAPI, log y ALV |
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
- Crea un paquete local o transportable (por ejemplo
ZABK_CLOUD). - En abapGit (ADT en ABAP Cloud, report
ZABAPGITon-premise) elige New Offline, asigna el paquete e importa el ZIP. - Pulsa Pull y activa los objetos.
- 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.