Acum este Mie, 22-Mai-2024 03:08

Ora este UTC + 2 [ DST ]




Scrie un subiect nou Răspunde la subiect  [ 7 mesaje ] 
Autor Mesaj
MesajScris: Lun, 17-Noi-2003 10:30 
Neconectat

Membru din: Lun, 20-Oct-2003 08:41
Mesaje: 84
Locaţie: Bucuresti
Buna ziua tuturor,

O problema mai degraba teoretica (adica nu stiu daca o sa am si ocazia sa o pun in practica, cu toate astea sugestiile sunt mai mult decat binevenite): cum pot defini si folosi o tabela interna la run-time?
Din cate am citit, ar fi doua sau trei posibilitati:
- folosind CREATE DATA (o variabila referinta careia i se precizeaza dinamic tipul si care prin de-referentiere primeste dinamic si continut);
- scriind cod sursa (compus dupa dorinta) pentru un program secundar in care descriu structura tabelei asa cum o doresc si apoi executand acest program secundar (or functii definite in el) din cadrul programului generator (GENERATE SUBROUTINE POOL ..., PERFORM ... IN PROGRAM ... );
Nu mai imi amintesc a treia posibilitate :) .
A facut cineva vreodata ceva asemanator?
Sa descriu un pic si contextul in care as avea nevoie sa definesc dinamic structura: un FUNCTION MODULE care citeste binar un fisier .dbf si interpreteaza (conform specificatiilor formatului .dbf, publice) antetul si continutul acestuia, generand o tabela interna cu aceeasi structura ca si tabela .dbf si acelasi continut de asemeni. Aceasta tabela trebuie apoi returnata din modulul functie. (SAP nu poate face UPLOAD din un fisier .dbf, dar acest lucru mi-ar fi cat se poate de util)
E o complicare inutila... :). Cu toate astea, merita examinata.
Pe de alta parte...as putea cel mai simplu sa liniarizez (intr-un mod oarecare) tabela obtinuta din .dbf (ca fiind de ex. o tabela cu doar un camp, in care primele n linii reprezinta numele campurilor, iar apoi urmeaza valorile lor, in cicluri de cate n linii, unde n este nr. campurilor din o linie a .dbf-ului sursa). In felul asta as scapa de descrierea structurii, si de multe alte batai de cap.

Mai am o problema: ce user-exit as putea folosi pentru a adauga niste extra-validari la salvarea unui document contabil? (vezi aici programul SAPMF05A)?

_________________
Bogdan CIOC


Sus
 Profil  
Răspuns cu citat  
MesajScris: Mar, 18-Noi-2003 11:22 
Neconectat
Site Admin

Membru din: Lun, 19-Mai-2003 12:03
Mesaje: 324
Locaţie: Bucuresti
Mi se pare destul de dificil sa folosesti cod generat intr-o function module. Ma gandesc in special la problemele ce ar apare la acces concurent.

A doua problema este ca la o function module structura tabelei interne returnate va fi cea din programul apelant, asadar nu prea ti-ar ajuta daca ai defini o tabela interna cu structura proprie...

Parerea mea este ca ai doua posibilitati:
    * folosesti o structura flat
    sau
    * programul apelant trimite o tabela cu o structura compatibila cu coloanele din DBF (ma gandesc aici la un mecanism similar cu cel din functia UPLOAD)


Sus
 Profil  
Răspuns cu citat  
MesajScris: Mar, 18-Noi-2003 11:43 
Neconectat

Membru din: Lun, 20-Oct-2003 08:41
Mesaje: 84
Locaţie: Bucuresti
Milioane de multumiri pentru raspuns.
E un prilej de a observa ca mi-am pus gresit problema.
Nu e nevoie de structura tabelei, aceasta se poate suprapune de exemplu peste o structura de un camp C de lungime maaaaare, la momentul executiei.
SI, pe de alta parte, raspunsul tau mi-a dat ideea sa examinez codul functiei UPLOAD, ceea ce (stupid me) nu imi trecuse prin cap.

Cu respect,
Bogdan Cioc

_________________
Bogdan CIOC


Sus
 Profil  
Răspuns cu citat  
 Subiectul mesajului:
MesajScris: Mar, 02-Dec-2003 18:15 
Neconectat

Membru din: Mar, 02-Dec-2003 16:26
Mesaje: 84
Locaţie: Romania
Poate te ajuta cu ceva exemplul urmätor:

=====================================
REPORT zmaschl_create_data_dynamic .
* Subject : Dynamic structure
=====================================
TYPE-POOLS: slis.
DATA: it_fcat TYPE slis_t_fieldcat_alv,
is_fcat LIKE LINE OF it_fcat.
DATA: it_fieldcat TYPE lvc_t_fcat,
is_fieldcat LIKE LINE OF it_fieldcat.
DATA: new_table TYPE REF TO data.
DATA: new_line TYPE REF TO data.
FIELD-SYMBOLS: <l_table> TYPE ANY TABLE,
<l_line> TYPE ANY,
<l_field> TYPE ANY.
* Build fieldcat
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SYST'
CHANGING
ct_fieldcat = it_fcat[].

LOOP AT it_fcat INTO is_fcat WHERE NOT reptext_ddic IS initial.
MOVE-CORRESPONDING is_fcat TO is_fieldcat.
is_fieldcat-fieldname = is_fcat-fieldname.
is_fieldcat-ref_field = is_fcat-fieldname.
is_fieldcat-ref_table = is_fcat-ref_tabname.
APPEND is_fieldcat TO it_fieldcat.
ENDLOOP.

* Create a new Table
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcat
IMPORTING
ep_table = new_table.

* Create a new Line with the same structure of the table.
ASSIGN new_table->* TO <l_table>.
CREATE DATA new_line LIKE LINE OF <l_table>.
ASSIGN new_line->* TO <l_line>.

* Test it...
DO 30 TIMES.
ASSIGN COMPONENT 'SUBRC' OF STRUCTURE <l_line> TO <l_field>.
<l_field> = sy-index.
INSERT <l_line> INTO TABLE <l_table>.
ENDDO.
LOOP AT <l_table> ASSIGNING <l_line>.
ASSIGN COMPONENT 'SUBRC' OF STRUCTURE <l_line> TO <l_field>.
WRITE <l_field>.
ENDLOOP.


Sus
 Profil  
Răspuns cu citat  
 Subiectul mesajului:
MesajScris: Joi, 04-Dec-2003 09:47 
Neconectat

Membru din: Lun, 20-Oct-2003 08:41
Mesaje: 84
Locaţie: Bucuresti
Da, multumesc Cristin.
Daca timpul imi va permite, e posibil sa
exersez cat de curand crearea dinamica a unei structuri.

_________________
Bogdan CIOC


Sus
 Profil  
Răspuns cu citat  
MesajScris: Lun, 07-Feb-2005 18:24 
Neconectat

Membru din: Lun, 07-Feb-2005 18:13
Mesaje: 1
data: tab_name(30),
it_table type ref to data,
wa_table type ref to data.
field-symbols: <tc> type table,
<wa> type any.


tab_name = 'numele tabelei'.


CREATE DATA it_table TYPE TABLE OF (tab_name).
ASSIGN it_table->* TO <tc>.
CREATE DATA wa_table TYPE (tab_name).
ASSIGN wa_table->* TO <wa>.

select * from (tab_name) into corresponding fields of table <tc>.

loop at <tc> into <wa>.
* codul tau
endloop.

_________________
Gabriel Constantin Manaila
www.abapconsultant.ro


Sus
 Profil  
Răspuns cu citat  
 Subiectul mesajului:
MesajScris: Mie, 10-Ian-2007 11:42 
Neconectat

Membru din: Mie, 12-Ian-2005 10:41
Mesaje: 22
Hi , Bogdan
Nu stiu daca problema de import fisiere DBF mai este de actualitate; eu am realizat un program care copie continutul oricarei tablele DBF intr_o tabela interna SAP definita dinamic, asa cum am precizat in mesajul meu "Browser fisiere dbf; import fisiere dbf in tabele interne " din 09.03.2006.

Cu stima ,
m.bulai


Sus
 Profil  
Răspuns cu citat  
Afişează mesajele de la anteriorul:  Sortează după  
Scrie un subiect nou Răspunde la subiect  [ 7 mesaje ] 

Ora este UTC + 2 [ DST ]


Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 11 vizitatori


Nu puteţi scrie subiecte noi în acest forum
Nu puteţi răspunde subiectelor din acest forum
Nu puteţi modifica mesajele dumneavoastră în acest forum
Nu puteţi şterge mesajele dumneavoastră în acest forum
Nu puteţi publica ataşamente în acest forum

Căutare după:
Mergi la:  
POWERED_BY
Translation/Traducere: phpBB România