利用PO增强MB_PROCESS_PO_CUST-IF_EX_ME_PROCESS_PO_CUST~PROCESS_ITEM获取数据
DATA LV_STREET TYPE AD_STREET.
*获取弹窗操作的地址修改(优先获取弹窗的地址修改数据,弹窗修改确认后,主屏幕数据还没刷新直接从主屏幕只能获取旧数据)
ASSIGN ('(SAPLMMDA)ADDR1_COMPLETE-ADDR1_TAB') TO FIELD-SYMBOL(<FS_ADDR1_TAB>).
IF SY-SUBRC EQ 0.
TYPES: BEGIN OF SZADR_ADDR1_LINE,
NATION TYPE ADRC-NATION,
DATA TYPE ADDR1_DATA,
END OF SZADR_ADDR1_LINE.
DATA:LT_ADDR1_TAB TYPE TABLE OF SZADR_ADDR1_LINE,
LS_ADDR1_TAB TYPE SZADR_ADDR1_LINE.
DATA LS_ADDR1_DATA TYPE ADDR1_DATA.
MOVE-CORRESPONDING <FS_ADDR1_TAB> TO LT_ADDR1_TAB[].
READ TABLE LT_ADDR1_TAB INTO LS_ADDR1_TAB INDEX 1.
IF SY-SUBRC EQ 0.
MOVE-CORRESPONDING LS_ADDR1_TAB-DATA TO LS_ADDR1_DATA.
LV_STREET = LS_ADDR1_DATA-STREET.
ENDIF.
ENDIF.
IF LV_STREET IS INITIAL.
*如果弹窗未获取到地址数据就获取主屏幕地址 注:如果用户点的全部修改此处会多次进入,点否单个修改只进入对应的行
DATA: LT_DYNPFIELDS TYPE TABLE OF DYNPREAD,
LS_DYNPFIELDS TYPE DYNPREAD.
*BREAK luolin.
* LS_DYNPFIELDS-FIELDNAME = 'ADDR1_DATA-NAME1'. "名称
* APPEND LS_DYNPFIELDS TO DYNPFIELDS.CLEAR LS_DYNPFIELDS.
LS_DYNPFIELDS-FIELDNAME = 'ADDR1_DATA-STREET'. "街道/门牌号
APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS.CLEAR LS_DYNPFIELDS.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = 'SAPLSZA1' "SY-REPID
DYNUMB = '0301' "SY-DYNNR
TRANSLATE_TO_UPPER = 'X'
TABLES
DYNPFIELDS = LT_DYNPFIELDS
EXCEPTIONS
OTHERS = 9.
IF SY-SUBRC EQ 0.
READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS WITH KEY FIELDNAME = 'ADDR1_DATA-STREET'.
IF SY-SUBRC EQ 0.
LV_STREET = LS_DYNPFIELDS-FIELDVALUE. "街道/门牌号
ENDIF.
ELSE.
LV_STREET = LS_EKPO-STRAS.
ENDIF.
IF LS_EKPO-ADRNR IS NOT INITIAL .
SELECT SINGLE STREET FROM ADRC WHERE ADDRNUMBER EQ @LS_EKPO-ADRNR INTO @LS_EKPO-STRAS.
ELSEIF LS_EKPO-ADRN2 IS NOT INITIAL.
SELECT SINGLE STREET FROM ADRC WHERE ADDRNUMBER EQ @LS_EKPO-ADRN2 INTO @LS_EKPO-STRAS.
ENDIF.
ENDIF.
网友评论