Busqueda de un campo

Buenas amigos saperos, saben que tengo un smartforms que tiene un loop, el cual tiene un tabla interna ITEMS INTO W_ITEMS la cual la declaran del tipo en Datos Globales type ZFIES_BNKCON y en la parte de inicializacion lo usan en:

LOOP AT items INTO w_items.
  CLEAR: tam, hkont.
  tam = STRLEN( w_items-nrcta0 ).
  tam = tam - 1.
  CONCATENATE w_items-nrcta0(tam) '2' INTO hkont.
  w_hkont-sign = 'I'.
  w_hkont-option = 'BT'.
  w_hkont-low    = w_items-nrcta0.
  w_hkont-high   = hkont.
  APPEND w_hkont TO r_hkont.
ENDLOOP.

ok y tengo mi programa control:

Me mandaron a investigar un campo que proviene de la tabla items que es la que se le pasa al smartforms es decir como hago la búsqueda de dicho campo pero lo que me confunde es que usan muchas estructuras y cosas que poco veo por ejemplo:

  SELECT SINGLE * FROM t001 WHERE bukrs EQ p_bukrs.
  SELECT SINGLE * FROM zfitb_lglcstr WHERE numstrct EQ p_nmstr.
  IF sy-subrc <> 0.
    MESSAGE 'No existen Datos para el criterio de selección ingresado' TYPE 'S' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.

  key = zfitb_lglcstr-strf1.
  IMPORT struct TO it_grpcta_gral FROM DATABASE zfitb_lglcstr(st) TO wa_lglcstr ID key.

Si ven hacen un select pero no veo donde meten la data seleccionada o en la linea:
IMPORT struct TO it_grpcta_gral FROM DATABASE zfitb_lglcstr(st) TO wa_lglcstr ID key.

No entiendo nada si me podrian ay udar a interpretar la busqueda seria bueno, segun los parametros que se ingresan en mi pantalla de seleccion hay un radio button que me cargaria el form get_data_detl de mi reporte y dos check boxes p_arrst EQ ‘X’, p_prtab EQ ‘X’.

Qué son los que deben estar marcados es que cuando imprimo mi smartforms me esta trayendo algo un resultado que segun otro calculo de mi funcional da 0, y me dijo que investigara como hace la búsqueda, según lo que he entendido antes de llamar a mi smartforms en la parte de IMPORT lf_fm_name el cual lo llaman desde

CALL FUNCTION lf_fm_name
        EXPORTING
          control_parameters = ls_control_param
          output_options     = ls_composer_param
          items              = ti_bnkcon
          bukrs              = p_bukrs
          poper              = s_month-low
          gjahr              = p_gjahr
          trans              = t_transito
          MONSOC             = MONEDA

si ven hay algunos que son mis parámetros de entrada pero otros otras variables que no se como las llenan y por otra parte la única variable con la misma estructura que la tabla interna de mi smartforms es it_grpdetail INTO wa_detail que no entiendo mucho como las llenan he ahi mi problema que usan muchas estructuras y cosas que terminan enredandome.

Otra cosa y si me pueden ayudar a interpretar la parte del star-of-slection se los agradeceria que no la entendi nada :confused:

Buenas @abapero, lo primero de todo es que por favor, para hacer mas legible el post y poder ayudar de la mejor manera sería que todo el código lo metieras dentro de las etiquetas específicas para el código.
Es fácil, cuando hayas tecleado tu código en el post, lo seleccionas y le pulsas a la telca </> de la barra de herramientas. Así todo el código queda metido en una ventana.

Por otra parte te comento, que en el STAR-OF-SELECTION, de la cual tienes, dudas, lo que ocurres es que cuando no se define un INTO en un start, es porque se ha definido una sentencia TABLES a nivel global. Esta sentencia funciona igual que un DATA: type .
Como tu mismo puedes comprobar, la siguiente sentencia después de la sentencia REPORT es TABLES. En tu case se han definido tres estructuras: zfitb_lglcstr,t882g, t001. Si debugueas y consultas las estructuras después del SELECT si éste ha ido bien y ha encontrado alguna fila en la tabla, esas estructuras tendrán valores.
Además, el import debe estar asociado con un export anterior, revisa donde se hace para comprender mejor el import.

1 me gusta

Gracias por responder jejejje ya lo corregi segun como me dijiste xD

En esta parte :slightly_smiling:
IMPORT struct TO it_grpcta_gral FROM DATABASE zfitb_lglcstr(st) TO wa_lglcstr ID key.

Como se interpreta? gracias por tu recomendacion :wink:

1 me gusta

Te voy a pegar la ayuda de ese comando que creo que queda bastante claro:

Alternative 4

... DATABASE dbtab(ar) [TO wa] [CLIENT cl] {ID id}|obs_id 

Effect

If DATABASE is specified, the data cluster that was written to the database table dbtab in the area ar and under the identification specified in id using the statement EXPORT is imported. The database table dbtab must be set up in the same way as described for the EXPORT statement . For id, a flat, character-type data object is expected that contains the identification of the data cluster, and the two-digit area ar must be specified directly.

After TO, a work area wa that has the same data type as the database table dbtab can be specified. During import, the values of the database fields that are between the fields SRTF2 and CLUSTR are assigned to the components of wa with the same name.

If the database table dbtab is client-dependent, a flat, character-type field cl can be specified after the addition CLIENT. This field contains a client identification. If the addition is not specified, the current client is used.

Outside of classes, the addition TO wa can be omitted. Instead, a table work area for the database table dbtab can be declared using the statement TABLES. Then, during the import, the values of the database fields that are between the fields SRTF2 and CLUSTR are assigned to the component with the same name in the table work area dbtab. In addition, outside of classes, the specification id can be replaced by the obsolete specification obs_id.

Es decir, anteriormente a la sentencia IMPORT debe haber una sentencia EXPORT en algún sitio, debes buscarlo. Lo que hace el import es dar valor a la variable que anteriormente se ha medido en memoria con la sentencia export. Es decir, export copia en memoria un o unos valores, en una variable, una estructura o una tabla y la import lo trae de la memoria en el mismo tipo de dato.

1 me gusta

Saludos,

Nunca lo he usado de esta forma pero considero que funciona de la siguiente manera:

IMPORT struct TO it_grpcta_gral(Append a esta tabla interna)
FROM DATABASE zfitb_lglcstr(st)(Tabla o cluster de donde de buscara el registro)
TO wa_lglcstr(WorkArea donde se almacenará)
ID key (Llave de búsqueda).

Lo que estás haciendo es importar los datos desde un cluster que fueron exportados desde algún punto de otro programa.

1 me gusta

Ohh no sabia que SAP All In One y BO tenían la misma sintaxis, y hasta las mismas tablas :open_mouth:

YO también recién me entero :confused:

@romaldyminaya, @abapero Esta consulta es de SAP B1 o de SAP ECC?

No me entero, jajajajajajaja

Supongo que SAP BO se refiere a Business Objects porque eso no se parece en nada a Business One.

2 Me gusta

Algo así lo veia xD Gracias!

Saludos @Shadowdancer,

Honestamente para mí que esta consulta era de SAP ECC :slightly_smiling:.

Fue algo que estimé debido a la sintaxis del código…

1 me gusta

Creo un tag bobject para agrupar las consultas de esta naturaleza a futuro. Gracias @romaldyminaya, eres uno de los monstruos que le da calidad a este foro.

Saludos

1 me gusta

Este tema se cerró por inactividad.

Copia la URL de este debate, y abre un nuevo tema en #feedback si:

  • Si el autor del debate no marcó ninguna respuesta como solución, y tú crees tener la solución
  • Si crees tener otra solución a la que actualmente está marcada.

Si, en cambio tienes una duda parecida a la que se debatió, o la misma duda, abre un nuevo tema en la categoría que corresponda y pon que el tema se debatió oportunamente (pega el enlace a este debate), así los otros lectores pueden saber de qué hablas.

Ayúdanos a tener una comunidad organizada. Si tú abres temas, procura darles seguimiento.