ALV

Question:
Hello ,
I am facing problem while working on ALV report , requirement is to select multiple records from ALV list and pass them to trasaction VKM3 . which is a credit report. For making more clear , i am pasting my code also . Hope will get any clue .
Thanks in advance
Samir
REPORT ZSDIS_MASTER_SALES_ORDER_R.
* Include containing Work tables and data variables used.
INCLUDE ZSDIS_MASTER_SALES_ORDER_I.
*Initialization
INITIALIZATION.
MOVE SY-REPID TO W_REPID.
CLEAR W_VARIANT1.
W_VARIANT1-REPORT = W_REPID.
* get default variant
W_VARIANT = W_VARIANT1.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = C_A
CHANGING
CS_VARIANT = W_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
P_VARI = W_VARIANT-VARIANT.
ENDIF.
* Get the names of already existing Variant names
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
* Get variant on F4
PERFORM F4_FOR_VARIANT.
* Check thta the variant exists.
AT SELECTION-SCREEN ON P_VARI.
* check for the variant
PERFORM CHK_VARIANT.
* Checking on Block MBLOCK of Selection Screen.
AT SELECTION-SCREEN ON BLOCK MBLOCK.
W_PERCENTAGE = 5.
W_DISPLAY_TEXT = TEXT-007 .
PERFORM SET_PROGRESS USING W_PERCENTAGE W_DISPLAY_TEXT.
* Checking Authorizations for Sales Organization,
* Distribution Channel and Division.
PERFORM AUTHORITY_CHECK USING C_AUTH_OBJ.
* Checking for Partner Functions Selections is not blank and < 7.
IF NOT S_PARVW[] IS INITIAL.
SORT S_PARVW ASCENDING BY LOW.
DELETE ADJACENT DUPLICATES FROM S_PARVW.
DESCRIBE TABLE S_PARVW LINES W_LN.
IF W_LN GT 7.
MESSAGE E208(00)
WITH TEXT-001.
ENDIF.
ENDIF.
* Checking if user has entered values for Customer Number 1/2/3
* then the corresponding Partner Function 1/2/3 is required.
IF NOT S_KUNN1[] IS INITIAL AND S_PARV1[] IS INITIAL.
CONCATENATE 'Please enter Partner function '(002) C_1 INTO W_MSG.
MESSAGE E208(00) WITH W_MSG.
ENDIF.
IF NOT S_KUNN2[] IS INITIAL AND S_PARV2[] IS INITIAL.
CONCATENATE 'Please enter Partner function '(002) C_2 INTO W_MSG.
MESSAGE E208(00) WITH W_MSG.
ENDIF.
IF NOT S_KUNN3[] IS INITIAL AND S_PARV3[] IS INITIAL.
CONCATENATE 'Please enter Partner function '(002) C_3 INTO W_MSG.
MESSAGE E208(00) WITH W_MSG.
ENDIF.
* Start Selction.
START-OF-SELECTION.
IF NOT P_BLOCK IS INITIAL.
R_BLOCK-SIGN = C_I.
R_BLOCK-OPTION = C_EQ.
R_BLOCK-LOW = C_B.
APPEND R_BLOCK.
R_BLOCK-SIGN = C_I.
R_BLOCK-OPTION = C_EQ.
R_BLOCK-LOW = C_C.
APPEND R_BLOCK.
ENDIF.
* If Delivery Status is All then read the domain values from
* database and populate the range R_CSTAT for further processing.
IF NOT P_RDALL IS INITIAL.
REFRESH R_CSTAT.
SELECT DOMVALUE_L INTO R_CSTAT-LOW FROM DD07L
WHERE DOMNAME = C_STATV.
R_CSTAT-SIGN = C_I.
R_CSTAT-OPTION = C_EQ.
APPEND R_CSTAT.
ENDSELECT.
ENDIF.
IF NOT P_RDCLS IS INITIAL.
REFRESH R_CSTAT.
R_CSTAT-SIGN = C_I.
R_CSTAT-OPTION = C_EQ.
R_CSTAT-LOW = C_C.
APPEND R_CSTAT.
ENDIF.
IF NOT P_RDOPN IS INITIAL.
REFRESH R_CSTAT.
R_CSTAT-SIGN = C_E.
R_CSTAT-OPTION = C_EQ.
R_CSTAT-LOW = C_C.
APPEND R_CSTAT.
ENDIF.
* Set the Work Table Name for processing and displaying list.
W_TNAME = C_T_HDAT.
* Generate the Field Catelog with ref. to W_TNAME.
PERFORM FIELD_CATALOG_BUILD TABLES TAB_FIELDCAT.
* Get the ALV Grid Events.
PERFORM EVENTTAB_BUILD USING TAB_EVENTS.
* Retrieve the basic data required for processing list as per
* user selections on the selection screen.
PERFORM GET_BASIC_DATA.
* Display the Sales Orders List using Work Table Name -
* Whether Sales Order Header / Sales Order Items.
PERFORM DISPLAY_LIST USING W_TNAME.
* Free the memory occupied by Work Tables.
PERFORM FREE_WORK_TABLES.
END-OF-SELECTION.
*Eject
*---------------------------------------------------------------------*
* FORM AUTHORITY_CHECK *
*---------------------------------------------------------------------*
* Check whether user is authorized to run transaction VKM3 *
* ----> P_CHECK Transaction code
*---------------------------------------------------------------------*
FORM AUTHORITY_CHECK USING P_CHECK.
CASE P_CHECK.
WHEN C_VKM3.
CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
TCODE = 'VKM3'
EXCEPTIONS
OK = 1
NOT_OK = 2
OTHERS = 3.
IF SY-SUBRC <> 1.
MESSAGE S208(00)
WITH TEXT-006 .
ENDIF.
WHEN OTHERS.
IF NOT S_VKORG[] IS INITIAL.
LOOP AT S_VKORG.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD S_VKORG-LOW
ID 'ACTVT' FIELD '03'.
IF SY-SUBRC NE 0.
CONCATENATE TEXT-011
S_VKORG-LOW INTO W_MSG SEPARATED BY SPACE.
MESSAGE E208(00) WITH W_MSG.
ENDIF.
ENDLOOP.
ENDIF.
IF NOT S_VTWEG[] IS INITIAL.
LOOP AT S_VTWEG.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VTWEG' FIELD S_VTWEG-LOW
ID 'ACTVT' FIELD '03'.
IF SY-SUBRC NE 0.
CONCATENATE TEXT-011
S_VTWEG-LOW INTO W_MSG SEPARATED BY SPACE.
MESSAGE E208(00) WITH W_MSG.
ENDIF.
ENDLOOP.
ENDIF.
IF NOT S_SPART[] IS INITIAL.
LOOP AT S_SPART.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'SPART' FIELD S_SPART-LOW
ID 'ACTVT' FIELD '03'.
IF SY-SUBRC NE 0.
CONCATENATE TEXT-011
S_SPART-LOW INTO W_MSG SEPARATED BY SPACE.
MESSAGE E208(00) WITH W_MSG.
ENDIF.
ENDLOOP.
ENDIF.
ENDCASE.
ENDFORM. "AUTHORITY_CHECK
*Eject
*---------------------------------------------------------------------*
* FORM FIELD_CATALOG_BUILD *
*---------------------------------------------------------------------*
* Building Field Catelog for Header / Item List *
*---------------------------------------------------------------------*
* --> T_FIELDCAT *
*---------------------------------------------------------------------*
FORM FIELD_CATALOG_BUILD TABLES
T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
REFRESH : T_FIELDCAT, TAB_FIELDCAT.
IF W_TNAME = C_T_HDAT.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-CPROG
I_INTERNAL_TABNAME = C_T_HDAT
I_INCLNAME = C_INCLUDE
CHANGING
CT_FIELDCAT = T_FIELDCAT[].
SORT T_FIELDCAT ASCENDING BY FIELDNAME.
** Add the subtotal Functionality and change the Column Descptions
** for Several fields.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = 'KLIMK'.
IF SY-SUBRC = 0.
T_FIELDCAT-DO_SUM = C_X.
T_FIELDCAT-JUST = C_R.
T_FIELDCAT-REF_TABNAME = 'KNKK'.
T_FIELDCAT-REF_FIELDNAME = 'KLIMK'.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KLPRZ.
IF SY-SUBRC = 0.
T_FIELDCAT-DO_SUM = C_X.
T_FIELDCAT-JUST = C_R.
T_FIELDCAT-REF_TABNAME = 'VBAP'. "C_RF02L.
T_FIELDCAT-REF_FIELDNAME = 'NETWR'. "'KLPRZ'.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = 'MWSBP'.
IF SY-SUBRC = 0.
T_FIELDCAT-DO_SUM = C_X.
T_FIELDCAT-JUST = C_R.
T_FIELDCAT-REF_TABNAME = 'KOMP'.
T_FIELDCAT-REF_FIELDNAME = 'MWSBP'.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = 'NETWR'.
IF SY-SUBRC = 0.
T_FIELDCAT-DO_SUM = 'X'.
T_FIELDCAT-JUST = 'R'.
T_FIELDCAT-REF_TABNAME = 'VBAK'.
T_FIELDCAT-REF_FIELDNAME = 'NETWR'.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
** Change the headings of some of the fields.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_BEZEI.
IF SY-SUBRC = 0.
T_FIELDCAT-SELTEXT_L = C_SATY.
T_FIELDCAT-SELTEXT_M = C_SATY.
T_FIELDCAT-SELTEXT_S = C_SATY.
T_FIELDCAT-REPTEXT_DDIC = C_SATY.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_SCDES.
IF SY-SUBRC = 0.
T_FIELDCAT-SELTEXT_L = C_SCDESR.
T_FIELDCAT-SELTEXT_M = C_SCDESR.
T_FIELDCAT-SELTEXT_S = C_SCDESR.
T_FIELDCAT-REPTEXT_DDIC = 'SC Description'.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_DEL.
IF SY-SUBRC = 0.
T_FIELDCAT-NO_OUT = C_X.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_SONAM.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_SORG."
T_FIELDCAT-SELTEXT_L = C_SORG.
T_FIELDCAT-SELTEXT_M = C_SORG.
T_FIELDCAT-SELTEXT_S = C_SORG.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = W_DCNAM.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_DCHL.
T_FIELDCAT-SELTEXT_L = C_DCHL.
T_FIELDCAT-SELTEXT_M = C_DCHL.
T_FIELDCAT-SELTEXT_S = C_DCHL.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_DVNAM.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_DVN.
T_FIELDCAT-SELTEXT_L = C_DVN.
T_FIELDCAT-SELTEXT_M = C_DVN.
T_FIELDCAT-SELTEXT_S = C_DVN.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_NAME1.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_SOLD.
T_FIELDCAT-SELTEXT_L = C_SOLD.
T_FIELDCAT-SELTEXT_M = C_SOLD.
T_FIELDCAT-SELTEXT_S = C_SOLD.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN1.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST1.
T_FIELDCAT-SELTEXT_L = C_CUST1.
T_FIELDCAT-SELTEXT_M = C_CUST1.
T_FIELDCAT-SELTEXT_S = C_CUST1.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_BLDAT.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC =
T_FIELDCAT-SELTEXT_L = C_BLDATE.
T_FIELDCAT-SELTEXT_M = C_BLDATE.
T_FIELDCAT-SELTEXT_S = C_BLDATE.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM1.
IF SY-SUBRC = 0.
T_FIELDCAT-SELTEXT_L = C_CUST1NAME.
T_FIELDCAT-SELTEXT_M = C_CUST1NAME.
T_FIELDCAT-SELTEXT_S = C_CUST1NAME.
T_FIELDCAT-REPTEXT_DDIC = C_CUST1NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN2.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST2.
T_FIELDCAT-SELTEXT_L = C_CUST2.
T_FIELDCAT-SELTEXT_M = C_CUST2.
T_FIELDCAT-SELTEXT_S = C_CUST2.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM2.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST2NAME.
T_FIELDCAT-SELTEXT_L = C_CUST2NAME.
T_FIELDCAT-SELTEXT_M = C_CUST2NAME.
T_FIELDCAT-SELTEXT_S = C_CUST2NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN3.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST3.
T_FIELDCAT-SELTEXT_L = C_CUST3.
T_FIELDCAT-SELTEXT_M = C_CUST3.
T_FIELDCAT-SELTEXT_S = C_CUST3.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM3.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST3NAME.
T_FIELDCAT-SELTEXT_L = C_CUST3NAME.
T_FIELDCAT-SELTEXT_M = C_CUST3NAME.
T_FIELDCAT-SELTEXT_S = C_CUST3NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN4.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST4.
T_FIELDCAT-SELTEXT_L = C_CUST4.
T_FIELDCAT-SELTEXT_M = C_CUST4.
T_FIELDCAT-SELTEXT_S = C_CUST4.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM4.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST4NAME.
T_FIELDCAT-SELTEXT_L = C_CUST4NAME.
T_FIELDCAT-SELTEXT_M = C_CUST4NAME.
T_FIELDCAT-SELTEXT_S = C_CUST4NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN5.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST5.
T_FIELDCAT-SELTEXT_L = C_CUST5.
T_FIELDCAT-SELTEXT_M = C_CUST5.
T_FIELDCAT-SELTEXT_S = C_CUST5.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM5.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST5NAME.
T_FIELDCAT-SELTEXT_L = C_CUST5NAME.
T_FIELDCAT-SELTEXT_M = C_CUST5NAME.
T_FIELDCAT-SELTEXT_S = C_CUST5NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN6.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST6.
T_FIELDCAT-SELTEXT_L = C_CUST6.
T_FIELDCAT-SELTEXT_M = C_CUST6.
T_FIELDCAT-SELTEXT_S = C_CUST7.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM6.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST6NAME.
T_FIELDCAT-SELTEXT_L = C_CUST6NAME.
T_FIELDCAT-SELTEXT_M = C_CUST6NAME.
T_FIELDCAT-SELTEXT_S = C_CUST6NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN7.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST7.
T_FIELDCAT-SELTEXT_L = C_CUST7.
T_FIELDCAT-SELTEXT_M = C_CUST7.
T_FIELDCAT-SELTEXT_S = C_CUST7.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM7.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST7NAME.
T_FIELDCAT-SELTEXT_L = C_CUST7NAME.
T_FIELDCAT-SELTEXT_M = C_CUST7NAME.
T_FIELDCAT-SELTEXT_S = C_CUST7NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P1.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST1PT.
T_FIELDCAT-SELTEXT_L = C_CUST1PT.
T_FIELDCAT-SELTEXT_M = C_CUST1PT.
T_FIELDCAT-SELTEXT_S = C_CUST1PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P2.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST2PT.
T_FIELDCAT-SELTEXT_M = C_CUST2PT.
T_FIELDCAT-SELTEXT_S = C_CUST2PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P3.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST3PT.
T_FIELDCAT-SELTEXT_L = C_CUST3PT.
T_FIELDCAT-SELTEXT_M = C_CUST3PT.
T_FIELDCAT-SELTEXT_S = C_CUST3PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P4.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST4PT.
T_FIELDCAT-SELTEXT_L = C_CUST4PT.
T_FIELDCAT-SELTEXT_M = C_CUST4PT.
T_FIELDCAT-SELTEXT_S = C_CUST4PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P5.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST5PT.
T_FIELDCAT-SELTEXT_L = C_CUST5PT.
T_FIELDCAT-SELTEXT_M = C_CUST5PT.
T_FIELDCAT-SELTEXT_S = C_CUST5PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P6.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST6PT.
T_FIELDCAT-SELTEXT_L = C_CUST6PT.
T_FIELDCAT-SELTEXT_M = C_CUST6PT.
T_FIELDCAT-SELTEXT_S = C_CUST6PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P7.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST7PT.
T_FIELDCAT-SELTEXT_L = C_CUST7PT.
T_FIELDCAT-SELTEXT_M = C_CUST7PT.
T_FIELDCAT-SELTEXT_S = C_CUST7PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_VSBED.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_COND..
T_FIELDCAT-SELTEXT_L = C_COND.
T_FIELDCAT-SELTEXT_M = C_COND.
T_FIELDCAT-SELTEXT_S = C_COND.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_SCDES.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_SCDESR1..
T_FIELDCAT-SELTEXT_L = C_SCDESR1.
T_FIELDCAT-SELTEXT_M = C_SCDESR1.
T_FIELDCAT-SELTEXT_S = C_SCDESR1.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_ERDAT.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_ORDC.
T_FIELDCAT-SELTEXT_L = C_ORDC.
T_FIELDCAT-SELTEXT_M = C_ORDC.
T_FIELDCAT-SELTEXT_S = C_ORDC.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_VDATU.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_REQDT..
T_FIELDCAT-SELTEXT_L = C_REQDT.
T_FIELDCAT-SELTEXT_M = C_REQDT.
T_FIELDCAT-SELTEXT_S = C_REQDT.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_LIFSK.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_DELVB..
T_FIELDCAT-SELTEXT_L = C_DELVB.
T_FIELDCAT-SELTEXT_M = C_DELVB.
T_FIELDCAT-SELTEXT_S = C_DELVB.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_FAKSK.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_BILBK..
T_FIELDCAT-SELTEXT_L = C_BILBK.
T_FIELDCAT-SELTEXT_M = C_BILBK.
T_FIELDCAT-SELTEXT_S = C_BILBK.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = 'BBDES'.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_BILBLDESCR.
T_FIELDCAT-SELTEXT_L = C_BILBLDESCR.
T_FIELDCAT-SELTEXT_M = C_BILBLDESCR.
T_FIELDCAT-SELTEXT_S = C_BILBLDESCR.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KLPRZ.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CRDLMT.
T_FIELDCAT-SELTEXT_L = C_CRDLMT.
T_FIELDCAT-SELTEXT_M = C_CRDLMT.
T_FIELDCAT-SELTEXT_S = C_CRDLMT.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_ZTERM.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_PYMT.
T_FIELDCAT-SELTEXT_L = C_PYMT.
T_FIELDCAT-SELTEXT_M = C_PYMT.
T_FIELDCAT-SELTEXT_S = C_PYMT.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CMFRE.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_RLSDT.
T_FIELDCAT-SELTEXT_L = C_RLSDT.
T_FIELDCAT-SELTEXT_M = C_RLSDT.
T_FIELDCAT-SELTEXT_S = C_RLSDT.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
ELSE.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-CPROG
I_INTERNAL_TABNAME = C_T_IDAT
I_INCLNAME = C_INCLUDE
CHANGING
CT_FIELDCAT = T_FIELDCAT[].
SORT T_FIELDCAT ASCENDING BY FIELDNAME.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_NAME1 BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_FIELDCAT-SELTEXT_L = C_WERKS.
T_FIELDCAT-SELTEXT_M = C_WERKS.
T_FIELDCAT-SELTEXT_S = C_WERKS.
T_FIELDCAT-REPTEXT_DDIC = C_WERKS.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
ENDIF.
ENDFORM. "FIELD_CATALOG_BUILD
*Eject
*---------------------------------------------------------------------*
* FORM EVENTTAB_BUILD *
*---------------------------------------------------------------------*
* Getting all the events available for ALV Grid Control *
*---------------------------------------------------------------------*
* --> IT_EVENTS *
*---------------------------------------------------------------------*
FORM EVENTTAB_BUILD USING IT_EVENTS TYPE SLIS_T_EVENT.
DATA: L_EVENT TYPE SLIS_ALV_EVENT.
REFRESH: TAB_EVENTS.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = IT_EVENTS.
SORT IT_EVENTS ASCENDING BY NAME.
READ TABLE IT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_LIST
INTO L_EVENT BINARY SEARCH.
IF SY-SUBRC = 0.
MOVE C_TOP_OF_LIST TO L_EVENT-FORM.
APPEND L_EVENT TO IT_EVENTS.
ENDIF.
ENDFORM. "EVENTTAB_BUILD.
*Eject
*---------------------------------------------------------------------*
* FORM GET_BASIC_DATA *
*---------------------------------------------------------------------*
* Fetching basic data from various sales tables and populating work *
* tables for further processing. *
*---------------------------------------------------------------------*
FORM GET_BASIC_DATA.
W_PERCENTAGE = 10.
W_DISPLAY_TEXT = TEXT-008.
PERFORM SET_PROGRESS USING W_PERCENTAGE W_DISPLAY_TEXT.
SELECT VBELN AUART VKORG VTWEG SPART VSBED ERDAT VDATU NETWR LIFSK
FAKSK CMFRE KUNNR
INTO CORRESPONDING FIELDS OF TABLE T_VBAK
FROM VBAK
WHERE VKORG IN S_VKORG
AND VTWEG IN S_VTWEG
AND SPART IN S_SPART
AND ERDAT IN S_ERDAT
AND AUART IN S_AUART
AND VDATU IN S_VDATU
AND VSBED IN S_VSBED
AND ERNAM IN S_UNAME.
PERFORM CHECK_CUSTOMER_PF.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE T_VBAP
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND PSTYV IN S_PSTYV
AND MATNR IN S_MATNR
AND PRODH IN S_PRODH
AND WERKS IN S_WERKS
AND LPRIO IN S_LPRIO.
* START CHANGES BY VIJAY "001
SELECT * FROM VBUK INTO CORRESPONDING FIELDS OF TABLE T_VBUK_B
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND CMGST EQ C_B.
LOOP AT T_VBUK_B.
T_VBUK1-VBELN = T_VBUK_B-VBELN.
APPEND T_VBUK1.
CLEAR T_VBUK1.
ENDLOOP.
* LOOP AT T_VBUK_B.
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* INPUT = T_VBUK_B-VBELN
* IMPORTING
* OUTPUT = T_VBUK1-VBELN.
*
* APPEND T_VBUK1.
* CLEAR T_VBUK1.
*
* ENDLOOP.
SELECT * FROM CDHDR INTO CORRESPONDING FIELDS OF TABLE T_CDHDR
FOR ALL ENTRIES IN T_VBUK1
WHERE OBJECTID = T_VBUK1-VBELN
AND OBJECTCLAS = C_VERKBELEG.
SELECT * FROM CDPOS INTO CORRESPONDING FIELDS OF TABLE T_CDPOS
FOR ALL ENTRIES IN T_CDHDR
WHERE OBJECTID = T_CDHDR-OBJECTID
AND OBJECTCLAS = C_VERKBELEG
AND CHANGENR = T_CDHDR-CHANGENR
AND TABNAME = C_VBUK
AND FNAME = C_CMGST
AND CHNGIND = C_U.
* LOOP AT T_CDPOS WHERE VALUE_NEW EQ C_B.
* READ TABLE T_CDHDR WITH KEY OBJECTID EQ T_CDPOS-OBJECTID
* OBJECTCLAS EQ C_VERKBELEG
* CHANGENR EQ T_CDPOS-CHANGENR.
* IF SY-SUBRC EQ 0.
*
* ENDIF.
*
* ENDLOOP.
* END CHANGES BY VIJAY ON 31/01/03.
* Checking on Blocked for Credit Control Option.
IF NOT R_BLOCK[] IS INITIAL.
SELECT * FROM VBUK INTO CORRESPONDING FIELDS OF TABLE T_VBUK
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND LFSTK IN R_CSTAT
AND CMGST IN R_BLOCK.
ELSE.
SELECT * FROM VBUK INTO CORRESPONDING FIELDS OF TABLE T_VBUK
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND LFSTK IN R_CSTAT.
ENDIF.
IF NOT S_BSTKD IS INITIAL AND
NOT S_BSARK[] IS INITIAL.
* Checking on Purchase Order and Purchase Order Type.
SELECT * FROM VBKD INTO CORRESPONDING FIELDS OF TABLE T_VBKD
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND BSTKD IN S_BSTKD
AND BSARK IN S_BSARK.
ELSEIF NOT S_BSTKD IS INITIAL.
* Checking on Purchase Order.
SELECT * FROM VBKD INTO CORRESPONDING FIELDS OF TABLE T_VBKD
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND BSTKD IN S_BSTKD.
IF SY-SUBRC NE 0.
CLEAR T_VBAK.
REFRESH T_VBAK.
ENDIF.
ELSEIF NOT S_BSARK[] IS INITIAL .
* Checking on Purchase Order Type.
SELECT * FROM VBKD INTO CORRESPONDING FIELDS OF TABLE T_VBKD
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND BSARK IN S_BSARK.
IF SY-SUBRC NE 0.
CLEAR T_VBAK.
REFRESH T_VBAK.
ENDIF.
ELSE.
* Getting all records from VBKD Table for matching Sales Document.
SELECT * FROM VBKD INTO CORRESPONDING FIELDS OF TABLE T_VBKD
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN.
ENDIF.
W_FIN = STRLEN( S_BSTKD ).
LOOP AT T_VBKD.
IF NOT T_VBKD-BSTKD IN R_BSTKD.
DELETE T_VBKD.
ENDIF.
ENDLOOP.
* Get the customer name from kna1.
SELECT KUNNR NAME1 INTO CORRESPONDING FIELDS OF TABLE T_NAME1
FROM KNA1 FOR ALL ENTRIES IN T_VBAK WHERE
KUNNR = T_VBAK-KUNNR.
LOOP AT T_VBAK.
READ TABLE T_NAME1 WITH KEY KUNNR = T_VBAK-KUNNR.
IF SY-SUBRC = 0.
MOVE T_NAME1-NAME1 TO T_VBAK-NAME1.
MODIFY T_VBAK." INDEX SY-TABIX TRANSPORTING NAME1.
ENDIF.
ENDLOOP.
** Get the Seven Customers and the partner functions from the Sales
SELECT VBELN PARVW KUNNR INTO TABLE T_VBPA FROM VBPA
FOR ALL ENTRIES IN T_VBAK WHERE
VBELN = T_VBAK-VBELN AND
POSNR = '000000'.
SORT T_VBAK ASCENDING BY VBELN.
SORT T_VBAP ASCENDING BY VBELN.
SORT T_VBKD ASCENDING BY VBELN.
SORT T_VBUK ASCENDING BY VBELN.
* SORT T_CDHDR ASCENDING BY OBJECTID CHANGENR.
SORT T_VBPA ASCENDING BY VBELN.
* Building T_HDAT ( Header ) table for displaying List.
LOOP AT T_VBAK.
READ TABLE T_VBAP WITH KEY VBELN = T_VBAK-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE-CORRESPONDING T_VBAK TO T_HDAT.
* LOOP AT T_CDHDR WHERE OBJECTID = T_VBAK-VBELN.
* T_HDAT-USERNAME = T_CDHDR-USERNAME.
* ENDLOOP.
*
IF NOT T_VBUK[] IS INITIAL.
READ TABLE T_VBUK WITH KEY VBELN = T_VBAK-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-CMPSA = T_VBUK-CMPSA.
T_HDAT-CMPSB = T_VBUK-CMPSB.
T_HDAT-CMPSC = T_VBUK-CMPSC.
T_HDAT-CMPSD = T_VBUK-CMPSD.
T_HDAT-CMPSE = T_VBUK-CMPSE.
T_HDAT-CMPSF = T_VBUK-CMPSF.
T_HDAT-CMPSG = T_VBUK-CMPSG.
T_HDAT-CMPSH = T_VBUK-CMPSH.
T_HDAT-CMPSI = T_VBUK-CMPSI.
T_HDAT-CMPSJ = T_VBUK-CMPSJ.
T_HDAT-CMPSK = T_VBUK-CMPSK.
T_HDAT-CMPSL = T_VBUK-CMPSL.
T_HDAT-CMPSM = T_VBUK-CMPSM.
T_HDAT-CMPS0 = T_VBUK-CMPS0.
T_HDAT-CMPS1 = T_VBUK-CMPS1.
T_HDAT-CMPS2 = T_VBUK-CMPS2.
T_HDAT-CMGST = T_VBUK-CMGST.
IF NOT T_VBKD[] IS INITIAL.
READ TABLE T_VBKD WITH
KEY VBELN = T_VBAK-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-BSARK = T_VBKD-BSARK.
T_HDAT-BSTKD = T_VBKD-BSTKD.
T_HDAT-ZTERM = T_VBKD-ZTERM.
T_HDAT-CSTAT = T_VBUK-LFSTK.
APPEND T_HDAT.
ENDIF.
ELSE.
T_HDAT-CSTAT = T_VBUK-LFSTK.
APPEND T_HDAT.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
*
* If Header work table T_HDAT is not blank then build other tables.
IF NOT T_HDAT[] IS INITIAL.
SELECT DISTINCT AUART BEZEI FROM TVAKT
INTO CORRESPONDING FIELDS OF TABLE T_AUART
FOR ALL ENTRIES IN T_HDAT
WHERE AUART = T_HDAT-AUART
AND SPRAS = SY-LANGU.
SELECT DISTINCT VKORG VTEXT FROM TVKOT
INTO CORRESPONDING FIELDS OF TABLE T_VKORG
FOR ALL ENTRIES IN T_HDAT
WHERE VKORG = T_HDAT-VKORG
AND SPRAS = SY-LANGU.
SELECT DISTINCT VTWEG VTEXT FROM TVTWT
INTO CORRESPONDING FIELDS OF TABLE T_VTWEG
FOR ALL ENTRIES IN T_HDAT
WHERE VTWEG = T_HDAT-VTWEG
AND SPRAS = SY-LANGU.
SELECT DISTINCT SPART VTEXT FROM TSPAT
INTO CORRESPONDING FIELDS OF TABLE T_SPART
FOR ALL ENTRIES IN T_HDAT
WHERE SPART = T_HDAT-SPART
AND SPRAS = SY-LANGU.
SELECT DISTINCT VSBED VTEXT FROM TVSBT
INTO CORRESPONDING FIELDS OF TABLE T_VSBED
FOR ALL ENTRIES IN T_HDAT
WHERE VSBED = T_HDAT-VSBED
AND SPRAS = SY-LANGU.
SELECT DISTINCT LIFSP VTEXT FROM TVLST
INTO CORRESPONDING FIELDS OF TABLE T_LIFSP
FOR ALL ENTRIES IN T_HDAT
WHERE LIFSP = T_HDAT-LIFSK
AND SPRAS = SY-LANGU.
SELECT DISTINCT FAKSP VTEXT FROM TVFST
INTO CORRESPONDING FIELDS OF TABLE T_FAKSP
FOR ALL ENTRIES IN T_HDAT
WHERE FAKSP = T_HDAT-FAKSK
AND SPRAS = SY-LANGU.
* Processing the Header Data for displaying List.
PERFORM PROCESS_DATA TABLES TAB_FIELDCAT.
PERFORM GET_CUSTOMER_NAMES TABLES T_HDAT.
SORT T_HDAT ASCENDING BY VBELN.
ENDIF.
ENDFORM. " GET_BASIC_DATA
*Eject
*---------------------------------------------------------------------*
* FORM PROCESS_DATA *
*---------------------------------------------------------------------*
* Processing Header Data Table for other details. *
*---------------------------------------------------------------------*
FORM PROCESS_DATA TABLES T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
FIELD-SYMBOLS : <L_FS>.
W_PERCENTAGE = 60.
W_DISPLAY_TEXT = TEXT-009 .
PERFORM SET_PROGRESS USING W_PERCENTAGE W_DISPLAY_TEXT.
SORT T_AUART ASCENDING BY AUART.
SORT T_VKORG ASCENDING BY VKORG.
SORT T_VTWEG ASCENDING BY VTWEG.
SORT T_SPART ASCENDING BY SPART.
SORT T_VSBED ASCENDING BY VSBED.
SORT T_LIFSP ASCENDING BY LIFSP.
SORT T_FAKSP ASCENDING BY FAKSP.
CLEAR W_CNT1.
LOOP AT T_HDAT.
READ TABLE T_AUART WITH KEY AUART = T_HDAT-AUART BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-BEZEI = T_AUART-BEZEI.
ENDIF.
READ TABLE T_VKORG WITH KEY VKORG = T_HDAT-VKORG BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-SONAM = T_VKORG-VTEXT.
ENDIF.
READ TABLE T_VTWEG WITH KEY VTWEG = T_HDAT-VTWEG BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-DCNAM = T_VTWEG-VTEXT.
ENDIF.
READ TABLE T_SPART WITH KEY SPART = T_HDAT-SPART BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-DVNAM = T_SPART-VTEXT.
ENDIF.
READ TABLE T_VSBED WITH KEY VSBED = T_HDAT-VSBED BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-SCDES = T_VSBED-VTEXT.
ENDIF.
READ TABLE T_LIFSP WITH KEY LIFSP = T_HDAT-LIFSK BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-DBDES = T_LIFSP-VTEXT.
ENDIF.
READ TABLE T_FAKSP WITH KEY FAKSP = T_HDAT-FAKSK BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-BBDES = T_FAKSP-VTEXT.
ENDIF.
** To invoke The Parner Functions and Respective customers into T_HDAT.
W_CNT1 = W_CNT1 + 1.
CLEAR T_VBPA_1.
REFRESH T_VBPA_1.
CLEAR T_VBPA_2.
REFRESH T_VBPA_2.
SELECT VBELN PARVW KUNNR INTO TABLE T_VBPA_1 FROM VBPA
WHERE VBELN = T_HDAT-VBELN AND
POSNR = '000000' AND
PARVW IN S_PARVW.
IF SY-SUBRC = 0.
DESCRIBE TABLE T_VBPA_1 LINES W_LIN.
DESCRIBE TABLE S_PARVW LINES W_LIN1.
IF S_PARVW[] IS INITIAL.
W_LIN1 = W_LIN.
ENDIF.
IF W_LIN = W_LIN1.
LOOP AT T_VBPA_1.
W_TABIX1 = SY-TABIX.
IF S_PARVW[] IS INITIAL.
IF SY-TABIX > 7.
EXIT.
ENDIF.
ENDIF.
CONCATENATE 'T_HDAT-KUNN' W_TABIX1 INTO W_FLD1.
CONCATENATE 'T_HDAT-P' W_TABIX1 INTO W_FLD2.
ASSIGN (W_FLD1) TO <FS1>.
ASSIGN (W_FLD2) TO <FS2>.
MOVE T_VBPA_1-KUNNR TO <FS1>.
MOVE T_VBPA_1-PARVW TO <FS2>.
MODIFY T_HDAT INDEX W_CNT1.
ENDLOOP.
IF NOT S_PARVW[] IS INITIAL.
DESCRIBE TABLE S_PARVW LINES W_LIN.
IF W_LIN < 7.
SELECT VBELN POSNR PARVW KUNNR INTO TABLE T_VBPA_2
FROM VBPA
WHERE VBELN = T_HDAT-VBELN AND
POSNR = '000000' .
W_LIN1 = 7 - W_LIN.
LOOP AT T_VBPA_2.
READ TABLE T_VBPA_1 WITH KEY VBELN = T_VBPA_2-VBELN
PARVW = T_VBPA_2-PARVW.
IF SY-SUBRC NE 0.
W_LIN = W_LIN + 1.
IF W_LIN > 7.
EXIT.
ENDIF.
W_TABIX1 = W_LIN.
CONCATENATE 'T_HDAT-KUNN' W_TABIX1 INTO W_FLD1.
CONCATENATE 'T_HDAT-P' W_TABIX1 INTO W_FLD2.
ASSIGN (W_FLD1) TO <FS1>.
ASSIGN (W_FLD2) TO <FS2>.
MOVE T_VBPA_2-KUNNR TO <FS1>.
MOVE T_VBPA_2-PARVW TO <FS2>.
MODIFY T_HDAT INDEX W_CNT1.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ELSE.
MOVE 'X' TO T_HDAT-DEL.
MODIFY T_HDAT INDEX W_CNT1.
ENDIF.
ELSE.
MOVE 'X' TO T_HDAT-DEL.
MODIFY T_HDAT INDEX W_CNT1.
ENDIF.
SELECT SINGLE KUNNR INTO VBPA-KUNNR
FROM VBPA
WHERE VBELN = T_HDAT-VBELN
AND ( PARVW = C_PY OR PARVW = C_RG ) .
SELECT SINGLE KUNNR KKBER CTLPC KLIMK KNKLI SKFOR SSOBL
INTO (KNKK-KUNNR,KNKK-KKBER,KNKK-CTLPC,KNKK-KLIMK,
KNKK-KNKLI,KNKK-SKFOR,KNKK-SSOBL)
FROM KNKK
WHERE KUNNR = VBPA-KUNNR
AND KKBER = T_HDAT-VKORG.
* Calculating Credit Limit Used for the Customer.
IF SY-SUBRC EQ 0.
T_HDAT-KLIMK = KNKK-KLIMK.
PERFORM ERMITTELN_SAUFT IN PROGRAM SAPMF02C
USING KNKK-KNKLI RF02L-SAUFT RF02L-HORDA.
RF02L-OBLIG = KNKK-SKFOR + KNKK-SSOBL + RF02L-SAUFT.
PERFORM AUSSCHOEPFUNGSGRAD_BERECHNEN IN PROGRAM SAPMF02C
USING KNKK-KLIMK RF02L-OBLIG RF02L-KLPRZ.
T_HDAT-KLPRZ = RF02L-KLPRZ.
ENDIF.
* Moving Partner No and Name (dynamically) to the Header Data table.
SORT T_FIELDCAT ASCENDING BY EXPONENT.
LOOP AT S_PARVW.
READ TABLE T_FIELDCAT WITH
KEY EXPONENT = S_PARVW-LOW BINARY SEARCH.
IF SY-SUBRC EQ 0.
ASSIGN COMPONENT T_FIELDCAT-FIELDNAME OF STRUCTURE
T_HDAT TO <L_FS>.
IF SY-SUBRC EQ 0.
SELECT SINGLE KUNNR INTO VBPA-KUNNR FROM VBPA
WHERE VBELN = T_HDAT-VBELN
AND PARVW = S_PARVW-LOW.
IF SY-SUBRC EQ 0.
<L_FS> = VBPA-KUNNR.
CONDENSE T_FIELDCAT-FIELDNAME.
CONCATENATE C_CNAM T_FIELDCAT-FIELDNAME+4(1) INTO W_FLD.
CONDENSE W_FLD.
ASSIGN COMPONENT W_FLD OF STRUCTURE T_HDAT TO <L_FS>.
IF SY-SUBRC EQ 0.
SELECT SINGLE NAME1 INTO <L_FS> FROM KNA1
WHERE KUNNR = VBPA-KUNNR.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
* Calculating Tax amount for the Sales Order.
SELECT SUM( MWSBP ) INTO T_HDAT-MWSBP FROM VBAP
WHERE VBELN = T_HDAT-VBELN.
* Modifying Header Data Table with the modified entries.
MODIFY T_HDAT.
ENDLOOP.
DELETE T_HDAT WHERE DEL = 'X'.
ENDFORM. " PROCESS_DATA
*Eject
*---------------------------------------------------------------------*
* FORM DISPLAY_LIST *
*---------------------------------------------------------------------*
* Display Header / Item data using Header / Item table name *
*---------------------------------------------------------------------*
* --> P_TABNM *
*---------------------------------------------------------------------*
FORM DISPLAY_LIST USING P_TABNM.
W_PERCENTAGE = 100.
W_DISPLAY_TEXT = TEXT-010.
PERFORM SET_PROGRESS USING W_PERCENTAGE W_DISPLAY_TEXT.
S_LAYOUT-COLWIDTH_OPTIMIZE = C_X.
S_LAYOUT-ZEBRA = C_X.
S_LAYOUT-BOX_FIELDNAME = C_BOX.
S_LAYOUT-GROUP_CHANGE_EDIT = C_X.
S_LAYOUT-DETAIL_POPUP = C_X.
S_LAYOUT-F2CODE = C_F_CODE.
GS_VARIANT-REPORT = SY-REPID.
G_SAVE = C_A.
IF P_TABNM = C_T_HDAT.
PERFORM DISPLAY_HEADER_DATA.
ELSE.
PERFORM DISPLAY_ITEM_DATA.
ENDIF.
ENDFORM. " DISPLAY_LIST
*Eject
*---------------------------------------------------------------------*
* FORM DISPLAY_HEADER_DATA *
*---------------------------------------------------------------------*
* Display Sales Order Header Data. *
*---------------------------------------------------------------------*
FORM DISPLAY_HEADER_DATA.
IF NOT T_HDAT[] IS INITIAL.
DESCRIBE TABLE T_HDAT LINES W_LIN.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BUFFER_ACTIVE = ''
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = C_PF_STATUS_SET
I_CALLBACK_USER_COMMAND = C_USER_COMMAND
I_BYPASSING_BUFFER = 'X'
IT_FIELDCAT = TAB_FIELDCAT[]
IS_LAYOUT = S_LAYOUT
I_SAVE = G_SAVE
IS_VARIANT = W_VARIANT1
IT_EVENTS = TAB_EVENTS[]
TABLES
T_OUTTAB = T_HDAT.
ELSE.
MESSAGE S208(00) WITH TEXT-005.
ENDIF.
ENDFORM. " DISPLAY_HEADER_DATA
*Eject
*---------------------------------------------------------------------*
* FORM DISPLAY_ITEM_DATA *
*---------------------------------------------------------------------*
* Display Sales Order Item Data. *
*---------------------------------------------------------------------*
FORM DISPLAY_ITEM_DATA.
DATA: BEGIN OF T_PLANT OCCURS 0,
WERKS LIKE VBAP-WERKS,
NAME1 LIKE T001W-NAME1,
END OF T_PLANT.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE T_IDAT
WHERE VBELN = W_SONUM
AND PSTYV IN S_PSTYV
AND MATNR IN S_MATNR
AND PRODH IN S_PRODH
AND WERKS IN S_WERKS
AND LPRIO IN S_LPRIO.
IF NOT T_IDAT[] IS INITIAL.
* START CHANGE BY samir inserting the delivery date in second level
LOOP AT T_CDPOS ."WHERE VALUE_NEW EQ C_B.
IF T_CDPOS-VALUE_NEW EQ C_B.
READ TABLE T_CDHDR WITH KEY OBJECTID = T_CDPOS-OBJECTID
OBJECTCLAS = C_VERKBELEG
CHANGENR = T_CDPOS-CHANGENR.
IF SY-SUBRC EQ 0.
move T_CDHDR-OBJECTID to T_CDHDR1-OBJECTID.
move T_CDHDR-UDATE to T_CDHDR1-UDATE .
append T_CDHDR1.
CLEAR T_CDHDR1.
ENDIF.
endif.
ENDLOOP.
loop at T_IDAT.
READ TABLE T_CDHDR1 WITH KEY OBJECTID = T_IDAT-vbeln.
IF SY-SUBRC EQ 0.
move T_CDHDR1-UDATE to T_IDAT-VBEPD.
modify T_IDAT.
ENDIF.
ENDLOOP.
*End of samir change
SELECT DISTINCT PSTYV VTEXT FROM TVAPT
INTO CORRESPONDING FIELDS OF TABLE T_PSTYV
FOR ALL ENTRIES IN T_IDAT
WHERE PSTYV = T_IDAT-PSTYV
AND SPRAS = SY-LANGU.
SELECT DISTINCT LPRIO BEZEI FROM TPRIT
INTO CORRESPONDING FIELDS OF TABLE T_LPRIO
FOR ALL ENTRIES IN T_IDAT
WHERE LPRIO = T_IDAT-LPRIO
AND SPRAS = SY-LANGU.
SELECT DISTINCT WERKS NAME1 FROM T001W INTO CORRESPONDING FIELDS OF
TABLE T_PLANT FOR ALL ENTRIES IN T_IDAT
WHERE WERKS = T_IDAT-WERKS.
SELECT SINGLE VTEXT INTO T_IDAT-BBDES FROM TVFST
WHERE FAKSP = T_IDAT-FAKSP.
SORT T_PSTYV ASCENDING BY PSTYV.
SORT T_PLANT ASCENDING BY WERKS.
SORT T_LPRIO ASCENDING BY LPRIO.
LOOP AT T_IDAT.
AT NEW PSTYV.
READ TABLE T_PSTYV WITH KEY PSTYV = T_IDAT-PSTYV BINARY SEARCH.
IF SY-SUBRC NE 0.
CLEAR T_PSTYV-VTEXT.
ENDIF.
ENDAT.
T_IDAT-ICDES = T_PSTYV-VTEXT.
READ TABLE T_PLANT WITH KEY WERKS = T_IDAT-WERKS BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_IDAT-NAME1 = T_PLANT-NAME1.
ENDIF.
READ TABLE T_LPRIO WITH KEY LPRIO = T_IDAT-LPRIO BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_IDAT-DPDES = T_LPRIO-BEZEI.
ENDIF.
MODIFY T_IDAT.
ENDLOOP.
W_ALV_STAT = C_I.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BUFFER_ACTIVE = SPACE
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = C_PF_STATUS_SET
I_CALLBACK_USER_COMMAND = C_USER_COMMAND
IT_FIELDCAT = TAB_FIELDCAT[]
IS_LAYOUT = S_LAYOUT
I_SAVE = G_SAVE
IS_VARIANT = GS_VARIANT
IT_EVENTS = TAB_EVENTS[]
TABLES
T_OUTTAB = T_IDAT.
CLEAR W_SONUM.
W_TNAME = C_T_HDAT.
ELSE.
MESSAGE S208(00) WITH TEXT-005.
ENDIF.
ENDFORM. " DISPLAY_ITEM_DATA
*Eject
*---------------------------------------------------------------------*
* FORM USER_COMMAND *
*---------------------------------------------------------------------*
* Processing based on the functions executed by the user. *
*---------------------------------------------------------------------*
* --> F_UCOMM *
* --> I_SELFIELD *
*---------------------------------------------------------------------*
FORM USER_COMMAND USING F_UCOMM LIKE SY-UCOMM
I_SELFIELD TYPE SLIS_SELFIELD.
DATA: LW_ORDER LIKE VBAK-VBELN.
IF I_SELFIELD-TABINDEX EQ 0.
MESSAGE S208(00) WITH TEXT-003.
I_SELFIELD-REFRESH = C_X.
EXIT.
ENDIF.
CASE F_UCOMM.
WHEN C_F_CODE.
IF I_SELFIELD-SEL_TAB_FIELD NS C_VBELN.
MESSAGE S208(00) WITH TEXT-004.
.
EXIT.
ENDIF.
IF W_SONUM NE I_SELFIELD-VALUE.
W_TNAME = C_T_IDAT.
W_SONUM = I_SELFIELD-VALUE.
PERFORM FIELD_CATALOG_BUILD TABLES TAB_FIELDCAT.
PERFORM DISPLAY_LIST USING W_TNAME.
ENDIF.
* If user has selected Display Sales Order / Display Credit Data.
WHEN C_VA03 OR C_VKM3.
IF I_SELFIELD-VALUE IS INITIAL.
READ TABLE T_HDAT INDEX I_SELFIELD-TABINDEX
TRANSPORTING VBELN.
LW_ORDER = T_HDAT-VBELN.
ELSE.
LW_ORDER = I_SELFIELD-VALUE.
ENDIF.
SET PARAMETER ID C_AUN FIELD LW_ORDER.
* When Display Sales Order is selected.
IF F_UCOMM = C_VA03.
* Display the Selected Sales Order.
CALL TRANSACTION C_VA03 AND SKIP FIRST SCREEN.
ELSE.
* Check on user authorization for executing VKM3 transaction.
PERFORM AUTHORITY_CHECK USING C_VKM3.
********************************************************************
*
* ALY MULTIPLE RECORDS WILL BE INCORPOTARED HERE
* IF I_SELFIELD-VALUE IS INITIAL.
* loop at T_HDAT.
*
* READ TABLE T_HDAT INDEX I_SELFIELD-TABINDEX
* TRANSPORTING VBELN.
* LW_ORDER = T_HDAT-VBELN.
** append lw_order.
** clear lw_order.
** ELSE.
** LW_ORDER = I_SELFIELD-VALUE.
* endloop.
* ENDIF.
* SET PARAMETER ID C_AUN FIELD LW_ORDER.
*******************************************************************
* If user is authorized then execute VKM3 transaction.
CHECK SY-SUBRC EQ 1.
CALL TRANSACTION C_VKM3 AND SKIP FIRST SCREEN.
* If the selected item is released refresh list with the released
* sales order.
PERFORM CHECK_RELEASE_STATUS USING I_SELFIELD-VALUE.
I_SELFIELD-REFRESH = C_X.
ENDIF.
ENDCASE.
CLEAR F_UCOMM.
ENDFORM.
*Eject
*---------------------------------------------------------------------*
* FORM PF_STATUS_SET *
*---------------------------------------------------------------------*
* Set the Application Toolbar and System Functions. *
*---------------------------------------------------------------------*
* --> RT_EXTAB *
*---------------------------------------------------------------------*
FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
CLEAR RT_EXTAB.
IF W_TNAME = C_T_HDAT.
SET PF-STATUS C_PF_STATUS.
ELSE.
SET PF-STATUS C_PF_STATUS_DTL.
ENDIF.
ENDFORM.
*Eject
*---------------------------------------------------------------------*
* FORM CHECK_RELEASE_STATUS *
*---------------------------------------------------------------------*
* Check in the database table for released sales order, if released *
* then delete the current saled order from the list and refresh it. *
*---------------------------------------------------------------------*
* --> P_VBELN *
*---------------------------------------------------------------------*
FORM CHECK_RELEASE_STATUS USING P_VBELN.
SELECT SINGLE CMFRE INTO VBAK-CMFRE FROM VBAK
WHERE VBELN = P_VBELN.
IF NOT VBAK-CMFRE IS INITIAL.
DELETE T_HDAT WHERE VBELN = P_VBELN.
ENDIF.
ENDFORM. " CHECK_RELEASE_STATUS
*Eject
*---------------------------------------------------------------------*
* FORM MODIFY_FIELDCAT *
*---------------------------------------------------------------------*
* Modifying Field Catelog for populating Partner Function Details. *
*---------------------------------------------------------------------*
* --> T_FIELDCAT *
*---------------------------------------------------------------------*
FORM MODIFY_FIELDCAT TABLES T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
LOOP AT S_PARVW.
SELECT SINGLE VTEXT INTO R_PARVW-LOW
FROM TPART
WHERE PARVW = S_PARVW-LOW
AND SPRAS = C_E.
R_PARVW-OPTION = S_PARVW-LOW.
APPEND R_PARVW.
ENDLOOP.
SORT R_PARVW ASCENDING BY OPTION.
DELETE ADJACENT DUPLICATES FROM R_PARVW.
SORT T_FIELDCAT ASCENDING BY FIELDNAME.
CLEAR W_CTR.
LOOP AT R_PARVW.
ADD 1 TO W_CTR.
CONCATENATE C_KUNN W_CTR INTO W_FLD.
CONDENSE W_FLD.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = W_FLD BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_FIELDCAT-SELTEXT_L = R_PARVW-LOW.
T_FIELDCAT-SELTEXT_M = R_PARVW-LOW.
T_FIELDCAT-SELTEXT_S = R_PARVW-LOW.
T_FIELDCAT-REPTEXT_DDIC = R_PARVW-LOW.
T_FIELDCAT-EXPONENT = R_PARVW-OPTION.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
ENDLOOP.
ENDFORM.
*Eject
*---------------------------------------------------------------------*
* FORM SET_PROGRESS *
*---------------------------------------------------------------------*
* Set System Progress Bar Indicator with percentage and message. *
*---------------------------------------------------------------------*
* --> P_W_PERCENTAGE *
* --> P_W_DISPLAY_TEXT *
*---------------------------------------------------------------------*
FORM SET_PROGRESS USING P_W_PERCENTAGE P_W_DISPLAY_TEXT.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = P_W_PERCENTAGE
TEXT = P_W_DISPLAY_TEXT.
ENDFORM. " SET_PROGRESS
*Eject
*---------------------------------------------------------------------*
* FORM FREE_WORK_TABLES *
*---------------------------------------------------------------------*
* Free the contents and memory occupied by work tables. *
*---------------------------------------------------------------------*
FORM FREE_WORK_TABLES.
FREE: T_HDAT, T_IDAT, T_VBAK, T_VBAP, T_VBUK, T_VBKD.
ENDFORM.
*Eject
*&---------------------------------------------------------------------*
*& Form GET_CUSTOMER_NAMES
*&---------------------------------------------------------------------*
* Get the Customer names from KNA1.
*----------------------------------------------------------------------*
* Tables T_HDAT.
*----------------------------------------------------------------------*
FORM GET_CUSTOMER_NAMES TABLES T_HDAT STRUCTURE T_HDAT.
SELECT KUNNR NAME1 INTO TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN1.
SELECT KUNNR NAME1 APPENDING TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN2.
SELECT KUNNR NAME1 APPENDING TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN3.
SELECT KUNNR NAME1 APPENDING TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN4.
SELECT KUNNR NAME1 APPENDING TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN5.
SELECT KUNNR NAME1 APPENDING TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN6.
SELECT KUNNR NAME1 APPENDING TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN7.
SORT T_KNA1_NAME BY KUNNR NAME1.
DELETE ADJACENT DUPLICATES FROM T_KNA1_NAME.
CLEAR T_HDAT.
LOOP AT T_HDAT.
W_TABIX = SY-TABIX.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN1.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM1.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN2.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM2.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN3.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM3.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN4.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM4.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN5.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM5.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN6.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM6.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN7.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM7.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
ENDLOOP.
ENDFORM. " GET_CUSTOMER_NAMES
*Eject
*&---------------------------------------------------------------------*
*& Form F4_FOR_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F4_FOR_VARIANT.
DATA: LW_EXIT.
* Get saved list of variant on pressing F4.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = W_VARIANT1
I_SAVE = C_A
IMPORTING
E_EXIT = LW_EXIT
ES_VARIANT = W_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 2.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
IF LW_EXIT = SPACE.
P_VARI = W_VARIANT-VARIANT.
ENDIF.
ENDIF.
ENDFORM. " F4_FOR_VARIANT
*Eject
*&---------------------------------------------------------------------*
*& Form CHK_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHK_VARIANT.
CLEAR W_VARIANT1.
W_VARIANT1-REPORT = W_REPID.
IF NOT P_VARI IS INITIAL.
MOVE W_VARIANT1 TO W_VARIANT.
MOVE P_VARI TO W_VARIANT-VARIANT.
* check the existence of the variant in saved list
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE = C_A
CHANGING
CS_VARIANT = W_VARIANT.
W_VARIANT1 = W_VARIANT.
ELSE.
CLEAR W_VARIANT1.
W_VARIANT1-REPORT = W_REPID.
ENDIF.
ENDFORM. " CHK_VARIANT
*&---------------------------------------------------------------------*
*& Form CHECK_CUSTOMER_PF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_CUSTOMER_PF.
LOOP AT T_VBAK.
IF NOT S_KUNN1[] IS INITIAL AND
NOT S_KUNN2[] IS INITIAL AND
NOT S_KUNN3[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN1
AND PARVW IN S_PARV1.
IF SY-SUBRC EQ 0.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN2
AND PARVW IN S_PARV2.
IF SY-SUBRC EQ 0.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN3
AND PARVW IN S_PARV3.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ELSE.
DELETE T_VBAK.
ENDIF.
ELSE.
DELETE T_VBAK.
ENDIF.
ELSE.
IF NOT S_KUNN1[] IS INITIAL AND
NOT S_KUNN2[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN1
AND PARVW IN S_PARV1.
IF SY-SUBRC EQ 0.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN2
AND PARVW IN S_PARV2.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ELSE.
DELETE T_VBAK.
ENDIF.
ELSE.
IF NOT S_KUNN1[] IS INITIAL AND
NOT S_KUNN3[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN1
AND PARVW IN S_PARV1.
IF SY-SUBRC EQ 0.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN3
AND PARVW IN S_PARV3.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ELSE.
DELETE T_VBAK.
ENDIF.
ELSE.
IF NOT S_KUNN2[] IS INITIAL AND
NOT S_KUNN3[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN2
AND PARVW IN S_PARV2.
IF SY-SUBRC EQ 0.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN3
AND PARVW IN S_PARV3.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ELSE.
DELETE T_VBAK.
ENDIF.
ELSE.
IF NOT S_KUNN1[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN1
AND PARVW IN S_PARV1.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ELSE.
IF NOT S_KUNN2[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN2
AND PARVW IN S_PARV2.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ELSE.
IF NOT S_KUNN3[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN3
AND PARVW IN S_PARV3.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " CHECK_CUSTOMER_PF
Answer:
Pasting your entire code is not clear
I would use the FM REUSE_ALV_POPUP_TO_SELECT with some field in parameter I_CHECKBOX_FIELDNAME or I_LINEMARK_FIELDNAME
_________________
François Henrotte
ABAP Consultant
+32.475.28.75.32
(Belgium)
Please visit http://www.eponasolutions.com

Answer:
why u are writing so many read statements : instead of that use performs and forms . and then put ur request. thatz better
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KLPRZ.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CRDLMT.
T_FIELDCAT-SELTEXT_L = C_CRDLMT.
T_FIELDCAT-SELTEXT_M = C_CRDLMT.
T_FIELDCAT-SELTEXT_S = C_CRDLMT.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.

More Articles:

Call function - UPDATE TASK?
Transporting all custom programs at one time?
BDC by Batch input session is not iterating to next record.?
Select statement?
Modifying xvbpa?
Two Payroll are's at the slection screen.?