Code: Alles auswählen.
* This report set the field option for MARA-MATKL *
* If the field option equal "DISPLAY" this program set the *
* field option to "OPTIONAL ENTRY".
* If the field option equal "OPTIONAL ENTRY" this program set the
* field option to "DISPLAY".
REPORT YSETMATKLA.
TABLES: T130A.
constants: K_MATKL type i value 1.
PARAMETERS: TEST.
START-OF-SELECTION.
SELECT SINGLE * FROM T130A
WHERE FLREF = 'MM02'.
CHECK SY-SUBRC EQ 0.
IF T130A-FAUSW+K_MATKL(1) = '*'.
MOVE '.' TO T130A-FAUSW+K_MATKL(1).
MESSAGE S000(FB) WITH 'Field MARA-MATKL are set to OPTIONAL ENTRY'.
ELSEIF T130A-FAUSW+K_MATKL(1) = '.'.
MOVE '*' TO T130A-FAUSW+K_MATKL(1).
MESSAGE S000(FB) WITH 'Field MARA-MATKL are set to DISPLAY'.
ENDIF.
UPDATE T130A.
BREAKRC.
COMMIT WORK AND WAIT.
END-OF-SELECTION.
Folgende Benutzer bedankten sich beim Autor Unit605 für den Beitrag:
ralf.wenzel
ralf.wenzel hat geschrieben:Ich muss dich leider enttäuschen -- das ist genau das, was ich gesucht habe
Ist das die einzige Stelle oder gibt es noch mehr Stellen, wo man die Eingabebereitschaft einstellen kann? Ich denke hier insbesondere an die MBEW-Felder, bei denen alles anders sein soll (gerade was die Abhängigkeiten angeht).
Folgende Benutzer bedankten sich beim Autor Unit605 für den Beitrag:
ralf.wenzel
wie im ersten Beispiel http://www.abapforum.com/forum/viewtopi ... 21&t=18341ralf.wenzel hat geschrieben: Ist das die einzige Stelle oder gibt es noch mehr Stellen, wo man die Eingabebereitschaft einstellen kann?
Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
ralf.wenzel
Ja - es gibt noch mehr Stellen.ralf.wenzel hat geschrieben:Ich muss dich leider enttäuschen -- das ist genau das, was ich gesucht habe
Ist das die einzige Stelle oder gibt es noch mehr Stellen, wo man die Eingabebereitschaft einstellen kann? Ich denke hier insbesondere an die MBEW-Felder, bei denen alles anders sein soll (gerade was die Abhängigkeiten angeht).
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
ralf.wenzel
Was ich daran nicht verstehe: Welches Feld ist welcher Stelle im Eigenschaften-Feld zugeordnet? Ich hab mehrere Quellen im Netz gefunden, aber irgendwie hab ich es nicht verstanden.Unit605 hat geschrieben:Table: T130A dort gibt es '.' oder '*' oder '-''?!?!? Jedes Zeichen sagt aus, ob ein Feld MUSS, KANN oder NUR DISPLAY Eigenschaft hat.
Das ist der Trick an der ganze Geschichte.ralf.wenzel hat geschrieben:Was ich daran nicht verstehe: Welches Feld ist welcher Stelle im Eigenschaften-Feld zugeordnet? Ich hab mehrere Quellen im Netz gefunden, aber irgendwie hab ich es nicht verstanden.Unit605 hat geschrieben:Table: T130A dort gibt es '.' oder '*' oder '-''?!?!? Jedes Zeichen sagt aus, ob ein Feld MUSS, KANN oder NUR DISPLAY Eigenschaft hat.
Die Qualität im SCN ist oft unterirdisch. Achte bei den Antworten auf die Namen.ralf.wenzel hat geschrieben:Zum Beispiel das hier: http://scn.sap.com/thread/3543115 Sogar als hilfreich eingestuft, aber ich seh nur böhmische Dörfer mit sieben spanischen Siegeln... oder so
Ich habe einen Kunden, bei dem Migrationen bisher mit "Einmalprogrammen" durchgeführt wurde. Funktioniert so: Der Modulverantwortliche macht eine Liste der eingabebereiten Felder und die werden hart ins Programm geschrieben. Ich weigere mich, so zu arbeiten und will gerade eine Ermittlungsroutine dafür schreiben, die das aus dem Customizing ermittelt und dabei eine möglichst hohe Treffergenauigkeit erzielt (was schwierig wird bei kundeneignen Feldern und Erweiterungen - und bei den MBEW-Feldern soll es auch ganz anders funktionieren, aber so weit bin ich noch nicht).Unit605 hat geschrieben:Vielleicht(?!?!?!?!) ist ja ein Batch Input hilfreich? Ich weiss ja nicht genau, was Du vorhast.
Code: Alles auswählen.
FORM determine_fieldstatus .
DATA: ls_t137 TYPE t137,
ls_t134 TYPE t134,
ls_t130w TYPE t130w,
ls_t130m TYPE t130m.
DATA: ls_rmmg1 TYPE rmmg1,
ls_rmmg2 TYPE rmmg2,
lt_faus TYPE TABLE OF sfauswtab,
ls_faus TYPE sfauswtab,
lt_ptab TYPE TABLE OF sptap,
ls_mpop TYPE mpop,
ls_myms TYPE myms,
lv_fsteu TYPE xfeld,
lt_steuer TYPE TABLE OF mg03steuer,
ls_steuer TYPE mg03steuer,
lt_steumm TYPE TABLE OF mg03steumm.
DATA: ls_t130f TYPE t130f,
ls_flds TYPE ts_flds,
ls_flds_vrg TYPE ts_flds,
ls_check TYPE zmm_matvw_check,
lv_fstat TYPE c,
lv_pstat TYPE pstat_d,
lv_table TYPE tabname,
lv_field TYPE fieldname,
lv_param TYPE fieldname,
lv_pos TYPE i,
lv_lin(1) TYPE n.
FIELD-SYMBOLS: <lv_val> TYPE xfeld,
<lv_tax> TYPE any.
CLEAR gv_param_change.
* Vorbereitung zur Ermittlung der Feldstatuswerte
SELECT SINGLE * FROM t130m INTO ls_t130m
WHERE tcode = 'MM01'.
SELECT SINGLE * FROM t137 INTO ls_t137
WHERE mbrsh = p_mbrsh.
SELECT SINGLE * FROM t130w INTO ls_t130w
WHERE werks = p_werks.
SELECT SINGLE * FROM t134 INTO ls_t134
WHERE mtart = p_mtart.
CALL FUNCTION 'MATERIAL_FIELD_SELECTION_COMB'
EXPORTING
industry_ref = ls_t137-flref
material_type_ref = ls_t134-flref
plant_ref = ls_t130w-flref
procurement = p_beskz
transaction_ref = ls_t130m-flref.
* Feldstatuswerte ermitteln
SELECT * FROM t130c INTO CORRESPONDING FIELDS OF TABLE lt_ptab
FOR ALL ENTRIES IN gt_flds
WHERE tbnam = gt_flds-tabnm.
LOOP AT gt_t130f INTO ls_t130f.
MOVE-CORRESPONDING ls_t130f TO ls_faus.
APPEND ls_faus TO lt_faus.
ENDLOOP.
ls_rmmg1-werks = p_werks.
ls_rmmg1-lgort = p_lgort.
* ls_rmmg1-bukrs = ???
ls_rmmg1-bwkey = p_bwkey.
* ls_rmmg1-bwtar = p_bwtar.
ls_rmmg1-vkorg = p_vkorg.
ls_rmmg1-vtweg = p_vtweg.
ls_rmmg1-lgnum = p_lgnum.
* ls_rmmg1-LGTYP = p_lgtyp.
* ls_rmmg1-MYKEY
ls_rmmg1-spras = sy-langu.
ls_rmmg1-bukrs_vko = p_bukrs.
ls_rmmg1-mbrsh = p_mbrsh.
ls_rmmg1-mtart = p_mtart.
ls_rmmg2-beskz = p_beskz.
* Hier werden die notwendigen Sichten ermittelt, bei uns über eine Tabelle (z.B. ABDL)
LOOP AT gt_chck INTO ls_check.
ASSIGN (ls_check-param) TO <lv_val>.
IF NOT <lv_val> IS INITIAL.
DO 2 TIMES.
lv_pos = sy-index - 1.
CHECK NOT ls_check-sgpar+lv_pos(1) IS INITIAL.
IF NOT lv_pstat CS ls_check-sgpar+lv_pos(1).
CONCATENATE lv_pstat ls_check-sgpar+lv_pos(1) INTO lv_pstat.
ENDIF.
ENDDO.
ENDIF.
ENDLOOP.
CALL FUNCTION 'MATERIAL_FIELD_SELECTION_NEW'
EXPORTING
aktvstatus = 'K'
it130m = ls_t130m
irmmg1 = ls_rmmg1
neuflag = abap_true
imarc_dispr = ''
imarc_pstat = lv_pstat
impop_propr = ''
TABLES
fauswtab = lt_faus
ptab = lt_ptab.
* Füllen gs_mara, gs_marc ...
PERFORM fill_global_matdata.
CALL FUNCTION 'MATERIAL_FIELD_SPECIAL_SEL_NEW'
EXPORTING
* ALT_STANDARDPR_ALLG = ' '
alt_standardprodukt = gs_marc-stdpd
flgsteuer_muss = space
imara = gs_mara
imarc = gs_marc
impop = ls_mpop
mpop_prdat_db = ls_mpop-prdat
imyms = ls_myms
imbew = gs_mbew
* IMLGT =
irmmg1 = ls_rmmg1
irmmg2 = ls_rmmg2
* IRMMW2 =
* IRMMZU =
* IRMMW3 =
* IMGEINE =
mtart_beskz = p_beskz "AW20140227
it130m = ls_t130m
neuflag = abap_true
qm_pruefdaten = gs_marc-qmatv
aktvstatus = space
* IT134_WMAKG =
* IT134_KZPRC =
it134_vprsv = ls_t134-vprsv
it134_kzvpr = ls_t134-kzvpr
* IT134_KZKFG =
* OMARA_KZKFG =
* KZRFB = ' '
* LANGTEXTBILD = ' '
* FLG_UEBERNAHME = ' '
* FLG_PRUEFDUNKEL = ' '
* KZ_KTEXT_ON_DYNP = ' '
* IT133A_PSTAT = ' '
* IT133A_RPSTA = ' '
* P_RMMW2_BTWRK = ' '
* CALL_MODE = ' '
* IV_MATFI = ' '
* IT134_KZFFF =
IMPORTING
flgsteuer_muss = lv_fsteu
* IMBEW =
TABLES
fauswtab = lt_faus
ptab = lt_ptab
* PTAB_RT =
* PTAB_FULL =
steuertab = lt_steuer
steummtab = lt_steumm
EXCEPTIONS
OTHERS = 0.
CALL FUNCTION 'STEUERTAB_IDENTIFY'
EXPORTING
* KZRFB = ' '
vkorg = ls_rmmg1-vkorg
bukrs_vkorg = ls_rmmg1-bukrs_vko
vtweg = ls_rmmg1-vtweg
TABLES
steuertab = gs_mlan-mlan
EXCEPTIONS
OTHERS = 0.
LOOP AT lt_faus INTO ls_faus.
IF ls_faus-fname = 'MLAN_STEU'.
SPLIT ls_faus-fname AT '_' INTO lv_table lv_field.
ELSE.
SPLIT ls_faus-fname AT '-' INTO lv_table lv_field.
ENDIF.
LOOP AT gt_flds INTO ls_flds
WHERE tabnm = lv_table
AND field = lv_field.
lv_fstat = ls_flds-fstat.
CLEAR ls_flds-fstat.
ASSIGN (ls_flds-param_check) TO <lv_val>.
IF <lv_val> IS INITIAL.
ls_flds-fstat = '-'.
ELSE.
IF lv_table = 'MLAN'.
lv_lin = ls_flds-param+6(1).
CLEAR ls_steuer.
READ TABLE gs_mlan-mlan INDEX lv_lin
INTO ls_steuer.
IF sy-subrc <> 0.
ls_flds-fstat = '-'.
ELSE.
ls_flds-fstat = '+'.
ENDIF.
DO 2 TIMES.
CASE sy-index.
WHEN 1.
CONCATENATE 'P_ALND' lv_lin INTO lv_param.
ASSIGN (lv_param) TO <lv_tax>.
<lv_tax> = ls_steuer-aland.
WHEN 2.
CONCATENATE 'P_TTYP' lv_lin INTO lv_param.
ASSIGN (lv_param) TO <lv_tax>.
<lv_tax> = ls_steuer-tatyp.
ENDCASE.
ENDDO.
ELSEIF ls_flds-param_vrgng IS INITIAL.
IF ls_faus-kzreq = '1'.
ls_flds-fstat = '+'.
ELSEIF ls_faus-kzout = '1'.
ls_flds-fstat = '.'.
ENDIF.
ELSE.
READ TABLE gt_flds INTO ls_flds_vrg
WITH KEY param = ls_flds-param_vrgng.
ASSIGN (ls_flds_vrg-param_check) TO <lv_val>.
IF <lv_val> IS INITIAL.
IF ls_faus-kzreq = '1'.
ls_flds-fstat = '+'.
ELSEIF ls_faus-kzout = '1'.
ls_flds-fstat = '.'.
ENDIF.
ELSE.
ls_flds-fstat = '-'.
ENDIF.
ENDIF.
ENDIF.
MODIFY gt_flds FROM ls_flds.
IF lv_fstat <> ls_flds-fstat.
gv_param_change = abap_true.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM. " DETERMINE_FIELDSTATUS