06-18-2008 8:54 PM
Hello everyone,
I have an idoc of type Invoic02 and the segment E1EDP26 with qualifier 003 (net value) is missing if the net value is 0,00u20AC. If the value is greater than zero, the segment is perfectly there.
Does anyone have an idea how I can achieve that this segment is always there independent of the value?
Thank you!
Best regards
Andreas
06-18-2008 9:01 PM
hi
try this out
data: z_field type i.
IF NOT E1EDP26-QUALF IS INITIAL.
PERFORM STRING_LENGTH USING E1EDP26-QUALF
Z_FIELD.
FORM STRING_LENGTH USING STRING
CHANGING LENGTH.
IF STRING CP '*# '. ENDIF.
LENGTH = SY-FDPOS.
ENDFORM.
Reagrds
Edited by: Chaitanya V Kumar Naru on Jun 18, 2008 10:07 PM
Edited by: Chaitanya V Kumar Naru on Jun 18, 2008 10:08 PM
06-19-2008 7:08 AM
Sorry, but I do not really know where to put this code neither what it should do.
05-10-2012 4:27 PM
I'm replying to this old post since it comes up in Search. We had the same issue - E1EDP26 with QUALF 003 would not be in the IDoc, but it was required by the receiving system.
Here is a reply I received from SAP:
This is the standard system behaviour and this is hard coded in the
system.
Please see the following from note 635337 (Conditions are missing in theIDoc):
..
o The value of the condition must be <> 0.
..
You may change the code in LVEDFF0F by removing the IF and ENDIF
statements and then E1EDP26 segment 003 will always be output
but this would be a modification and would be subject to the conditions
from note 170183.
*- Absoluter Nettowert
IF NOT tvbdpr-netwr IS INITIAL. <<<
CLEAR int_edidd.
CLEAR e1edp26.
int_edidd-segnam = 'E1EDP26'.
e1edp26-qualf = '003'.
PERFORM get_e1edp26_tcurx_currency USING tvbdpr-netwr.
MOVE tvbdpr-netwr TO h_newr_btrg.
MOVE e1edp26 TO int_edidd-sdata.
APPEND int_edidd.
PERFORM customer_function.
ENDIF. <<<
Since we already had a user exit EXIT_SAPLVEDF_002 implemented for the IDoc extension, instead we resolved it by adding the following code (fragment) there:
DATA ls_e1edp26 TYPE e1edp26. "document item pricing data
DATA lv_kwert TYPE kwert.
CASE int_edidd-segnam.
WHEN 'E1EDP26'.
MOVE int_edidd-sdata TO ls_e1edp26.
IF ls_e1edp26-qualf = '001'.
IF xtvbdpr-netwr = 0.
CLEAR: ls_e1edp26, lv_kwert.
ls_e1edp26-qualf = '003'.
ls_e1edp26-betrg = lv_kwert. " so that decimals/format are the same
SHIFT ls_e1edp26-betrg LEFT DELETING LEADING space.
MOVE ls_e1edp26 TO int_edidd-sdata.
APPEND int_edidd.
ENDIF.
ENDIF. " ls_e1edp26-qualf = '001'
ENDCASE.