• Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram

S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram
Technical Articles

ABAP Restful Application Programming Model (RAP), ABAP RAP – Acciones de fábrica

By s4pcademy 


Hola,

En esta publicación de blog para principiantes, veremos cómo podemos crear acciones de fábrica en el modelo de programación de aplicaciones ABAP Restful.

Árbitro: https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abenbdl_action_nonfactory.htm

NOTA:

Estamos usando la misma base de código de aplicación que hemos usado para la demostración de objetos grandes (LOB) o el blog de carga de archivos. Consulte la siguiente URL:

https://blogs.sap.com/2023/02/13/abap-restful-application-programming-model-rap-abap-rap-file-upload-large-objects-lob/

Antes de comenzar con Factory Actions, comprendamos qué son las acciones en ABAP RAP:

Comportamiento:

Una acción puede ser una operación personalizada que se utiliza para realizar cambios en los datos de la instancia de BO. Las acciones RAP son operaciones no estándar que se utilizan para modificar la instancia de la entidad.

La acción se define en la definición de comportamiento y debe implementarse en la lógica personalizada debe implementarse en la clase de implementación de comportamiento.

Las acciones se pueden clasificar en dos tipos principales:

Acciones no de fábrica:

Para usar acciones que no sean de fábrica, la lógica personalizada debe implementarse y usarse para cambia el estado de la instancia.

Acción de fábrica:

Las acciones de fábrica se utilizan para crear instancias de entidad RAP BO.

    1. Acciones vinculadas a instancias: una acción de fábrica vinculada a instancias que se utiliza para copiar una o más instancias de BO y crea nuevas instancias basadas en los datos copiados.
    2. Acciones estáticas: las acciones de fábrica estáticas se pueden usar para crear instancias con valores predeterminados.
    3. Factory Actions no tiene ningún parámetro de retorno.

Agregar acción de fábrica a la definición de comportamiento

managed implementation in class zbp_student_hdr_tab_i unique;
strict ( 1 ); with draft;
define behavior for zstudent_hdr_tab_I alias Student
persistent table zstudent_hdr_tab
draft table zstudent_h_d_tab
lock master
total etag Locallastchangedat
authorization master ( global )
etag master Lastchangedat
{
  create;
  update;
  delete;
  association _Attachments { create; with draft; }
  field ( numbering : managed, readonly ) Id;
  draft action Edit;
  draft action Activate;
  draft action Discard;
  draft action Resume;
  draft determine action Prepare;

  //ADDING FACTORY ACTION FOR COPY
  factory action copyStudent[1];

  mapping for zstudent_hdr_tab
  {
    Id = id;
    Firstname = firstname;
    Lastname = lastname;
    Age = age;
    Course = course;
    Courseduration = courseduration;
    Dob = dob;
    Gender = gender;
    Lastchangedat = lastchangedat;
    Locallastchangedat = locallastchangedat;
    Status = status;
  }
}

define behavior for zstudent_att_tab_i alias Attachments
persistent table zstudent_att_tab
draft table zstudent_a_d_tab
lock dependent by _Student
authorization dependent by _Student
etag master LastChangedat
{
  update;
  delete;
  field ( readonly ) Id;
  association _Student { with draft; }
  mapping for zstudent_att_tab{
    AttachId    = attach_id;
    Attachment  = attachment;
    Comments    = comments;
    Filename    = filename;
    Id          = id;
    Mimetype    = mimetype;
  }
}

Crear implementación de método en la clase de implementación de comportamiento

Se crea la implementación del método.

Referir completo copiaEstudiante código de método

  1. Se creó una tabla interna de tipo Vista de interfaz para Entidad. Esta tabla interna almacenará el registro seleccionado desde la interfaz.
  2. Entidades de lectura si se selecciona Valores clave de Frontend.
  3. Agregue los valores seleccionados a la tabla interna para su uso posterior.
  4. Finalmente, use Modificar y establezca un nuevo registro en MAPPED.
CLASS lhc_Student DEFINITION INHERITING FROM cl_abap_behavior_handler.
  PRIVATE SECTION.

    METHODS get_global_authorizations FOR GLOBAL AUTHORIZATION
      IMPORTING REQUEST requested_authorizations FOR Student RESULT result.

    METHODS copyStudent FOR MODIFY
      IMPORTING keys FOR ACTION Student~copyStudent.



ENDCLASS.

CLASS lhc_Student IMPLEMENTATION.

  METHOD get_global_authorizations.
  ENDMETHOD.


  METHOD copyStudent.

    DATA: lt_student TYPE TABLE FOR CREATE zstudent_hdr_tab_I.

    " Reading selected data from frontend

    READ ENTITIES OF zstudent_hdr_tab_I IN LOCAL MODE
    ENTITY Student
    ALL FIELDS WITH CORRESPONDING #( keys )
    RESULT DATA(students)
    FAILED failed.

    LOOP AT students ASSIGNING FIELD-SYMBOL(<lfs_students>).

      APPEND VALUE #( %cid = keys[ KEY entity %key = <lfs_students>-%key ]-%cid
                      %is_draft = keys[ KEY entity %key = <lfs_students>-%key ]-%param-%is_draft
                      %data = CORRESPONDING #( <lfs_students> EXCEPT id )

       )  TO lt_student ASSIGNING FIELD-SYMBOL(<lfs_newStudent>).

    ENDLOOP.

    "Create BO Instance by COpy

    MODIFY ENTITIES OF zstudent_hdr_tab_I IN LOCAL MODE
    ENTITY Student
    CREATE FIELDS ( Firstname Lastname Age Course Courseduration Status Gender Dob )
    WITH lt_student
    MAPPED DATA(mapped_create).

    mapped-student = mapped_create-student.

  ENDMETHOD.

ENDCLASS.

Agregar botón Copiar a la aplicación de informe de lista Fiori

Todo listo…

Validación de cambios:

Vamos a validar la acción de copia de la aplicación

El botón Copiar estudiante está disponible, consulte la captura de pantalla a continuación.

Seleccione un registro para copiar y haga clic en el botón Copiar estudiante.

Dado que estamos utilizando la capacidad Draft en esta aplicación y hemos mencionado %is_borrador y establecer su valor dinámicamente (00 o 01)

Referirse %is_borrador línea en el código de abajo…

APPEND VALUE #( %cid = keys[ KEY entity %key = <lfs_students>-%key ]-%cid
                      %is_draft = keys[ KEY entity %key = <lfs_students>-%key ]-%param-%is_draft
                      %data = CORRESPONDING #( <lfs_students> EXCEPT id )

       )  TO lt_student ASSIGNING FIELD-SYMBOL(<lfs_newStudent>).

Cuando el usuario haga clic en el botón Copiar estudiante, se creará un nuevo registro en modo borrador (modo de edición), O se creará una nueva entrada de borrador. Los controles estarán abiertos para editar los valores en la página de objetos.

Cuando la aplicación no utiliza la funcionalidad de borrador, el registro copiado se guardará directamente en la tabla persistente, el registro no irá a la tabla de borrador.

Consulte el código a continuación, comentó %is_draft

APPEND VALUE #( %cid = keys[ KEY entity %key = <lfs_students>-%key ]-%cid
                      "%is_draft = keys[ KEY entity %key = <lfs_students>-%key ]-%param-%is_draft
                      %data = CORRESPONDING #( <lfs_students> EXCEPT id )

       )  TO lt_student ASSIGNING FIELD-SYMBOL(<lfs_newStudent>).

La salida se ve a continuación:

Vuelva a la página de lista y el nuevo registro copiado está disponible.

Anterior

Gracias-

Abhishek



Source link


ABAPaccionesApplicationfábricaModelProgrammingRAPRESTful

Artículos relacionados


Technical Articles
Explorando el poder de la selección dinámica, la pantalla dinámica y los símbolos de campo dinámico (ASIGNAR COMPONENTE) en SAP ABAP.
Technical Articles
Creación de servicios de proveedores de usuarios en Business Application Studio: paso a paso
Technical Articles
Modelo de programación de aplicaciones tranquilas ABAP – #CHANGE_SET

Deja tu comentario Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

Si su negocio está preparado para un crecimiento de siguiente nivel, debe estar preparado para cualquier cosa
Previo
Por qué importan las habilidades de SAP | Blogs de SAP
Siguiente

Madrid

Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010

México

Paseo de la Reforma 26
Colonia Juárez,  Cuauhtémoc
Ciudad de México 06600

Costa Rica

Real Cariari
Autopista General Cañas, 
San José, SJ 40104

Perú

Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073

Twitter Linkedin Instagram
Copyright 2022 | All Right Reserved.
Cookies Para que este sitio funcione adecuadamente, a veces instalamos en los dispositivos de los usuarios pequeños ficheros de datos, conocidos como cookies. La mayoría de los grandes sitios web también lo hacen.
Aceptar
Cambiar ajustes
Configuración de Cookie Box
Configuración de Cookie Box

Ajustes de privacidad

Decida qué cookies quiere permitir. Puede cambiar estos ajustes en cualquier momento. Sin embargo, esto puede hacer que algunas funciones dejen de estar disponibles. Para obtener información sobre eliminar las cookies, por favor consulte la función de ayuda de su navegador. Aprenda más sobre las cookies que usamos.

Con el deslizador, puede habilitar o deshabilitar los diferentes tipos de cookies:

  • Bloquear todas
  • Essentials
  • Funcionalidad
  • Análisis
  • Publicidad

Este sitio web hará:

Este sitio web no:

  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
  • Recuerde sus detalles de inicio de sesión
  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
Guardar y cerrar