Alex80 написал:
aivengo написал(а):
Может у кого assign провереный ломовой есть?
How to access to the attibuts of Class LCL_MIGO_KERNEL in Badi MB_MIGO_BADI Получить доступ к (SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL и вызывать метод line_modify передав it_goserial.
P.S. Сам не проверял.
Спасибо помогли, сделал немного по другому нашел всетаки ASSIGN
Вот код метода PBO может кому пригодится, правда много лишнего в нем), но смысл понятен.
Code:
method IF_EX_MB_MIGO_BADI~PBO_DETAIL.
TYPES: BEGIN OF ty_s_goserial,
selected TYPE xfeld,
serialno TYPE gernr,
uii TYPE uii_char72, "EHP603 IUID
subrk TYPE xfeld, "EHP604 TT 2007.12.21
END OF ty_s_goserial.
DATA: lt_goserial type TABLE OF ty_s_goserial,
ls_goserial like line of lt_goserial.
FIELD-SYMBOLS: <x_goserial> type ANY TABLE.
DATA: lo_obj TYPE REF TO object.
DATA: ld_class TYPE string,
ld_method TYPE string,
ld_method_2 TYPE string.
FIELD-SYMBOLS: <lo_kernel> TYPE ANY.
DATA: ls_goitem TYPE goitem,
ld_line TYPE sytabix,
ls_marc TYPE MARC,
ls_zsnoption TYPE ZSNOPTION,
lt_ZMM_SN_RESB TYPE TABLE OF ZMM_SN_RESB,
ls_ZMM_SN_RESB TYPE ZMM_SN_RESB.
break uwsc.
ld_class = '(SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL'.
ASSIGN (ld_class) TO <lo_kernel>.
lo_obj ?= <lo_kernel>.
ld_method = 'LINE_GET'.
ld_line = I_LINE_ID.
DO 1 TIMES.
CLEAR: ls_goitem.
CALL METHOD lo_obj->(ld_method)
EXPORTING
i_line = ld_line
i_tabix = ld_line
i_dependent_tables = abap_false
IMPORTING
es_goitem = ls_goitem.
IF ls_goitem IS NOT INITIAL.
SELECT SINGLE * FROM MARC INTO LS_MARC WHERE MATNR = ls_goitem-MATNR AND WERKS = ls_goitem-WERKS.
IF SY-SUBRC = 0.
SELECT SINGLE * FROM ZSNOPTION INTO ls_zsnoption WHERE BWART = ls_goitem-BWART AND SERNP = LS_MARC-SERNP.
IF SY-SUBRC = 0.
IF ls_zsnoption-ZTRASS = 'T'.
SELECT * FROM ZMM_SN_RESB INTO TABLE lt_ZMM_SN_RESB WHERE RSNUM = ls_goitem-RSNUM AND MATNR = ls_goitem-MATNR AND WERKS = ls_goitem-WERKS
AND LGORT = ls_goitem-LGORT AND CHARG = ls_goitem-CHARG.
DESCRIBE TABLE lt_ZMM_SN_RESB LINES SY-SUBRC.
IF SY-SUBRC > 0.
assign ('(SAPLMIGO)OREF_DETAIL->T_GOSERIAL') to <x_goserial>.
IF <x_goserial> IS ASSIGNED.
REFRESH: lt_goserial.
loop at <x_goserial> INTO ls_goserial.
INSERT ls_goserial INTO lt_goserial INDEX 1.
endloop.
DESCRIBE TABLE lt_goserial LINES SY-SUBRC.
IF SY-SUBRC = 0.
loop at lt_ZMM_SN_RESB INTO ls_ZMM_SN_RESB.
CLEAR: ls_goserial.
MOVE ls_ZMM_SN_RESB-GERNR TO ls_goserial-SERIALNO.
INSERT ls_goserial INTO lt_goserial INDEX 1.
endloop.
MOVE lt_goserial TO <x_goserial>.
ENDIF.
UNASSIGN <x_goserial>.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDDO.
endmethod.