Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Text comming many times

Former Member
0 Likes
492

Hi,

I have Header text in function SD_SALESDOCUMENT_CREATE and it is comming many times based on number of line items. How can I make this come only once.

Thanks,

Neelu.



      DESCRIBE TABLE gt2_zprice LINES lv_lines.

      IF lv_lines = 1.
        LOOP AT gt4_zprice INTO gs_zprice1.
          AT NEW kunnr.
            MOVE 'Y' TO lv_flg.
          ENDAT.

          IF lv_flg EQ 'Y'.
            PERFORM headerdata.
            CLEAR lv_flg.
          ENDIF.

          PERFORM itemdata.
          APPEND gs_zprice1 TO gt3_zprice.
        ENDLOOP.
        PERFORM call_function.
        PERFORM update_pricetable.
        PERFORM errorcheckandcommit.
        PERFORM displaydata.
        CLEAR chbox.
        CLEAR lv_lines.
      ELSE.
        REFRESH gt2_zprice.
        CLEAR chbox.
        EXIT.
      ENDIF.
  ENDCASE.
*&---------------------------------------------------------------------*
*&      Form  headerdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM headerdata.
* header data
* Sales document type
  header-doc_type = gs_zprice1-auart.
  headerx-doc_type = 'X'.

* Sales organization
  header-sales_org = gs_zprice1-vkorg.
  headerx-sales_org = 'X'.

* Distribution channel
  header-distr_chan  = gs_zprice1-vtweg.
  headerx-distr_chan = 'X'.

* Division
  header-division = gs_zprice1-spart.
  headerx-division = 'X'.

  header-purch_no_c = gs_zprice1-bstkd.
  headerx-purch_no_c = 'X'.

  header-ord_reason = gs_zprice1-augru.
  headerx-ord_reason = 'X'.

*  header-ref_doc = gs_zprice1-xblnr.
*  headerx-ref_doc = 'X'.

  headerx-updateflag = 'I'.

ENDFORM.                    " headerdata


*&---------------------------------------------------------------------*
*&      Form  itemdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM itemdata.

* Partner data
* Sold to
  partner-partn_role = 'AG'.
  partner-partn_numb = gs_zprice1-kunnr.
  APPEND partner.

* ITEM DATA
  itemx-updateflag = 'I'.

* Line item number.
  item-itm_number = lv_itemno.
  itemx-itm_number = 'X'.

* Material
  item-material = gs_zprice1-matnr.
  itemx-material = 'X'.

* Plant
  item-plant    = gs_zprice1-werks.
  itemx-plant   = 'X'.

* Quantity
  item-target_qty = gs_zprice1-eohqty.
  itemx-target_qty = 'X'.
  APPEND item.
  APPEND itemx.

*Fill schedule lines
  lt_schedules_in-itm_number = lv_itemno.
  lt_schedules_in-sched_line = '0001'.
  lt_schedules_in-req_qty    = gs_zprice1-eohqty.
  APPEND lt_schedules_in.

*Fill schedule line flags
  lt_schedules_inx-itm_number  = lv_itemno.
  lt_schedules_inx-sched_line  = '0001'.
  lt_schedules_inx-updateflag  = 'I'.
  lt_schedules_inx-req_qty     = 'X'.
  APPEND lt_schedules_inx.

*Conditions
  lv_pprice = gs_zprice1-sprice - gs_zprice1-eprice.

  conditions1-itm_number  = lv_itemno.
  conditions1-cond_type   = 'ZCPP'.
  conditions1-cond_value  = lv_pprice.
  conditions1-currency    = 'USD'.
  conditions1-cond_unit   = 'EA'.
  conditions1-cond_p_unt = 1.
  APPEND conditions1.

*Texts
    order_text-itm_number  = '000000'.
    order_text-text_id = '0001'.
    order_text-langu = sy-langu.
    order_text-text_line = gs_zprice1-xblnr.
    APPEND order_text.

  lv_itemno = lv_itemno + 10.
ENDFORM.                    " itemdata


Hi,

I have Header text in function SD_SALESDOCUMENT_CREATE and it is comming many times based on number of line items. How can I make this come only once.

Thanks,

Neelu.



      DESCRIBE TABLE gt2_zprice LINES lv_lines.

      IF lv_lines = 1.
        LOOP AT gt4_zprice INTO gs_zprice1.
          AT NEW kunnr.
            MOVE 'Y' TO lv_flg.
          ENDAT.

          IF lv_flg EQ 'Y'.
            PERFORM headerdata.
            CLEAR lv_flg.
          ENDIF.

          PERFORM itemdata.
          APPEND gs_zprice1 TO gt3_zprice.
        ENDLOOP.
        PERFORM call_function.
        PERFORM update_pricetable.
        PERFORM errorcheckandcommit.
        PERFORM displaydata.
        CLEAR chbox.
        CLEAR lv_lines.
      ELSE.
        REFRESH gt2_zprice.
        CLEAR chbox.
        EXIT.
      ENDIF.
  ENDCASE.
*&---------------------------------------------------------------------*
*&      Form  headerdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM headerdata.
* header data
* Sales document type
  header-doc_type = gs_zprice1-auart.
  headerx-doc_type = 'X'.

* Sales organization
  header-sales_org = gs_zprice1-vkorg.
  headerx-sales_org = 'X'.

* Distribution channel
  header-distr_chan  = gs_zprice1-vtweg.
  headerx-distr_chan = 'X'.

* Division
  header-division = gs_zprice1-spart.
  headerx-division = 'X'.

  header-purch_no_c = gs_zprice1-bstkd.
  headerx-purch_no_c = 'X'.

  header-ord_reason = gs_zprice1-augru.
  headerx-ord_reason = 'X'.

*  header-ref_doc = gs_zprice1-xblnr.
*  headerx-ref_doc = 'X'.

  headerx-updateflag = 'I'.

ENDFORM.                    " headerdata


*&---------------------------------------------------------------------*
*&      Form  itemdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM itemdata.

* Partner data
* Sold to
  partner-partn_role = 'AG'.
  partner-partn_numb = gs_zprice1-kunnr.
  APPEND partner.

* ITEM DATA
  itemx-updateflag = 'I'.

* Line item number.
  item-itm_number = lv_itemno.
  itemx-itm_number = 'X'.

* Material
  item-material = gs_zprice1-matnr.
  itemx-material = 'X'.

* Plant
  item-plant    = gs_zprice1-werks.
  itemx-plant   = 'X'.

* Quantity
  item-target_qty = gs_zprice1-eohqty.
  itemx-target_qty = 'X'.
  APPEND item.
  APPEND itemx.

*Fill schedule lines
  lt_schedules_in-itm_number = lv_itemno.
  lt_schedules_in-sched_line = '0001'.
  lt_schedules_in-req_qty    = gs_zprice1-eohqty.
  APPEND lt_schedules_in.

*Fill schedule line flags
  lt_schedules_inx-itm_number  = lv_itemno.
  lt_schedules_inx-sched_line  = '0001'.
  lt_schedules_inx-updateflag  = 'I'.
  lt_schedules_inx-req_qty     = 'X'.
  APPEND lt_schedules_inx.

*Conditions
  lv_pprice = gs_zprice1-sprice - gs_zprice1-eprice.

  conditions1-itm_number  = lv_itemno.
  conditions1-cond_type   = 'ZCPP'.
  conditions1-cond_value  = lv_pprice.
  conditions1-currency    = 'USD'.
  conditions1-cond_unit   = 'EA'.
  conditions1-cond_p_unt = 1.
  APPEND conditions1.

*Texts
    order_text-itm_number  = '000000'.
    order_text-text_id = '0001'.
    order_text-langu = sy-langu.
    order_text-text_line = gs_zprice1-xblnr.
    APPEND order_text.

  lv_itemno = lv_itemno + 10.
ENDFORM.                    " itemdata


3 REPLIES 3
Read only

Former Member
0 Likes
466

Hi Neelu,

Can you paste your whole code.

and why you are checking this

IF lv_lines = 1.

Regards,

Atish

Read only

Former Member
0 Likes
466

Try putting Perform headerdata within AT NEW and ENDAT only instead of controlling it with flag.

Thanks,

SKJ

Read only

Former Member
0 Likes
466

I kept the texts in the same loop as header data.

Thanks.