Code: Alles auswählen.
DATA: BEGIN OF itab_dd03l OCCURS 2000,
va_itab_dd03l TYPE dd03l,
wert(70) TYPE c,
END OF itab_dd03l.
...
LOOP AT zitab_dd03l.
READ TABLE itab_ztbtco WITH KEY colsname = zitab_dd03l-fieldname.
IF itab_ztbtco-colsselect = ''.
itab_dd03l-wert = 'NULL'.
itab_dd03l-va_itab_dd03l-fieldname = zitab_dd03l-fieldname.
MODIFY itab_dd03l INDEX idx.
IF sy-subrc <> 0.
WRITE 'Fehler bei Modify'.
EXIT.
ENDIF.
idx = idx + 1.
ENDIF.
ENDLOOP.
Code: Alles auswählen.
FIELD-SYMBOLS <ft> TYPE STANDARD TABLE." of itab_dd03l with header line .
LOOP AT zitab_dd03l." ASSIGNING <ft>.
READ TABLE itab_ztbtco WITH KEY colsname = zitab_dd03l-fieldname.
IF itab_ztbtco-colsselect = ''.
<ft>-wert = 'NULL'.
<ft>-va_itab_dd03l-fieldname = zitab_dd03l-fieldname.
IF sy-subrc <> 0.
WRITE 'Fehler'.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
Code: Alles auswählen.
FIELD-SYMBOLS:
<lw_dd03l> LIKE LINE OF zitab_dd03l.
Code: Alles auswählen.
TYPE-POOLS:
abap. "stellt ABAP_TRUE und ABAP_FALSE zur Verfügung
DATA:
ls_ztbtco LIKE LINE OF lt_ztbtco.
FIELD-SYMBOLS:
<lw_dd03l> LIKE LINE OF lt_dd03l,
<lw_tbtco> LIKE LINE OF lt_tbtco,
<lw_ztbtco_cust> LIKE LINE OF lt_ztbtco_cust,
<lv_field> TYPE ANY.
LOOP AT lt_tbtco ASSIGNING <lw_tbtco>.
* keine WHERE-Klausel
LOOP AT lt_dd03l ASSINGING <lw_dd03l>.
* Feldnamen merken
ls_zbtbco-fieldname = <lw_tbtco_cust>-fieldname.
* benanntes Feld der Struktur <LW_TBTCO> finden und per Feldsymbol addressieren
ASSING COMPONENT <lw_dd03l>-fieldname OF STRUCTURE <lw_tbtco>
TO <lv_field>.
IF sy-subrc EQ 0.
READ TABLE lt_ztbtco_cust ASSINGING <lw_ztbtco_cust>
WITH KEY
colname = <lw_dd03l>-fieldname.
IF sy-subrc EQ 0.
* Soll Spalte selektiert werden
IF <lw_ztbtco_cust>-colselect EQ abap_true.
ls_ztbtco-wert = <lv_field>.
ELSE.
* soll nicht selektiert werden
ls_ztbtco-wert = 'NULL'.
ENDIF.
ELSE.
* nicht in ZTBTCO_CUST
ls_ztbtco-wert = 'NULL'.
ENDIF.
ENDIF.
ELSE.
* Spalte nicht gefunden
ls_ztbtco-wert = 'NULL'.
ENDIF.
* Eintrag in Tabelle LT_ZTBTCO (am Ende) einfügen
INSERT ls_ztbtco INTO TABLE lt_ztbtco.
ENDLOOP.
ENDLOOP.
Code: Alles auswählen.
DATA vorhanden(1) TYPE c VALUE ''.
LOOP AT itab_dd03l.
vorhanden = ''.
idx = sy-tabix.
LOOP AT itab_ztbtco_cust into va_itab_ztbtco_cust.
IF itab_dd03l-va_itab_dd03l-fieldname = va_itab_ztbtco_cust-colsname.
vorhanden = 'X'.
EXIT.
ENDIF.
ENDLOOP.
IF vorhanden = ''.
itab_dd03l-wert = 'NULL'.
MODIFY itab_dd03l INDEX idx.
IF sy-subrc <> 0.
WRITE 'Fehler'.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
Code: Alles auswählen.
LOOP AT itab_tbtco INTO va_itab_tbtco.
LOOP AT itab_dd03l.
IF itab_dd03l-wert <> 'NULL'.
itab_dd03l-wert = va_itab_tbtco- SPALTE.
ENDIF.
ENDLOOP.
ENDLOOP.
och, ich hab hier eigentlich genug zu tun...ABAPSunny hat geschrieben:Nächstes Problem, ihr braucht ja Beschäftigung
Schau Dir mal in meinem Beispiel den Befehl ASSIGN COMPONENT an...ABAPSunny hat geschrieben:In itab_dd03 gibt es 5 Werte die nicht 'NULL' sind.lCode: Alles auswählen.
LOOP AT itab_tbtco INTO va_itab_tbtco. LOOP AT itab_dd03l. IF itab_dd03l-wert <> 'NULL'. itab_dd03l-wert = va_itab_tbtco- SPALTE. ENDIF. ENDLOOP. ENDLOOP.
wie ersetze ich "SPALTE"?