Ayuda SAP

Selección de pantallas según radio button

Que tal amigos, hace algún tiempo me inicie en esta comunidad con el objetivo de poder aprender y compartir. Al inicio me fue compartido los manuales para Abap y prometí a @Shadowdancer compartir los resultados de ese aporte.

Sin mas preámbulo les comparto la lógica que aplique para conseguir que aparezcan o desaparezcan los parámetros de la pantalla según el radio button que seleccione el usuario.

Nota: ingresa a la SE38 y pega este código, compilar y has tus pruebas.

*&---------------------------------------------------------------------*
*& Report  ZRADIO_BLOCK
*&---------------------------------------------------------------------*

REPORT  ZRADIO_BLOCK.

*&---------------------------------------------------------------------*
*& PARAMETRO DE ENTRADA - PANTALLA
*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK BLG WITH FRAME TITLE A1TITLE.

SELECTION-SCREEN BEGIN OF BLOCK BL0A WITH FRAME TITLE A2TITLE.

PARAMETERS:
R1 RADIOBUTTON GROUP RAD1 USER-COMMAND CMD DEFAULT 'X',
R2 RADIOBUTTON GROUP RAD1,
R3 RADIOBUTTON GROUP RAD1.

SELECTION-SCREEN BEGIN OF BLOCK BL0B WITH FRAME.
PARAMETERS:
RP1 RADIOBUTTON GROUP RAD2 MODIF ID B6,
RP2 RADIOBUTTON GROUP RAD2 MODIF ID B6,
RP3 RADIOBUTTON GROUP RAD2 MODIF ID B6,
RP4 RADIOBUTTON GROUP RAD2 MODIF ID B6.
SELECTION-SCREEN END OF BLOCK BL0B.

SELECTION-SCREEN BEGIN OF BLOCK BL0C WITH FRAME.
PARAMETERS:
RO1 RADIOBUTTON GROUP RAD3 MODIF ID B7,
RO2 RADIOBUTTON GROUP RAD3 MODIF ID B7.
SELECTION-SCREEN END OF BLOCK BL0C.
SELECTION-SCREEN END OF BLOCK BL0A.

SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE A3TITLE.
PARAMETERS:
P_NAME1 LIKE KNA1-NAME1 ," OBLIGATORY, " NOMBRE
P_NAME2 LIKE KNA1-NAME2 ." OBLIGATORY. " APELLIDO

SELECTION-SCREEN BEGIN OF BLOCK BL2 WITH FRAME TITLE A4TITLE.
PARAMETERS:
P_STRAS LIKE KNA1-STRAS ," OBLIGATORY, " CALLE1 / DIRECCIÓN
P_CALLE2(40) TYPE C, " CALLE2 / DIRECCIÓN
P_TELF1 LIKE KNA1-TELF1, " TELEFONO
P_TELF2 LIKE KNA1-TELF1, " FAX
P_CORREO(50) TYPE C. " CORREO
SELECTION-SCREEN END OF BLOCK BL2.

SELECTION-SCREEN END OF BLOCK BL1.

SELECTION-SCREEN END OF BLOCK BLG.


INITIALIZATION.


PERFORM SELECTION_SCREEN_TEXT.

AT SELECTION-SCREEN OUTPUT.
  PERFORM OCULTARCAMPO1.


*&---------------------------------------------------------------------*
*&      Form  OCULTARCAMPO1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM OCULTARCAMPO1.
  LOOP AT SCREEN.
    IF R1 EQ 'X'.
      IF SCREEN-GROUP1 = 'B6'.
        SCREEN-ACTIVE = '1'.
      ENDIF.
    ELSE.
      IF SCREEN-GROUP1 = 'B6'.
        SCREEN-ACTIVE = '0'.
      ENDIF.
    ENDIF.
    IF R2 EQ 'X'.
      IF SCREEN-GROUP1 = 'B7'.
        SCREEN-ACTIVE = '1'.
      ENDIF.
    ELSE.
      IF SCREEN-GROUP1 = 'B7'.
        SCREEN-ACTIVE = '0'.
      ENDIF.
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.

ENDFORM.                    "OCULTARCAMPO1


*&---------------------------------------------------------------------*
*&      Form  SELECTION TEXT
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*


FORM SELECTION_SCREEN_TEXT.
  A1TITLE = 'Pantalla de creación - Cliente/Deudor'.
  A2TITLE = 'El interlocutor comercial se creara como?'.
  A3TITLE = 'Información del cliente'.
  A4TITLE = 'Dirección Calle'.
ENDFORM.                    " Selección de texto
12 Me gusta

Tremendo aporte @mpalomo, de eso se trata esta comunidad, ir sembrando maticas de conocimiento para recojer arboles de sabiduría.

Gracias por la mención.

1 me gusta

Muy bueno tu aporte @mpalomo !!! :slightly_smiling:

1 me gusta

Saludos @mpalomo
Excelente aporte.

Ahora vallamos mas allá.

Para todos tus desarrollos profesionales. Ingresar a la SE38 a la ruta:

  • Programa / Verificar / Verificación de Programas ampliadas (Seleccionar todos los Check de “Verificaciones” y Ejecutar ).
  • Programa / Verificar / Code Inspector.

Y levantar todas las observaciones que te brinda SAP para mejorar cada día las aplicaciones.

1 me gusta

Buenas noches Mauricio
Estupenda estructura de programación limpia y nada redundante.

1 me gusta

Muy útil, seguro que me hace falta mas de una vez.

1 me gusta

Me ha ayudado mucho. Solo que aún no entiendo cuál es el recorrido que hace internamente para que muestre u oculte las opciones.

Sin duda un buen aporte, gracias y me quedo con el código para futuras implementaciones. :slight_smile:

1 me gusta

Excelente mpalomo. Muy util y el codigo no es tan excesivo ( a veces SAP hace dificil lo facil o al reves, con mucho codigo detras).

1 me gusta

@mpalomo gracias al código he podido generar el programa que quería.

Muchas gracias

1 me gusta

Un poco tarde a la fiesta pero igual quería escribirte para felicitarte @mpalomo … Aun estoy en pleno aprendizaje de abap y este aporte no solo me parece una muestra de código muy limpio y bien hecho, sino que ademas es para una funcionalidad muy práctica y que puede servir para numerosos casos. No aguante 2 pedidas para irme a probarlo de inmediato jaja

Muchas gracias y saludos!!

1 me gusta