Code: Alles auswählen.
FORM zpdplan_get_atlf4_V01.
DATA: l_ittab TYPE REF TO data,
l_tabname TYPE tabname,
l_retfield TYPE dfies-fieldname,
l_it_returntab TYPE TABLE OF ddshretval, "Returntabelle
l_wa_returntab LIKE LINE OF l_it_returntab,
dbtab_syntax TYPE string,
dbtab_syntax1 type string value ' = ',
dbtab_syntax2 type string,
dbtab_syntax3 type string,
dbtab_syntax4 type string.
FIELD-SYMBOLS <fs> TYPE STANDARD TABLE.
*String für Select-Abfrage zusammen setzen
CONCATENATE g_wa_atlstd-dattab 'INNER JOIN' g_wa_atlstd-dattab2 'ON' into dbtab_syntax separated by space.
CONCATENATE g_wa_atlstd-dattab'~'g_wa_atlstd-wert2 into dbtab_syntax1.
CONCATENATE g_wa_atlstd-dattab2'~'g_wa_atlstd-wert2 into dbtab_syntax2.
concatenate 'WHERE' 'ZPPISTANDARD' '=' g_wa_atlstd-kb into dbtab_syntax3 separated by space.
concatenate dbtab_syntax dbtab_syntax1 '=' dbtab_syntax2 into dbtab_syntax4 separated by space.
READ TABLE g_atlstd INTO g_wa_atlstd INDEX 1.
CREATE DATA l_ittab TYPE STANDARD TABLE OF (g_wa_atlstd-dattab).
ASSIGN l_ittab->* TO <fs>. "Tabelle dem FS zuweisen
SELECT (g_wa_atlstd-wert) INTO corresponding fields of TABLE <fs> FROM (dbtab_syntax4) where ZPPIDSTANDARD = g_wertkb.
l_tabname = g_wa_atlstd-dattab.
l_retfield = g_wa_atlstd-wert.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' "bereitstellen
EXPORTING
ddic_structure = l_tabname
retfield = l_retfield
value_org = 'S'
display = 'F'
value_tab = <fs>
return_tab = l_it_returntab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE l_it_returntab INTO l_wa_returntab INDEX 1.
<pub__this_value> = l_wa_returntab-fieldval. "einsetzen
ENDFORM. "Form zpdplan_get_atlf4_V01
Wie recht Du hast, genau da lag der Hund begraben.....der Parameter "retfield" war (dynamisch) falsch gesetzt, irgendwann hab ich den Überblick mit all den dynamischen Parametern verloren, kaum das richtige Feld eingetragen tut es auchPyro hat geschrieben:.... Bei der dynamischen Programmierung kann sich schnell mal ein kleiner Fehler einschleichen, den man leicht übersieht.
Ja, klar ist es einfacher globale Daten direkt anzusprechen, aber wenn du mal ein Programm übernehmen musst, wo in Forms auf globale Daten zugegriffen wird und alles global ist und nichts übergeben wird, wirst du den Programmierer einfach hassen:PTgut hat geschrieben:Weiß auch, dass gobale Variablen nicht die beste Lösung sind, jedoch ist diese (g_wertkb) wirklich im ganzen Dokument gültig und ehrlich gesagt schien es mir so jetzt mal am einfachsten. Vor allen Dingen in der ganzen Fülle an Daten.
Code: Alles auswählen.
LOOP AT l_it_returntab INTO l_wa_returntab.
endloop.
Code: Alles auswählen.
data: l_occ TYPE sy-tabix.
LOOP AT l_it_returntab INTO l_wa_returntab.
l_occ = l_occ + 1.
CALL METHOD <pub__service>->api__set_value
EXPORTING
i_alias = 'ZPPATMZIEL'
i_occ = l_occ
i_value = l_wa_returntab-fieldval.
endloop.
Das ist ein "BUG" im PMD-Framework.Tgut hat geschrieben:Damit funktioniert es nicht. Der Loop wird zwar durchlaufen aber das Ergebnis nicht an der Oberfläche ausgegeben (felder bleiben einfach leer).
Jemand noch ne Idee?