hi,
My requirement for msg typ ORDERS to capture the WAERS from E1EDK01 , partn from segment E1EDKA1, matnr from e1edp19 002, and all the feilds of segment E1EDP05 into an internal. Moreover I want to capture value only when E1EDP05 segment is present. Then check the value against A807 and get the value for KNUMH.
My issue is that the itab is not getting populated correctly and and the select to A807, should happen only after all the segments in the IDOC are done.
CASE segment-segnam.
WHEN 'E1EDKA1'.
lw_e1edka1 = segment-sdata.
IF lw_e1edka1-parvw = 'ZU'.
mf_partn = lw_e1edka1-partn.
ENDIF.
WHEN 'E1EDP01'.
lw_e1edp01 = segment-sdata.
MOVE lw_e1edp01-posex TO lw_e1edp05_data-posex.
APPEND lw_e1edp05_data TO me->mt_e1edp05_data.
WHEN 'E1EDP05'.
lw_e1edp05 = segment-sdata.
MOVE lw_e1edp05-kotxt TO lw_e1edp05_data-kotxt.
MOVE lw_e1edp05-kobtr TO lw_e1edp05_data-kobtr.
MOVE lw_e1edp05-menge TO lw_e1edp05_data-menge.
MOVE lw_e1edp05-koein TO lw_e1edp05_data-koein.
* APPEND lw_e1edp05_data TO mt_e1edp05_data .
APPEND lw_e1edp05_data TO me->mt_e1edp05_data.
WHEN 'E1EDP19'.
lw_e1edp19 = segment-sdata.
IF lw_e1edp19-qualf = '002'.
MOVE lw_e1edp19-idtnr TO lw_e1edp05_data-matnr.
APPEND lw_e1edp05_data TO me->mt_e1edp05_data.
ENDIF.
* APPEND lw_e1edp05_data TO mt_e1edp05_data .
ENDCASE.
IF NOT mt_e1edp05_data[] IS INITIAL.
SELECT * FROM a807 INTO TABLE lt_a807
FOR ALL ENTRIES IN mt_e1edp05_data
WHERE kappl = 'V'
AND ( kschl = 'ZVA0' OR kschl = 'ZVAR' )
AND zzfunloc_htp = mf_partn
AND matnr = mt_e1edp05_data-matnr
AND varcond = mt_e1edp05_data-kotxt
AND datbi GE sy-datum
AND datab LE sy-datum.
IF sy-subrc = 0.
IF NOT lt_a807[] IS INITIAL.
SELECT knumh FROM konp INTO TABLE lt_knumh
FOR ALL ENTRIES IN lt_a807
WHERE knumh = lt_a807-knumh.
IF sy-subrc = 0.
EXPORT (mt_e1edp05_data) TO MEMORY ID 'ORDCONTYPE'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.